UE5.5新特性:MegaLights工作原理、使用技巧与注意事项 | 案例解析...
7269 0
实名

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

发布于 2024-10-30 12:55:06

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

x

在虚幻引擎5.5的众多创新特性中,MegaLights无疑是最引人注目的技术之一。它为游戏和实时渲染领域带来了一场革命性的变革。本文将带您深入了解MegaLights的工作原理,探讨这一新特性如何颠覆传统的照明处理方式,为开发者提供更加高效、真实的照明解决方案,通过实际案例查看性能优势
一种全新的直接照明路径,可在场景中放置许多动态且有阴影的区域灯光MegaLights 是虚幻引擎 5 中的全新直接照明路径,使艺术家能够放置比以前更多数量级的动态和阴影区域光
f70f1b1ea998d0541271a0721fe6d20d.png

MegaLights旨在支持当前一代控制台,并利用光线追踪来实现来自各种类型区域光的逼真软阴影
166a428df342471fced03f0ca2b4b727.png

MegaLights不仅降低了动态阴影的成本,还降低了无阴影光评估的成本,使得在控制台上使用昂贵的光源(例如纹理区域灯)成为可能


MegaLights 还支持体积雾


可以从“渲染 > 直接照明”类别中的“项目设置”为您的项目启用MegaLights。这会提示您还启用Support Hardware Ray Tracing ,这是 MegaLights 的推荐设置


全局照明为:Lumen,使用光线跟踪



Hit Lighting for Reflections在反射的命中点上计算光照将提高反射质量,但这会增加GPU的成本,因为需要评估更多的材质并追踪阴影光线。缓存仍然会被用于全局光照(GI)和二次反射,包括在反射中看到的那些
RHI



静态模型设置



如果模型从场景中消失,确保距离场分辨率设置为1

一旦启用,所有本地灯光都由 MegaLights 系统处理。可以使用允许 MegaLights灯光组件属性来禁用每个灯光的 MegaLights。您还可以设置MegaLights Shadow Method以将阴影源选择为光线追踪(默认)或虚拟阴影贴图(VSM)

【虽然虚拟阴影贴图将直接从非简化的 Nanite 几何体投射阴影,但它仅近似区域阴影。VSM 在每个光源的基础上存在 CPU、内存和 GPU 时间开销,用于提前准备阴影贴图深度】
为了在单个项目内进行更细粒度的控制,可以使用后期处理设置启用或禁用MegaLights

【可以使用 r.MegaLights.Allow 0 根据可扩展级别或设备配置文件禁用 MegaLights】
# MegaLights是一种随机直接照明技术,通过对灯光的重要性采样来解决直接照明问题。它追踪每个像素朝向重要光源的固定数量的光线。如果光源被光线击中,则该光线的贡献将添加到当前像素
这种方法有几个重要的含义直接照明由单通道以统一的方式处理,取代了多种现有的延迟渲染器阴影和着色技术MegaLights不仅减少了阴影的计算成本,还降低了着色本身的计算成本MegaLights具有恒定的性能开销,但随着给定像素处光照复杂性的增加,质量可能会下降在延迟着色中,光照质量是恒定的,但GPU成本会随着光源数量的增加而增加。而MegaLights具有恒定的性能,但质量取决于给定像素处的光照复杂性
MegaLights 取代了以下功能阴影贴图距离场阴影光线追踪阴影延迟着色(BRDF和光照评估)体积雾阴影和光评估虚拟阴影贴图投影如果选择在单个光源角色的设置上作为阴影方法,MegaLights仍然可以使用虚拟阴影贴图
默认情况下,MegaLights首先追踪一条短且保守的屏幕空间光线,以便捕捉到微小的细节,这些细节可能在简化的光线追踪场景中不可用。如果这样的光线超出屏幕、被物体遮挡,或者达到了最大长度,那么MegaLights会从最后一个有效位置继续使用硬件或软件光线追踪。MegaLights还可以配置为光线追踪虚拟阴影贴图,但其阴影有额外的前期成本,因为需要为每个光源生成阴影贴图,而BVH(光线追踪场景)是为场景中的所有光源生成一次的
MegaLights中的光线引导对于选择重要的光源非常有用,并且在向可能对给定像素有影响的光源发送更多样本方面至关重要。反过来,光线引导会向影响力较小的光源发送较少的样本,比如那些可能被遮挡的光源。这是这项技术的一个重要部分,它允许在固定的每个像素光照样本预算中提取尽可能好的光照质量。虽然光线引导减少了向被遮挡光源发送的光线数量,但它仍然需要定期对这些光源进行采样,以检查它们在当前帧中是否变得可见。考虑到这一点,您应该避免放置边界巨大、影响整个场景的光源
最后,所有累积的光照都会通过降噪器,该降噪器试图从随机且有可能是噪声的输入中重建高质量的直接光照。随着场景中光照复杂性的增加,降噪器需要做更多的工作来适应这种情况。光照复杂性的增加可能导致光照模糊或产生鬼影,您可以通过将较小的光源合并成大面积光源,并仔细缩小光源的范围来提高最终光照质量,从而避免这些问题
# Lighting Complexity 照明复杂性在渲染过程中,单个像素受到的重要光源影响数量有限。超过这个限制后,就必须依赖降噪器,因为每个像素的预算和样本数量是固定的。这会导致降噪器产生模糊的光照效果,最终在场景中出现噪点或重影。因此,优化灯光布置仍然很重要,可以通过缩小灯光衰减范围,并将多个光源替换为一个区域光源来实现
为了在场景中保持良好的MegaLights效果,最好避免将灯光放置在场景几何体内,并优化灯光的边界。你可以使用控制台命令r.MegaLights.Debug 1来可视化选定像素发出的光线位置。你可以使用这个控制台命令r.ShaderPrint.Lock 1来冻结选定的光线,这样可以在场景中飞行检查追踪的光线
在下面的例子中,部分纹理矩形光源在墙内,尽管它永远不会被看到,但它仍然需要被MegaLights采样。这可以在可视化中看到,显示了一些光线被追踪到墙内。理想情况下,纹理矩形光源的源宽度和高度应该缩小,以便光源充满这个拱门,但不延伸到外面

为了尽量减少噪点,避免将灯光放置在几何体内部,优化灯光衰减范围、聚光灯的锥角以及矩形光的挡板,以缩小光线的影响
# Ray Tracing Scene 光线追踪场景默认情况下,MegaLights使用光线追踪,阴影质量依赖于光线追踪场景表示的质量。为了性能,光线追踪场景是使用自动简化的Nanite网格构建的,并且比主视图有更激进的剔除设置。这可能会导致阴影伪影、曝光或缺失阴影
光线追踪场景可视化是调查阴影问题的绝佳起点。它们展示了MegaLights进行光线追踪的实际场景表示。你可以使用以下方法来可视化光线追踪场景
这是光线追踪调试视图模式之一,可以在关卡视口中的视图模式菜单下找到。光线追踪调试视图模式也可以通过控制台命令访问:show RayTracingDebug 1r.RayTracing.DebugVisualizationMode = "World Normal"Lumen概览视图模式,它启用了画中画可视化功能,可以同时看到光线追踪场景和主视图。Lumen概览视图模式也可以通过控制台命令r.Lumen.Visualize 1来访问


如果某些阴影缺失或随着距离增加消失,可能是由于光线追踪场景的剔除导致的。你可以通过调整控制台命令r.RayTracing.Culling.*下的参数来开始调整剔除设置。你需要查看剔除模式、半径和立体角变量
出于剔除的目的,你可以使用光线追踪组ID将较小的对象合并在一起,这样它们就可以根据合并后的边界一起被剔除
光线追踪场景基于自动简化的Nanite Fallback Meshes。默认设置有时会导致Nanite Fallback Meshes的质量过低,无法满足阴影的需求,可能需要手动调整。请按照以下步骤进行操作

在静态网格体编辑器中打开网格体。在“Nanite 设置”下的“详细信息”面板中,将“回退目标”设置为“相对误差” 。显示一个名为FallbackrelativeError的新设置,您可以设置其值。减少该值会增加三角形数量和 Nanite Fallback 网格的保真度完成后,单击应用更改以重建 Nanite Fallback Mesh
对于非实时渲染,也可以使用r.RayTracing.Nanite.Mode 1,该模式使用完整的细节Nanite网格构建光线追踪场景。这会消耗大量的性能和内存,并且在场景或相机动画过程中,当Nanite LOD切换并且其BVH需要重建时,可能会导致卡顿
# Screen Space Traces 屏幕空间痕迹MegaLights在为较大几何细节投射阴影时使用光线追踪场景,但对于较小规模的几何体,则利用屏幕空间追踪,这些小几何体可能在简化的光线追踪场景中缺失。屏幕空间追踪使用场景深度,它们会击中屏幕上可见的任何物体。这可能会在某些艺术方向调整上引发问题,例如不会影响场景深度且仅存在于光线追踪场景中的隐形阴影投射器
您可以使用控制台命令减少屏幕空间光线长度 r.MegaLights.ScreenTraces.MaxDistance 。或者,如果光线追踪场景已经足够精确,您可以完全禁用屏幕跟踪,这有助于最大限度地减少各种屏幕空间和视图相关的伪影
# Shadowing Methods 影子方法MegaLights 公开了两种阴影方法,可以使用灯光组件的属性为每个灯光选择光线追踪是默认且推荐的方法。它不会为每个灯光增加额外的成本,并且可以实现正确的区域阴影。缺点是阴影的质量依赖于简化的光线追踪场景虚拟阴影贴图通过在虚拟阴影贴图上追踪光线来生成。虚拟阴影贴图是针对每个灯光使用光栅化技术生成的,可以捕捉完整的Nanite网格细节。缺点是它只能近似区域阴影,并且在内存、CPU和GPU开销方面有显著的额外成本,用于生成阴影深度。因此应谨慎使用
默认情况下,所有灯光,尤其是具有较柔和阴影或不太重要的大型区域光源,应使用光线追踪,因为较柔和的灯光不需要精确的阴影投射器。此外,为光线追踪场景分配更多的预算也是值得的,因为更高质量的光线追踪表示允许更多灯光通过成本较低的光线追踪路径
# Light Functions 灯光功能只要与光线功能图集兼容并且项目设置中启用了光线功能图集,就支持光线函数
# Alpha Masking 阿尔法掩蔽默认情况下,只有屏幕空间追踪可以正确处理带有Alpha遮罩的表面。可以通过控制台命令r.MegaLights.HardwareRayTracing.EvaluateMaterialMode 1启用光线追踪的Alpha遮罩支持。启用此选项会带来显著的性能开销,因此最好避免在内容中使用Alpha遮罩
# Scaling Quality Up 提高质量将照明质量提升到高端PC或离线渲染的水平仍在开发中。目前,你只能通过以下控制台命令控制每像素的采样数r.MegaLights.NumSamplesPerPixel 16 :这可为不透明表面提供更高的照明质量。r.MegaLights.Volume.NumSamplesPerVoxel 4 :
这可为体积雾等体积提供更高的照明质量。MegaLights 尚未专门支持Movie Render Queue ,但使用临时超分辨率 (TSR) 作为抗锯齿方法或将临时样本计数设置为 8 左右(能够正确解析光照)可以获得良好的结果。
# Performance 表现在比较性能时,重要的是要理解MegaLights解决了所有的直接照明,并替换了各种延迟渲染器通道,例如阴影深度:如果使用阴影贴图或虚拟阴影贴图RenderDeferredLighting::Lights体积雾:有阴影的灯光从VolumetricFog::LightScattering中移除了灯光评估
影响性能的因素:性能主要取决于内部渲染分辨率光线追踪是MegaLights成本的第二大组成部分。成本取决于多个因素:光线追踪场景中的实例数量、它们的复杂性、重叠实例的数量以及每帧需要更新的动态三角形数量为每个灯光生成阴影贴图深度时,会产生额外的内存、CPU和GPU开销,这使用虚拟阴影贴图进行阴影处理,而不是光线追踪屏幕上具有复杂BRDF的像素以及受重光类型(纹理矩形灯)影响的像素会有少量成本MegaLights 成本基本上是恒定的,并且无阴影和阴影灯光之间没有很大差异,因此场景中的所有灯光都可以启用阴影理想情况下,MegaLights 应与Lumen HWRT一起使用,这允许在两个系统之间共享光线追踪场景开销和优化
Stat GPU显示 GPU 时序概览,包括 MegaLights pass。可以使用内置ProfileGPU或第三方分析器获得深入的计时虚幻引擎使用异步计算来重叠来自各种功能的多个调度。Stat GPU和ProfileGPU计时将会失真,直到您使用r.RDG.AsyncCompute 0控制台命令禁用异步计算
尽管MegaLights完全由GPU驱动,但每个灯光仍然有一些遗留的CPU成本。如果所有灯光都使用光线追踪的MegaLights,可以通过控制台命令r.Visibility.LocalLightPrimitiveInteraction 0来移除大部分每个灯光的CPU成本
# Limitations 局限性MegaLights 与前向渲染器不兼容目前的限制,我们希望改进:每个灯光都有遗留的 CPU 开销来跟踪原始交互,这对于 MegaLights 来说是不需要的不支持定向光。目前,MegaLights 根据项目设置回退到虚拟阴影贴图或光线追踪阴影不支持次表面散射厚度估计不支持基于股的头发不支持半透明MegaLights会退回到无阴影且较慢的延迟渲染器照明半透明效果不支持水、云、异构体积和局部体积Lumen 可以以合理的性能处理大量的灯光,但是当 MegaLights 与 Lumen 完全集成时,它会得到很大的改进软件光线追踪路径正在开发中,并且阴影质量有限
# Platform Support 平台支持MegaLights 专为当前一代游戏机(例如 PlayStation 5、Xbox Series X | S)和具有光线追踪功能的 PC 设计。MegaLights 不支持移动设备、Switch 或上一代游戏机(例如 PlayStation 4 和 Xbox One)
官方文档地址https://dev.epicgames.com/docume ... e#shadowingmethods# 案例


关闭MegaLights

【如果灯光照明不复杂,将不值得使用Meag Lights】
开启MegaLights



在布置照明时,请将灯光不仅仅看作是光源,而是一种塑造画面的重要工具。它能够引导观众的视线,引领他们的眼睛走向你希望他们注意的每个角落。这并非我们在最初就能完全把握的技巧。通常在照明的初步构思阶段,我们倾向于简单追求“美观”,认为照明仅仅是为了装饰。但如何巧妙地引导观众视线,让他们聚焦于这里而非那里,这需要更精妙的布局。请记住,光与影是相辅相成的,你需要通过高光与阴影的交织,来真正抓住并引导观众的视觉兴趣


这个场景的焦点是这个建筑,我希望大家的注意力更多地集中在這座实际建筑上。因此,在镜头中,我们将要实现的就是这一目标


这只是场景布置的一部分。另一关键点是利用阴影来阻止观众的视线在此处游移,同时通过高光来引导观众的目光聚焦于此。在这里,方向性扮演着重要角色。具体来说,就是通过环境构建、以及实际灯光与阴影的巧妙运用,来达到这一效果


室内的情况与此类似,因此这里的内部环境具有相似性。但在这里,我们利用方向性来引导视线,所以实际上我可能会稍微调整这个光源的方向,以创造一个小幅度的变化。本质上,一个S曲线意味着这种S形的路径,这也与周围环境紧密相关。当观察图像时,人们的眼睛倾向于沿着阻力最小的路径移动


因此,当我们观察这幅图像时,眼睛会感受到由实际光线塑造的清晰S型路径。这种光线帮助我们引导视线,正如我们在这里所看到的,有一盏灯发挥了它的作用。这些灯光和它们的方向性,包括阴影等因素,都在某种程度上起到了各自的作用。再次强调,尤其是将灯光作为构图工具的使用,这可能极为关键。因此,例如,当您审视一个场景时,您可能会注意到类似的事物,并考虑如何放置灯光才能最有效地服务于构图。要思考的是,如何通过灯光的布置让观众的视线像打乒乓球一样,在场景的各个要点之间来回移动。这就是构图的魅力所在


我们将创建一个新的照明关卡,并将我们设计的灯光布置其中。一切从零开始,为此我们将采用HDRi背景。当然,如果您有意愿,也可以随时自定义自己的天空球体


平衡环境光与天空关系,自定义HDRI


Skylight



# 添加后处理体积一、设置无限范围二、开启Megalight

三、设置EV100曝光值=0 (根据实际情况设置)
四、Film--->Slope


【你在较暗的环境中做的事情时,通常可以做的一件事是: 控制色调映射曲线的整体陡度。数值越大,场景对比度越高,数值越小,对比度越低】五、添加定向光旋转选择合适角度


开启:Atmosphere Sun Light


定向光是否能与大气、云层相互作用并产生一个可视圆盘,所有这些共同构成了我们看到的天空


六、添加天空大气:SkyAtmosphere七、添加指数级高度雾;打开体积雾
八、添加聚光灯、调整衰减范围与强度,创建一个渐变边缘(控制衰减距离)




有一个问题,前景元素与背景融合在一起了,这是定向光导致
a.我们可以认为添加遮挡产生投影去隔离


b.添加颜色校正来处理开启插件

调整相关参数实现对场景的影响



# 室内我们通过在外边打一盏聚光灯使光线进入室内;然后按照我们上面所讲那样将灯光做视觉引导





我们使用IES光域网文件像这样,因为它只是添加了一种类似阴影的东西




我们可以在FBA添加光域网文件



# 后处理体积①添加一些Bloom



②色温


③中间色调



④ LUT



截图我们场景导入PS中,添加色阶、曲线等来调节我们效果


将这些调节参数同步到LUT文件中



最后将LUT导入UE,添加到后期中


避免放置光源具有大边界;嵌入到几何体内;将较小灯合并较大灯;优化灯光衰减范围

资产地址:
https://www.fab.com/listings/785da98f-3c56-4736-b898-826116d8f06fLUT地址:https://dev.epicgames.com/docume ... ion_version=5.1HDRI Resources:https://www.2gacademy.net/resources[url=https://polyhaven.com/hdris]https://polyhaven.com/hdris[/url]
点击阅读原文观看MegaLight相关视频讲解与案例视频版讲解





本期分享就到这里,我们下期见!:欢迎留言,大家互相学习讨论交流  
#探寻游戏细节:解析53种贴图的制作与用途以及对环境、角色的影响!#游戏模块化组件 | 简介、创建与使用、轴点与命名规则、材质创建与UV展开
#UE5近百项实用技巧!有些你可能还不知道?让开发变得更简单、更高效!
<<游戏关卡>> 关卡设计中的空间通信<<游戏关卡>> 游戏光照是什么?如何为关卡进行照明 (灯光篇)
<<游戏关卡>> 如何自然地引导玩家使用关卡布局 (视觉引导篇)
你从未见过PCG这样做!官方超好用图表 | 基础案例总结运用演示
虚幻引擎5 BluePrint(蓝图)
UE5.2预览版PCG工具系列
Houdini基础入门系列 | Houdini大世界制作#更多详细文章分类知乎专栏 | 左侧文章目录便于查找https://zhuanlan.zhihu.com/p/659080390关注我们学习不止、不止学习


公众号小编

公众号

哔哩哔哩

本帖被以下画板推荐:

微信公众号:Game艺视界
使用道具 <
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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