一、渲染流水线综述
渲染流水线的工作任务在于由一个三维场景出发、生成(渲染)一张二维图像。计算机需要从一系列的顶点数据、纹理信息出发,把这些信息最终转换成一张人眼可见的图像。这些工作通常由CPU和GPU共同完成。
《Real-Time Rendering,Third Edidtion》一书中将渲流程分成3个阶段:应用阶段(Application Stage)、几何阶段(Geometry Stage)、光栅化阶段(Rasterizer Stage)
每个阶段也是一个流水线系统,包含着子流水线系统
1.应用阶段
这一阶段往往有应用指导,因此通常由CPU负责实现,我们拥有开发权。
这一阶段开发者三个主要任务{
1.准备好数据场景数据,例如摄像机位置、视锥体、场景中模型、使用的光源
2.为了提高渲染性能,往往需要做一个粗粒度剔除(culling)工作,把不可见的物体剔除
出去,免去移交到下一阶段几何阶段处理。
3.为每个模型设置 渲染状态。渲染状态包括但不限于模型使用的材质(漫反射颜色、高光
反射颜色)、使用的纹理、使用的shader等。
}
这一阶段最重要的输出是渲染所需要的几何信息,即渲染图元(rendering primitives)。通俗来说渲染图元可以是点、线三角面。这些渲染图元会被传至下一个阶段几何阶段(geometry)
2.几何阶段
几何阶段处理所有与要绘制的几何相关的事情吧。例如决定绘制的图元是什么,怎么绘制,在哪里绘制。