关于Unity中的渲染路径/前向渲染/延迟渲染/TBDR

长期以来被渲染路径搞得晕头转向,尤其是前向渲染和延迟渲染。重读第二遍入门精要感觉有必要把这些模糊的知识点串联记录起来。

1.什么是渲染路径?
渲染路径指的是场景中光照的渲染方式。到底是用前向渲染的方式,还是用延迟渲染的方式。使用不同的方式决定了不同的光照计算结果。只有为shader正确的选择和设置需要的渲染路径,该shader的渲染路径才能正确被执行。

2.不同的摄像机可以使用不同的渲染路径。通过Camera组件中的Rendering Path来指定。

3.什么是前向渲染路径?

按我的理解就是,遵循从Geometry到VS到FS,每个逐像素光源都需要完整的完成这样一次这样线性渲染流程叫做前向渲染。

完成一次完整的前向渲染,需要渲染这个对象的渲染图元,计算深度缓冲区和颜色缓冲区。深度缓冲区决定可见性(深度测试不通过就舍弃),通过测试的片元需要与原来颜色缓冲区的颜色进行混合,更新颜色缓冲区的颜色值。
每个逐像素光源都必须完成一次完整的上述渲染流程。

4.Unity的前向渲染:
三种处理光照的方式:逐像素,逐顶点,球谐函数。
渲染模式:Light组件中的Render Mode决定是Important还是not Important。重要,按照逐像素光源处理。
Unity会根据场景中对各个光源的设置以及光源对物体的影响来排个序(如Render Mode),一定数目的光源会按照逐像素光源处理(与Pixel Light Count有关),最多四个按照逐顶点光源处理,剩下按照SH。

  • 场景中最亮的平行光总是按照逐像素处理的。

你可能感兴趣的:(图形学学习,图形学,渲染管线,shader)