Unity Shader顶点变换总结
顶点变换的目的:
将顶点坐标坐标开始,到屏幕坐标为止的一系列转换。

UNITY_MATRIX_MVP矩阵的解释:
Unity内置的MVP矩阵,可以将模型上的顶点从他的本地坐标系,转换到裁剪空间中。
一个顶点转换到裁剪空间后,就表示它的
w 具有了特殊意义:可以用来进行透视除法,
透视除法( xyz 分别除以 w )后的 x、y 用来进行屏幕映射(也就是这个顶点应该出现在屏幕上的哪个位置),
z 用来表示这个顶点的深度(是否离观察者更近或被其他顶点挡住等)。
M(Model): 从本地坐标系 转换到 世界坐标系 的转换矩阵。
V(View): 从世界坐标系转换到相机坐标系 的转换矩阵。
转换矩阵总结如下 (矩阵左乘列向量):


注意: Unity的相机坐标系(观察者空间、相机空间)是比较特殊的坐标系,它使用右手坐标系,而它的前一步转换是在左手坐标系内完成的,因此顶点转换到相机坐标系后要对z进行一下处理(或使用相反的转换顺序)。
P(Projection): 投影矩阵,说是投影矩阵,其实并未进行投影计算,但是它却坚强的算出了齐次向量w的值,为后面的透视除法做准备,根据相机类型的不同,投影矩阵也会有些许差别。
正交相机(orthographic)中: w的值恒为1,所以做了透视除法也没变化;
透视相机(perspective)中: w的值 有意义,经过此投影矩阵计算的xyz向量需分别除以w进行透视除法即\(xyz / w\)。
正交相机的矩阵总结如下(矩阵左乘列向量):

透视相机的矩阵如下(矩阵左乘列向量):

更多请参考


浙公网安备 33010602011771号