2.5 图形流水线
前面分别讲解了计算机图形学中的建模、变换、绘制和显示等内容,事实上可以用一个概念将它们关联起来,这就是本章一开始曾提到过的图形流水线(Graphics Pipeline)。现在就来讨论图形流水线这个重要概念。可以说,图形流水线就是本书内容的核心。
其实,计算机图形学中的流水线的概念与工厂的生产流水线、工作流程等概念很相似。
图2.12是图形流水线的系统结构示意图。图形流水线的基本结构由三个主要阶段构成:应用程序、几何处理和光栅化,如图2.12(a)所示。而这三个主要阶段还可以进一步划分为若干个功能阶段,如图2.12(b)所示。换句话说,每一个阶段也可以是流水线结构。
图2.12 图形流水线的系统结构示意图
需要说明的是,这里将讨论的焦点放在图形流水线的基本概念和它所包含的几个不同的工作阶段上面,重点介绍其中的功能而不是如何实现这些功能。
1.应用程序阶段(Application Stage)
这一阶段最重要的任务是建模,将需要绘制的几何体以及纹理数据输出到图形流水线的下一阶段。这些几何体都是绘制图元(如点、线、三角形、多边形、曲面片等)。同时,碰撞检测、纹理动画、几何变形、人机交互、键盘、鼠标、传感器等的输入检查都是这个阶段的任务。这个阶段的计算通常由CPU来执行。
2.几何处理阶段(Geometry Stage)
这一阶段主要负责大部分多边形和顶点操作。可以将这个阶段(也是流水线)进一步划分为如图2.13所示的几个独立的功能阶段——模型与观察点变换、光照和着色、投影、裁剪、屏幕映射。很显然,几何处理阶段的计算量非常大。
图2.13 图形流水线的几何处理阶段被划分为若干个功能阶段
3.光栅化阶段(Rasterizer Stage)
在这一阶段,根据几何处理阶段处理后的顶点、颜色和纹理坐标,将二维屏幕空间的图形顶点扫描转化成像素,即负责显示屏上每个像素的填充、纹理映射及可见性计算等工作。
需要指出的是,就目前计算机图形学技术发展水平而言,图形流水线中的应用程序阶段的功能通常是用软件方式实现的,即图形硬件加速常常位于图形流水线的后期。而几何处理和光栅化过程几乎都用硬件来实现。总的来说,软件实现和硬件实现之间经常性地交替推进,而且存在着将软件算法硬件化的趋势。近年来,图形硬件,特别是GPU(Graphics Processing Unit)的不断升级换代有力地支持了图形流水线这一概念,甚至连比较高级的应用程序阶段的算法都尽可能地利用硬件来实现。显然,硬件相对于软件的主要优势就在于速度,而对实时应用来说速度则是至关重要的。由此可以领会到,学习计算机图形学的关键依然是算法,而算法既可以用软件实现也可以用硬件实现,因此对于图形软件和硬件需要同等重视。
有关图形硬件方面的内容在第15章讨论。