实时渲染(第三版):第二章 图形渲染管道 2.5

 

2.5 管道总览

    点、线和三角形是用来建立模型或对象的渲染基元。假设有一个交互式的计算机辅助设计(CAD)应用,用户正检查一个手机的设计。我们将跟随这个模型通过整个图形渲染管道,该管道由三个主要阶段:应用、几何形状和光栅化。场景使用透视投影渲染到屏幕上的窗口。在这个简单的例子中,手机模型包含线(以显示各个部分的边缘)和三角形(以显示表面)。部分三角形被使用2D图像进行了纹理操作,以表示键盘和屏幕。对这个例子来说,除了纹理发生于光栅化阶段,其他的着色完全在几何形状阶段进行计算。

    应用阶段

    CAD应用允许用户选择和移动模型的各个部分。例如,用户可能选择手机的顶部,然后移动鼠标以翻动打开手机。应用阶段必须转换鼠标移动为一个对应的旋转矩阵,然后看着该矩阵在渲染手机时被正确地应用到盖子。另外一个例子:播放一个动画,将相机沿着预先定义的路径移动以从不同的角度展示手机。那么相机的参数,如位置和视图方向,之后就必须被应用根据时间进行更新。对要渲染的每帧,应用阶段填充相机位置、光照、和模型的基元,传递给管道中的下一个主要阶段:几何形状阶段。

    几何形状阶段

    视图转换在应用阶段计算,同时还有一个模型矩阵。对每个传递到几何形状阶段的对象,这两个矩阵通常被一起相乘,称为一个单独的矩阵。在几何形状阶段,对象的顶点和法线被使用这个串联的矩阵进行转换,到了眼睛空间中;然后开始使用材质和光源属性进行顶点着色计算。接着进行投影,转换对象到代表着眼睛所见内容的单位立方体空间。在立方体以外的所有基元都被舍弃。和立方体相交的所有基元被进行剪切,以获得完全位于立方体之中的基元集。顶点随后被映射到屏幕上的窗口中。在所有的这些逐多边形操作完成后,结果数据被传递给管道中的最后的主要阶段:光栅化。

    光栅化阶段

    在这个阶段中,所有的基元都被光栅化,如,转换到窗口中的像素。对象的可视线和三角形进入屏幕空间中的光栅,准备好转换。那些已关联到纹理的三角形就被使用对应的纹理(图像)进行渲染。可见性问题通过z缓冲算法以及可选的alpha和模板测试解决。对象按顺序进行处理,最后在屏幕上显示一幅最终的图像。

结论

    管道产生于这么些年的API和以实时渲染应用为目标的图形硬件的演变。有一点需要注意,这并不是唯一可能的渲染管道;离线渲染管道已经经历了不同的进化路径。电影渲染中最常用微多边形管道[196, 1236]。学术研究和预测渲染应用(如建筑预可视化)通常使用射线追踪渲染器(参考节9.8.2)。

    许多年来,应用开发者使用此处讲述的过程的唯一方式是通过图形API定义的固定功能管道。之所以叫做固定功能管道是因为实现它的硬件由无法灵活编程的元素组成。管道的各个部分可被配置为不同的阶段,如,z缓冲测试就可以被开启或禁止,但是你无法编写程序去控制各个阶段使用的功能的顺序。最近(也可能是最后)的一个固定功能机器的例子是Nintendo的Wii。可编程GPU使得精确确定管道中各个子阶段使用的操作成为可能。学习固定功能管道会让你对一些基本原则有一个合理的了解,不过大多数新开发已瞄向可编程GPU。这种可编程行是本书第三版的默认假设,因为它是充分利用GPU的现代方式。

进一步阅读和资源

    略...

你可能感兴趣的:(翻译)