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

STEVEN KENT / UNITYProduct Manager Engine Graphics
Jul 11, 2024|21 最小
Unity 6 全球照明新功能

我们很高兴与大家分享今年晚些时候将在 Unity 6 中推出的新照明功能的更多细节。

有了新的、强大的 灯光烘焙架构 ,以及使用自适应探针卷(APV)创作灯光探针点亮环境的创新方法您将享受到更简化的灯光创作流程。这将大大增强视觉效果,同时确保运行时的高性能。


用全球照明点亮你的世界

如果你以前使用过预计算的照明数据,你就会知道这个过程有多繁琐。光贴图的预计算过程可能需要很长时间;光贴图UV 需要编写,需要放置探针以便正确照亮动态对象,还需要处理大型纹理,这可能会给应用程序的运行内存带来沉重负担。

Unity 6中,我们为您添加了一种新方法,让您可以通过自适应探针卷(APV)创建更高质量的光线探针照明环境,并对光线烘焙后台进行了基础性改进,以提高稳定性。

Adaptive Probe Volume(自适应探针体积)

自适应探针卷是一组光探针,Unity 会根据场景中的几何体密度自动放置这些探针,以建立烘焙的间接照明。

自适应探头体积自动由三维结构的 "砖块 "填充
自适应探针卷会自动填充由 "砖块 "组成的三维结构。每块砖包含 64 个光探针,按 4 × 4 × 4 的网格排列。

由于 APV 具有自适应特性,它将在几何体较多的区域生成更密集的探针,而在物体密度较低的区域(如场景背景)则生成较少的探针。

自适应探针卷 "还为您提供了一整套强大的功能,用于创建美观的照明环境。

  • 为探针放置工作流程提供更简单的工作流程,为基于探针的间接漫射照明提供更快的迭代速度
  • APV每像素照明 质量比 Light Probe Groups高得多,方向性也比 Lightmaps,因此整体照明质量极佳。
  • 与大气效果无缝集成,使 HDRP 中的体积雾和URPHDRP中的 VFX 图形粒子等效果在间接光照下更加美观。
  • 通过天空遮蔽照明场景,可实现视觉效果极佳的照明过渡,适用于实现白天时间和灯光开/关的情况。
  • 根据你对渲染管道和目标硬件的使用情况,提供更多对运行时性能优化的控制。
  • 运行一套流功能,使光探针数据能够从磁盘流向 CPU,以及从 CPU 流向 GPU。
  • 提供减少漏光的强大工具集。
APV 与大气环境完美融合
APV 与大气效果无缝集成,这意味着 HDRP 中的体积雾和 URP 与 HDRP 中的 VFX 图形粒子等效果现在可以通过间接照明美观地呈现。
以下是我们将 URP Oasis 场景转换为使用 APV 的方法

URP 3D 示例项目目前使用最新的2022 LTS 功能。

为了在本博文中进行演示,我们将 URP 3D 示例场景从 2022 LTS 升级到了Unity 6 预览版和自适应探针卷功能。


绿洲场景转换为使用自适应探针卷
绿洲 "场景从 2022 LTS 转换到 Unity 6,应用自适应探针卷进行间接照明。
使用自适应探头体积放置探头

APV 是一种基于体积的系统,可自动放置探针,而不是手工放置。

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

 指定 APV 应在照明窗口中使用的细分级别
在 "照明窗口 "和 "自适应探针体积 "选项卡中,可以指定 APV 应使用的细分级别。

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

在烘焙前实时预视不同的探针块
实时更新调试模式有助于在烘焙前实时预览不同的探针。
生成照明

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

可使用渲染调试器显示探针和多个细分级别
可使用渲染调试器显示探针和多个细分级别。
应对漏光挑战

如果您使用过光探针数据,您可能会了解漏光的常见问题。在开发 APV 时,我们添加了一整套工具箱来帮助解决漏光问题,如虚拟偏移、扩张、探针调整卷、渲染图层以及 "性能 "和 "质量 "漏光预防模式。

这里有一个例子。通过照明调试视图,我们可以观察到漏光的问题用例。在这种情况下,来自室外的强光可以透过建筑物的墙壁和地面看到。而室外的问题则恰恰相反,室内光线暗淡。这可能是由于分辨率低(探头之间相距 1 米)和壁薄造成的。让我们来探讨一下如何解决这个问题。

