UE的全局光照系统

静态烘培 全局光照 (实时的全局光照)

在虚幻引擎中,光照贴图是在由名为 Lightmass 的程序控制的光照烘焙过程中生成的。

为了使物体正确着色并烘焙到光照贴图中,其多边形必须根据光照贴图的创建指南进行展开,以防止阴影伪影烘焙到纹理中。然而,这种工作流程给艺术家带来了额外的压力,他们必须为多个 UV 通道准备纹理坐标,并通过启动漫长的光照烘焙过程来检查其状态。

【注释】

创建指南:

  1. 使用独立的UV通道(通常为UV Channel 1)

  2. UV Channel 0:用于颜色贴图、法线贴图等材质纹理。

  3. UV Channel 1:专门用于光照贴图。必须遵循以下所有严格规则。

  4. 绝对禁止重叠(No Overlapping)

  5. 规则:UV islands之间不能有任何重叠,每个模型表面的点在UV空间中必须有唯一位置。

  6. 原因:重叠会导致多个表面共享同一个光照像素,造成严重的阴影错误和亮度错误(如下图)。

  7. 检查方法:在3D软件(如Maya、3ds Max)的UV编辑器中,开启"重叠检查"功能。

  8. 保持均匀的纹素密度(Uniform Texel Density)

  9. 规则:模型在3D世界中的表面,其UV islands应保持相对均匀的缩放。

  10. 原因:密度不均会导致光照贴图分辨率分配不均。密度高的区域光照细节多但可能浪费;密度低的区域光照细节不足,出现像素化或模糊的阴影。

  11. 技巧:使用3D软件中的"按面片或世界单位标准化"功能来统一密度。

  12. 避免极端拉伸(Minimize Stretching)

  13. 规则:UV islands应尽量与3D网格形态匹配,避免过度拉伸或压缩。

  14. 原因:严重的UV拉伸会使烘焙的光照信息扭曲,导致阴影或高光变形。

  15. 检查方法:在UV编辑器中开启"拉伸显示"模式(通常用蓝-绿-红色谱表示,蓝色为佳,红色为差)。

  16. 预留足够的"缝隙"(Adequate Padding)

  17. 规则:每个UV island之间需要预留足够的空白边界(通常为2-4个纹素)。

  18. 原因:防止在纹理采样时,一个island的光照信息"渗入"相邻的island,造成边缘漏光或颜色污染。

  19. 引擎关联:这个缝隙大小需要与UE5项目设置中的光照贴图分辨率匹配。

  20. 合理利用UV空间(Efficient Packing)

  21. 规则:在遵循以上规则的前提下,尽可能将UV islands紧密、有序地排列在UV方框0,1范围内。

  22. 原因:提高光照贴图纹理的空间利用率,让有限的分辨率承载更多模型细节。

【注释】

一旦全局光照最终被烘焙,它只投射到静态几何体上,而动态物体仅受直射光影响。为了将间接光照也投射到动态物体上,Epic 团队实现了他们自己版本的辐照场

辐照场 可以定义为一个称为 探针 的采集点的3D网格。每个探针从周围的静态物体收集间接光照值,并将这些值投射到任何靠近它的动态物体上。

虚幻引擎对此方法进行了两次迭代,创建了间接光照缓存(ICL)体积光照贴图(VLM)

ICL 网格中的探针放置由 Lightmass Importance Volume 的边界控制。默认情况下,此体积包含一个稀疏的采样网格,该网格可能会在角色最有可能出现的区域(例如,地面上方区域)增加其密度。下图 显示了 Lightmass 体积内 ICL 探针放置的示例。

然而,Epic 团队决定提高间接光照的质量,并用 体积光照贴图(VL) 取代了 ICL 。新版本提供了三个主要改进:

  1. 第一个改进支持将多个间接光照样本投射到移动角色上,因为探针插值过程已移至 GPU。
  2. 第二个进步改变了 Lightmass 体积内生成探针的方式。启动光照烘焙过程时,Lightmass 程序生成一个 4x4x4 块的稀疏网格,其中一些块进一步细分为更小的块,以便为较小的静态物体提供更好的覆盖。这种自适应放置策略导致对移动物体的光照传输更加详细和准确。图中的右图说明了场景中 VL 探针放置的示例。
  3. 第三个改进将简单的 ICL 采样点转变为 VL 球形探针,通过将其存储在其小立方体贴图的纹素中来考虑入射光的方向。

尽管辐照场的实现带来了某些进步,但虚幻引擎中的场景仍然受到光照伪影的影响。最常见的是 "漏光 " 伪影。 当两个相邻探针从不同的光照环境中采样值时,就会发生这种情况,插值过程会将其中一个样本传播到错误的环境中。

典型的用例描述了户外阳光"泄漏"到昏暗的房屋内部,因为插值算法未能检测到两个探针之间的房屋墙壁。此类问题只能通过手动调整场景中探针的位置来解决,这进一步增加了艺术工作负载。

使用辐照场的另一个主要缺点是它们对光照预计算阶段的依赖,因为它对内容管理施加了重大限制,并通过执行缓慢的光照更新增加了制作时间。

因此,开发者继续研究可能实时计算全局光照的方法。

Lumen (实时全局光照)

Lumen 支持几种光线追踪方法,因此常被描述为 混合光线追踪管线 。因此,用户可以根据可用硬件的能力在软件硬件 光线追踪模式之间进行选择。

  1. 软件光照模式 是 Lumen 的默认设置,支持最广泛的硬件和平台。但是,它在能有效处理的几何和材质类型方面受到限制。
  2. 硬件光照模式 由 UE4 中已知的原始 RTGI 算法的略微修改版本表示。它为渲染图像提供了最佳的视觉质量,但计算成本更高。

与 DXR 算法类似,Lumen 的光线追踪管线包括 4 个计算步骤,其中包括:

  1. 使用加速结构检测命中点
  2. 在检测到的命中点提取表面属性
  3. 评估场景中的光传播,BRDF 评估。
  4. 将计算的样本传播回屏幕像素。

软件光追模式

加速结构

这张图显示了 三种光追索合成的渲染帧

Lumen 投射光线的第一个加速结构是层级深度缓冲区(HZB) ,因为在屏幕空间中进行追踪被认为是短距离内最精确的方法 。

然而,如果光线在屏幕空间中未命中任何物体,它们将进一步针对另一种称为 网格距离场(MDF) 的加速结构进行测试,该结构覆盖观察者周围的所有物体。如果错过了这些物体,每条光线随后通过由 全局距离场(GDF) 定义的更粗糙的场景表示进行追踪。然而,如果某条光线错过了所有加速结构,它会被一个名为天光(Skylight) 的全局立方体贴图球体自动阻挡。

层级深度缓冲区(HZB)

首先,在屏幕空间中对Z缓冲区 (或深度缓冲区)进行光线追踪。它是一个2D灰度纹理,存储深度值,解释为观察者与场景几何体之间的距离。知道到渲染对象的距离允许"重建"可见的3D表面,算法可以针对此表面进行追踪。

