第一次打开UE5项目时,看到Lumen那个惊艳的全局光照效果,相信很多人都会忍不住想立刻启用它。但别急,我们先得搞清楚几个基本概念。Lumen是UE5的动态全局光照系统,它能实时计算光线在场景中的反弹效果,不需要预烘焙就能获得逼真的间接照明。不过这种实时计算是有代价的 - 它可能会吃掉你30%甚至更多的GPU性能。
在项目设置中找到Rendering分类,这里藏着Lumen的开关。需要同时开启三个地方:
这三个选项缺一不可,就像搭积木一样,少一块整个系统就垮了。我刚开始用的时候经常漏掉最后一个,结果场景里的阴影总是怪怪的。Mesh Distance Field是Lumen计算光线反弹的基础数据,没有它系统就不知道物体之间的距离关系。
提示:如果你的场景中有大量动态物体,记得检查它们的"Affects Distance Field Lighting"选项是否开启,否则它们不会参与光照计算。
UE5很贴心地为我们准备了几套预设方案,这就是可扩展性设置。它们就像是相机的自动模式:Cinematic对应电影级画质,Epic是30fps主机标准,High瞄准60fps,而Medium和Low则会直接关闭Lumen功能。
在编辑器顶部菜单找到Settings > Engine Scalability Settings,这里可以快速切换不同预设。但真正重要的是理解每个预设背后的参数调整:
不同硬件平台需要不同的优化策略。在PS5上追求60fps?你需要修改Platforms/PS5/Config/PS5DeviceProfiles.ini文件,加入:
code复制[PS5 DeviceProfile]
; 将Lumen GI和反射质量设置为"高",目标为60 fps
+CVars=sg.GlobalIlluminationQuality=2
+CVars=sg.ReflectionQuality=2
PC平台则更灵活一些,可以根据用户硬件自动调整。我通常会准备三套配置:
软件光线追踪是Lumen的默认选项,也是60fps游戏的首选。它有两种模式:
在项目设置中找到Lumen > Software Ray Tracing Mode进行切换。我做过一个测试:在一个包含2000个道具的场景中,Detail模式比Global模式慢了近40%。所以除非你的场景特别简单,否则60fps目标下建议使用Global模式。
注意:大量使用布尔运算的模型会显著增加软件光追的开销,尽量简化这类模型的复杂度。
硬件光线追踪能提供更精确的光照效果,但代价也很明显 - 它需要重建顶层加速结构(TLAS),这个过程相当耗时。要启用硬件光追:
硬件光追最适合30fps的高画质游戏。在实际项目中,我发现当场景中光线追踪实例超过10万时,性能会急剧下降。可以通过修改DefaultEngine.ini来优化:
code复制[SystemSettings]
r.RayTracing.Culling=3
r.RayTracing.Culling.Radius=15000
r.RayTracing.Culling.Angle=0.5
虚拟阴影贴图(Virtual Shadow Maps)是UE5的另一项黑科技,但它也可能成为性能杀手。在项目设置中启用后,有几个关键参数需要注意:
我最近做的一个开放世界项目中发现,将ResolutionScale从1.0降到0.8几乎看不出质量差异,但节省了15%的GPU时间。
Lumen使用表面缓存来存储光照信息,它的更新策略直接影响性能。两个关键控制参数:
在动态光源很多的场景中,把MaxLightsPerTile从默认的8降到4可以提升20%以上的性能。而UpdateFactor设为0.5意味着间接光照每两帧更新一次,这对移动中的玩家几乎不可察觉。
UE5提供了一套强大的分析工具:
Lumen的工作分为三个主要通道:
Lumen默认使用异步计算来提升GPU利用率,但这也会让性能分析变得困难。在调试时,可以先关闭异步计算:
code复制r.Lumen.AsyncCompute 0
完成优化后,再根据实际情况决定是否重新开启。我发现一个有趣的规律:场景中直接光照简单但间接光照复杂时,启用异步计算收益最大;反之则可能适得其反。