En Unity, los shader programs se escriben en una variante del lenguaje HLSL(también llamado Cg , pero para la mayoría de los usos prácticos los dos son los mismos).
Actualmente, para una máxima portabilidad entre diferentes plataformas, escribir en HLSL de estilo DX9 (por ejemplo, usar el estilo DX9 sampler2D
y tex2D
para el muestreo de textura en lugar del estilo DX10 Texture2D
,SamplerState
y tex.Sample
).
Internamente, se utilizan diferentes compiladores de shader para la compilación de shader program:
En caso de que realmente necesita identificar qué compilador está siendo utilizado (para utilizar la sintaxis de HLSL sólo es compatible con un compilador, o para evitar un error de compilador), se pueden utilizar macros de shader predefinidos. Por ejemplo, UNITY_COMPILER_HLSL
se configura al compilar con el compilador HLSL (para plataformas D3D o GLCore/GLES3); Y UNITY_COMPILER_HLSL2GLSL
al compilar a través de hlsl2glsl.