Unity3D:使用 Enlighten 的实时全局光照
推荐:将NSDT场景编辑器加入你的3D工具链
3D工具集:NSDT简石数字孪生
使用 Enlighten 的实时全局光照
Unity 使用名为 Enlighten 的中间件解决方案来实现实时全局光照。
默认情况下,实时光源仅向场景提供直接照明。如果在场景中启用实时全局光照(启发实时全局光照),则实时光照也会为场景提供间接光照。
渲染管线支持
有关跨渲染管线使用 Enlighten 支持实时全局光照的详细信息,请参阅渲染管线功能比较。
何时使用启发实时全局照明
Enlighten 实时全局光照 (Realtime GI) 对于变化缓慢且对场景产生显著视觉影响的光源非常有用,例如太阳在天空中移动,或封闭走廊中缓慢脉动的光源。此功能不适用于快速变化的特殊效果或灯光,因为延迟和所需的 CPU 周期数使此类应用程序不切实际。Enlighten 实时全局照明适用于面向中高端 PC 系统和游戏机的游戏。某些高端移动设备也可能足够强大,可以使用此功能,但应保持较小的场景和较低的实时光照贴图分辨率,以确保可接受的性能。
使用 Enlighten 实时全局光照
要在场景中启用 Enlighten 实时全局光照,请打开光照窗口(菜单:窗口>渲染>光照)并启用实时全局光照。
要禁用__实时 GI__ 对特定光源的影响,请选择光源游戏对象,然后在光源组件中将 Indirect Multiplier 设置为 0。 这意味着该光源不会为场景提供任何间接光。
要完全禁用 Realtime GI__,请打开 Lighting 窗口(菜单:__Window > Rendering > Lighting__),然后取消选中 Realtime Global Illumination__。
有关使用 Enlighten 实时全局光照的详细分步建议,请参阅有关预计算实时 GI 的 Unity 教程。
启发实时全局光照的工作原理
Enlighten 实时全局光照将场景分割为小的表面图块,并确定这些图块彼此可见的程度。在运行时,Enlighten 实时全局光照使用此预先计算的可见性信息来估算实时光源在场景中的反弹方式,将结果保存在一组光照贴图中,然后使用这些光照贴图将间接光照应用于场景。 更新光照贴图是计算密集型的,因此该过程被分成几帧。Enlighten 实时全局光照需要几帧才能在整个场景中传播对间接光照的更改。
光照探针和启发实时全局照明
请注意,启用 Enlighten 实时全局照明时,光照探针的行为会有所不同。
为了响应场景光照中的运行时更改,它们在运行时以迭代方式对光照进行采样。
在场景中禁用 Enlighten 实时全局照明时,光照探针仅使用烘焙的光照数据。这意味着它们不会对场景光照中的运行时更改做出反应。
阴影和启发实时全局照明
如果光源也投射阴影,Unity 会将场景中的动态和静态游戏对象渲染到光源的阴影贴图中。静态和动态游戏对象的材质着色器都会对此阴影贴图进行采样,以便这些游戏对象相互投射实时阴影。“阴影距离”设置确定阴影开始淡出并完全消失的最大距离,这反过来又会影响性能和图像质量。
Enlighten 实时全局光照结果还包括柔和阴影,除非场景非常小。这些阴影通常比光照贴图所能实现的更粗糙。
要修改阴影距离设置,请导航到编辑>项目设置>质量>阴影。
性能注意事项
Enlighten 实时全局光照使用一组光照贴图来存储实时间接退回。因此,启用它会增加内存要求,即使您将其与烘焙全局照明一起使用也是如此。
使用 Enlighten 实时全局光照时,生成光照所需的着色器计算数量也会增加,因为它会对一组额外的光照贴图和光照探针进行采样。
优化启发实时全局照明
如果 Enlighten 实时全局光照对场景光照变化的响应速度不够快,有几种方法可以解决此问题:
- 降低实时光照贴图分辨率以加快运行时的计算速度。
- 在“质量设置”窗口中增加实时 GI 的 CPU 使用率设置。权衡是其他系统获得更少的 CPU 时间来完成其工作。这是否可接受取决于您的项目。这是每个场景的设置,因此您可以根据项目中每个场景的复杂性来投入更多或更少的 CPU 时间。
禁用默认环境贡献
Unity 会自动生成一个环境探针和一个默认的反射探针,以确保默认情况下环境光照会影响您的场景和其中的游戏对象。
要禁用未手动创建的光照贴图和光照探针的场景或游戏对象的光照结果中的环境贡献,请禁用默认反射探针和环境探针。有关详细信息,请参阅禁用天管理器。
由3D建模学习工作室整理翻译,转载请注明出处!