欢迎您光临本站,秉承服务宗旨,履行"站长"责任,销售只是起点,服务永无止境!
也想出现在这里? 联系我们

UE5 Lumen原理介绍

作者 : qwe789 本文共4789个字,预计阅读时间需要12分钟 发布时间: 2023-02-6 共1.97K人阅读

来源

本文从Epic Games官方的视频整理而来,原视频来自于:youtube.com/watch?

并且加入了一点个人的思考(都在括号中)

背景

docs.unrealengine.com/5

UE5是Unreal Engine新版本的引擎,目前还在early access状态,其中最引人注目的升级是推出了支持海量数据的几何体渲染模块Nanite,以及全动态的实时全局照明(Global Illumination,简称GI)模块Lumen

Lumen的主要特点是无需硬件光线追踪支持,也可以支持实时的全动态GI,无需预先烘焙,对室内外场景均可以达到较好的细节质量与性能的平衡,且与Nanite可以无缝配合。本文主要针对Lumen进行介绍。

目标

  • 完全实时的GI
    • 针对下一代游戏主机
    • 进一步支持高端PC
  • 高性能的反射
    • 与动态GI集成在一起
  • 巨大的开放世界
    • 所有东西都支持流式加载(stream)
    • 能够处理百万个实例(Nanite级别的内容)

  • 室内(光照)质量
    • 目前为止是实时GI中最困难的问题
  • 无缝的支持室内外场景过渡(例如从室内走到室外)

Lumen的一些效果图(细节很高)

UE5中开启Lumen的方法

  • 动态GI方法设置为Lumen
  • 反射方法设置为Lumen
  • 由于Lumen的算法依赖于Signed Distance Field(简称SDF),所以需要打开SDF的生成
  • 以上设置在UE5新项目中默认打开

软件光线追踪 - 默认

  • 先与depth buffer进行光线追踪(屏幕空间光线追踪)
  • (如果得不到交点,或者光线走出屏幕外)利用compute shader与SDF进行光线追踪
  • 对于光线交点,通过Surface Cache(Lumen特有的一种cache)计算光照

(Lumen的底层可以理解为就是一个软件光线追踪的架构,为了加速,先尝试与屏幕空间光线追踪,再尝试与场景的voxel形式的近似表达求交,Lumen还大量使用了compute shader来实现GPGPU软件算法)

混合追踪管线

  • 每种追踪方法解决它能够解决的问题

  • 红色为屏幕光线追踪
  • 绿色为Mesh Distance Field追踪(逐个物体一个SDF,主要针对追踪距离较近的光线)
  • 蓝色为Global Distance Field追踪(把整个场景合并为一个SDF,主要针对追踪距离较远的光线)

(这里其实用到一个常识,光线追踪的越远的时候,ray differentials越大,于是geometry LOD level可以越粗糙)

(根据UE5文档:Lumen对于开始的2米使用Mesh Distance Fields进行追踪,剩余的距离使用Global Distance Field进行追踪)

Mesh Distance Fields

  • (UE4本来就支持Mesh SDF,UE5的主要改进是支持了)稀疏的表达(用于节省空间)

(左:UE5,右:UE4,支持了稀疏的表达方式以后,同样空间存储的精度就提高了,可以参考OpenVDB/NanoVDB)

  • (同时Mesh SDF还支持了)Mipmaps

(Lumen通过Mesh SDF + Mipmap的方式来支持场景几何的LOD表达,也是为了优化光线追踪)

  • 基于距离从磁盘以流式(stream)加载
  • 稀疏表达允许了默认voxel密度翻倍,并且每个mesh最大的voxel分辨率是原来的4倍
    • 净内存消耗:约UE4的一半
  • Mesh Distance Field的构造速度是原来的10倍(这也是该技术能够实用化的一个重要原因)
  • 简单光照模式下更好的可视化Mesh SDF(主要用于调试)

Surface Cache

  • 离线放置的'Cards' = mesh捕捉
    • r.Lumen.Visualize.CardPlacement 1

(这里涉及到一个重要概念就是mesh card,这是Lumen特有的一个结构,原理为从不同的方向获取mesh表面属性的投影,这些投影后的属性被储存在纹理atlas中)

  • 在低分辨率捕获mesh到atlas

  • 对于Nanite mesh能够加速10-100倍
    • Nanite LOD本身就能够伸缩到低分辨率
    • Nanite基于compute shader的GPGPU软件实现,可以一次性并行绘制mesh LOD到所有的Card上(称为Multi-View支持,所以相比于其它mesh类型能加速那么多)
  • 只支持简单的室内结构
    • 墙壁、地板、天花板必须是单独的mesh(否则无法正确捕获)
  • 缓存了直接光照
  • 支持低质量的多次反弹GI

