渲染路径:Rendering Path

指定渲染路径之后,相当于告诉Unity我准备使用哪些光照属性,之后就可以通过Unity内置的光照变量来访问这些属性。

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

延迟渲染路径:所有物体在不进行光照运算的情况下被绘制,然后对每个像素生成一组数据,这些数据包括位置、法线、高光颜色等,统一称之为G-buffer。之后,将每个光源以一个2D后期处理的方式(渲染屏幕大小的一个四边形)施加到最终图像上,这个过程使用的数据是在上一个批次中生成的G-buffer。

延迟渲染路径对多光源场景有比较好的处理效率,但是不支持半透明物体,缺乏抗锯齿的支持。

前向渲染路径有3种处理光照的方式:逐顶点处理,逐像素处理,球谐函数处理。

决定光源的处理方式取决于光照的重要性Important

Unity根据场景中各个光源的设置和光源对物体的影响程度对光源进行排序。

一定数目的光源按逐像素处理(场景中最亮的平行光)(Important)(若数量小于Pixel Light Count,则有更多的光源按逐像素处理)

最多四个光源按逐顶点处理(Not Important)

剩下的光源按SH方式处理(Not Important)

前向渲染路径有两种Pass

Base Pass 计算一个逐像素的平行光以及所有逐顶点和SH光源

Additional Pass 其他影响该物体的逐像素光源,每个光源执行一次Pass