1、什么是局部光照(Local illumination)
简单说:光在模型表面的照射效果。
2、什么是全局光照(Global illumination)也称GI
这个其实是三维软件中的称呼。其实光从太阳经到达地面是经过无数次的反射和折射。 全局光照里面又有Realtime GI(实时全局光照),默认情况下Unity的光源都是实时的,代表这些灯源会把光线照射到场景并每帧更新,
3、两者的异同?
全局光照参考的条件太复杂,而且占据大量的CPU资源! 局部光照只考虑模型表面的照射效果,所以更加灵活,简易。
3-1、Unity的光照系统
在Unity中提供了两种非实时的全局光照。 一种是预计算的GI(Precomputed Realtime GI) 另一种是烘焙的GI(Baked GI) 这两种都是可以执行Build指令或者勾选Auto自动烘焙,才能生效。注意:他们只会计算或烘焙勾选了Lightmap Static 的物体,如果想影响动态物体需要使用灯光探头。 预计算的GI与烘焙GI虽然都能实现GI效果,但是预计算允许对光源记性修改,而烘焙GI完成后在修改光源也不生效。
案例:模拟日夜循环
1、添加光照探头
Paste_Image.png
2、进行编译
3、修改灯光的角度,模拟日落系统
Paste_Image.png
4、预计算实时GI的间接光照实现
Paste_Image.png
1、首先关闭系统的实时渲染功能
Paste_Image.png
2、添加聚光灯
Paste_Image.png
3、进一步测试
我们将长方体设置为静态LightMap
设置周围的方块体也为LightMap
打开预计算的实时GI - Precomputed Realtime GI
选中Lighting里面的编译进行
设置完后
之前的图,没有设置静态LightMap
注:设置完LightMap static后的游戏物体不可以移动。
如果场景中有非静态物体也需要接收全局光照,则需要添加Light Probe Group,分布的密度和位置取决于对光照敏感程度的要求和光照变化的强度。
Paste_Image.png
Paste_Image.png
然后烘焙就可以使用了
关于灯光的类型
灯光类型
Baking:选项中
三种烘焙选择
Realtime:Unity默认选择Realtime,灯光会通过烘焙GI系统处理直接光源与间接光源。 Baked:只会被场景内的静态对象拿去GI计算,在Baked GI模式下不会照亮非静态物体 Mixed:场景内的静态对象会被烘焙GI拿去做计算,同时仍会继续运算即时光源到非静态对象上。