渲染流程分为的三个阶段:应用阶段(Application Stage)、几何阶段(Geometry Stage)、光栅化阶段(Rasterizer Stage)
应用阶段由CPU完成, 几何阶段和光栅化阶段由GPU完成。
1.应用阶段
将需要在屏幕上显示出来的物体的几何信息,即渲染图元(点,线,三角面等)传递给下一阶段。
2.几何阶段
几何阶段负责和每个渲染图元打交道,把顶点坐标变换到屏幕空间中。
- 顶点着色器( Vertex Shader)是完全可编程的,它通常用于实现顶点的空间变换、顶点着色等功能。
- 曲面细分着色器( Tessellation Shader)是一个可选的着色器,它用于细分图元。
- 几何着色器( Geometry Shader)同样是一个可选的着色器,它可以被用于执行逐图元(Per- Primitive)的着色操作,或者被用于产生更多的图元。
- 裁剪( Clipping),这一阶段的目的是将那些不在摄像机视野内的顶点裁剪掉,并别除某些三角图元的面片。这个阶段是可配置的。
- 屏幕映射( Screen Mapping),这一阶段是不可配置和编程的,它负责把每个图元的坐标转换到屏幕坐标系中。
3.光栅化阶段
光栅化阶段有两个最重要的目标:计算每个图元覆盖了哪些像素,以及为这些像素计算它们的颜色。
- 三角形设置( Triangle Setup),这个阶段会计算光栅化一个角网格所需的信息。
- 三角形遍历( Triangle Traversal),阶段将会检査每个像素是否被一个三角网格所覆盖,如果被覆盖的话,就会生成一个片元。
- 片元着色器( Fragment Shader)是另一个非常重要的可编程着色器阶段,它的输入是上一个阶段对顶点信息插值得到的结果,而它的输出是一个或者多个颜色值。这一阶段可以完成很多重要的渲染技术,其中最重要的技术之一就是纹理采样。
- 逐片元操作( Per-fragment Operations)是对每一个片元进行一些操作(模板测试,深度测试,颜色混合)。