在 Unity 6 中为您的世界应用全局照明的新方法

我们很高兴与大家分享今年晚些时候将在 Unity 6 中推出的新照明功能的更多细节。
有了新的、强大的 灯光烘焙架构 ,以及使用自适应探针卷(APV)创作灯光探针点亮环境的创新方法,您将享受到更简化的灯光创作流程。这将大大增强视觉效果,同时确保运行时的高性能。
自适应探针卷是一组光探针,Unity 会根据场景中的几何体密度自动放置这些探针,以建立烘焙的间接照明。

由于 APV 具有自适应特性,它将在几何体较多的区域生成更密集的探针,而在物体密度较低的区域(如场景背景)则生成较少的探针。
自适应探针卷 "还为您提供了一整套强大的功能,用于创建美观的照明环境。


APV 是一种基于体积的系统,可自动放置探针,而不是手工放置。
通过 APV 的常规设置选项卡,您可以控制最小和最大探针间距等参数,从而根据周围的几何形状创建多个细分级别。默认情况下,密集区域将使用最高分辨率,而几何图形较少的区域将使用较低的密度级别。这种自动适应行为可确保高效的资源分配,并将重点放在最需要的地方。

要自动生成探针,可以创建自适应探针卷。工作时,您可以看到实时更新,无需烘烤即可预览测头位置。这些更新基于砖块和您之前定义的细分级别,然后根据附近几何体的距离进行调整。

生成照明 "会预先计算所有照明数据,包括光探针,您可以在场景中直观地看到这些数据。使用砖块预览时,可以看到放置探针时应用的各种细分级别。

如果您使用过光探针数据,您可能会了解漏光的常见问题。在开发 APV 时,我们添加了一整套工具箱来帮助解决漏光问题,如虚拟偏移、扩张、探针调整卷、渲染图层以及 "性能 "和 "质量 "漏光预防模式。
这里有一个例子。通过照明调试视图,我们可以观察到漏光的问题用例。在这种情况下,来自室外的强光可以透过建筑物的墙壁和地面看到。而室外的问题则恰恰相反,室内光线暗淡。这可能是由于分辨率低(探头之间相距 1 米)和壁薄造成的。让我们来探讨一下如何解决这个问题。

为了研究这个问题,调试探针采样选项允许您显示每个采样探针及其相关权重。在我们的例子中,我们可以看到,结果是在外部的亮探针和内部的暗探针之间插值得出的。理想情况下,帐篷内部只对内部探头进行采样。

APV 的渲染图层(已在 6000.1f.1 中发布)允许您创建多达四个不同的遮罩,并限制对某些对象的采样只能使用这些特定的遮罩。这对于防止内部物体对外部探头取样或反之亦然非常有用。
生成照明时,系统会在烘焙过程中根据附近的物体自动为探针分配图层,无需为每个探针手动分配图层。完成后,您可以生成照明,并观察到由于手动创建了独立的内部和外部遮罩,帐篷的漏光现象有所减少。

要进一步控制漏光预防,您可以利用 Unity 的 "性能 "和 "质量 "减少漏光模式 。
性能模式通过将采样位置远离无效探头来减少泄漏。这种方法一般适用于简单的情况,即可以为所有有效探针确定合适的取样位置,同时避开任何无效探针。不过,根据探头配置的不同,可能无法获得最佳采样位置。这将导致对无效探头和潜在泄漏进行取样。
质量模式(已在 6000.0.3f1 中启用)现在已默认启用,最多可进行三次采样尝试,以帮助确保只使用有效探针。该模式可能会对运行时性能造成轻微影响,这在低端平台上尤为明显。
您可以将 "减少漏光 "和 "渲染图层 "结合起来,进一步防止漏光。该模式有助于确保不对无效探针(无论是由于有效性问题还是位于不同层上)进行采样。

此外,我们还改进了多细分级别,减少了不同级别之间可能可见的接缝(已在 6000.0.4f1 中登陆)。这是通过用预插值替换位于两级之间的前沿探测器的值来自动实现的。由于该过程在烘焙时进行,因此在运行时不会产生性能成本。