然而,逐像素追踪场景效率相当低。为了加速光线步进过程,算法为Z缓冲区创建了一个Mipmap链 ,将其转变为层级深度缓冲区(HZB)

"Mipmap链 "是下采样纹理(称为"mip ")的集合,其中每个mip的分辨率都是前一个mip的一半。

下图所示 mip

当光线在屏幕像素中步进时,其深度值与纹理 mip 中存储的深度值进行比较。如果光线未与表面相交,则活动纹理 mip 会被替换为更粗糙的图像,并且光线被迫通过跳转到下一个纹素来跳过"更大"的距离。相反,如果光线击中表面,则活动 mip 会被替换为更精细的图像,以帮助近似潜在的命中点。

通过将纹素显示为高度近似表面深度(白线)的蓝绿色柱状物来说明此过程。当光线在当前纹素中未能击中表面时,它会跳转到位于更粗糙 mip 中的下一个纹素;从而采取更大的过渡步长并加速光线步进。

从上面的例子可以看出,屏幕空间中的光线步进与 3D 空间中的光线追踪并没有太大不同,因为两种方法都有类似的步进问题。

在屏幕空间中追踪场景的优势在于对相机视图中可见几何体的表示相对准确。因此,这项技术被证明有助于覆盖其他不太精确的追踪方法产生的失配。

然而,所有屏幕空间渲染方法都有一个主要缺点,即它们无法追踪屏幕边界之外的物体。

距离场

一旦屏幕空间追踪步骤完成,软件追踪 模式继续将未解决的光线针对另一个由 网格距离场(MDF) 表示的加速结构进行追踪。

距离场 可以定义为一个函数,该函数对于空间中的任何点返回到最近表面的距离。此外,还存在一个称为有符号距离场(SDF) 的修改版本,它为从物体体积外部采样的点返回正值,为从该体积内部采样的点返回负值。

最后,在虚幻引擎中实现的网格距离场(MDF) 是一个包围物体网格的体积 3D 纹理 。其纹素返回正值和负值,解释为到物体表面的距离。

当追踪光线进入 MDF 体积并在某个点对其进行采样时,它会收到一个值,光线可以安全地跳过空的空间,以可能到达物体表面。

由于距离是标量值,可以将其视为可以安全跳过的圆形区域的半径。因此,通过距离场进行光线步进的过程也称为球体追踪

简而言之,MDF 是一个光线导航纹理,近似于物体的形状。类似于 2D 纹理,它也可以在运行时流式传输,当远离相机时以较低分辨率出现。因此,UE5 在每次生成 MDF 时都会自动创建一个 mip 链,这通常发生在物体导入期间。

将 MDF 的质量降低与 HZB 中的 mip 切换进行比较,两种方法在加速光线步进过程的方式上似乎相似。

默认情况下,MDF 仅当它们距离相机不超过 40 米时才被追踪,因为即使在最低分辨率下,它们也会在远处物体附近引起过多的命中测试。因此,超过该范围的光线将针对称为全局距离场(GDF) 的更粗糙场景表示进行测试。GDF 是一个全局空间结构,通过将所有 MDF 合并到一组 4 个体素网格(称为 clipmap )中创建,存储在虚拟体积纹理(VVPs)中。

Clipmap

Clipmap 可以描述为一组以相机为中心、嵌套的 3D 网格。每个网格(也称为一个层级 )以一定的精度覆盖某个区域。

如图所示,围绕相机点的最小网格 LOD0 是最密集的,而所有其他网格以低得多的分辨率覆盖更大的区域。

当从 GDF 体积的中心追踪时,算法循环遍历所有 clipmap,从最小的开始。如果光线在体积中步进时未被阻挡,它将继续针对更大的 clipmap 进行追踪,直到找到命中点。

因此,GDF 追踪方案与 MDF 的追踪方案非常相似,如图所示。然而,GDF 使用 clipmap 层次结构而不是 MDF mipmap 层次结构来简化远处区域的几何体。因此,GDF 支持在较大区域内进行命中测试次数很少的非常快速的追踪,但缺乏原始 MDF 体积的精度。

除了多层次的空间层次结构,clipmap 还以其 更新缓存策略 而闻名,该策略仅在场景发生变化的地方刷新值。

图中展示了一个示例。当相机向一侧移动时,clipmap 网格也随之"移动"。一旦最大的网格在右侧获得 4 个新点,仅对这些点的值进行评估,而其余单元格点则重新分配先前已知的计算结果。

基于前面的例子,可以安全地得出结论,不同加速结构之间的切换是由于基于与观察者距离变化的精度需求而发生的。

然而,距离场不能用于着色计算,因为它们不存储原始网格的任何顶点属性。从近似表面命中点可以获得的唯一信息是该点的世界空间位置及其表面法线。然而,无法通过分析命中点来提取进一步的表面属性以进行 BRDF 评估。

材质采样

距离场主要用于快速碰撞测试,不存储任何表面输入。因此,引入了另一种数据结构来跟踪与表面相关的信息,包括材质和光照样本。这种结构称为 表面缓存 ,它实现为一个大型的 4K 图集纹理,包含从原始三角形网格获取属性的展开平面 。其中一个图集如图左侧所示。

这些平面被称为网格卡片 。如图右侧所示,网格卡片是轴对齐的构建块,从所有 6 个面包围原始网格,为任何与其重叠的光线提供着色值。作为 2D 光栅纹理实现,网格卡片以比 3D 体素网格更高的精度捕获几何体。

每个网格卡片纹素近似物体在正交投影到网格卡片平面上时发现的位置的材质值。存储在纹理中的材质样本密度取决于其光栅分辨率,该分辨率源自物体的大小。因此,该分辨率是固定的,除非在内存流式传输时进行标准的 mipmap 切换,否则无法在运行时更改。

然而,材质值并非仅采样一次,实际上会频繁更新,这迫使投影和光栅化操作定期执行。通过这种方式,网格卡片支持动态材质变化,从而提高了间接光照传播的准确性。

为了更好的数据一致性,所有网格卡片都在表面缓存图集内流式传输。这使得表面缓存成为 Lumen 管线中更新最频繁的数据结构之一。

由于在一帧内发送大量重写请求,表面缓存的更新常常被视为光照计算中的瓶颈。此过程的主要困境是原始材质样本到网格卡片纹素的缓慢投影 ,该操作由 GPU 光栅化器执行。这是因为硬件光栅化器设计为一次仅执行一项任务,将多个请求放入队列列表,从而增加了更新时间。

Nanite 优化

【注释】

(可以看 " A Deep Dive into Nanite Virtualized Geometry**")**

A Deep Dive into Nanite Virtualized Geometry-CSDN博客

【注释】

UE5 带有另一个突出的功能,称为 Nanite ,它显著加快了渲染过程和材质捕获速度。

根据 Epic 的文档页面,Nanite 是一个"虚拟化几何系统 ,用于实现像素级细节和高物体数量。"。

简而言之,Nanite 是 3D 模型的一种新流式传输方法,仅加载三角形网格中渲染当前帧所需的那些多边形。

