首先这是CG代码的数据类型,就是在CGPROGRAM ENDCG 块定义的数据类型。常用的就前面几种:
- float(full-float adjustment:全浮):32位浮点数 - -通常用于世界坐标下的位置,纹理UV,或涉及复杂函数的标量计算,如三角函数、幂运算等。
- half(half-float:半浮):16位浮点数 - -数值范围为[-60000,+60000],通常用于本地坐标下的位置、方向向量、HDR颜色等。
- sampler: 纹理对象 共有:sampler、sampler1D、sampler2D、sampler3D、- samplerCUBE、和samplerRECT六种。
- fixed:低精度类型,11位,数值范围为[-2,+2],通常用于常规的颜色与贴图,以及低精度间的一些运算变量等。
- string: 字符串
- bool: 布尔数据
- int: 32位整形数
注意:
- 在PC平台不管你Shader中写的是half还是fixed,统统都会被当作float来处理。 half与fixed仅在一些移动设备上有效。
- 使用: 一般来说,除了位置和坐标用float以外,其余的全部用half,注意性能就好,比如颜色就没必要使用float。half因为精度低,运算性能相对比高精度浮点数高一些,因此被大量使用。
- 在代码中的实际使用
- float fixed 等数据类型,都可以在后面加一个2-4的数字,表示打包在一起的2-4个同类型数
- float2 类型可作为二维向量使用,比如说(x,y)
- float4类型可作为四维向量使用,比如说 空间坐标xyzw或颜色rgba