有了 APV,您可以通过天空遮蔽和照明场景实现视觉效果极佳的照明过渡,适合实现分时段和灯光开/关的情况。
接下来您将看到两个灯光转换示例,首先是在 URP 3D 示例项目的 "绿洲 "场景中使用 APV 进行灯光场景转换,然后是在 "花园 "场景中使用 APV 进行天空闭塞转换。
APV 可在烘焙照明数据之间进行切换或混合,从而为各种照明场景提供便利。该功能尤其适用于模拟一天中的不同时间,或在同一场景或烘焙设置中切换灯光的开与关。
照明方案只能管理已烘干的 APV 灯光探头数据,其他元素需要手动处理。以 "绿洲 "场景为例,我们创建了一个脚本来更新天空、灯光、雾参数和反射探针。可以在运行时使用ProbeReferenceVolume API(探针参考体积应用程序接口)管理 APV烤箱,示例可在文档中找到。


天空遮蔽为管理场景中的光照转换提供了照明场景之外的另一种选择。它的设置更简单,只需一次烘烤,无需多个场景。相反,天空遮蔽只能处理天空照明,因此不能扩展到管理定向或准时照明的间接照明。

天空遮蔽使用额外的烘焙数据,以不同的方式管理天空照明,这与标准的 APV 天空烘焙是分开的。这些数据存储了场景中每个区域应获得的天空光量,以便在运行时调整天空照明的颜色和强度。通过在运行时利用动态环境探针以及烘焙和静态遮挡数据,它能很好地近似天空照明,同时还能对场景照明进行动态调整。
URP 和 HDRP 都支持天空遮挡。在 HDRP 中,环境探测器由 HDRP Physical Sky 自动更新。但是,在 URP 中使用 Skybox 模式时,环境探测器无法随着天空的变化而自动实时更新。相反,这需要使用 "渐变 "或 "色彩 "模式手动设置动画颜色,以匹配动画天空视觉效果,因为 Unity 不会自动调整以适应不断变化的天空颜色。
以花园场景为例,环境设置中的渐变模式可以手动制作环境探头颜色的动画。与遮挡数据搭配使用时,这种设置可以为天空漫反射照明的动画制作提供令人信服的近似值,适用于描绘一天中不断变化的时间。这种方法只需一次烘烤,无需多种照明场景,可提供多种色彩变化。

更多信息,请参阅我们的文档:通用渲染管道 (URP) 中的 APV 实现,以及 高清渲染管道 (HDRP) 中的 APV 实现。
随着 Unity 6 推出新的光烘焙架构,GPU 光烘焙器现已退出预览版

新款轻型烘焙机的设计考虑到了编辑的响应速度和烘焙速度。这意味着在使用按需烘焙时,Unity 现在会在点击 "生成 "按钮时对 "场景 "状态进行 "快照"。Unity 不再每帧检查 "场景 "状态,这在以前会降低编辑器的性能。
重新设计的烘焙后台大大简化了我们的代码库,使修复错误变得更容易、更快捷,并降低了引入新错误的风险。
我们还为您提供了一个新的烘焙配置文件,让您可以选择合适的工作流程意图。

你可以选择从 "最低内存使用率 "到 "最高性能 "的范围,"最低内存使用率 "是你想继续在编辑器中工作,并希望编辑器整体响应速度最佳的理想选择,而 "最高性能 "则是你想尽快完成工作,且在烘烤期间不需要在编辑器中处理其他任何事情的理想选择。
对于使用烘焙全局光照 (GI) 的创作者来说,迭代编辑烘焙光照数据并排除故障是一个重要的使用案例。
因此,我们在各种与 GI 相关的 "场景视图绘制模式 "中添加了新的交互式预览功能,用专门的 "交互式 GI 调试预览模式 "取代了 Unity 的 "自动生成 "功能,用于预览照明数据。

这样就可以在修改场景时交互更新调试视图。预览是非破坏性的,因为它不会替换烘焙的照明数据。
摒弃 Unity 旧有的 "自动生成 "架构意味着我们可以优化烘焙流水线,提高稳定性。
请注意,Unity 6 是 Enlighten Realtime GI 最后支持的版本。您可以在 "全局光照 2021 更新"论坛帖子中找到更多有关我们之前公布的弃用路径的详细信息。
