图形渲染流水线总结如下:
1.顶点数据(Vertex Data)
顶点数据由应用程序加载到现存中,随后被传递给顶点着色器。
2.顶点着色器(Vertex Shader)
对每个顶点调用一次顶点着色器,实现顶点的空间变换、顶点着色等功能。顶点着色器是完全可编程的。
3.曲面细分着色器(Tessellation Shader)
细分图元。
4.几何着色器(Geometry Shader)
执行逐图元着色或者用于产生更多的图元。
5.裁剪(Clipping)
将不再视野内的顶点裁减掉,并剔除某些三角形面片。裁剪是可配置不可编程的。
6.屏幕映射(Screen Mapping)
把每个图元的坐标转换到屏幕坐标系中。屏幕映射是不可配置和编程的。
7.三角形设置(Triangel Setup)
根据上一阶段输出的顶点,想要得到整个三角形网格对像素的覆盖情况,就必须计算每条边上的像素坐标。为了计算边界像素坐标,就需要三角形边界表示方式。计算三角形网格表示数据的过程就是三角形设置。三角形设置是不可配置和编程的。
8.三角形遍历(Triangle Traversal)
计算三角形网格覆盖的像素,该过程也被称为“扫描转换”。三角形遍历是不可配置和编程的。
9.片元着色器(Fragment Shader)
实现逐片元着色操作。片元着色器是完全可编程的。
10.逐片元操作(Per-Fragment Operation)
负责颜色缓冲、深度缓冲、混合等操作。是可配置不可编程的。