(上图是Nanite + Lumen的最终渲染效果,下图是Lumen的Surface Cache捕获的低分辨率光照)

(根据UE5文档:Lumen的Surface Cache只能覆盖从摄像机开始200米内的场景,超过这个范围,GI只计算屏幕空间反射。Lumen支持一种实验性的Distant Scene表达,可以允许追踪远于Surface Cache的场景范围。Distant Scene覆盖了200米到1千米的场景范围,原理是基于Nanite从太阳渲染一张Reflective Shadowmap,然后在Final Gather的时候与这张heightfield图求交。)

(Lumen场景调试方法,打开)Show -> Visualize -> LumenScene

  • 这是Lumen的光线在屏幕空间追踪失败的时候,实际看到的场景样子

(所以如果右侧的效果和左侧的差异过大,会造成GI与直接看到的场景效果不一致,此时的一种解决方法是针对有问题的mesh加大SDF分辨率)

优化

  • 合并所有的Mesh Distance Fields为Global Distance Field
    • UE5中2倍精度,且是稀疏表达

  • 把Surface Cache合并为Voxel Lighting(体素光照)
  • 默认对光线最开始的两米,与Mesh Distance Fields求交(通过Detail Tracing模式打开,大于2米则与Global Distance Field求交)
  • 当打开Global Tracing模式的时候,则直接跳过上述与Mesh Distance Field求交过程

软件光线追踪的局限性

  • 只支持静态mesh和实例化的静态mesh
  • 5.0正式发布会支持Landscape
  • World Position Offset会引起瑕疵
  • 更多信息看'Lumen Technical Details'文档:Lumen Technical Details

硬件光线追踪

  • 提供最高质量,但是最高的成本 + 仅限部分显卡支持
  • PC: 需要D3D12版本支持
    • NVIDIA RTX-2000系列或更高显卡
    • AMD RX-6000系列或更高显卡
  • 在early access版本中仅部分支持
    • 反射
    • Final Gather的一部分

(Lumen部分支持通过硬件光线追踪进行计算,主要是为了高质量,不是为了性能,但是实现还比较早期)

硬件光线追踪与Nanite

  • 只能与Nanite的'Proxy'(代理)几何体求交
    • 屏幕光线追踪掩盖了不一致性
  • 如果发现瑕疵可能需要提高'Proxy Triangle Percent'参数

硬件光线追踪性能

  • 在early access版本中不能超过10000个实例
    • 需要保持场景较小
    • 在UE5/Main分支中已经支持了100000个实例,开发中
  • 对于带蒙皮(skinned)的mesh代价很大(主要来源于逐帧rebuild BVH)
    • 未来:光线追踪LOD bias

(Lumen中硬件光线追踪比软件光线追踪大约慢50%,软件得益于各种算法优化反而来的比较快,硬件比较暴力所以较慢)

光线追踪很慢

  • 只能承担每个像素有1/2条光线,但是室内通常需要200+条光线才能收敛
  • 通常的做法:
    • Irradiance Fields
      • 看起来太平(不符合室内的细节要求)
      • 光照更新慢
      • volumes需要手工放置(流程负担)
    • 屏幕空间降噪器(Denoiser)
      • 代价很大
      • 降噪能做的很有限(太noisy的情况效果很有限)

(这里就引入了Final Gather的概念,就是从某个点发射很多光线收集周围环境贡献的过程,而之后提到的Radiance Caching是实现Final Gather思路的一种具体算法)

Lumen使用了屏幕空间的Radiance Caching算法

(Radiance Caching算法的核心是在空间中稀疏的采样一些表面的Hemispherical Harmonics,在没有采样的点,通过插值周围的Hemispherical Harmonics来获得光照分布,该插值出的光照分布可以与BRDF进行积分)

(Radiance Caching的优点是)非常低分辨率的tracing,全分辨率的细节

(Radiance Caching的本身性质,因为插值出的Hemispherical Harmonics是完整的光照分布,支持与任意经过Normal/Bump Mapping修改的法线朝向的BRDF积分)

使用世界坐标系的Radiance Caching实现稳定的远处光照

(在屏幕空间Radiance Caching的基础上,Lumen也使用了世界空间的Radiance Caching来支持场景较远部分的GI贡献)

