在CG/HLSL中访问着色器属性
Shader在Properties块中访问材质属性。如果你想在一个着色程序中访问一些属性,你需要声明一个Cg/HLSL具有相同的名称和一个匹配的类型的变量。
Properties
例如这些材质属性:
_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) = "" {}
- 2D:一张2的阶数大小的图
- Rect:非2的阶数大小的图
- Cube:立方体文理就是6张有联系的2D贴图的组合,主要用来做反射效果(比如天空盒和动态反射),也会被转换为对应的采样。
- Range(min,max):最小值与最大值之间的浮点数
- Float:任意浮点数。
- Vector:四维向量
- Color:以0~1定义rgba颜色,如(1,1,1,1)
- 2D/Rect/Cube :对于贴图来说,默认值可以为一个代表默认颜色的字符串,可以是空字符串或则"white","black","gray"中的一个。
- Float/Range:某个指定的浮点数
- Vector:一个4维数,写为(x,y,z,w)
宣布在Cg / HLSL代码访问
fixed4 _MyColor; float4 _MyVector; float _MyFloat; sampler2D _MyTexture; samplerCUBE _MyCubemap;
Cg / HLSL也可以接受uniform关键字
uniform float4 _MyColor;
参数类型在ShaderLab中是这样映射到CG/HLSL中的:
Color和Vector属性映射到float4,half4或fixed4变量
Range和Float属性映射到float,half或者fixed变量
Texture属性映射到sampler2D 变量 给常规的2D纹理。Cubemaps映射到samplerCUBE。3D纹理映射到sampler3D。
时间: 2024-11-02 00:18:52