Revision Difference
Shader_Reference#547621
<cat>Code.Shader</cat>
<title>Shader Reference</title>
# Variables
Variables will show up in Material Editor. They're defined like this.
```
float3 g_vColorTint < UiType( Color ); Default3( 1.0, 1.0, 1.0 ); UiGroup( "Color,10/20" ); >;
Float3Attribute( g_vColorTint, g_vColorTint ); // Only needed if your variable is not showing up in the material editor
```
A list of attributes you can expose can be seen below
| Data Type | Attribute Function |
|-----------|--------------------|
| bool | BoolAttribute |
| int/uint | IntAttribute |
| float | FloatAttribute |
| float2 | Float2Attribute |
| float3 | Float3Attribute |
| float4 | Float4Attribute |
| float/float2/float3/float4 | TextureAttribute |
## UiType
Describes how the variable should be represented in the editor.
|Name|Description|
|-----|----------|
| VectorText | Text boxes and sliders (this is the default) |
| Slider | A slider type. Usually combined with a Range setting. |
| Color | A Color picker, works on float3 or float4. |
| Texture | A texture picker |
| CheckBox | On or off, generally used on bool |
## Default
The Default lets you specify the default value for the variable. If you're filling a `float2`, it should be `Default2`, if you're filling a `float4` it should be `Default4` etc.
## UiGroup
The UiGroup is used to sort the variable into a group, subgroup and define its order. So for example, given this..
```
float4 BorderColorL < UiType( Color ); Default4( 0.0, 0.0, 0.0, 1.0 ); UiGroup( "Border,10/Colors,10/1" ); >;
float4 BorderColorT < UiType( Color ); Default4( 0.0, 0.0, 0.0, 1.0 ); UiGroup( "Border,10/Colors,10/2" ); >;
float4 BorderColorR < UiType( Color ); Default4( 0.0, 0.0, 0.0, 1.0 ); UiGroup( "Border,10/Colors,10/3" ); >;
float4 BorderColorB < UiType( Color ); Default4( 0.0, 0.0, 0.0, 1.0 ); UiGroup( "Border,10/Colors,10/4" ); >;
```
You end up with this
<upload src="1/8d89e07e3fc960b.png" size="16898" name="image.png" />
The format is:
```
Heading,Order / Group,Order / VariableOrder
```
⤶
⤶
# Internal Shader Includes⤶
⤶
This is a list of shaders that are included internally:⤶
⤶
| Shader Includes |⤶
|--------|⤶
| ambient_cube.fxc |⤶
| baked_lighting_constants.fxc |⤶
| bindlessfastpath.fxc |⤶
| common.fxc |⤶
| descriptor_set_support.fxc |⤶
| encoded_normals.fxc |⤶
| instancing.fxc |⤶
| light_probe_volume.fxc |⤶
| lighting_model.fxc |⤶
| math_general.fxc |⤶
| morph.fxc |⤶
| msaa_offsets.fxc |⤶
| pcss.fxc |⤶
| reflection.fxc |⤶
| sbox_lighting.fxc |⤶
| sbox_pixel.fxc |⤶
| sbox_shared.fxc |⤶
| sbox_vertex.fxc |⤶
| sfm_lighting_nocombos.fxc |⤶
| sky.fxc |⤶
| sun_shadowing.fxc |⤶
| system.fxc |⤶
| texture_blending.fxc |⤶
| transform_buffer.fxc |⤶
| turbo.fxc |⤶
| volumetric_fog.fxc |⤶
| vr_common.fxc |⤶
| vr_common_features.fxc |⤶
| vr_common_ps_code.fxc |⤶
| vr_common_ps_input.fxc |⤶
| vr_common_samplers.fxc |⤶
| vr_common_vs_code.fxc |⤶
| vr_common_vs_input.fxc |⤶
| vr_cubemap_fog.fxc |⤶
| vr_detail_texture.fxc |⤶
| vr_environment_map.fxc |⤶
| vr_foliage_animation.fxc |⤶
| vr_foliage_uv_animation.fxc |⤶
| vr_gradient_fog.fxc |⤶
| vr_lighting.fxc |⤶
| vr_per_view_lighting_constants.fxc |⤶
| vr_pre_baked_vertex_animation.fxc |⤶
| vr_shared_standard_features.fxc |⤶
| vr_shared_standard_ps_input.fxc |⤶
| vr_shared_standard_vs_code.fxc |⤶
| vr_shared_standard_vs_input.fxc |⤶
| vr_spherical_vignette.fxc |⤶
| vr_tools_vis.fxc |⤶
| vs_decompress.fxc |