渲染(rendering)是将三维物体或场景的描述转化为二维图像的过程。渲染管线(rendering pipeline)是显示芯片内用于处理图形信号而相互独立的并行处理单元。一个渲染管线包括一系列可以并行和按照一定顺序及逆行的处理阶段。每个处理阶段都从上一阶段接收输入,然后进行数据处理,再输出给下一个阶段。渲染管线的处理过程很像汽车车间里的装配流水线,只不过渲染管线中的流动是节点、几何图元和片段,最终装配成一幅二维图像,因此渲染管线也称渲染流水线。
早期的渲染管线是固定管线,它的顶点处理和像素着色方法是固化的,开发者只能填充顶点数据,指定材质和纹理、设置光照、设置变换矩阵、设置渲染状态,然后显示芯片经过计算生成一幅图像,中间的过程无法进行干预。
目前的渲染管线技术以可编程管线为主流,允许开发者编程对顶点运算和像素着色进行控制,实现较好的渲染效果。而可编程管线的核心就是Shader(着色器)。
Unity 3D中所有的渲染都需要通过Shader来完成,开发者可以自行对Shader进行开发,也可以使用Unity 3D提供的内建Shader来实现各种画面效果。
经过多年的发展,Unity 3D对渲染部分进行了改进,加入大量的新特性。例如,Tessellation for Metal、针对GI的GPU Instancing支持、针对导入设置和组件的编辑器Presets、Dynamic Resolution for PS4、全景360°图像和视频录制(实验版)、实验性的动画API(应用程序接口)、FBX导入改进、新的粒子系统改进等。这些改进所带来高端视觉效果的能力,让图形渲染达到了新的高度。(www.xing528.com)
Shader的渲染流程是CPU和GPU合作渲染一帧的过程,主要分为3个阶段:应用程序阶段(CPU控制)、几何阶段(GPU控制)、光栅化阶段(GPU控制)。
在应用程序阶段,主要是CPU计算物体的顶点坐标、法向量、纹理坐标、纹理等数据。在此阶段的主要工作是确定要被渲染、被剔除的对象;然后加载到内存,设置对象需要渲染的状态(材质、纹理等);最后输出渲染单元。
在几何阶段:首先通过接收CPU的渲染单元,进行对渲染单元的顶点坐标转换、裁剪、投影以及屏幕映射的工作;然后输出经过变换和投影之后的顶点坐标、颜色以及纹理坐标等,交给光栅器进行处理。
在光栅化阶段,通过接收几何阶段的数据在屏幕上生成像素,并渲染成最终的图像。该阶段主要进行像素操作,任务是决定每个渲染图元中哪些像素会被绘制在屏幕上。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。