渲染管线


1. Application

CPU计算出需要显示的顶点,以及这些顶点的属性(颜色、法向量、纹理坐标等)。

材质属性,光源属性,Uniform变量。

DrawCall提交准备阶段。

2. Geometry Processing

1. 顶点着色器

  • 顶点变换:顶点从World、View、Clip Space转换。

  • GPU蒙皮。

  • UV计算。

  • 顶点光照。

    coordinate_systems

2. 曲面细分,几何着色(可选)

3. Rasterization

1. 屏幕映射

  • 齐次除法,归一化设备坐标。
  • 视口变换将投影变换得到的坐标XYZ[-1,-1,-1] -> [1,1,1] 映射到屏幕XY[0,0] -> [1,1],Z 0->1(OpenGL为-1到1)。

2. 背面剔除

3. 光栅化

  • 将连续的3D物体转化为离散的屏幕像素过程。
  • 三角形组装,三角形遍历。
  • 确定图元覆盖的片段,顶点插值。

4. Pixel Processing

1. 片段Shader

  1. 逐像素操作。
  2. 光照计算。
  3. Alpha测试。
  4. Discard Clip。

2. Merging

对像素进行各种测试,来决定该像素的剔除和保留,一般有模板测试、深度测试(现代移动设备一般会将深度测试提前来优化移动设备GPU的处理能力)、Alpha Blend、Stencil Test等。