Nanite 是对旧的 LOD(细节层次)"几何体 mipmap"系统的替代,因为它能够在任何距离实时渲染数百个高多边形网格。为了使 Nanite 与引擎的其他数据结构协同工作,开发者不得不重写整个渲染管线,将其转变为GPU 驱动的工作流 。此外,其最终实现包括多个能够并行执行多个插值任务的软件光栅化器(多视图渲染)

因此,Nanite 的渲染模式可以通过支持并行的网格卡片重新捕获来显著加快表面缓存的更新速度。因此,建议在使用 Lumen 光照系统时激活 Nanite 模式,即使最终场景仅包含低多边形模型。

LumenScene ,它被认为是 Lumen 最重要的场景表示,因为它包含了光照评估所需的最重要的场景组件。第一个是命中加速结构,由距离场形状表示,而第二个是表面缓存数据,其着色值被应用到这些距离场形状上。

光照累积

LumenScene 中的光照评估过程可以分为两个阶段:

  1. 在屏幕空间中计算单次反弹的直接光照。
  2. 通过对存在于 3D 场景中的体积光照缓冲区进行采样来添加间接光照。
直接光照

在第一阶段,场景的可见部分被光栅化为一组 2D 帧缓冲区。每个帧缓冲区存储特定类型的场景样本(例如,反照率、法线、距离),用于准确的几何体分析和快速像素着色。

例如,深度和法线缓冲区中的样本需要执行光栅化几何体与数学定义的光源之间的快速可见性测试。

如果表面和光源之间的路径未被阻挡,则表面应被照亮,覆盖此区域的像素可以应用来自颜色帧缓冲区的样本。然而,如果测试的表面不在发射器的视线内,则它被另一个物体"遮挡"并位于其阴影中。阴影区域的像素被涂成黑色,这使渲染的图像呈现出高对比度的外观,如图所示。

间接光照

因此,直接光照相对容易计算,因为它只评估光源和屏幕像素之间的一次反弹。然而,间接光照 需要在场景周围进行更多次反弹,以将反射光传播到未解决的阴影区域。然而,如此复杂的计算无法在屏幕空间中进行,因为帧缓冲区不存储重叠对象的多层值,并且无法解决渲染区域之外的反弹。

因此,Lumen 实现了两个负责场景中光传播的空间光照缓冲区。

间接光照探针

在较近的光线命中处,全局光照从表面缓存中采样。间接光照分量使用在网格卡片顶部生成的 2D 光照探针网格来近似。探针网格的密度取决于表面缓存中使用的卡片分辨率。如图 显示了一个被网格卡片光照探针覆盖的场景。

每个光照探针(大概是一个半球)被展开为 4x4 分辨率的纹素块上的八面体 图右侧示意图 。纹素编码光线射出的方向。

在理想情况下,间接探针会在多个方向上投射数十条光线以正确地对环境进行采样。然而,由于严重的性能限制,每帧只允许一部分间接探针投射一条光线。因此,多反弹效果是通过随时间累积光照样本来实现的。由于光线追踪操作的高成本,探针的位置和追踪方向每帧都会轻微抖动 ,以扩大采样范围。

此外,每条生成光线的方向取决于先前样本的值,这可能会导向潜在的光源。因此,来自间接探针的光线投射被认为是"基于反馈的 "。

然而,尽管付出了所有努力,探针接收到的值可能非常嘈杂,因为采样率非常低。可以通过所谓的"空间和时间复用 "来减少噪点。

空间复用 基于图像滤波技术,该技术对 4 个间接探针进行双线性插值,以计算底层网格卡片纹素的光照值。

插值后的值随后临时存储在间接光照图集中,在那里它将与先前的光照样本进行累积。时间累积 限制为 4 帧,之后样本将被丢弃。这个周期设置得很短,以减少相机移动期间的重影效应。

一旦光照值得到充分近似,它们就会被注入到网格卡片的纹素中,在 BRDF 评估期间,它们的强度将进一步受到材质属性的影响。

体积 Clipmaps

网格卡片被证明是 MDF 追踪的响应式表面缓冲区。然而,当涉及到远处物体的评估时,表面缓存样本不能直接应用于 GDF 命中点,因为 GDF 是场景几何体的合并版本,没有不同网格的记录。

Figure : Volumetric Clipmap lighting, 33

因此,为了解决全局情况,开发者在前述的 clipmap 内部实现了一个光照缓冲区。然后,每个 clipmap 的单元格由一个光照体素 表示。着色的体素化 clipmap 示例如图所示。

每个体素通过合并来自局部网格卡片的样本来收集材质属性,并沿着其 6 个轴对齐方向中的每一个收集辐射值。

因此,体素可以被视为一个由 6 个网格卡片组成的立方体,分辨率非常低,因为每个体素面只存储一个着色值。当检测到 GDF 命中点时,它通过插值与点表面法线对齐的 3 个体素面来获取着色样本。

反射

积累在稀疏分布的采集探针中的次级光线反弹似乎为间接光照分量提供了"足够"的细节。这种"充分性"的衡量标准使得软件光线追踪在运行时成为可能,因为在不接受某些妥协的情况下,无法在视觉质量和追踪速度之间找到平衡。

如前面几节所述,Lumen 倾向于在每个阶段几乎都降低数据精度,以换取额外的性能。同时,该系统在向用户隐藏低分辨率数据方面证明是相当成功的。尽管如此,有一个组件,软件光线追踪方法无法掩盖其内部数据损失。

一旦漫反射光照被评估,追踪算法就开始计算反射,为此它必须采样其能够访问的最精细的场景表示。

在软件模式下,那将是 LumenScene,由 MDF 和表面缓存表示。因此,它不为镜面反射提供任何高频细节。

为了准确着色光滑表面,程序需要能够针对实际网格三角形执行追踪的硬件光线追踪管线。然而,在 Lumen 的上下文中,硬件解决方案可以在两种反射模式下工作:32

  1. "表面缓存"反射模式
  2. 从表面缓存中选取着色信息,并将其样本从网格卡片投影到三角形网格上。因此,直接光照和间接光照都在一次评估通道中计算。"命中光照"反射模式

代表原始 DXR 反射算法的修改版本,该算法执行精确的命中测试来计算直接光照。然而,材质和间接光照值仍然从表面缓存中采样。

最终聚集

最终聚集 是将光照样本从 LumenScene 传播到屏幕像素的过程名称。

一旦间接光照在空间光照缓冲区中累积起来,就需要从场景中检索并传输回观察者。采样和传输任务都是通过从辐照度采集点 追踪光线来解决的。然而,与 Lumen 的其他追踪阶段类似,最终聚集将场景物体按距离范围分开,并用不同的技术解决它们。

屏幕空间辐射率缓存(SSRC)

第一个辐照度采集结构称为屏幕空间辐射率缓存(SSRC) 。它由屏幕空间探针(SSP) 组成,这些探针通过从相机可见的表面投射光线来收集光照样本。

