理清渲染流水线1 :渲染流水线总览


     以下内容均基于自己对各类计算图形学及Unity3D引擎相关资料的学习、试验与思考,不能保证各种结论与解释完全正确,如有错误或不同观点欢迎留言讨论。



· 渲染、流水线与渲染流水线

      渲染,即从一个三维场景出发,通过一系列基于硬件设备(通常是CPU和GPU)的程序而计算生成(或称为 产生 / 渲染 / 创造)一张二维纹理,通常情况下,这张二维纹理就是最终呈现在显示设备上的图像,即普遍意义上的 “ 画面 ”。而这 “ 一系列计算过程 ” 可以类比现实中工厂的流水线式作业方式,即对一个系统进行工序分割,每个流水线上的工作节点各司其职,专注于某个固定的任务。像这样分割了工序后的渲染过程,就称之为渲染流水线。

      流水线的优势是当其中一个工作节点的当前任务完成后不会闲置而是立即开始下一个任务,因此,在理想情况下,如果把一个非流水线系统分割成n个流水线阶段且每个阶段耗时相同的话,系统的整体运行速度会得到n倍的提升。


· 概览

       通常为了便于理解,我们会概念性的将渲染流水线归纳为为三大阶段:应用阶段(Application)、几何阶段(Geometry)、光栅化阶段(Resterization)。    

        需要特别注意的是,这三大阶段以及并不对应某个十分具体的工作任务,甚至在本小节(即 “概览” )内接下来将提到的所有概念、名词、介绍都是概念性的,因为这三大阶段每个阶段本身其实也是一个流水线系统,即整个渲染流水线中还包含了多个子流水线阶段:首先,模型、贴图、Shader、材质、光源、摄像机等信息作为源数据传递给应用阶段,在进行一些计算后(通常由CPU负责),应用阶段会输出需要渲染的图元信息(此处可以认为图元就是需要渲染的点、线、三角面等)给几何阶段,几何阶段接收渲染图元信息后经过一系列逐片元的操作得到屏幕空间下的顶点信息并传递给光栅化阶段(几何阶段和光栅化阶段通常都由GPU完成),最终光栅化阶段先对几何阶段输出的顶点信息进行插值再针对显示设备的特点进行逐像素的计算,得出最终渲染图像。



· GPU流水线    

       在“概览”一节中之所以特别强调渲染流水线三大阶段的划分和说明都是概念性的就是为了将其与GPU流水线的概念进行区分。GPU流水线,即显卡的工作流程,在本小节内我们提到的相关操作才是在渲染过程中计硬件设备真正的进行的具体操作,因此会比上一节的概念性介绍更加具体、工序划分更加细致。

你可能感兴趣的:(理清渲染流水线1 :渲染流水线总览)