第二章 什么是渲染流水线
一、渲染流水线的三个概念阶段
我们对渲染流水线进行基本的功能划分,可以将流水线分成三个阶段。注意这里的阶段只是单纯的概念,不是实际硬件实现方式。
- 应用阶段
- 本阶段由我们的应用主导,因此通常是由CPU负责实现。开发者具有这个阶段的绝对控制权。
- 主要有三个任务:
- 准备好场景数据,例如摄像机的位置、视锥体、场景中包含了哪些模型、使用了哪些光源等等;
- 为了提高渲染性能,我们往往需要做一个粗粒度剔除(culling)工作,把不可见的物体剔除出去。不需要移交给下一阶段处理;
- 需要设置好每个模型的渲染状态:材质(漫反射颜色、高光反射颜色)、纹理、shader等
- 本阶段最重要的输出是渲染所需的几何信息,即渲染图元(rendering primitives)。通俗来讲,渲染图元可以是点、线、三角面等。
- 几何阶段
- 处理所有和我们要绘制的几何相关的事情,例如决定需要绘制的图元是什么、怎样绘制,在哪里绘制。通常在cpu上进行。几何阶段负责和每个渲染图元打交道,进行逐顶点、逐多边形的操作。一个重要任务是把顶点坐标变换到屏幕空间中。
- 输出:屏幕空间的二维顶点坐标、每个顶点对应的深度值、着色等相关信息。
- 光栅化阶段
- 使用上阶段传递来的数据产生屏幕上的像素,也在GPU上运行。对输入的逐顶点数据进行插值,然后再进行逐像素处理。