渲染流程主要分为3个阶段:
-
应用阶段
CPU进行。这一阶段最重要的输出是渲染所需的几何信息,即渲染图元。给几何阶段。
应用阶段大致可分为以下三个阶段:
1)把数据加载到显存中;
硬盘——>系统内存——>显存
2)设置渲染状态;
决定了场景中的网格怎么渲染。
3)调用Draw Call。
CPU通过调用Draw Call告诉GPU开始渲染哪一个。
-
几何阶段
GPU进行。对渲染图元做出处理后,输出屏幕空间的顶点坐标、每个顶点对应的深度值、着色等相关信息给光栅化阶段。
- 顶点着色器:完全可编程,通常用于实现顶点的空间变换、顶点着色等功能。
- 曲面细分着色器:可选的着色器,用于细分图元。
- 几何着色器:可选的着色器,被用于执行逐图元。
- 裁剪:把不在摄像机视野内的顶点裁剪掉,并剔除某些三角图元的面片。
- 屏幕映射:不可配置和编程,负责把每个图元的坐标转换到屏幕坐标系中。
-
光栅化阶段
GPU进行。使用上个阶段传递的数据产生屏幕上的像素,并渲染出最终的图像。
-
三角形设置:固定函数阶段。
-
三角形遍历:固定函数阶段。
-
片元着色器:完全可编程,实现逐片元的着色操作。
-
逐片元操作:不可编程,执行修改颜色、深度缓冲、混合等操作。
几何阶段和光栅化阶段的流水线:
顶点数据(上一阶段){顶点着色器曲面细分着色器几何着色器裁剪屏幕映射}
{三角形设置三角形遍历片元着色器逐片元操作}屏幕图像
其中红色部分为几何阶段,绿色部分为光栅化阶段。