> 文章列表 > Unity 渲染流程管线

Unity 渲染流程管线

Unity 渲染流程管线

渲染流程图

可以把它理解为一个流程,就是我们告诉GPU一堆数据,最后得出来一副二维图像,而这些数据就包括了”视点、三维物体、光源、照明模型、纹理”等元素。参考如下图(来自视频)

Unity 渲染流程管线

CPU应用阶段

剔除

  • 视锥剔除

由Unity依据Camera直接完成,不在Camera视锥内的全部剔除不进行渲染

排序由深度(到摄像机距离)和渲染队列决定。shader中深度(ZTest)开启时。深度优先渲染队列,深度(ZTest)关闭时,渲染队列优先深度。

  • 层级剔除

通过摄像机进行特定物体的剔除。剔除特定层级的物体(未被勾选即被剔除物体)。

  • 遮挡剔除

通过判断物体位置和遮挡关系对被不透明物体完全遮挡的物体进行剔除。

Unity 渲染流程管线

数据打包发送(DrawCall)

Unity 渲染流程管线

GPU 渲染流程

总览图

Unity 渲染流程管线

详细流程

Unity 渲染流程管线

顶点处理

模型空间转裁剪空间,只所以有裁剪空间是为了模型三角面剔除做计算。具体转换流程如下,经过3次矩阵转换,也可以使用MVP一次转换。

对于透视投影的视锥体来说,判断一个顶点是否处于一个金字塔(视锥体范围)内部是比较麻烦的,因此,需要一种更加通用、方便和整洁的方式来进行裁剪。这就需要将投影矩阵中的顶点转换到一个裁剪空间中的原因。

Unity 渲染流程管线

图元装配及光栅化

Unity 渲染流程管线
Unity 渲染流程管线

片元着色

纹理采样与光照

纹理采样

纹理采样几种方式,纹理过滤机制涉及到图片放到时,对小图采样一种是精度不准确时约等于采样如下比较失真,另外一种取周围点插值,如下两图对比,图一放大较模糊。

Unity 渲染流程管线
Unity 渲染流程管线

纹理寻址

Unity 渲染流程管线

光照

目前unity主流光照模型采用Phong光照模型

Unity 渲染流程管线

各种测试

Unity 渲染流程管线

屏幕后处理

输出到帧缓冲区后,还能进行最后一步操作,对图片进行屏幕后处理