从山峰渲染了解GPU图形流水线

时间:2021-10-22 10:22:08

 ● 从山峰渲染了解GPU图形流水线

    在这一部分,笔者将和大多数初识GPU的爱好者一道探寻GPU的渲染步骤,我们使用一座山峰的渲染历程来帮助大家简单理解GPU图形流水线的工作原理。简单的说:GPU主要完成对3D图形的处理——图形的生成渲染。


从山峰渲染了解GPU图形流水线
从山峰渲染看GPU图形流水线

    1、顶点生成

    图形学API(应用程序接口)用最初级的图元(点、线、三角形)来表示物体表面。每个顶点除了(x,y,z)三维坐标属性外还有应用程序自定义属性,例如位置、颜色、标准向量等。结合到我们看到的这座山峰,首先GPU从显存中读取描述山峰3D外观的顶点数据。

    2、顶点处理

  这阶段GPU读取描述3D图形外观的顶点数据并根据顶点数据确定3D图形的形状及位置关系,建立起3D图形的骨架。在支持DX8和DX9规格的GPU中,这些工作由硬件实现的Vertex Shader(顶点着色器)完成。这个阶段中GPU生成一批反映山峰三角形场景位置与方向的顶点。

    3、光栅化计算

    显示器实际显示的图像是由像素组成的,我们需要将上面生成的图形上的点和线通过一定的算法转换到相应的像素点。把一个矢量图形转换为一系列像素点的过程就称为光栅化。例如,一条数学表示的斜线段,最终被转化成阶梯状的连续像素点。

    在屏幕空间内生成山峰顶点之后,这些顶点被分为三角形图元,GPU内的固定单元会对这些山峰图元做光栅化过程,相应的片元集合也就随之产生。

从山峰渲染了解GPU图形流水线
GPU内部渲染流水线

    4、纹理帖图

    顶点单元生成的多边形只构成了3D物体的轮廓,而纹理映射(texture mapping)工作完成对多变形表面的帖图,通俗的说,就是将多边形的表面贴上相应的图片,从而生成“真实”的图形。TMU(Texture mapping unit)即是用来完成此项工作。

    5、像素处理

这个阶段(在对每个像素进行光栅化处理期间)GPU完成对像素的计算和处理,从而确定每个像素的最终属性。在支持DX8和DX9规格的GPU中,这些工作由硬件实现的Pixel Shader(像素着色器)完成。

    像素操作用每个片元的屏幕坐标来计算该片元对最终生成图像上的像素的影响程度。在这个阶段Pixel Shader(像素着色器)从显存中读取纹理数据对山峰片元上色并渲染。

    6、最终输出:

    由ROP(光栅化引擎)最终完成像素的输出,1帧渲染完毕后,被送到显存帧缓冲区。AA即多重采样,对ROP性能和图形卡带宽有相当的压力。而各项异性过滤则对TMU带来更多的负担。

    这个阶段由ROP单元完成所有山峰像素到帧缓冲区的输出,帧缓冲区内的数据,经过D/A转换输出到显示器之后,我们就可以看到绘制完成的山峰图像。