探针稀疏地放置在观察者的屏幕上,因为一个 SSP 近似一个 16x16 的像素块,而不是单个像素。这使得可以重新分配最初仅支持每个像素半条光线的光线预算。然而,像素块为采集点提供了 32 条光线进行投射。40

通常说屏幕探针直接放置在屏幕平面上,以确保每帧样本密度相同。确实如此,然而,屏幕探针首先投射一条光线以命中像素块处渲染的主(可见)几何体,然后仅从该命中点进一步投射那 32 条光线,以从周围的几何体采样表面缓存值 。38, 41.

当所有 32 个样本回溯到采集点时,它们的值被记录到 SSRC 探针图集中,求和,然后通过单条光线投影回像素块。

基于这种光采集方案,Lumen 可以被描述为一种光线追踪器,其多分支采样是通过表面缓存更新模型实现的。同时,Lumen 也显示出路径追踪器的特征,因为它随时间累积光照,并实现某些采样技术以有效地引导空间中的采样光线。

Figure : Adaptive generation of SSR samples 40

第一种技术称为自适应采样 ,它建议改变探针的位置,以支持使用最少数量的探针进行追踪。默认情况下,SSP 以 1/16 的屏幕分辨率运行,这相当低。然而,通过每帧轻微抖动 SSP 放置并随时间累积结果,最终聚集为像素块提供了良好的采样覆盖,如图所示。

尽管采样位置数量在增加,但结果仍然非常嘈杂。为了缓解这个问题,累积的样本在探针空间内进行空间滤波(模糊),因为高频信息的可能损失对于间接漫反射分量来说似乎并不关键。

滤波操作随后为屏幕上的所有像素提供插值。如果高对比度屏幕区域可能出现伪影,最终聚集会生成更多的屏幕探针以更好地近似有问题的区域。这个概念被称为网格的"分层细化 "。14

关于实现,所有 SSP 将其定向样本记录到称为辐射率缓存 的中间光照缓冲区中。这个缓冲区存储一个大型纹理图集,其中每个 SSP 接收一个 8x8 的纹素块。然后,使用八面体 UV 布局将屏幕探针展开到此块中,纹素对应于采样光线的方向。在运行时,每个纹素存储采样的辐射率值和到命中点的距离。

Figure : Left: SSRC atlas. Right: Importance sampling. 33

为了进一步改进光线投射策略,最终聚集实现了对入射光的重要性采样 图。通过将上一帧的辐射率和 BRDF 样本视为辐照度的估计,采样算法可以将一些剔除的光线重定向到更有前景的方向,以加速最终结果的收敛。

世界空间辐射率缓存(WSRC)

当 SSRC 用于短光线追踪时,远处的光照通过一种单独的采样方案解决,称为世界空间辐射率缓存(WSRC) 。顾名思义,世界空间探针(WSP) 源自 3D clipmap 的网格点。它们的空间分辨率远低于 SSRC。然而,WSP 的方向分辨率显著更高,因为每个空间探针在其辐射率图集中占用一个 32x32 的纹素块。40

引入 WSRC 是为了支持稳定的远处光照,因为屏幕探针的方向分辨率可能不足以在场景中找到小的、遥远的光源。因此,选择了 clipmap 分布,以维持探针之间有限的屏幕距离,避免过度采样或采样不足。

与 SSRC 探针不同,WSRC 探针具有持久分配,并跨帧存在。它们的值在屏幕探针投射的光线距离屏幕超过 2 米时被采样。然而,如果屏幕探针的光线在世界空间中未命中任何物体,则会采样外部天光的值。

如前所述,SSRC 和 WSRC 都在降分辨率空间中运行,而它们采样的全局光照值需要与全分辨率渲染图像合并。这通常发生在主要的滤波阶段之后,此时去噪后的降采样探针值被拉伸并插值到屏幕上的所有像素。然后,模糊的全屏全局光照被集成到全分辨率渲染缓冲区的合成中。

最后一步,渲染图像可能需要额外的时间滤波 ,以隐藏抖动样本的痕迹,并提供平滑清晰的输出图像。40, 33

实践部分

在研究光照算法的同时,我也花了一些时间在虚幻引擎编辑器内试验光照设置。为此,我准备了代表室内和室外环境的 2 个场景。

室内和室外场景。

为了在最终程序中保留一定的交互性,我特别注意将用户输入重定向到引擎的关卡控制结构。用户在程序的构建版本中调整某些光照设置的方式是通过使用 GUI 界面。

因此,该界面包含了由后期处理体积(Post Process Volumes) 提供的功能。这些局部结构承载了所有光照模式的主要设置。通过在它们之间切换,我有机会比较每种光线追踪模式的视觉输出。

全局光照

上图显示了房间角落被 3 种全局光照方法照亮的截图。

因此,Lumen GI 方法似乎提供了一个非常平滑的输出,然而,其对比度非常低,并且缺乏深阴影。看起来所有投影到屏幕上的采样值都被一个大的滤波核平均了。这种视觉效果可能确实对应于在稀疏的屏幕采集探针上执行的空间滤波。

另一方面,硬件光线追踪解决方案产生了清晰、高对比度的图像,并增强了深阴影。然而,存在大量的噪点和闪烁,因为屏幕降噪器似乎在以实时速率近似光照样本方面失败了。然而,暴力法和最终聚集法之间的主要视觉差异是表面上可见的噪点量。最终聚集法产生了更差的输出,但渲染速度比暴力法稍快一些。

