格式
#pragma property [PTYPE] [NAME] [DVALUE]描述
执行该命令用于指定 着色器(Shader)中支持的 材质属性(Property),材质属性是可用于着色器内的变量,也可在编辑器上通过引用了该 着色器(Shader)的 材质(Material)进行访问。
【Shader_Common_property000.png】
在着色器中编辑的材质属性以及在 检视窗口(Inspector)查看引用了对应着色器的材质的对应关系。
字段
| 字段名 | 是否必须 | 字段值 | 描述 |
| [PTYPE] | 是 | float | 定义该 材质属性(Property)为浮点型。 |
int | 定义该 材质属性(Property)为整型。 | ||
range(Min,Max) | 定义该 材质属性(Property)为范围类型,特指浮点型的范围类型。 其中: · Min 指的是该范围的最小值,在编辑命令时需要写上具体数值。 · Max 指的是该范围的最大值,在编辑命令时需要写上具体数值。 | ||
color | 定义该 材质属性(Property)为四维颜色类型(rgba)。 | ||
vector | 定义该 材质属性(Property)为 vec4 (四维向量)类型。值得注意的是,vec2,vec3,vec4 类型的 材质属性(Property)均需使用 vector。 | ||
matrix | 定义该 材质属性(Property)为 mat4 (4*4 的矩阵)类型。值得注意的是,mat2,mat3,mat4 类型的 材质属性(Property)均需使用 matrix。 | ||
texture2D | 定义该 材质属性(Property)为 2D 纹理类型,可用于引用 2D 纹理(Texture 2D)。 | ||
cubeMap | 定义该 材质属性(Property)为立方体贴图类型,可用于引用 立方体贴图(Cubemap)。 | ||
| [NAME] | 是 | < 自定义属性名 > | 该字段用于给 材质属性(Property)命名。值得注意的是,材质属性(Property)的命名不能与 Uniform 重名,具体需要规避的 Uniform 命名请参阅 内置全局 Uniform 章节。 |
| [DVALUE] | 否 | < 自定义初始值 > | 根据 [PTYPE] 字段的类型定义该 材质属性(Property)的初始值,如果不编辑,则根据 [PTYPE] 字段的类型定义为默认值,其中: · float 类型的默认值是 0.0。 · int 类型的默认值是 0。 · range 类型的默认值是 0.0。 · color 类型的默认值是 (1.0, 1.0, 1.0, 1.0) ,即为白色。 · vector 类型的默认值是 (0.0, 0.0, 0.0, 0.0)。 · matrix 类型的默认值是 mat4(1.0),即为对角线上的值为 1 其他值为 0 的 4*4 矩阵。 · texture2D 类型的默认值是纯白色 2D 纹理,且该类型暂时不支持指定任何初始值。 · cubeMap 类型的默认值是纯白色立方体贴图,且该类型暂时不支持指定任何初始值。 |
代码示例
为方便您的理解,代码示例中的所有 材质属性(Property)都采用 _a, _b, _c 和 _d 的方式命名。
float 类型材质属性
#pragma property float _a
#pragma property float _b 0.5
#pragma property float _c 100.0在 材质(Material)中显示效果:
【Shader_Common_property001.png】
int 类型材质属性
#pragma property float _a
#pragma property float _b 100
#pragma property float _c -33在 材质(Material)中显示效果:
【Shader_Common_property002.png】
range 类型材质属性
#pragma property range(-10,10) _a
#pragma property range(0,1) _b 0.5
#pragma property range(-10,10) _c 5.0在 材质(Material)中显示效果:
【Shader_Common_property003.png】
color 类型材质属性
#pragma property color _a
#pragma property color _b (1.0,0.3,0.3,0.2)
#pragma property color _c (1.0,0.5,0.0)
#pragma property color _d (0.9)在 材质(Material)中显示效果:
【Shader_Common_property004.png】
vector 类型材质属性
#pragma property vector _a
#pragma property vector _b (1.0,2.0,3.0,4.0)
#pragma property vector _c (2.0)
#pragma property vector _d (1.0,2.0)
#pragma property vector _e (1.0,2.0,3.0)在 材质(Material)中显示效果:
【Shader_Common_property005.png】
matrix 类型材质属性
#pragma property matrix _a在 材质(Material)中显示效果:
【Shader_Common_property006.png】
texture2D 类型材质属性
值得注意的是,texture2D 类型的 材质属性(Property)不能定义任何初始值。
如果在 texture2D 类型的 材质属性(Property)后接 vector 类型且同名并加上 _ST 后缀的 材质属性(Property),该 材质属性(Property)会默认为描述该贴图的平铺率和偏移率,其中:
前两个维度的参数(X,Y)分别控制 X(U 方向) 和 Y(V 方向)的平铺率。
后两个维度的参数(Z,W)分别控制 X(U 方向) 和 Y(V 方向)的偏移率。
#pragma property texture2D _a
#pragma property texture2D _b
#pragma property vector _b_ST在 材质(Material)中显示效果:
【Shader_Common_property007.png】
cubeMap 类型材质属性
值得注意的是,cubeMap 类型的 材质属性(Property)不能定义任何初始值。
#pragma property cubemap _a在 材质(Material)中显示效果:
【Shader_Common_property008.png】
