UnityShader关于使用float4类型表示一个顶点

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变量类型的匹配关系:

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

    
参考原文:unity shader 的学习笔记 float4_爱吃肉的狐狸的博客-CSDN博客_fixed4和float4    
    

猜你喜欢

转载自blog.csdn.net/weixin_42565127/article/details/124979401
今日推荐