图形绘制管线描述GPU渲染流程,即“给定视点,三维物体,光源,照明模式,和纹理等元素,如何绘制一幅二维图像”。
将图形绘制管线分为三个主要阶段:应用程序阶段,几何阶段,光栅阶段。
应用程序阶段: 主要和CPU,内存打交道;诸如碰撞检测,场景图建立,空间八叉树更新,视锥剪裁等经典算法都在此阶段。
该阶段的末端,几何体数据(顶点坐标、法向量、纹理坐标、纹理等)通过数据总线传送到图形硬件(时间瓶颈):
数据总线是一个可以共享的通道,用于在多个数据中传输数据;
端口是在两个设备之间传送数据的通道;
带宽用来描述端口或者总线上的吞吐量,可以用每秒(b/s)来度量,数据总线和端口(如加速图形
端口)将不同的功能模块“粘贴”在一起,由于端口和数据总线均具有数据传输能力,因此通常也将端口认为是数据总线。
几何阶段:
主要负责顶点坐标变换,光照,裁剪,投影以及屏幕映射,
该阶段基于GPU进行运算,在该阶段的末端得到了经过变换和投影之后的顶点坐标,颜色,以及纹理坐标
光栅阶段:
基于几何阶段的输出数据,为像素正确配色,以便绘制完整图像,该阶段都是单个像素的操作,每个像素的信息存储在颜色缓存器(color buffer或者frame buffer)中
光照属于几何阶段,因为光照计算涉及视点、光源和物体的世界坐标,所以通常放在世界坐标系中进行计算;
雾化以及涉及物体透明度的计算属于光栅化阶段,因为都需要深度值信息(Z值),而深度值是在几何阶段中计算的,并传递到光栅阶段的。