Unity 有自己的着色器语法,称为 ShaderLab。
有关它的所有必要信息都可以在此website 上找到。
至于属性,请查看link。
由于 nvidia 不再是 not supporting CG,最新的统一版本实际上使用 HLSL 编译器编译着色器并将生成的字节码转换为 GLSL。
CG 着色器代码几乎没有变化。如今,您可以使用 HLSL 语法利用 CG 不支持的现代着色器功能,例如计算着色器和曲面细分。
例如这些着色器属性:
_MyColor ("Some Color", Color) = (1,1,1,1)
_MyVector ("Some Vector", Vector) = (0,0,0,0)
_MyRange ("My Range", Range (0, 1)) = 1
_MyFloat ("My float", Float) = 0.5
_MyInt ("My Int", int) = 1
_MyTexture2D ("Texture2D", 2D) = "white" {}
_MyTexture3D ("Texture3D", 3D) = "white" {}
_MyCubemap ("Cubemap", CUBE) = "" {}
将在 Cg/HLSL 代码中声明为:
fixed4 _MyColor;
float4 _MyVector;
float _MyRange;
float _MyFloat;
int _MyInt;
sampler2D _MyTexture2D;
sampler3D _MyTexture3D;
samplerCUBE _MyCubemap;
ShaderLab 中的属性类型以这种方式映射到 Cg/HLSL 变量类型:
• 颜色和矢量属性映射到 float4、half4 或 fixed4 变量。
• Range 和 Float 属性映射到 float、half 或 fixed 变量。
• 纹理属性映射到常规 (2D) 纹理的 sampler2D 变量。
• 立方体贴图映射到 samplerCUBE。
• 3D 纹理映射到 sampler3D。