前向渲染路径

  • 前向渲染的作用和意义
  • 场景内有多个灯光,如何渲染每个灯光对物体的影响


前向渲染的作用和意义

  1. 前向渲染的作用:处理多光源的渲染,多光源渲染在unity 有2中渲染方式 前向渲染和延时渲染 .延时渲染主要用于主机,PC平台,不在本次讨论范围.主要来研究前向渲染
  2. 前向渲染的性能开销和场景中的灯光数量成反比.特别是像素光的数量

场景内有多个灯光,如何渲染每个灯光对物体的影响

unity 灯光渲染的3种渲染模式
    1: 逐像素渲染
             计算三角形内部的每个像素像素收到的光照.渲染细腻,效果最好,但同时也最消耗性能
    2: 逐顶点渲染
		     计算三角形每个顶点的光照,顶点之间做插值(光栅化)运算,从而得到了三角形各内像素点的颜色, 
		     与逐像素渲染比较,只需要少量计算即可,因   此性能很高,效果较差.(渲染管线先确定三角形顶点,
		     再光栅化,由于顶点数量少于三角形覆盖面积的像素数量,那么必然导致pass中的执行次数减少。)
    3: 球谐函数(球谐光照)
    4: 各种渲染方式的性能对比

逐像素

逐顶点

球谐光照

效果




性能




时时灯光下,如何优化渲染开销,保持帧率平稳,切兼顾渲染效果了:

摄像机视野内(后面检测视野),有N个灯光,如下图,我们设置了4,永远是视野内最亮的4个灯光采用逐像素渲染,剩余灯光中4个灯光采用逐顶点渲染,其余所有灯光采用球谐渲染

unity 相机渲染在UI上 unity渲染效果_光栅化


一般在移动端项目中,我们设置一个灯光是逐像素渲染的,这个灯光一般师场景中的主光源(平行光),因为平行光性能开销最小.unity 所有灯光类型的开销情况Point(聚光灯) >Area(区域光/点光源) >Directional(平行光)