World Radiance Cache(世界坐标系)

  • r.Lumen.RadianceCache.Visualize 1

(很稀疏,而且基本上还是个规则的grid,但是因为大多数像素都可以从屏幕空间Radiance Cache获得贡献,所以世界空间Radiance Cache的精度变得不是很重要)

过滤前的图像对比

(左图:屏幕空间降噪器的输入图像,右图:Lumen的过滤前图像,整个场景只有室外光照明,纯光线追踪/Path Tracing由于输入图像过于noisy,对于降噪器的要求太高,而Lumen由于已经使用了各种biased算法来降低噪声,过滤出有效图片变得比较容易,在同样光线预算的情况下可以更高效的生成图像)

Lumen Reflections

  • 对于Roughness < 0.4的情况追踪额外的光线
    • 意味着这些材质是代价最大的
  • 对于Roughness > 0.4的情况重用Final Gather追踪的结果
    • 粗糙的specular lobe收敛于diffuse(意思是分布很接近diffuse)
  • 空间和时间域的降噪器

基于硬件光线追踪的反射

  • 当Reflection Quality参数设为4的时候(是个magic number),对反射中看到的物体使用真实的光照(会进行shading + lighting,否则只是采样Surface Cache中粗糙的光照近似)

    • Surface Cache依然提供了多次反弹的GI和天空照明

Lumen反射与光线追踪反射

  • Lumen反射支持
    • 屏幕空间反射
    • 软件(实现的)光线追踪
    • 反射中的动态GI(通过Surface Cache)
    • 反射中可以移动的带阴影的天光(通过Surface Cache)
    • Clear Coat的两层反射功能
  • 光线追踪的反射支持
    • 反射中看到的Lightmap GI(和Lightmap的兼容性比较好,允许开历史的倒车)
    • 多次反弹的反射
  • 未来:Lumen反射
    • 从光线追踪反射中掏空剩下的功能(替代光线追踪反射)

平台

  • 只支持下一代游戏主机 + 高端PC
  • 还不支持移动设备 - 性能不足(国内手游引擎的机会来了)
  • 不支持VR - VR对于分辨率和帧率的要求太高,不可行
  • 硬件光线追踪有额外要求 - 具体看文档

性能

  • 非常依赖于Temporal Super Resolution(时间域的超分辨率技术)来在内部的低分辨率渲染,然后放大到实际输出分辨率

  • 内部1080p -> 4K输出
  • 但是PC的默认屏幕分辨率比例是100
    • 你可以降低编辑器的视窗大小来提升性能

(关于开发成本:UE5本来就是一个非常复杂的软件系统,而Lumen这一个模块,由3名非常资深的研发人员开发了2年,刚刚进入early access阶段,依然在不断完善中,开发成本还是非常高的)

版权声明:
本站所有文章、资源等一切内容,皆为在本站的注册网友所发布、上传、提供,如您发现任何内容侵犯了您的合法权益, 请与我们联系 ,我们将第一时间进行清理。iiiue.com 旨在为广大虚幻引擎爱好者提供技术交流学习、知识技术变现平台。
永久域名 iii ue .com 本站投稿能赚取收益变现提现,请一定要牢记账号密码!
Ue资源站 iiiue.com » UE5 Lumen原理介绍

常见问题FAQ

免费下载或者VIP会员专享资源能否直接商用?
本站所有内容皆为网友发布,资源版权均属于原作者所有,如需商用请联系原作者获取授权许可,若由于商用引起版权纠纷,一切责任均由使用者承担。如您发现某些内容侵犯了您的合法权益, 请与我们联系 ,我们将在第一时间核实并清理。
下载的资源解压密码是多少?
任何资源的解压密码均由发布者提供,一般情况下都在资源的发布页面或者资源文件夹,请仔细检查,如您发现发布页面没有提供解压密码,请您试着在评论处留言联系作者,或者复制以下两个密码进行解压,或许会有意想不到的效果。
iiiue.com
ue5club
Tips:除了密码说明内的解压密码外,通常情况下,电脑在安装好RAR或360解压缩软件,双击打开压缩包,包内注释的网址也可以试试是否为解压密码哦
资源能否免费获取
本站用户可参与站内的一系列活动获取积分,资源皆可免费获取,若想快速获取可加入本站永久VIP钻石会员,荣耀身份,全站资源免费获取, 点此查看详情

发表回复

也想出现在这里? 联系我们
开通终身VIP 永久VIP折扣活动火热进行中,享全站资源免费下载特权!