包含此页的版本:
不含此页的版本:
要将材料属性分配给着色器在 GPU 上运行的程序。更多信息
请参阅术语表对象ShaderLabUnity 用于定义 Shader 对象结构的语言。更多信息
请参阅术语表,则放置一个Properties块Shader块。
如果要在着色器程序中访问其中一些属性,则需要声明具有相同名称和匹配类型的 Cg/HLSL 变量。
例如,以下着色器属性:
_MyColor ("Some Color", Color) = (1,1,1,1)
_MyVector ("Some Vector", Vector) = (0,0,0,0)
_MyFloat ("My float", Float) = 0.5
_MyTexture ("Texture", 2D) = "white" {}
_MyCubemap ("Cubemap", CUBE) = "" {}
将在 Cg/HLSL 代码中声明为:
fixed4 _MyColor; // low precision type is usually enough for colors
float4 _MyVector;
float _MyFloat;
sampler2D _MyTexture;
samplerCUBE _MyCubemap;
Cg/HLSL 也可以接受 uniform 关键字,但不是必需的:
uniform float4 _MyColor;
ShaderLab中的属性类型通过以下方式映射到Cg/HLSL变量类型:
使用线性颜色空间时,所有材质颜色属性都作为 sRGB 颜色提供,但在传递到着色器时转换为线性值。
例如,如果属性着色器块包含Color属性调用“MyColor”,则相应的“MyColor”HLSL 变量将获取线性颜色值。
对于标记为Float或Vectortype,默认情况下不进行色彩空间转换;假设它们包含非颜色数据。可以添加[Gamma]属性,以指示它们在 sRGB 空间中指定,就像颜色一样(请参阅属性)。