在光线变化剧烈、墙壁较薄的地方,漏光现象尤为明显。
在检查 "全局照明 "调试视图时,在光照变化剧烈且墙壁较薄的区域,漏光现象尤为明显。

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

调试探针采样选项,用于了解探针采样的方式
调试探针采样选项非常适合了解运行时如何对探针进行采样并找出潜在问题。

APV 的渲染图层(已在 6000.1f.1 中发布)允许您创建多达四个不同的遮罩,并限制对某些对象的采样只能使用这些特定的遮罩。这对于防止内部物体对外部探头取样或反之亦然非常有用。

生成照明时,系统会在烘焙过程中根据附近的物体自动为探针分配图层,无需为每个探针手动分配图层。完成后,您可以生成照明,并观察到由于手动创建了独立的内部和外部遮罩,帐篷的漏光现象有所减少。

无论探头的分辨率如何,都能改善漏光情况
在运行时,对象将根据分配给它们的层对探针进行采样,无论探针的分辨率如何,都能改善漏光挑战。

要进一步控制漏光预防,您可以利用 Unity 的 "性能 "和 "质量 "减少漏光模式

性能模式通过将采样位置远离无效探头来减少泄漏。这种方法一般适用于简单的情况,即可以为所有有效探针确定合适的取样位置,同时避开任何无效探针。不过,根据探头配置的不同,可能无法获得最佳采样位置。这将导致对无效探头和潜在泄漏进行取样。

质量模式(已在 6000.0.3f1 中启用)现在已默认启用,最多可进行三次采样尝试,以帮助确保只使用有效探针。该模式可能会对运行时性能造成轻微影响,这在低端平台上尤为明显。

您可以将 "减少漏光 "和 "渲染图层 "结合起来,进一步防止漏光。该模式有助于确保不对无效探针(无论是由于有效性问题还是位于不同层上)进行采样。

质量模式有助于确保减少漏光情况
与性能模式不同,新的质量模式有助于确保减少漏光情况。
解决接缝问题

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

自动移除接缝有助于隐藏细分层之间的可见线条
在 "全局照明 "调试视图中,我们可以清楚地看到这种自动接缝移除功能是如何通过在细分层之间创建平滑过渡来帮助隐藏细分层的。
利用 APV 灯光转换实现更动态的视觉体验

有了 APV,您可以通过天空遮蔽和照明场景实现视觉效果极佳的照明过渡,适合实现分时段和灯光开/关的情况。

接下来您将看到两个灯光转换示例,首先是在 URP 3D 示例项目的 "绿洲 "场景中使用 APV 进行灯光场景转换,然后是在 "花园 "场景中使用 APV 进行天空闭塞转换。

在绿洲中使用 APV 添加照明场景

APV 可在烘焙照明数据之间进行切换或混合,从而为各种照明场景提供便利。该功能尤其适用于模拟一天中的不同时间,或在同一场景或烘焙设置中切换灯光的开与关。

照明方案只能管理已烘干的 APV 灯光探头数据,其他元素需要手动处理。以 "绿洲 "场景为例,我们创建了一个脚本来更新天空、灯光、雾参数和反射探针。可以在运行时使用ProbeReferenceVolume API(探针参考体积应用程序接口)管理 APV烤箱,示例可在文档中找到。

该场景利用 "白天与黑夜 "场景来烘焙使用 APV 创建的多个版本的间接漫反射照明
该场景利用 "白天与黑夜 "场景来烘焙使用 APV 创建的多个版本的间接漫反射照明
可以混合多种场景,在白天和黑夜之间实现平稳过渡。
来自多个场景的间接漫射光可以融合在一起,在白天和黑夜之间创造出平滑的过渡。要实现这一点,可以使用 ProbeReferenceVolume API 公开一个混合变量,该变量可以使用时间线等方式进行动画处理。
在花园中使用 APV 利用天空遮蔽功能

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

描述花园场景中天空遮挡应用的图像序列。
使用天空遮蔽功能的花园场景。在这一系列图像中,您可以首先观察到单独的环境探测器,然后是环境探测器和天空遮挡的综合照明,最后是天空遮挡本身的照明。最后,我们提供了 APV 闭塞的调试表示。

