部分内容转自:零基础入门Unity Shader(七) - 知乎
通俗易懂说渲染管线
图形渲染管线之所以被叫做管线,就是因为它和一根管子的概念很像,我们可以理解为这根管子的末端连接的是我们最终的显示屏幕,管子的起始端连接的是我们的原始素材。把我们想展示在屏幕上的素材从起始端放入,然后素材通过管子经过一系列操作最终展示在屏幕上。而我们如果想加工一下素材最后的显示效果就可以在这根管子中做一些特殊的操作处理,以使素材经过我们所自定义的操作使其最终达到我们想要的效果。
这根管子从头到尾大致流程可以分为以下三个大阶段(概念上):
- 应用程序阶段(The Application Stage)
就是我们的原始素材准备阶段,包括我们的模型、贴图、相机和光源等,经过这个阶段会将所有素材转换成渲染图元并提交到下一阶段中(几何阶段)。
- 几何阶段(The Geometry Stage)
主要是对上一阶段中传过来的数据进行顶点上的加工处理,包括各种矩阵转换与顶点着色等,最终处理完后会输出屏幕空间的二维顶点坐标、顶点着色等信息,并再提交到下一阶段(光栅化阶段)。
- 光栅化阶段(The Rasterizer Stage)
经过几何阶段处理完后输送到光栅化阶段,从像素级别上对每个像素进行加工处理,最终显示于屏幕上。
下面通过三幅图了解下渲染管线是怎么样的流程:
总结:
可编程能力编程得是两个部分,一个是变换和光照使用,顶点着色器可以完成:第二个方面是如何去采样去计算颜色以及雾化处理等等放在片段着色器。
优化中经常提到的减少Draw call就是减少CPU对GPU的调用。