您的位置:首页 > 移动开发 > Unity3D

Unity3D 渲染管线流程

2017-11-06 16:51 225 查看
简单的来讲,渲染管线是位于GPU中内部处理图形信号相互独立的并行处理单元,也称渲染流水线。计算机绘制和显示3D图像实际上就是通过渲染管线进行的处理,逻辑上很类似“黑匣子”,从3D模型经过这个“黑匣子”再映射出2D图像。

那渲染管线是如何工作的呢?我们这里是IT技术区,就不做电路硬件的分析了(尽管本人学的是电子信息专业。。)。

渲染绘图管线流程可以细分为:

1.顶点处理 2. 面处理 3.光栅化处理 4.像素处理

以下便对这些过程做简单介绍。

顶点处理

本地坐标系——世界坐标系——观察坐标系——投影坐标系

我们都知道坐标系这个东西,顶点处理的本质便是通过坐标系的转换采集所需模型的点。有过3D绘图经验的人都知道,在绘制模型时都是以模型本身作为参考坐标系,那么将一大队模型映入场景时,我们要对他们进行统一分配,则需要将原先的本地坐标系转为公共的世界坐标系。有了场景对象,那自然需要一个观察视角,所以在世界坐标系这一宏大的结构中我们再需要将其特例划分一块坐标系——观察坐标系。当然这个观察坐标系我们自身并不能直接进入这个游戏场景中进行观测,一般会借助Unity中的摄像机作为传输图像媒介将图像映射的显示屏幕上,最后我们才看到摄像机投射出的图像,很显然这里又存在一个转换,观察坐标系——投影坐标系。

面处理

面的组装——面截取——面剔除

通过顶点处理我们获取到一组模型点的集合,而这些点最终混合便形成了面,即面的组装。由于投影出的画面是从观察坐标系转化而来,我们能够看到的图像仅仅是屏幕尺寸那样大小的局部图像,因此计算机只需要截取这一局部的图像,即面的截取。当我们看正对我们的两个重叠物体时,我们只能看到最前面的物体,而重叠部分因为深度的关系我们看不到,计算机要模拟出这一效果需要做的最后一步编是将重叠的面剔除掉,即面的剔除(在shader中会存在面的正/反面剔除,这个正反面便是通过法线的方向进行判断的),当然面的剔除并不只有这一部分。从美术角度而言,我们在一张纸上画一个立方体,是不是需要将它的一些边画成平行四边形;当我们画一个正对我们视野前方的道路时,是不是需要将越远地方的物体画得越小,从而造成一些斜线的效果,在这里回到计算机的处理中,同样需要进行这些运算,将一些面剔除达到3维的效果。总之是个复杂的运算。

光栅化

在前面的这些操作中得到其实都是一些矢量而并没有转化为像素,光栅化这一处理即将这些由向量构成的面转换为一个个点阵形式的像素。

像素处理

对每个像素区域着色——贴上贴图——形成最终画面

通过这一套流程,输入到这一环节的东西大致有:像素位置、深度、贴图坐标、法线、切线、颜色等等,最终输出各像素的颜色、透明图的等等。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: