Unreal5 | 今天是lumen的一天
Thepoly 14177 0
实名

通过了实名认证的内容创造者

发布于 2022-3-25 23:26:46

您需要 登录 才可以下载或查看,没有账号?注册

x
本帖最后由 Thepoly 于 2022-3-25 23:28 编辑

           
640.jpg

174551k9r66ex7z719e99h.jpg

Hello . 大家好
今天是装模作样的lumen笔记
我是木偶心没



关于lumen,官方已经放出“详细”的技术细节文档
https://docs.unrealengine.com/5. ... Lumen/TechOverview/
嫌弃文档冗长的可以移步长达两个半小时的官方视频:
https://www.youtube.com/watch?v=QdV_e-U7_pQ
或者还嫌弃视频太久可以直接查看下面的不完全总结。
感谢知乎Jiff的一张图解释了lumen的工作流程(具体算法可参考https://zhuanlan.zhihu.com/p/378119803



稍微解释一下就是Lumen分为了两个部分,离线和实时运算


1离线生成




离线部分就是首先为每个模型生成MeshCard。



MeshCard就是对每个mesh的捕获位置。但是mesh不能太过复杂,比如一个房间的的地面和墙等,需要被拆成单个mesh。以下这种就没有办法获取精确mesh card。



然后Lumen在各个meshcard捕获位置去获取每个mesh的材质属性等,并生成场景表面的自动参数化Surface Cache。Surface Cache可以快速查找场景中光线命中点的照明。
为静态模型生成Mesh Distance Field
Mesh Distance Field存储的是3D空间中的点距离物体表面最近的距离,就是软光追的一个加速器。有些mesh可能没有很好的距离场,并导致漏光的问题,所以可以直接在场景里面显示mesh distance field来检查问题。



然而在使用距离场mesh distance field之前,lumen会先使用屏幕空间追踪。因为屏幕追踪支持任何几何类型,可用于掩盖lumen场景和三角形场景之间的不匹配。并且屏幕空间追踪精度高。
如果在未找到命中或光线从表面后面通过时就使用mesh distance field来进行软光追。虽然lumen用mesh distance field去进行光线追踪效果已经很好了,但是考虑性能问题,渲染器将mesh distance field合并为global distance field以加速追踪,也就是,在每个mesh的前2米内使用mesh distance field去光线追踪(detail tracing),剩下的就直接使用global distance field去追踪整个场景(global tracing)。



上图红色表示Screen Trace,绿色表示mesh distance field,蓝色表示Global distance field。


2实时运算
Lumen Scene就是一个进行软光追的低模场景,是很多的Mesh Card组成。



由于lumen scene只对摄像机附近的世界而不是整个世界进行操作,所以lumen在渲染的时候依靠Nanite的LOD和多视图光栅化来快速捕捉场景来更新surface cache。
Lumen是基于LOD来进行计算渲染的,所以如果传统模型没有LOD计算会非常慢。如果需要instance static mesh,它必须是Nanite而不是传统模型,因为在Nanite的网格上会快很多(大概快了10-100倍)。
以下是Lumen在Nainte和lumen scene的渲染对比



然后使用AtlasTexture等来存储meshcards上面的光照信息,最后将缓存的光照信息进行最终的IndirectLighting计算。
在最后的渲染阶段,Lumen非常依赖用Temporal Super Resolution在内部使用超低分辨率进行渲染,比如说在内部使用1080p的分辨率进行渲染,然后输出4k的分辨率。但是需要注意的是,如果你在PC平时使用时,没有调节Screen Percentage而使用默认的100,则在内部也会用4k分辨率去渲染。




3其他

另外lumen的各种模型限制,材质限制和工作流程限制官网都有列出来



虽然lumen在unreal5中有两种光线追踪方法,软光追和硬光追,但是由于两者的一些限制,同时开效果会更好。
软件光线追踪,可以在任何DX11或更高版本的硬件上运行,并且可以选择超快运行,但是只支持有限的几何类型。而硬件光线追踪效果很好,但是消耗也非常高。并且硬光追对于PC来说,只能用D3D12,显卡最低配置Nvida RTX-2000和AMD RX-6000。
在early access的unreal5中,lumen支持使用的硬件光追的部分,也只有reflection和部分Final Gather,所以在早期,我们需要同时使用软光追的距离场和硬件光追来让lumen工作。
另外硬件追踪只会用Nanite的proxy 进行计算。目前硬件光线追踪作用的场景不能太大,不能多于10000个实例。
硬件光追比软件光追慢大概一半,但是更准确。使用硬件光追的时候避免重叠的物体,如果从场景里面有复制粘贴出来的重叠mesh,则会计算速度会明显变慢。
另外Lumen Reflections和Ray Traced Reflection(硬光追)的区别:
Lumen Reflection支持:
屏幕追踪
软件光线追踪
动态GI的反射(via surface cache)
天光的移动阴影反射(via surface cache)
两层Clear coat的反射
Ray Traced Reflections支持:
光照贴图Lightmap Gi的反射
多次反弹的反射
未来会把更多Ray Traced Reflection的其他功能添加到Lumen Reflection中


- End -


喜欢Thepoly的可以通过三种方式与我们建立联系。分别是公众号、微信群以及QQ群。公众号是我们最为官方的窗口,更多内容都必须关注公众号后才能获取。另外现已开通网站:www.thepoly.cn更多精彩请关注我们。
         

本帖被以下画板推荐:

还没有设置签名!您可以在此展示你的链接,或者个人主页!
使用道具 <
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表