在上篇文章中我们为大家介绍了什么是自适应探针卷(APV)以及如何使用Unity 6中的APV创建全局照明,在本文中我们将衔接上一篇文章继续为大家讲解使用APV进行全局照明所带来的优势,下面就让我们开始吧。
应对漏光挑战
如果您使用过光探针数据,您可能会了解漏光的常见问题。在开发 APV 时,Unity添加了一整套工具箱来帮助解决漏光问题,如虚拟偏移、扩张、探针调整卷、渲染图层以及 "性能 "和 "质量 "漏光预防模式。
我们从案例中能够看到。通过照明调试视图,我们可以明显的观察到漏光的问题。在这种情况下,来自室外的强光可以透过建筑物的墙壁和地面看到。而室外的问题则恰恰相反,室内光线暗淡。这可能是由于分辨率低(探头之间相距 1 米)和壁薄造成的。让我们来探讨一下如何解决这个问题。
在检查 "全局照明 "调试视图时,在光照变化剧烈且墙壁较薄的区域,漏光现象尤为明显。
为了研究这个问题,调试探针采样选项允许您显示每个采样探针及其相关权重。在此案例中,我们可以看到,结果是在外部的亮探针和内部的暗探针之间的插值得出的。理想情况下,帐篷内部只对内部探头进行采样。
调试探针采样选项非常适合了解运行时如何对探针进行采样并找出潜在问题。
APV 的渲染图层允许您创建多达四个不同的遮罩,并限制对某些对象的采样只能使用这些特定的遮罩。这对于防止内部物体对外部探头取样或反之亦然非常有用。
生成照明时,系统会在烘焙过程中根据附近的物体自动为探针分配图层,无需为每个探针手动分配图层。完成后,您可以生成照明,并观察到由于手动创建了独立的内部和外部遮罩,帐篷的漏光现象有所减少。
在运行时,对象将根据分配给它们的层对探针进行采样,无论探针的分辨率如何,都能改善漏光挑战。
要进一步控制漏光预防,您可以利用 Unity 的 "性能 "和 "质量 "减少漏光模式 。
性能模式通过将采样位置远离无效探头来减少泄漏。这种方法一般适用于简单的情况,即可为所有有效探针确定合适的取样位置,同时避开无效探针。不过,根据探头配置的不同,可能无法获得最佳采样位置。这将导致对无效探头和潜在泄漏进行取样。
质量模式现在在Unity 6中已默认启用,最多可进行三次采样尝试,以帮助确保只使用有效探针。该模式可能会对运行时性能造成轻微影响,这在低端平台上尤为明显。
您可以将 "减少漏光 "和 "渲染图层 "结合起来,进一步防止漏光。该模式有助于确保不对无效探针(无论是由于有效性问题还是位于不同层上)进行采样。
与性能模式不同,新的质量模式有助于确保减少漏光情况。
解决接缝问题
此外,Unity还改进了多细分级别,减少了不同级别之间可能可见的接缝。这是通过用预插值替换位于两级之间的前沿探测器的值来自动实现的。由于该过程在烘焙时进行,因此在运行时不会产生性能成本。
在 "全局照明 "调试视图中,我们可以清楚地看到这种自动接缝移除功能是如何通过在细分层之间创建平滑过渡来帮助隐藏细分层的。
利用 APV 灯光转换实现更动态的视觉体验
有了 APV,您可以通过天空遮蔽和照明场景实现视觉效果极佳的照明过渡,适合实现分时段和灯光开/关的情况。
在本篇与下篇文章中我们将会为您展示两个灯光转换示例,首先是在 URP 3D 示例项目的 "绿洲 "场景中使用 APV 进行灯光场景转换,然后是在 "花园 "场景中使用 APV 进行天空闭塞转换。
在绿洲中使用 APV 添加照明场景
APV 可在烘焙照明数据之间进行切换或混合,从而为各种照明场景提供便利。该功能尤其适用于模拟一天中的不同时间,或在同一场景或烘焙设置中切换灯光的开与关。
照明方案只能管理已烘干的 APV 灯光探头数据,其他元素需要手动处理。以 "绿洲 "场景为例,Unity创建了一个脚本以更新天空、灯光、雾参数和反射探针。使您可以在运行时使用ProbeReferenceVolume API(探针参考体积应用程序接口)管理 APV烤箱。
该场景利用 "白天与黑夜 "场景来烘焙使用 APV 创建的多个版本的间接漫反射照明
在上图中我们能够看到来自多个场景的间接漫射光可以融合在一起,在白天和黑夜之间创造出平滑的过渡。要实现这一点,可以使用 ProbeReferenceVolume API 公开一个混合变量,该变量可以使用时间线等方式进行动画处理。
在下篇文章中我们将为大家继续介绍利用 APV 灯光转换实现更动态的视觉体验,如果您对本文内容感兴趣请继续关注我们~
本文内容转自Unity官网Blog。