UE5 Lumen原理介绍
来源
本文从Epic Games官方的视频整理而来,原视频来自于:https://www.youtube.com/watch?v=QdV_e-U7_pQ
并且加入了一点个人的思考(都在括号中)
背景
https://docs.unrealengine.com/5.0/en-US/RenderingFeatures/Lumen/
UE5是Unreal Engine新版本的引擎,目前还在early access状态,其中最引人注目的升级是推出了支持海量数据的几何体渲染模块Nanite,以及全动态的实时全局照明(Global Illumination,简称GI)模块Lumen
Lumen的主要特点是无需硬件光线追踪支持,也可以支持实时的全动态GI,无需预先烘焙,对室内外场景均可以达到较好的细节质量与性能的平衡,且与Nanite可以无缝配合。本文主要针对Lumen进行介绍。
目标


- 室内(光照)质量
- 目前为止是实时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的情况效果很有限)
- Irradiance Fields
(这里就引入了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阶段,依然在不断完善中,开发成本还是非常高的)
本站所有文章、资源等一切内容,皆为在本站的注册网友所发布、上传、提供,如您发现任何内容侵犯了您的合法权益,请携版权等相关证明致信vamwxyz@gmail.com 与我们联系 ,我们将第一时间进行处理。本站周1-周5每日稳定更新优质资源20+,开通永久SVIP全站资源永久免费!
本站防失联地址,请务必收藏:VAMW.XYZ
VAM » UE5 Lumen原理介绍

常见问题FAQ
- 关于解压密码和游戏资源使用方式的简要说明
- 本站默认解压密码为发布页网址:vamw.xyz 注意是小写,如果有其他密码也都在资源页面详细说明了,请认真查看,任何资源请下载后解压、切勿在线解压!VAM场景和人物形象资源下载解压缩后,放到VAM游戏目录里的AddonPackages文件夹后重启游戏即可,如D:\VAM\vam1.22.0.3\AddonPackages;更多教程请点击打开
- 海外用户怎么支付怎么下载?How can overseas users make payments and download?
- 本站支持“支付宝”、“微信”、“paypal”方式支付,如需“paypal”支付,请点击链接 https://paypal.me/vamwxyz;本站所有资源存储于“百度云网盘”,海外用户亦可通过本站教程下载安装注册“百度云网盘”进行资源的下载使用,点击查看教程
Our website supports payments via "Alipay", "WeChat" and "PayPal". If you want to pay with "PayPal", please click here https://paypal.me/vamwxyz;. All the resources on our website are stored in "Baidu Cloud Disk". Overseas users can also download, install and register "Baidu Cloud Disk" according to the tutorials on our website to download and use the resources. Click here to view the tutorials
- 怎么推广赚钱,怎么免费加入VIP?
- 高佣金活动进行中:本站开启用户推广赚钱模式,所有用户可以通过文章页或个人中心的的推广链接进行推广赚钱,普通用户推广佣金为15%;永久VIP推广佣金为30%,所有通过你的推广链接注册的用户,在后续发生的所有消费或充值会员的行为,您都有佣金拿!满50可申请提现!普通用户可以在金额达到充值会员金额的时候申请加入会员!赶快行动吧! 点此查看详情