US2S3L11——ShaderLab属性类型和CG变量类型的匹配关系
US2S3L11——ShaderLab属性类型和CG变量类型的匹配关系
回顾:ShaderLab属性相关
关于ShaderLab属性,详见US2S2L4——Shader的属性
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 Properties { } //属性在该语句块内声明
_属性名("在Inspector窗口上显示的属性名", 类型) = 默认值 //属性的声明方法,要注意属性名默认前缀为'_'
//数值类型,以一个数值作为默认值,数值不需要加f
Int //整形,虽然提供了整数,但是编译时最终都会转换为浮点型
Float //浮点型,在ShaderLab里,浮点数字面量不需要加f
Range(,) //范围浮点型,需要在括号内()填写最小值和最大值
//颜色与向量类型,以(num1,num2,num3,num4)作为默认值,其中的数值不需要加f
Color //颜色,颜色值中的RGBA的取值范围是 0~1 (映射0~255)
Vector //向量,向量值中的XYZW的取值范围没有限制
//纹理类型,以 ""{} 或 "white"{} 或 "black"{} 或 "gray"{} 或 "bump"{} 或 "red"{} 作为默认值,{}是固定写法
2D //2D贴图类型,最常用的纹理,漫反射贴图、法线贴图都属于2D纹理
Cube //立方体纹理,由前后左右上下6张有联系的2D贴图拼成的立方体,比如天空盒和反射探针
//不重要的纹理类型
2DArray //纹理数组,允许在纹理中存储多层图像数据,每层看做一个2D图像,一般使用脚本创建,较少使用,了解即可
3D //一般使用脚本创建,极少使用,了解即可
ShaderLab属性类型和CG变量类型的匹配关系
ShaderLab中声明的属性都是需要在Shader(着色器)逻辑中使用的
我们需要在CG中声明和属性对应类型的同名变量
这样就可以在之后的Shader(着色器)逻辑中去利用它实现对应的逻辑了
我们需要掌握的就是ShaderLab属性类型和CG变量类型的对应关系
CG中变量类型的对应ShaderLab的属性类型
ShaderLab属性类型 | CG变量类型 |
---|---|
Color ,Vector |
float4 ,half4 ,fixed4 |
Range ,Float ,Int |
float ,half ,fixed |
2D |
sampler2D |
Cube |
samplerCube |
3D |
sampler3D |
2DArray |
sampler2DArray |
如何在CG语句块中使用ShaderLab中声明的属性
直接在CG语句块中声明和属性中对应类型的同名变量即可
假设我们要使用ShaderLab中声明的颜色属性来调整材质显示的颜色:
1 | Shader "TeachShader/Lesson23" |
显示效果:
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 文KRIFE齐的博客!