【Unity灯光与渲染技术】LightProbes灯光探测器实践

时间:2021-08-03 16:41:50

Light Probes实现操作

关于反射探头和屏幕空间反射的资料相对较少,暂时还没有深入理解的需求。而在论文中需要深入Light Probes相关知识点,所以今天就用一下午实现了一下具体的过程。试试才发现有许多细节是需要注意的。下图是工程的基本构造,其中左上方是蓝色的光源,右方中部是红色的光源,左方下部是黄色的光源。三种不同颜色的光源相互作用,在球体身上显示不同部分的光照信息。在烘焙之前,Light Probes并不具备光照亮度和颜色的信息,但是在进行烘焙以后,所有的Light Probes都分配了不同的光照亮度和颜色。此时关闭灯光,场景中的光照信息仍然存在Light Probes之中,为主体提供光源。实现动态的全局光照。

【Unity灯光与渲染技术】LightProbes灯光探测器实践

 

测试Light Probe

上图中主要包含了三部分内容:

1.简单的场景:一个球和地板

2.Light Probe Group组件

3.三个不同颜色的灯光

实现的效果是当小球下落的过程中,关闭实时灯光仍然可以看见小球上面变化的光照,如下面三张图片所示:


【Unity灯光与渲染技术】LightProbes灯光探测器实践  

 

上面三张图标均是在关闭光源后以烘焙贴图照亮的结果。上左侧图显示的是在蓝色光源处,其光照信息是周围具有蓝色灯光信息的Light Probe 提供的光照。下面三幅图片分别对应上面三张不同颜色亮度的球体所在的位置。我们可以看到下图中球体所在的地方有几条黄色线条围城的三棱锥,而球体则受构成这三棱锥的四个Light Probes的光照信息影响。不管物体移动或者旋转,其光源仍然会自然地显示在物体上。达到了实时全局光照的效果。

【Unity灯光与渲染技术】LightProbes灯光探测器实践

  

PROBE功能仍然在不断完善优化,如果未来有需求还可以了解相关的内容。

1.Tetrahedron based light probe interpolation(基于四面体的Light Probe插值)

2.Unity Light Probe自动均匀分布方

 

下面提一下实践过程中值得注意的是烘焙的操作流程,涉及到灯光开关、Baking模式的选择以及Lighting Scene面板Atuo选项是否开启。

灯光模式

 【Unity灯光与渲染技术】LightProbes灯光探测器实践

首先要明确的是,三维系统中默认设置的灯光模式是实时的,如果我们要通过灯光贴图这种方式降低消耗就需要在游戏中关闭实时灯光,所以要对灯光模式进行设置。而烘焙贴图的过程中需要实时灯光提供光照信息,所以在烘焙过程中要保证灯光的勾选状态。

Baking模式

 【Unity灯光与渲染技术】LightProbes灯光探测器实践

在灯光的Light属性面板中有一行Baking属性,其有三个模式分别是Realtime、Baking、Mixed。Unity里每盏灯光默认的烘焙模式都是”Realtime”,这代表这些灯光仍然会照亮你的场景,Unity的预计算GI系统会处理间接光。

如何设置烘焙模式是”Baked”,那么这些灯光将会透过Unity的烘焙GI系统处理直接光源和间接光源,产生出来的光照贴图一旦贴到场景上在执行期间是不能改变的。如果需要实现光照贴图的效果就选择此模式。

选择烘焙模式为”Mixed”的话,场景内的静态对象会被烘焙GI拿去做计算,然而,不像”Baked”模式,混合模式的灯光仍会继续运算即时光源到非静态对象上,这对于你想把静态环境烘成光照贴图,但同时又希望同样一盏灯能为会动的角色计算阴影很有帮助。

 

Atuo选项

当我们需要即时看到连续改变的烘焙效果时,需要开启AUTO选项。也可以通过点击build来进行一次的烘焙效果。

【Unity灯光与渲染技术】LightProbes灯光探测器实践