Unity Shader 渲染时的顶点变换过程和五个空间的介绍




渲染游戏就是把一个一个的顶点经过层层出来表现在屏幕上的过程。

顶点着色器主要是把输入的数据进行矩阵变换位置,计算光照公式生成逐顶点颜⾊,⽣成/变换纹理坐标。并且把位置和纹理坐标这样的参数发送到片段着色器。
顶点从模型空间转换到屏幕空间过程。有三个顶点变换过程

片元着色器主要是处理由光栅化阶段生成的每个片元,最终计算出每个像素的最终颜色。
片元着色器:得到该片元在在屏幕空间的像素位置。

1、模型空间

模型空间又叫对象空间、局部空间。

每个模型都有一个自己独立的坐标空间,当他移动或者旋转时候,模型空间也会跟着变化。

顶点着色器中访问到的模型的顶点坐标信息,这些坐标就是相对于模型空间的原点。

2、世界空间

第一步:从模型空间变换到世界空间。

Unity中的世界空间是不会改变的,如果一个物体没有父物体,那么它Transform上显示的位置就是相对于世界空间的位置。

3、观察空间

第二步:从世界空间变换到观察空间。

观察空间又叫摄像机空间。
摄像机位于观察空间的原点。观察空间和其他空间不同的一点是只有观察空间使用右手坐标系,摄像机的前方即Z轴负方向。

4、裁剪空间

第三步:从观察空间变换到裁剪空间。

裁剪空间又叫齐次裁剪空间
裁剪空间的目标是能够方便的对渲染图元进行剪裁:完全位于这个空间的图元会被保留,完全在外的会被剔除,空间边界的会被裁剪。
这块空间是由摄像机可看到空间,即一个视锥体决定的。视锥体的6个面叫裁剪平面。

齐次坐标就是把n维向量用n+1维表示。主要用于区别向量和点,(x,y,z,w) w为0为向量,w为1为点。

5、屏幕空间

第四步:从裁剪空间变换到屏幕空间。

最后一步就是把视锥体投影到屏幕空间,变换后来得到真正的像素位置,而不是虚拟的三维坐标了。

在Unity中,从裁剪空间到屏幕空间的转换是自动完成的。我们的顶点着色器只需要把顶点转换到裁剪空间即可。

6、图

参考于《Unity Shader入门精要》

猜你喜欢

转载自www.cnblogs.com/Fflyqaq/p/12550300.html