渲染流水线
什么是渲染流水线
渲染流水线的工作任务在于由一个三维场景出发、生成(或者说渲染)一张二维图像。
应用阶段
这一阶段由CPU负责。开发者拥有绝对控制权。
这一阶段,开发者有3个主要任务:
- 首先准备好场景数据,例如摄像机的位置,视锥体,场景中的模型等
- 为了提高渲染性能,需要进行粗粒度剔除,把那些不可见的物体剔除出去
- 设置每个模型的渲染状态,包括但不限于材质(漫反射颜色、高光反射颜色)、使用的纹理、使用的Shader。
这一阶段最重要的是输出渲染所需的几何信息,即渲染图元。
应用阶段大致可以分为下面三个阶段:
- 把数据加载到显存
所有渲染所需的数据都需要从硬盘加载到系统内存中。然后网格和纹理等数据又被加载到显卡上的存储空间——显存。这是因为显卡对显存的访问更快,且大多数显卡没有访问内存的权限 - 设置渲染状态
渲染状态定义了场景中的网格如何被渲染的。例如使用哪个顶点着色器/片元着色器、光源属性、材质等。 - 调用DrawCall
DrawCall是一个命令,由CPU发起,GPU接收。这个命令仅仅指向一个需要被渲染的图元。当给定一个DrawCall时,GPU会根据渲染状态和给定的顶点数据进行计算,最终输出成屏幕上显示的像素。
几何阶段
几何阶段用于处理所有和我们要绘制的几何相关的事情。例如:决定绘制的图元是什么,怎么绘制,在哪里绘制。这一阶段通常在GPU上进行。