Version: 6000.3
语言: 中文
材料特性介绍
纹理属性

添加材质属性

要将材料属性分配给着色器在 GPU 上运行的程序。更多信息
请参阅术语表
对象ShaderLabUnity 用于定义 Shader 对象结构的语言。更多信息
请参阅术语表
,则放置一个PropertiesShader块。

如果要在着色器程序中访问其中一些属性,则需要声明具有相同名称和匹配类型的 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变量类型:

  • 颜色和矢量属性映射到 float4half4fixed4 变量。
  • Range 和 Float 属性映射到浮点变量、半变量固定变量。
  • 纹理属性映射到常规 (2D) 纹理的 sampler2D 变量;立方体贴图六个方形纹理的集合,可以表示环境中的反射或几何体后面绘制的天空盒。这六个正方形形成了一个围绕物体的假想立方体的面;每个面表示沿世界轴方向(上、下、左、右、前和后)的视图。更多信息
    请参阅术语表
    映射到 samplerCUBE;3D 纹理映射到 sampler3D

颜色空间和颜色/矢量着色器数据

使用线性颜色空间时,所有材质颜色属性都作为 sRGB 颜色提供,但在传递到着色器时转换为线性值。

例如,如果属性着色器块包含Color属性调用“MyColor”,则相应的“MyColor”HLSL 变量将获取线性颜色值。

对于标记为FloatVectortype,默认情况下不进行色彩空间转换;假设它们包含非颜色数据。可以添加[Gamma]属性,以指示它们在 sRGB 空间中指定,就像颜色一样(请参阅属性)。

其他资源

材料特性介绍
纹理属性