Bibliography

  1. GREGORY, Jason. Game Engine Architecture. 2nd ed. Cambridge (Mass): CRC Press, 2015. isbn 978-1-4665-6006-2.

  2. List of common shading algorithms online. Wikipedia visited on 2022-11-17. Available from: https://en.wikipedia.org/wiki/List_of_common_shading_algorithms.

  3. VRIES, Joey de. Basic lighting online. 2014. visited on 2022-11-12. Available from: LearnOpenGL - Basic Lighting.

  4. Light online. Wikipedia visited on 2022-11-10. Available from: https://en.wikipedia.org/wiki/Light.

  5. WHITTED, Turner. An Improved Illumination Model for Shaded Display online. 1980, vol. 23 visited on 2022-11-04. Available from: https://dl.acm.org/doi/10.1145/358876.358882.

  6. Photon Energy online. Wikipedia visited on 2022-11-13. Available from: https://en.wikipedia.org/wiki/Photon_energy.

  7. JEFF, Russel. Basic Theory of Physically-Based Rendering online. visited on 2022-11-03. Available from: Basic Theory of Physically-Based Rendering | Marmoset Toolbag.

  8. The PBR Guide by Allegorithmic - Part 1: Light and Matter: The theory of Physically-Based Rendering and Shading online. visited on 2022-10-03. Available from: https://substance3d.adobe.com/tutorials/courses/the-pbr-guide-part-1.

  9. The PBR Guide by Allegorithmic - Part 2: Practical Guidelines for Creating PBR Textures online. visited on 2022-10-03. Available from: https://substance3d.adobe.com/tutorials/courses/the-pbr-guide-part-2.

  10. JOE, Wilson. Physically-Based Rendering: And You Can Too! online. visited on 2022-11-03. Available from: Physically-Based Rendering, And You Can Too! | Marmoset Toolbag.

  11. MOLLER, Tomas. Real-Time Rendering. 4th ed. CRC Press, 2018. isbn 978-1-1386-2700-0.

  12. VRIES, Joey de. PBR: Theory online. 2014. visited on 2022-11-22. Available from: LearnOpenGL - Theory.

  13. Rendering equation online. Wikipedia visited on 2022-11-12. Available from: https://en.wikipedia.org/wiki/Rendering_equation.

  14. KAJIYA, James. The Rendering equation online. 1986, vol. 20 visited on 2022-11-02. isbn 978-0-89791-196-2. Available from: https://dl.acm.org/doi/10.1145/15886.15902.

  15. EVANSON, Nick. Path Tracing vs. Ray Tracing, Explained online. 2022 visited on 2022-11-16. Available from: https://www.techspot.com/article/2485-path-tracing-vs-ray-tracing/#:~:text=Traditional%5C%20ray%5C%20tracing%5C%20involves%5C%20calculating,off%5C%20in%5C%20a%5C%20random%5C%20direction.

  16. ALAN WATT, Mark Watt. Advanced Animation And Rendering Techniques: Theory and Practice. Addison-Wesley, 1992. isbn 0-201-54412-1.

  17. COOK, Robert. Distributed Ray Tracing online. 1984, vol. 18 visited on 2022-11-02. Available from: https://dl.acm.org/doi/10.1145/964965.808590.

  18. Monte Carlo method online. Wikipedia visited on 2022-11-17. Available from: https://en.wikipedia.org/wiki/Monte_Carlo_method.

  19. UE4 Documentation: Real-Time Ray Tracing online. Epic visited on 2022-11-19. Available from: https://docs.unrealengine.com/4.27/en-US/RenderingAndGraphics/RayTracing/.

  20. DirectX RayTracing (DXR) Functional Spec online. visited on 2022-10-28. Available from: DirectX Raytracing (DXR) Functional Spec | DirectX-Specs.

  21. EDWARD LIU Llamas Ignacio, Kelly Patrick. Cinematic Rendering in UE4 with Real-Time Ray Tracing and Denoising. In: online. 2019 visited on 2022-11-29. Available from: Cinematic Rendering in UE4 with Real-Time Ray Tracing and Denoising | Springer Nature Link.

  22. PATRICK KELLY, Yuriy O'Donnell. Ray Tracing in Fortnite. In: online. 2021 visited on 2022-11-16. Available from: Ray Tracing in Fortnite | Springer Nature Link.

  23. CHRIS WYMAN, Marrs Adam. Introduction to DirectX Raytracing online. visited on 2022-11-29. Available from: https://www.researchgate.net/publication/354065088_Ray_Tracing_in_Fortnite.

  24. UE5 Documentation: Ray Tracing Performance Guide in Unreal Engine online. Epic visited on 2022-10-01. Available from: https://docs.unrealengine.com/5.0/en-US/ray-tracing-performance-guide-in-unreal-engine/.

  25. UE5 Documentation: Lightmass Basics online. Epic visited on 2022-10-15. Available from: https://docs.unrealengine.com/5.0/en-US/lightmass-basics-in-unreal-engine/.

  26. UE5 Documentation: Understanding Lightmapping in Unreal Engine online. Epic visited on 2022-10-16. Available from: https://docs.unrealengine.com/5.0/en-US/understanding-lightmapping-in-unreal-engine/.

  27. MCGUIRE, Morgan. Ray-Traced Irradiance Fields online. NVIDIA, 2019 visited on 2022-11-13. Available from: GDC Vault - Ray-Traced Irradiance Fields (Presented by NVIDIA).

  28. UE5 Documentation: Indirect Lighting Cache online. Epic visited on 2022-10-15. Available from: https://docs.unrealengine.com/5.0/en-US/indirect-lighting-cache-in-unreal-engine/.

  29. UE5 Documentation: Volumetric Lightmaps online. Epic visited on 2022-10-15. Available from: https://docs.unrealengine.com/5.0/en-US/volumetric-lightmaps-in-unreal-engine/.

  30. UE5 Documentation: Path Tracer online. Epic visited on 2022-11-18. Available from: https://docs.unrealengine.com/5.0/en-US/path-tracer-in-unreal-engine/.

  31. UE5 Documentation: Lumen Global Illumination and Reflections online. Epic visited on 2022-10-14. Available from: https://docs.unrealengine.com/5.1/en-US/lumen-global-illumination-and-reflections-in-unreal-engine/.

  32. UE5 Documentation: Lumen Technical Details online. Epic visited on 2022-11-03. Available from: https://docs.unrealengine.com/5.0/en-US/lumen-technical-details-in-unreal-engine/.

  33. KELLY, Daniel Wright; Krzysztof Narkowicz; Patrick. Lumen: Real-time Global Illumination in Unreal Engine 5 online. SIGGRAPH, 2022 visited on 2022-10-28. Available from: SIGGRAPH 2022 Advances in Real-Time Rendering in Games course.

  34. STACHOWIAK, Tomasz. Stochastic Screen-Space Reflections online. Electronic Arts / Frostbite, 2015 visited on 2022-11-23. Available from: Stochastic Screen-Space Reflections - Frostbite.

  35. Hierarchical-Z map based occlusion culling online. RasterGrid, 2010 visited on 2022-11-22. Available from: Hierarchical-Z map based occlusion culling -- RasterGrid | Software Consultancy.

  36. GARCIA, Maxime. An Introduction to Raymarching online. visited on 2022-11-24. Available from: An Introduction to Raymarching | Maxime Garcia.

  37. AREEJ. Unreal Engine 5 Lumen vs Ray Tracing: Which One is Better? online. 2022 visited on 2022-10-03. Available from: https://www.hardwaretimes.com/unreal-engine-5-lumen-vs-ray-tracing-which-one-is-better.

  38. UE5 Lumen Implementation Analysis online. visited on 2022-10-14. Available from: https://blog.en.uwa4d.com/2022/01/25/ue5-lumen-implementation-analysis/.

  39. UE5 Documentation: Nanite online. Epic visited on 2022-10-16. Available from: https://docs.unrealengine.com/5.0/en-US/nanite-virtualized-geometry-in-unreal-engine/.

  40. WRIGHT, Daniel. Radiance Caching for Real-Time Global Illumination online. SIGGRAPH, 2021 visited on 2022-11-02. Available from: https://advances.realtimerendering.com/s2021/index.html.

  41. BOISSE, Guillaume. GI-1.0: A Fast Scalable Two-Level Radiance Caching Scheme for Real-Time Global Illumination online. 2022 visited on 2022-11-14. Available from: https://gpuopen.com/download/publications/GPUOpen2022_GI1_0.pdf.

  42. GREGORY, Jason. Game Engine Architecture. 2nd ed. Cambridge (Mass): CRC Press, 2015. ISBN 978-1-4665-6006-2.

    • 解决: 游戏引擎开发中系统架构设计的工程问题(模块划分、数据流、性能权衡)。

    • 方法: 提出分层架构设计模式,将渲染、物理、动画、内存管理等模块解耦,并提供各子系统的标准接口规范。

  43. List of common shading algorithms online. Wikipedia visited on 2022-11-17. Available from: https://en.wikipedia.org/wiki/List_of_common_shading_algorithms.

    • 解决: 着色算法种类繁多,缺乏统一分类和比较的索引问题。

    • 方法: 提供枚举式分类列表,按算法类型(逐顶点/逐像素/基于物理等)横向对比各算法的输入输出和适用场景。

  44. VRIES, Joey de. Basic lighting online. 2014. visited on 2022-11-12. Available from: LearnOpenGL - Basic Lighting.

    • 解决: 图形学初学者难以理解光照计算如何在实时渲染管道中实现的问题。

    • 方法: 采用自底向上的教学法,从环境光、漫反射、镜面反射三个分量依次构建Phong反射模型,并在OpenGL中逐顶点/逐像素实现。

  45. Light online. Wikipedia visited on 2022-11-10. Available from: https://en.wikipedia.org/wiki/Light.

    • 解决: 渲染中光的行为需要物理定义作为理论依据的问题。

    • 方法: 从波动光学和量子光学两个层面定义光的本质(电磁波谱、光子能量、反射折射定律),提供跨学科的知识框架。

  46. WHITTED, Turner. An Improved Illumination Model for Shaded Display online. 1980, vol. 23 visited on 2022-11-04. Available from: https://dl.acm.org/doi/10.1145/358876.358882.

    • 解决: 传统光照模型(Phong)无法模拟镜面反射、透射和阴影等全局光学效果的问题。

    • 方法: 提出递归光线追踪算法------从视点向场景发射光线,遇表面时递归生成反射光线和折射光线,沿路径累加光照贡献。

  47. Photon Energy online. Wikipedia visited on 2022-11-13. Available from: https://en.wikipedia.org/wiki/Photon_energy.

    • 解决: 在物理渲染中光的能量量化标准不明确的问题。

    • 方法: 基于量子力学给出光子能量公式 E = hν(普朗克常数×频率),建立光谱与能量之间的定量关系。

  48. JEFF, Russel. Basic Theory of Physically-Based Rendering online. visited on 2022-11-03. Available from: Basic Theory of Physically-Based Rendering | Marmoset Toolbag.

    • 解决: 传统经验模型(Phong/Blinn-Phong)缺乏物理依据,导致材质表现不真实且难以在不同光照环境下复用的问题。

    • 方法: 引入微平面理论、能量守恒约束和菲涅尔效应,用基于物理的BRDF取代经验模型。

  49. The PBR Guide by Allegorithmic - Part 1: Light and Matter: The theory of Physically-Based Rendering and Shading online. visited on 2022-10-03. Available from: https://substance3d.adobe.com/tutorials/courses/the-pbr-guide-part-1.

    • 解决: PBR理论体系庞大,缺乏系统化、通俗化的理论梳理的问题。

    • 方法: 将光与物质的交互解构为散射与吸收两个物理过程,分金属/非金属两种工作流分别论述。

  50. The PBR Guide by Allegorithmic - Part 2: Practical Guidelines for Creating PBR Textures online. visited on 2022-10-03. Available from: https://substance3d.adobe.com/tutorials/courses/the-pbr-guide-part-2.

    • 解决: PBR理论知识难以直接转化为纹理制作的实际操作规范的问题。

    • 方法: 提供针对Base Color、Metalness、Roughness、Normal贴图的具体制作参数、取值规范和校验流程。

  51. JOE, Wilson. Physically-Based Rendering: And You Can Too! online. visited on 2022-11-03. Available from: Physically-Based Rendering, And You Can Too! | Marmoset Toolbag.

    • 解决: 美术和独立开发者难以从传统着色工作流迁移到PBR工作流的问题。

    • 方法: 以案例驱动方式展示同一材质在传统模型和PBR模型下的视觉差异,给出具体的参数转换规则。

  52. MOLLER, Tomas. Real-Time Rendering. 4th ed. CRC Press, 2018. ISBN 978-1-1386-2700-0.

    • 解决: 实时渲染领域知识分散、缺乏系统整合的问题。

    • 方法: 以综合参考书形式,全面覆盖光栅化、阴影映射、GI算法、反射、抗锯齿、纹理压缩等技术的数学原理和工程实现。

  53. VRIES, Joey de. PBR: Theory online. 2014. visited on 2022-11-22. Available from: LearnOpenGL - Theory.

    • 解决: 从理论到OpenGL实践的PBR实现路径不清晰的问题。

    • 方法: 在OpenGL管线中逐步实现Cook-Torrance BRDF,包括GGX法线分布函数、Schlick菲涅尔近似和Smith几何遮挡函数。

  54. Rendering equation online. Wikipedia visited on 2022-11-12. Available from: https://en.wikipedia.org/wiki/Rendering_equation.

    • 解决: 所有光照计算缺乏统一数学框架的问题。

    • 方法: 定义渲染方程为积分方程,将出射光表示为自发光、直接光照和间接光照(半球空间积分)三项之和。

  55. KAJIYA, James. The Rendering equation online. 1986, vol. 20 visited on 2022-11-02. ISBN 978-0-89791-196-2. Available from: https://dl.acm.org/doi/10.1145/15886.15902.

    • 解决: 光传输过程缺乏通用、完整的数学描述,导致不同渲染算法间无法统一比较的问题。

    • 方法: 将Kajiya于1986年正式提出渲染方程作为标准数学形式,确立入射光、BRDF和几何项的积分关系。

  56. EVANSON, Nick. Path Tracing vs. Ray Tracing, Explained online. 2022 visited on 2022-11-16. Available from: https://www.techspot.com/article/2485-path-tracing-vs-ray-tracing/#:~:text=Traditional%5C%20ray%5C%20tracing%5C%20involves%5C%20calculating,off%5C%20in%5C%20a%5C%20random%5C%20direction.

    • 解决: 公众和技术从业者容易混淆"光线追踪"和"路径追踪"两个概念的问题。

    • 方法: 从算法层面对比两者递归深度、采样策略和收敛行为,指出经典光线追踪为"非概率采样",路径追踪为"蒙特卡洛随机采样"。

  57. ALAN WATT, Mark Watt. Advanced Animation And Rendering Techniques: Theory and Practice. Addison-Wesley, 1992. ISBN 0-201-54412-1.

    • 解决: 高级渲染技术(辐射度、光线追踪、体积光等)缺乏系统理论整理的问题。

    • 方法: 将渲染技术按"光照模型-阴影算法-全局光照-体积效果"四级递进组织,强调理论与实现的对应关系。

  58. COOK, Robert. Distributed Ray Tracing online. 1984, vol. 18 visited on 2022-11-02. Available from: https://dl.acm.org/doi/10.1145/964965.808590.

    • 解决: 经典Whitted光线追踪只能生成理想化的锐利阴影、完美反射和无限景深,无法模拟真实世界模糊效果的问题。

    • 方法: 在光线生成阶段引入蒙特卡洛随机采样------对光源区域、镜头光圈、反射方向、时间轴等多维度进行分布采样,在同一框架内同时生成软阴影、景深、光泽反射和运动模糊。

  59. Monte Carlo method online. Wikipedia visited on 2022-11-17. Available from: https://en.wikipedia.org/wiki/Monte_Carlo_method.

    • 解决: 渲染方程作为高维积分难以解析求解的问题。

    • 方法: 用随机采样近似积分值,以样本均值的方差收敛替代精确计算,为路径追踪等随机算法提供数学基础。

  60. UE4 Documentation: Real-Time Ray Tracing online. Epic visited on 2022-11-19. Available from: https://docs.unrealengine.com/4.27/en-US/RenderingAndGraphics/RayTracing/.

    • 解决: UE4工程中如何启用、配置和使用实时光线追踪功能的问题。

    • 方法: 提供硬件光线追踪(基于DXR)在UE4中的开关设置、性能调优参数、以及各类效果(反射/阴影/AO/半透明)的独立控制方案。

  61. DirectX RayTracing (DXR) Functional Spec online. visited on 2022-10-28. Available from: DirectX Raytracing (DXR) Functional Spec | DirectX-Specs.

    • 解决: GPU光线追踪在DirectX 12生态中缺乏统一底层接口标准的问题。

    • 方法: 定义DXR的五大核心组件(加速结构、着色器表、光线生成着色器、命中着色器、未命中着色器)及其交互流程。

  62. EDWARD LIU Llamas Ignacio, Kelly Patrick. Cinematic Rendering in UE4 with Real-Time Ray Tracing and Denoising. In: online. 2019 visited on 2022-11-29. Available from: Cinematic Rendering in UE4 with Real-Time Ray Tracing and Denoising | Springer Nature Link.

    • 解决: 实时光线追踪采样率极低,直接输出噪声严重,无法直接用于最终画面的问题。

    • 方法: 将硬件光线追踪与时空去噪滤波器结合,先用低采样率(1-4 spp)生成带噪图像,再通过帧间累积和边缘感知滤波重建高质量画面。

  63. PATRICK KELLY, Yuriy O'Donnell. Ray Tracing in Fortnite. In: online. 2021 visited on 2022-11-16. Available from: Ray Tracing in Fortnite | Springer Nature Link.

    • 解决: 在大规模多人对战游戏(Fortnite)中,动态场景下实时光线追踪的性能开销和画面质量平衡问题。

    • 方法: 采用混合渲染策略------静态/远距离物体使用传统光栅化+反射探针,动态/近处物体使用DXR光线追踪,并结合自适应分辨率与动态LOD。

  64. CHRIS WYMAN, Marrs Adam. Introduction to DirectX Raytracing online. visited on 2022-11-29. Available from: https://www.researchgate.net/publication/354065088_Ray_Tracing_in_Fortnite.

    • 解决: 开发者对DXR硬件架构和API设计原理理解不足的问题。

    • 方法: 从GPU硬件层面讲解加速结构(BVH)的构建和遍历,解释DXR API设计如何映射到底层硬件执行模型。

  65. UE5 Documentation: Ray Tracing Performance Guide in Unreal Engine online. Epic visited on 2022-10-01. Available from: https://docs.unrealengine.com/5.0/en-US/ray-tracing-performance-guide-in-unreal-engine/.

    • 解决: UE5光线追踪在实际项目中帧率不稳定、GPU占用过高等性能问题。

    • 方法: 提供一套性能诊断方法论,包括使用Unreal Insight分析瓶颈、调整BVH构建参数、限制最大光线递归深度、以及分级启用/禁用不同光追效果。

  66. UE5 Documentation: Lightmass Basics online. Epic visited on 2022-10-15. Available from: https://docs.unrealengine.com/5.0/en-US/lightmass-basics-in-unreal-engine/.

    • 解决: UE4/5中静态场景全局光照烘焙效率和质量难以控制的问题。

    • 方法: Lightmass采用光子映射(Photon Mapping)结合辐照度缓存(Irradiance Cache),在离线状态下预计算静态光照信息并存储为光照贴图。

  67. UE5 Documentation: Understanding Lightmapping in Unreal Engine online. Epic visited on 2022-10-16. Available from: https://docs.unrealengine.com/5.0/en-US/understanding-lightmapping-in-unreal-engine/.

    • 解决: 光照贴图UV展开、分辨率和打包策略不清晰,导致烘焙结果出现接缝或模糊的问题。

    • 方法: 阐述光照贴图分辨率与场景尺寸的关系、UV岛划分原则、以及光照贴图压缩格式(如HDR Compressed)的取舍策略。

  68. MCGUIRE, Morgan. Ray-Traced Irradiance Fields online. NVIDIA, 2019 visited on 2022-11-13. Available from: GDC Vault - Ray-Traced Irradiance Fields (Presented by NVIDIA).

    • 解决: 实时GI中低频光照信息(辐照度)的存储和快速查询效率不高的问题。

    • 方法: 提出光线追踪辐照度场方案------在场景稀疏位置预计算辐照度样本点,实时运行时通过插值重建任意位置的环境光照,用于漫反射GI。

  69. UE5 Documentation: Indirect Lighting Cache online. Epic visited on 2022-10-15. Available from: https://docs.unrealengine.com/5.0/en-US/indirect-lighting-cache-in-unreal-engine/.

    • 解决: UE4中动态物体在预烘焙GI场景中接收间接光照颜色和强度不准确的问题。

    • 方法: 在场景中放置稀疏的辐照度缓存点,每个缓存点存储入射光分布,动态物体移动时从近邻缓存插值获取间接光照。

  70. UE5 Documentation: Volumetric Lightmaps online. Epic visited on 2022-10-15. Available from: https://docs.unrealengine.com/5.0/en-US/volumetric-lightmaps-in-unreal-engine/.

    • 解决: 传统2D光照贴图无法为动态物体和半透明物体提供准确的间接光照的问题。

    • 方法: 在场景三维网格中采样并存储辐照度信息,动态物体运行时从三维纹理中查值获取间接光照,支持任意高度和位置。

  71. UE5 Documentation: Path Tracer online. Epic visited on 2022-11-18. Available from: https://docs.unrealengine.com/5.0/en-US/path-tracer-in-unreal-engine/.

    • 解决: 在UE5中需要离线参考级渲染质量用于对比和验证实时GI效果的问题。

    • 方法: 实现无偏路径追踪器(基于DXR),采用俄罗斯轮盘赌终止、重要性采样和多帧累积,在Editor内提供渐进式离线渲染。

  72. UE5 Documentation: Lumen Global Illumination and Reflections online. Epic visited on 2022-10-14. Available from: https://docs.unrealengine.com/5.1/en-US/lumen-global-illumination-and-reflections-in-unreal-engine/.

    • 解决: 在无硬件RTX支持的平台上,动态场景(物体移动/光源变化)无法实现实时全局光照和反射的问题。

    • 方法: 采用软件光线追踪(基于Signed Distance Field和Screen Space Trace)混合方案,用Radiance Cache缓存GI信息并逐帧更新。

  73. UE5 Documentation: Lumen Technical Details online. Epic visited on 2022-11-03. Available from: https://docs.unrealengine.com/5.0/en-US/lumen-technical-details-in-unreal-engine/.

    • 解决: Lumen的工程实现细节不透明,难以做深度定制和优化的问题。

    • 方法: 公开Lumen核心算法细节------如何将场景表示为SDF和Voxel的混合结构、如何做表面缓存(Surface Cache)的更新与查询、以及如何在GPU上高效调度光线遍历。

  74. KELLY, Daniel Wright; Krzysztof Narkowicz; Patrick. Lumen: Real-time Global Illumination in Unreal Engine 5 online. SIGGRAPH, 2022 visited on 2022-10-28. Available from: SIGGRAPH 2022 Advances in Real-Time Rendering in Games course.

    • 解决: 实时GI领域缺乏针对完全动态场景(无烘焙)的高质量、跨平台解决方案的问题。

    • 方法: 提出Lumen的两级辐射度缓存(Two-level Radiance Cache)------第一级对远距离光照做粗粒度追踪,第二级对近处细节做精细屏幕空间追踪,结合SDF Ray Marching实现无硬件加速的软件GI。

  75. STACHOWIAK, Tomasz. Stochastic Screen-Space Reflections online. Electronic Arts / Frostbite, 2015 visited on 2022-11-23. Available from: Stochastic Screen-Space Reflections - Frostbite.

    • 解决: 传统屏幕空间反射(SSR)在粗糙表面反射中因采样不足而产生明显条带噪声的问题。

    • 方法: 在反射射线追踪中引入随机采样方向抖动,结合时域滤波累积多帧样本,在同样计算预算下显著提高粗糙反射的视觉质量。

  76. Hierarchical-Z map based occlusion culling online. RasterGrid, 2010 visited on 2022-11-22. Available from: Hierarchical-Z map based occlusion culling -- RasterGrid | Software Consultancy.

    • 解决: 实时渲染中大量不可见物体仍被送入渲染管线造成GPU资源浪费的问题。

    • 方法: 构建层级深度缓冲(Hi-Z Map),快速剔除那些被已渲染物体完全遮挡的物体包围盒,降低Draw Call和像素着色开销。

  77. GARCIA, Maxime. An Introduction to Raymarching online. visited on 2022-11-24. Available from: An Introduction to Raymarching | Maxime Garcia.

    • 解决: 在无法获取场景三角形网格信息的情况下(如体积数据、程序化几何),如何进行光线-几何求交的问题。

    • 方法: 采用符号距离函数(SDF)表示场景,光线沿方向步进,每一步检查SDF值以快速推进或停止,最终收敛到表面交点。

  78. AREEJ. Unreal Engine 5 Lumen vs Ray Tracing: Which One is Better? online. 2022 visited on 2022-10-03. Available from: Unreal Engine Lumen vs. Ray Tracing Explained: Software and Hardware.

    • 解决: 开发者和用户在Lumen与硬件光追之间选择时缺乏客观对比依据的问题。

    • 方法: 从性能开销、视觉质量、场景适应性、硬件要求四个维度做横向对比测试,给出不同使用场景下的选择建议。

  79. UE5 Lumen Implementation Analysis online. visited on 2022-10-14. Available from: https://blog.en.uwa4d.com/2022/01/25/ue5-lumen-implementation-analysis/.

    • 解决: Lumen内部实现不透明,开发者难以理解其性能瓶颈和优化方向的问题。

    • 方法: 通过抓帧分析、GPU Profiling和代码逆向工程,逐帧拆解Lumen的完整渲染流程,标注每个阶段的GPU耗时和显存占用。

  80. UE5 Documentation: Nanite online. Epic visited on 2022-10-16. Available from: https://docs.unrealengine.com/5.0/en-US/nanite-virtualized-geometry-in-unreal-engine/.

    • 解决: 实时渲染无法直接加载和显示数十亿三角形的高精度电影级模型的问题。

    • 方法: 采用虚拟几何体技术,将模型内部表示为层级聚类树,根据屏幕像素尺寸动态决定每个区域的细节级别(Cluster-based LOD),实现无损LOD和流式加载。

  81. WRIGHT, Daniel. Radiance Caching for Real-Time Global Illumination online. SIGGRAPH, 2021 visited on 2022-11-02. Available from: https://advances.realtimerendering.com/s2021/index.html.

    • 解决: 在实时GI中,对每个像素单独计算入射辐射度成本过高的问题。

    • 方法: 稀疏采样法线贴图空间中的辐射度值并缓存在纹理中,相邻像素共享缓存结果,利用法线方向权重和时间滤波提高重建精度。

  82. BOISSE, Guillaume. GI-1.0: A Fast Scalable Two-Level Radiance Caching Scheme for Real-Time Global Illumination online. 2022 visited on 2022-11-14. Available from: https://gpuopen.com/download/publications/GPUOpen2022_GI1_0.pdf.

    • 解决: 传统单级辐射度缓存在大规模动态场景中无法平衡精度与性能的矛盾。

    • 方法: 提出两级缓存结构------第一级为屏幕空间缓存(高频信息),第二级为世界空间稀疏缓存(低频信息),通过混合查询策略在性能相近情况下获得更高精度。