天空遮蔽使用额外的烘焙数据,以不同的方式管理天空照明,这与标准的 APV 天空烘焙是分开的。这些数据存储了场景中每个区域应获得的天空光量,以便在运行时调整天空照明的颜色和强度。通过在运行时利用动态环境探针以及烘焙和静态遮挡数据,它能很好地近似天空照明,同时还能对场景照明进行动态调整。

URP 和 HDRP 都支持天空遮挡。在 HDRP 中,环境探测器由 HDRP Physical Sky 自动更新。但是,在 URP 中使用 Skybox 模式时,环境探测器无法随着天空的变化而自动实时更新。相反,这需要使用 "渐变 "或 "色彩 "模式手动设置动画颜色,以匹配动画天空视觉效果,因为 Unity 不会自动调整以适应不断变化的天空颜色。

以花园场景为例,环境设置中的渐变模式可以手动制作环境探头颜色的动画。与遮挡数据搭配使用时,这种设置可以为天空漫反射照明的动画制作提供令人信服的近似值,适用于描绘一天中不断变化的时间。这种方法只需一次烘烤,无需多种照明场景,可提供多种色彩变化。

闭塞数据与 "环境 "设置中的 "渐变模式 "搭配使用,可以手动制作环境探头颜色的动画。
闭塞数据与 "环境 "设置中的 "渐变模式 "搭配使用,可以手动制作环境探头颜色的动画。使用资产商店中的 Azure[Sky] 动态天空盒来制作天空着色器。
有关 APV 的更多信息
Unity 6 中的轻度烘焙

随着 Unity 6 推出新的光烘焙架构,GPU 光烘焙器现已退出预览版

灯光映射建筑内部环境。内容归功于ArchvizPRO Interior Vol.10
灯光映射建筑内部环境。内容归功于ArchvizPRO Interior Vol.10

新款轻型烘焙机的设计考虑到了编辑的响应速度和烘焙速度。这意味着在使用按需烘焙时,Unity 现在会在点击 "生成 "按钮时对 "场景 "状态进行 "快照"。Unity 不再每帧检查 "场景 "状态,这在以前会降低编辑器的性能。

重新设计的烘焙后台大大简化了我们的代码库,使修复错误变得更容易、更快捷,并降低了引入新错误的风险。

新的烘焙简介

我们还为您提供了一个新的烘焙配置文件,让您可以选择合适的工作流程意图。

新的轻型烘焙机可让您选择工作流程意图,从最低内存使用率到更高性能
新的轻型烘焙机可让您选择工作流程意图,从最低内存使用率到更高性能

你可以选择从 "最低内存使用率 "到 "最高性能 "的范围,"最低内存使用率 "是你想继续在编辑器中工作,并希望编辑器整体响应速度最佳的理想选择,而 "最高性能 "则是你想尽快完成工作,且在烘烤期间不需要在编辑器中处理其他任何事情的理想选择。

自动生成现在是交互式 GI 调试预览模式

对于使用烘焙全局光照 (GI) 的创作者来说,迭代编辑烘焙光照数据并排除故障是一个重要的使用案例。

因此,我们在各种与 GI 相关的 "场景视图绘制模式 "中添加了新的交互式预览功能,用专门的 "交互式 GI 调试预览模式 "取代了 Unity 的 "自动生成 "功能,用于预览照明数据。

Unity 6 中的交互式 GI 调试预览模式
Unity 6 中的交互式 GI 调试预览模式

这样就可以在修改场景时交互更新调试视图。预览是非破坏性的,因为它不会替换烘焙的照明数据。

摒弃 Unity 旧有的 "自动生成 "架构意味着我们可以优化烘焙流水线,提高稳定性。

Enlighten Realtime GI 过时路径通知

请注意,Unity 6 是 Enlighten Realtime GI 最后支持的版本。您可以在 "全局光照 2021 更新"论坛帖子中找到更多有关我们之前公布的弃用路径的详细信息。

进一步了解 Unity 6 提供的照明功能

以下是之前分别针对 2023.1、2023.2 和 Unity 6 (2023.3) Beta 版征求反馈意见的链接:

我们期待看到您利用我们在 Unity 6 中提供的新照明功能进行创作。请在《全球照明》论坛或 Unity 的新讨论空间向我们发送反馈意见!