unity shader 的学习笔记 float4

正在学习关于unity Shader,其中我自己总结了一些自己不懂的东西
1、Float Fixed
float : 常见的写法有 float4float3
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变量类型的匹配关系

ShaderLab属性类型 C个变量类型
Color、Vector float4,half4,fixed4
Range、Float float, half, fixed
2D sampler2D
3D sampler3D
Cube samplerCube

这样就能理解为什么使用 float4 类型了。

你可能感兴趣的:(float4)