相关推荐
郝学胜-神的一滴4 天前
中级OpenGL教程 026:Assimp库从编译到实战全攻略
c++·unity·游戏引擎·图形渲染·unreal engine·opengl
凯尔3155 天前
Unity简单涂料实现
unity·游戏引擎·图形渲染
small-pudding7 天前
Cocos Creator Shader 实现波浪进度条
图形渲染
郝学胜-神的一滴9 天前
[简化版 GAMES 104] 现代游戏引擎 02:拆解现代游戏引擎5+1层级架构,吃透引擎底层核心逻辑
c++·unity·架构·游戏引擎·图形渲染·unreal engine·系统设计
郝学胜-神的一滴15 天前
中级OpenGL教程 020:巧用数组与循环实现多点点光源渲染,告别冗余代码重构方案
c++·unity·游戏引擎·godot·图形渲染·unreal
图扑软件15 天前
其域创新 × 图扑软件|3DGS 高斯泼溅智慧钢厂实景孪生
前端·低代码·3d·编辑器·图形渲染·可视化
ysu_031418 天前
07 | 全局缩放重构实录
c语言·重构·游戏程序·图形渲染
郝学胜-神的一滴19 天前
[简化版 GAMES 101] 计算机图形学 17:纹理技术从基础原理到多场景实战应用
c++·unity·游戏引擎·图形渲染·three.js·opengl·unreal
csdndenglu22 天前
Easy3D:一个轻量级、易用、高效的C++库,用于处理和渲染3D数据,无复杂要求时可替代VTK
开发语言·c++·图形渲染·3d渲染