前言
本系列为本人阅读《unity shader 》冯乐乐时,做下的记录。
什么是渲染流水线
渲染流水线的工作任在于由一个三维场景出发、生成(或者说渲染)一张二维图像。换句话说,计算机需要从一系列的顶点数据、纹理等信息出发,把这些信息最终转换成一张人眼可以看到的图像。这个工作通常是由CPU和GPU共同完成。
渲染流水线的三个阶段:
《Real-Time Rendering, Third Edition》中将一个渲染流程分成3个阶段:应用阶段(Application Stage)、几何阶段(Geometry Stage)、光栅化阶段(Rasterizer Stage)。
应用阶段:通常由CPU负责实现。开发者的三个任务:1、准备好场景数据,例如摄像机的位置、视椎体、场景中包含的模型、使用的光源。2、进行粗粒度剔除(culling),把不可见的物体剔除。3、设置每个物体的渲染状态,使用的材质,纹理,使用的shader等。应用阶段输出的是渲染所需要的几何信息,即渲染图元(rendering primitives)
几何阶段:gpu上处理,对于每个渲染图元进行逐顶点、逐多边形操作。把顶点左边变换到屏幕空间中。输出屏幕空间的二维坐标,每个顶点对应的深度值、着色等相关信息,并传递给下一个阶段。
光栅化阶段:GPU上运行。决定每个渲染图元的哪些像素被绘制在屏幕上。对上一阶段得到的逐顶点数据进行插值,然后在进行逐像素处理。