Unity的GI按照灯光类型分为两种,一种是Realtime GI(适用于Realtime的灯光),另一种是Baked GI(适用于Mixed或Baked的灯光),下面将分别介绍这两种GI:
Realtime GI:虽然名字中含有Realtime,但这种设置同样也需要在运行前烘培好光照贴图,以保证运行时的流畅程度,只不过与Baked GI相比生成的光照贴图在运行时是可变的,这种变化会带来性能上的额外开销但要比不预计算光照贴图好得多
Baked GI:
- Bake Indirect:只烘培间接光照,直接光以及阴影进行实时计算。运行时改变灯光,直接光照和阴影就会变,但间接光不变(如果间接光弱,视觉影响不大)。只减少间接光照的实时计算,适合对光照要求较高的场景,内存消耗小,当然性能的消耗也大
- Shadowmask:对静态物体直接光照产生的阴影也会被烘培到Shadowmask中,动态物体不受影响。运行时改变灯光只有间接光照和静态物体的阴影不受影响。内存中多了一份Shadowmask,比上一种少了静态物体阴影的计算,占用性能小了一点
- 关于Distance Shadowmask:可以理解为Shadowmask的一种改进版,即当距离小于某个特定的值时,静态物体的阴影可以改变,而当距离大于该值时,阴影的行为同Shadowmask,Unity推荐使用这种设置
- Substrative:静态物体:直接光和间接光都烘焙到光照贴图中;动态物体:接收直接光,可以在静态物体上投射主方向光的阴影。运行时改变光照,静态物体直接光、间接光、阴影不受影响,动态物体的直接光、主灯光(平行光)投射的阴影受影响、其他灯光无阴影。性能消耗最小,应用广
在实际开发中,不建议Baked GI和Realtime GI同时开启(如果开启也常常是在有多种不同类型的光源共存同一场景时),开一种即可
Lightmapping(用于Baked GI)设置参数: