shader 常用数据类型
2020-06-11 本文已影响0人
Rayson
1、Float Fixed
float : 常见的写法有 float4 和 float3
float3 : 一般情况下我们指的是向量,例如 :float3 normal :NORMAL
float4 : 对那些需要操作的顶点用 float4 来表示 ,例如 : float4 vertex : POSITION
那么我们为什么用 float4 来表示我们想要的顶点呢?
在unity内部,通过矩阵的方式来描述这些点,一般情况下我们觉得 3*3的矩阵就能够描述一个点了,但是这样的点是没有办法进行变换的 : 旋转、缩放还有平移。
因此我们需要扩散到一个齐次坐标空间
因此对于点的变化我们用 float4 来表示
1、点,用Vector4表示就是(x,y,z,1)。*
2、向量,用Vector4表示就是(x,y,z,0)。
那么,向量是两个点相减组成,得到:
(x1,y1,z1,1)- (x2,y2,z2,1) = (x1 - x2, y1 - y2,z1 - z2,0)
就可以表示两个点相减是一个向量。
如果用Vector3表示一个点的话,就不知道两个点相减是什么了。
然后我们再来看看 ShaderLab属性类型和Cg变量类型的匹配关系
这样就能理解为什么使用 float4 类型了。