渲染管线(Graphics Pipeline/Rendering Pipeline):直译为渲染流水线。渲染流水线就是将3D图像转换为2D图像并在屏幕上显示的过程。它分为几个阶段:应用阶段、几何阶段和光栅阶段。
(1)应用阶段
主要是CPU与内存打交道,例如碰撞检测,计算好的数据(顶点坐标、法向量、纹理坐标、纹理)就会通过数据总线传给图形硬件 。
(2)几何阶段(Geometry Stage)
也被称为“变换和光照”阶段。为了从3D场景转换到2D,场景中的所有物体都需要转换到几个空间。每个空间都有自己的坐标系。这些转换是通过一个空间的顶点转换到另一个空间的顶点来实现的。
光照(lighting),是这个阶段的另一个主要部分。是使用物体表面的法向量来计算的。通过摄像机的位置和光源的位置,可以计算出给定顶点的光照属性。
(3)光栅阶段(Rasterization Stage)
光栅,可以想象成”透过一把梳子看世界“,类似于将连续的数据转化成离散的数据。这里光栅阶段是指矢量图形转化成像素点的过程。
GPU需要遍历2D图像并进行转换将数据转化为大量“像素候选”,即所谓的片段(Fragment,片段可以理解为像素的原型,但绝对不是指一大片像素)。片段是包含位置,颜色,深度,纹理坐标等属性的数据结构。片段可能会最终成为图像上的像素。片段是通过检查原始图元和和屏幕像素是否相交来生成的。如果一个片段与一个基元相交,但不与它的任何顶点相交,那么它的属性必须通过顶点之间的属性插值来计算得出。
最终像素颜色的计算:结合纹理和颜色、光照等其他属性,或片段与另一个半透明片段的结合(所谓的α混合),亦或是可选的雾化效果(另一个图形效果)