Lumen 全局光照与反射
Lumen Global Illumination & Reflections
Lumen 是 UE5 默认的全动态全局光照 (Global Illumination, GI) 与反射系统:先做屏幕空间追踪,未命中再对"Lumen 场景"做软件光追(有符号距离场)或硬件光追,命中点的光照从按网格离线放置的卡片 (Card) 构成的表面缓存 (Surface Cache) 中查询,表面缓存的直接与间接光照分摊到多帧更新,从而得到无限次漫反射弹射和全粗糙度范围的反射。
它解决什么
Lumen 渲染"无限次反弹的漫反射互反射和间接高光反射",尺度从毫米到千米。(Lumen Global Illumination and Reflections) 用 渲染方程 的语言说,它在实时预算内近似求解渲染方程中的间接项:漫反射部分产生颜色溢出 (Color Bleed) 和间接阴影;高光部分即反射。官方强调它以全分辨率着色,但以低得多的分辨率计算间接光照。(Lumen Global Illumination and Reflections)
启用 Lumen 后:Lumen GI 取代距离场环境光遮蔽 (DFAO),Lumen 反射取代屏幕空间反射 (SSR),预计算静态光照被禁用、光照贴图被隐藏。(Lumen Global Illumination and Reflections) 也就是说它替代了理论页 预计算光照与光照贴图、屏幕空间反射、环境光遮蔽、局部反射探针 中的多种传统方案。
追踪流水线
下图表示一条 Lumen 光线的求解顺序:
flowchart TB
A["像素发出 GI/反射光线"] --> B{"屏幕追踪命中?"}
B -- "是" --> R["用场景颜色/深度"]
B -- "否或穿到表面背后" --> C{"硬件光追可用且启用?"}
C -- "是" --> D["对三角形求交<br/>Nanite 用 Fallback Mesh"]
C -- "否" --> E["软件光追<br/>网格距离场前 2m + 全局距离场"]
D --> F{Hit Lighting?}
F -- "是" --> G["命中点实时计算光照"]
F -- "否" --> H["查询表面缓存"]
E --> H- 屏幕追踪 (Screen Traces) 最先执行,支持任何几何类型,能掩盖 Lumen 场景与真实三角形场景的不匹配;代价是限制美术控制(如大的 Indirect Lighting Scale 会产生视角相关的 GI)。这与 屏幕空间反射 的局限同源:屏幕外与被遮挡的信息拿不到。
- 软件光追用网格距离场 (Mesh Distance Field) 合并成的全局距离场 (Global Distance Field) 做球体追踪;默认 Global Tracing 最快,Detail Tracing 先在每网格距离场上追前两米,质量高但在拼装 (kitbash) 关卡里代价极高。原理见 隐式曲面与有符号距离函数。
- 硬件光追对真实三角形求交,支持蒙皮网格,可在命中点计算光照(Hit Lighting),质量更高;但大场景、大量重叠实例时建立成本最高,蒙皮网格每帧更新加速结构的成本与蒙皮三角形数成正比。官方原话:"软件光追是大量重叠实例场景中唯一高效的选项,而硬件光追是获得高质量镜面反射的唯一途径。"
- 表面缓存:Lumen 对附近场景表面自动参数化,从多个角度用卡片捕获材质属性(默认每网格 12 张,可调 Max Lumen Mesh Cards),然后为这些表面点计算直接和间接光照,分摊到多帧,从而高效支持多动态光源和多次弹射。没被卡片覆盖的区域(表面缓存视图中粉色)不会反弹光,在反射中显示为黑色。
与 动态漫反射全局光照 的比较:两者都是"缓存 + 光追"的动态 GI 思路,DDGI 把辐照度缓存在空间探针里,Lumen 主要缓存在网格表面(表面缓存)并辅以屏幕追踪(这是基于两份资料的对比解读,不是 Epic 原话)。
性能目标与参数
- 主要目标:次世代主机上大型开放世界 60 FPS(High 可伸缩级);次要目标:室内 30 FPS,Epic 级在次世代主机 1080p 内部分辨率下 GI+反射约 8 ms,依赖 TSR 输出接近原生 4K。(Lumen Technical Details) 这说明 Lumen 与 TSR 与抗锯齿方案 是配套设计的,规划 帧时间预算与渲染性能 时应把二者一起考虑。
- 软件光追时 Lumen 场景只覆盖相机周围 200 m(后处理可调到 800 m),超出后只有屏幕追踪;硬件光追的 Far Field 可延伸到 1 km,但需要 World Partition 构建 HLOD1(见 世界分区)。(Lumen Technical Details)
- 缓存导致滞后:局部光照变化传播很快,但全局变化(如关掉太阳)可能需要数秒;可用后处理的 Lumen Scene Lighting Update Speed / Final Gather Lighting Update Speed 加速,代价是 GPU。(Lumen Global Illumination and Reflections)
常用后处理参数:(Lumen Global Illumination and Reflections)
| 参数 | 作用 | 代价 |
|---|---|---|
| Lumen Scene Detail | 能进入 Lumen 场景的最小物体尺寸 | 越大越贵 |
| Lumen Scene View Distance | Lumen 场景维护距离 | 越大越贵 |
| Final Gather Quality | 降低 GI 噪声 | GPU |
| Max Trace Distance | 追踪最大距离;太小会在洞穴等大空间漏光 | 越大越贵 |
| Max Roughness To Trace | 超过此粗糙度不再追专门的反射光线 | 越高越贵 |
| Max Reflection Bounces | 镜面互反射次数,默认 1 | 需硬件光追 + Hit Lighting |
内容制作规则(常见的坑)
- 场景要模块化:墙、地板、天花板分开建模;一个网格包含整个房间和家具"预期无法正常工作"。墙体不薄于 10 cm 以免漏光;避免看到单面网格背面。(Lumen Technical Details)
- 软件光追只表示静态网格、ISM、HISM 和地形;不支持 WPO;植被需开 Affect Distance Field Lighting。(Lumen Technical Details)
- 骨骼网格只在预蒙皮包围盒周围放 6 张卡,大幅变形动画下覆盖和质量有限。(Lumen Technical Details)
- 小而亮的自发光物体会产生噪点,且小物体会被剔出 Lumen 场景,只能靠屏幕追踪,结果不稳定。(Lumen Global Illumination and Reflections)、(Lumen Technical Details)
- 相机快速移动时 Lumen 场景更新跟不上,间接光会"弹出"。(Lumen Technical Details)
- 高多边形网格不开 Nanite 时,表面缓存捕获会变得很慢(见 Nanite 虚拟化几何体)。(Lumen Technical Details)
适用范围
Lumen 不能与光照贴图一起用(但 Lumen 反射可以单独配合烘焙光照,需硬件光追);不兼容前向着色;不支持 PS4/XB1;VR 的高帧率高分辨率使它"不太合适"。软件光追需要 DX12 SM6(GTX 1070 以上);硬件光追需 RTX 2000 / RX 6000 以上或 PS5、Xbox Series、Switch 2。(Lumen Technical Details) 因此面向低端或 VR 的项目仍要回到 预计算光照与光照贴图 等传统方案。
出处
- Lumen Global Illumination and Reflections UE 5.8 文档
- Lumen Technical Details UE 5.8 文档