【Siggraph 2025】Raytracing the world of Assassin's Creed Shadows
来源:D:\迅雷下载\Graphics Materials\已摘录\【已摘录】Siggraph 2025 - Raytracing the world of Assassin’s Creed Shadows.pdf 提取时间:2026-05-15 16:39:37
Slide 1

📌 要点汇总
- (无内容):此幻灯片无演讲内容
Slide 2

📌 要点汇总
- 感谢贡献者:特别致谢威廉·布西埃尔、埃里克·查佩尼等核心成员及Snowdrop渲染团队的长期贡献。
- 团队职责:Anvil渲染团队负责照明与光线追踪技术,主导编程与技术决策。
- 课程信息:内容属于SIGGRAPH 2025“游戏实时渲染进展”课程,聚焦行业技术动态。
特别感谢所有现在和过去的贡献者: 威廉·布西埃尔, 埃里克·查佩尼, 尼古拉斯·洛佩兹, 罗伯特·福里尔 西尔万·格雷奇科, 丹尼尔·萨宾·德利恩, Snowdrop 的渲染领域团队 2 SIGGRAPH 2025 游戏实时渲染进展课程
我们是 Anvil 渲染团队的编程团队负责人和技术负责人 专注于照明和光线追踪主题。 在我们开始之前,我们今天的演讲之所以能够进行,是因为多年来 我们的团队和内部合作者的工作。因此,我首先要感谢他们 感谢他们对技术落地的参与和奉献。
Slide 3

📌 要点汇总
- (无内容):此幻灯片无演讲内容
Slide 4

📌 要点汇总
- (无内容):此幻灯片无演讲内容
Slide 5

📌 要点汇总
- (无内容):此幻灯片无演讲内容
Slide 6

📌 要点汇总
- 开放世界GI演进:全球照明系统从2014年起源逐步发展,适应更大规模需求。
- 稀疏体积技术:早期采用手动添加细节的稀疏体积以优化性能。
- **动态
开放世界辐照度体积大规模稀疏 GI 射线追踪漫反射和镜面统一,2014 年起源,2017 年阴影,2025 年
SIGGRAPH 2025 游戏实时渲染的进展课程 6
We have therefore seen an evolution of global illumination systems over the years, 适应日益扩大的规模。我们回归起源的第一步是使用稀疏 volumes with manually added details in necessary regions. For AC Shadows we have implemented fully dynamic ray-traced global illumination, 对于漫反射和镜面反射。
Slide 7

📌 要点汇总
- (无内容):此幻灯片无演讲内容
Slide 8

📌 要点汇总
- AC阴影技术:展示实时渲染中动态阴影生成与优化的最新算法应用
- (无内容):此幻灯片仅包含视频示例,未提供技术细节
SIGGRAPH 2025 游戏实时渲染的进展课程
● (AC 阴影视频)
Slide 9

📌 要点汇总
- (无内容):此幻灯片无演讲内容
Slide 10

📌 要点汇总
- (无内容):此幻灯片无演讲内容
Slide 11

📌 要点汇总
- (无内容):此幻灯片无演讲内容
Slide 12

📌 要点汇总
- 光栅化与gbuffer构建:从相机视角对场景进行光栅化处理,生成用于后续计算的gbuffer数据结构
- 直接照明计算:基于gbuffer信息完成场景中物体的直接光照效果渲染
- 间接光照处理:针对每个像素分别计算间接漫反射与
SIGGRAPH 2025 游戏实时渲染的进展课程 12
让我们从算法的直观总结开始。 首先,我们从相机的角度对场景进行光栅化,构建一个 gbuffer 并计算直接照明。 对于每个像素,我们要计算间接漫反射和镜面照明。
Slide 13

📌 要点汇总
- **像素处理与BR
SIGGRAPH 2025 游戏实时渲染的进展课程 13
为此,对于每个像素,我们随机选择一个方向,具体取决于 双向反射分布函数。我们进行两次遍历,一次用于漫反射波瓣,一次用于镜面波瓣。
Slide 14

SIGGRAPH 2025 游戏实时渲染的进展课程 14
然后我们在场景中选定的方向上投射光线。 在我们的系统中,出于多种原因,我们从屏幕空间光线行进开始。第一 在某些平台(控制台)上,raymarch 比 raytrace 更快。 另外,正如您稍后将看到的,我们的 RT (BVH) 世界表示非常 出于速度原因而粗略。并非所有物体都包含在其中,并且几何形状是 比光栅化版本更简单。 为了找回丢失的对象并避免自相交,我们使用了光线行进……。
Slide 15

SIGGRAPH 2025 游戏实时渲染的进展课程 15
如果未发现命中,我们会将光线投射到 BHV 场景描述中。
Slide 16

📌 要点汇总
- 直接照明计算:在二次命中阶段优先处理太阳与局部灯光的直接光照贡献
- 光源类型:区分太阳光与局部灯光在实时渲染中的不同光照模型应用
- 二次命中处理:通过摄像机二次命中机制实现动态光照的高效实时计算
SIGGRAPH 2025 游戏实时渲染的进展课程 16
在命中位置(来自摄像机的二次命中),我们首先计算直接 来自太阳和当地灯光的照明。
Slide 17

📌 要点汇总
- 间接照明计算:仅计算漫反射部分,提升渲染效率。
- 探头体积应用:利用相机周围探头体积优化间接光照计算。
- 漫反射优化:通过探头体积减少计算量,提高实时渲染性能。
SIGGRAPH 2025 游戏实时渲染的进展课程 17 号
然后,我们计算间接照明贡献,仅计算漫反射部分,其中 借助位于相机周围的探头体积。
Slide 18

📌 要点汇总
- 探针插值:选择8个最近探针插值计算间接漫反射照明
- 全像素处理:对所有像素执行计算后产生噪声需去噪
- 间接照明:去噪后获得最终的间接光照结果
SIGGRAPH 2025 游戏实时渲染的进展课程 18
选择 8 个最近的探头并进行插值以计算间接漫反射 命中位置的照明。 对所有像素执行此操作后,我们最终得到一个嘈杂的解决方案,我们将 去噪并获得我们的间接照明。
Slide 19

SIGGRAPH 2025 游戏实时渲染的进展课程 19
现在,为了计算二次命中的间接照明,我们使用了探针 volume that need to be built beforehand.
Slide 20

📌 要点汇总
- (无内容):此幻灯片无演讲内容
SIGGRAPH 2025 游戏实时渲染的进展课程 20
对于卷中包含的每个探针
Slide 21

SIGGRAPH 2025 游戏实时渲染的进展课程 21
我们将向各个方向投射光线,覆盖探测器的球体表面。
Slide 22

SIGGRAPH 2025 游戏实时渲染的进展课程 22
并再次计算来自所有光源的命中位置的直接照明。
Slide 23

📌 要点汇总
- 间接照明计算:利用当前探头体积与前一帧值对比,实现更精确的光照模拟。
- 探头体积应用:通过多次全球反弹提升探头体积内照明效果的真实感。
- 帧间照明比较:基于历史帧数据优化实时渲染中的间接光照计算效率。
SIGGRAPH 2025 游戏实时渲染的进展课程 23
间接照明也将使用当前探头体积来计算,但是 与前一帧的值。这将为我们带来多次全球反弹 探头体积中的照明。
Slide 24

SIGGRAPH 2025 游戏实时渲染的进展课程 24
这是点亮所有探头后的辐射结果。
Slide 25

📌 要点汇总
- 探针卷积:通过卷积生成过滤的辐射缓存,提升渲染正确性
- 降低噪音:优化后结果更稳定,减少视觉噪声干扰
- 后备探测器:在
SIGGRAPH 2025 游戏实时渲染的进展课程 25
所有探针将被卷积以创建过滤的辐射缓存,交易正确性 降低噪音并获得更稳定的结果。这些探测器将作为后备 当没有击中几何体时。
Slide 26

📌 要点汇总
- 探针卷积与BRDF:通过卷积探针与漫反射BRDF生成辐照度缓存,提升光照计算效率。
- 辐照度缓存应用:利用缓存数据快速计算空间中任意点的间接漫射照明,优化实时渲染效果。
- 实时渲染优化:该技术减少复杂场景下间接光照计算的实时性能开销,增强画面真实感。
SIGGRAPH 2025 游戏实时渲染的进展课程 26
我们还将所有探针与漫反射 BRDF 进行卷积,以产生辐照度漫反射 缓存。这用于计算空间中任意点的间接漫射照明。
Slide 27

📌 要点汇总
- (无内容):此幻灯片无演讲内容
现在我们已经了解了算法的概述,让我们看一下 光线追踪场景定义。
Slide 28

📌 要点汇总
- 低LOD光栅化:使用低细节层次的光栅化表示避免可见伪影
- 无顶点动画:缺乏蒙皮和移动植被支持,角色与动态植被缺失
- 几何剔除优化:移除小型几何体(如植被)提升性能
-
烘焙三角形数据:预存三角形信息加速命中处理,跳过顶点索引
SIGGRAPH 2025 游戏实时渲染的进展课程 28
如前所述,我们用于光线追踪的场景描述是粗略的 光栅化版本的表示。 我们尽可能使用低 LOD,而不会产生可见的伪影。 没有顶点动画支持,因此没有蒙皮(没有角色)或移动 植被。 我们尽可能多地剔除小型几何图形,例如小型植被和 混乱。为了加速获得命中结果,我们烘焙每个三角形数据,这样我们就不需要 首先获取顶点索引,然后获取每个顶点的顶点数据。 我们只需获取三角形数据并对其 Uv 进行插值。 ===== 我们进行一次 4x32 位读取来获取三角形数据,其中包含面法线和 uv 顶点(3x32 uv(16 位 u,16 位 v))。
Slide 29

SIGGRAPH 2025 游戏实时渲染的进展课程 29
对材料采用相同的理念,我们使用相反的统一描述 到我们的光栅化版本,其中每种材质都可以有自己的着色器。 这种统一的描述允许我们使用内联光线追踪,这通常更快 多个平台。对于每种材质,我们计算 PBR 常数。这就是这张幻灯片中所显示的内容。 ==== 访问材料信息: ● instanceDataID = ray.CommissedInstanceID + ray.CommissedGeometryIndex ● 材质ID = 实例数据[实例数据ID];
Slide 30

📌 要点汇总
- 反照率与alpha参数纹理支持:新增纹理参数以提升场景渲染质量
- SIGGRAPH 2025课程30:聚焦游戏实时渲染技术进展
- 场景质量优化:通过纹理参数改进实现更高质量的视觉效果
SIGGRAPH 2025 游戏实时渲染的进展课程 30
我们还添加了对反照率和 alpha 参数纹理的支持,以提高场景质量。
Slide 31

📌 要点汇总
- 材料烘烤简化:通过计算每个PBR参数纹理的平均值,简化复杂材质的烘烤流程。
- 三平面材质处理:复杂材质(如三平面)先烘焙至纹理图集,再以此为输入进行后续处理。
- 直接纹理应用:烘焙后的纹理可直接用于反照率(Albedo)和Alpha通道的生成。
SIGGRAPH 2025 游戏实时渲染的进展课程 31
材料的烘烤过程很简单。对于每个 PBR 参数的每个纹理,我们计算平均值。 对于复杂材质(例如三平面),我们首先将材质的结果烘焙到纹理图集中,然后使用这些纹理作为此过程的输入。 我们还直接将这些纹理用于反照率和 Alpha。
Slide 32

SIGGRAPH 2025 游戏实时渲染的进展课程 32
对于 alpha 测试材质,我们会考虑每个纹理的 alpha 计算常量参数时。但我们还计算不透明度值 对于使用它的每个网格。为此,我们将网格的每个三角形重新投影到 alpha 纹理并仅对所包含的纹理像素进行平均。该参数用于 光线追踪。 ========= 不透明度用于随机选择不透明命中或重新缩放 几何体来创建完全不透明的网格。
Slide 33

SIGGRAPH 2025 游戏实时渲染的进展课程 33
对于用于植被的材质,我们添加了对颜色 LUT 的支持。不同 颜色根据季节定义。 我们还支持具有两个通道的 alpha 纹理,一个有叶子,一个没有叶子 根据季节选择正确的频道。 ====== ● 我们有 8 个季节值(每个季节的开始和结束)
Slide 34

📌 要点汇总
- 动态对象处理:每帧更新BVH,支持动态对象但不支持顶点动画
- 地形优化:地形分补丁处理,独立纹理图集,相机角度剔除冗余实例
- 剔除加速:基于立体角阈值
SIGGRAPH 2025 游戏实时渲染的进展课程 34
每一帧,我们都会更新 BVH 表示。我们根据相机周围的流来添加和删除实例。 我们更新移动物体的变换矩阵。我们支持动态对象,但不支持顶点动画(如前所述)。 我们还更新了相机周围的地形。地形与几何体的其余部分不同。它被分成多个补丁并拥有自己的纹理图集。最后,我们从相机的角度剔除所有实例。我们从固定距离开始,并删除立体角小于阈值的实例。 由于我们有很多实例,我们对剔除进行时间切片以使其更快。完成整个场景只需要不到一秒钟的时间。 =============== 我们重建了异步队列中每一帧的 TLAS
Slide 35

更新 BVH 后我们要做的下一件事是更新探针体积数据。
Slide 36

📌 要点汇总
- 级联网格与探针配置:采用多级联3D均匀网格,包含超10k探针,每个探针含缓冲区数据及世界偏移量元数据
- 参数化尺寸与覆盖范围:支持级联/探针分辨率参数化,最大网格覆盖512米(32*16)
- 环形结构与固定寻址:
SIGGRAPH 2025 游戏实时渲染的进展课程 36
我们使用多个级联 3d 均匀网格的标准定义,如下 相机。在我们的例子中,包含超过 10k 个探针。 每个探针都有缓冲区数据,但也有一些元数据,例如世界偏移量 探针在其定义的区域内移动。 ========= ● 所有尺寸均可针对级联和探头分辨率进行参数化 ● 最大网格覆盖512米(32*16) ● 由于我们使用环形,每个探针在纹理图集中都有一个固定位置 寻址(索引 =(位置/探针大小)% numGridElements)
Slide 37

📌 要点汇总
- (无内容):此幻灯片无演讲内容
Slide 38

📌 要点汇总
- 探针更新优化:通过分类型更新(全面/四分之一分辨率/仅照明卷积)降低光线追踪成本
- 分辨率优化:四分之一分辨率
SIGGRAPH 2025 游戏实时渲染的进展课程 38
每帧更新所有探针的成本太高,我们使用不同的优化来 降低成本。 首先,我们将每帧仅更新所有探针的子集。我们也 支持三种类型的更新: -全面更新,包括gbuffer创建、光照计算、卷积和重定位, 全分辨率 -此外,完整更新,但分辨率为四分之一。这样,我们就降低了光线追踪成本 高达 40%。 - 仅照明和卷积,这将重用探针缓存的 gbuffer ======= ● 我们在某些特殊情况下支持完整更新,例如加载区域后或 传送到一个区域。 ● 重新调整未更新的探针的照明可减少看到的视觉伪影 当快速改变照明时,也减少了做一个完整的需要 更新。
Slide 39

第一步,我们选择新创建的探针。这些通常是探头 跟随相机移动的 3D 网格的边界。由于新增数量 根据相机的移动,探头可能会有很大变化, 我们将以四分之一分辨率计算这些探针,以减少和稳定 gbuffer 更新的成本。第二步,我们在每个级联中选择一定数量的探针, 大约 16% 的剩余预算采用循环法。这些探针是 将以全分辨率进行全面更新。最后,在第三步中,我们再次以循环方式选择每个级联中的探针 使用其余预算的方式。这些探测器将被重新点燃 仅卷积。当相机移动不太快时,这代表大约 80- 预算的84%。
============= ● 如果相机移动太多(太多探头无法使用),我们可以禁用级联
● 更新) ● 每个探头每秒更新约 3 次(照明),并具有完整的 每2秒更新一次 ● 对于循环更新,每个级联有两个索引(一个用于 gbuffer 更新,用于照明更新)保留最后更新的探针索引,以便 下一帧的选择可以从下一个探针开始。
Slide 40

📌 要点汇总
- 元数据更新:所有选定探测器首先更新元数据以进行后续处理。
- 室内外分类:探测器按室内/室外分类,地形下探针需调整位置或禁用。
- 地形下处理规则:位于地形下但处于内部体积的探测器(如地下室、洞穴)不被禁用。
SIGGRAPH 2025 游戏实时渲染的进展课程 40
对所有选定的探测器执行的第一步是更新其一些元数据。 我们将探头分类为室内或室外。对于以下探头 地形,那些位于下方的将被移至上方,其余的将被禁用。 ===== ● 在所有更新的探针上完成 ● 地形下但包含在内部体积内的探测器不会被禁用。 这些要么是地下室,要么是洞穴。
Slide 41

📌 要点汇总
- 探针更新方式:完整分辨率或四分之一分辨率更新探针,生成gbuffer
- gbuffer生成方法:追踪纹理像素中心光线,无抖动/时间累积,不适用于缓存
- 光线射程控制:级联大小决定光线最大距离,级联越大射程越长
- 背面三角形处理:记录背面击中次数,探针含过多背面时将被禁用
正常 Depth PackedMaterial(例如:Albedo)SIGGRAPH 2025 游戏实时渲染进展课程 41
然后,对于选择进行完整更新的探针,无论是完整分辨率还是四分之一分辨率,我们将 通过追踪纹理像素中心的光线来生成 gbuffer。没有 抖动或时间累积,这不适用于 gbuffer 缓存。光线的最大距离取决于它们的大小 级联。级联越大,射程越长。在这个阶段,我们 记录击中背面三角形的次数。如果我们无法重新安置 如果需要探针并且它包含太多背面,我们将禁用探针。
Slide 42

SIGGRAPH 2025 游戏实时渲染的进展课程 42
当我们更新 gbuffer 时,我们将计算太阳阴影。它不是 完全精确,因为我们可以在更新 gbuffer 之前进行多次光照更新 在此期间太阳位置可能会移动。 通过我们的探针选择算法,探针大约每 2 次完全更新 秒,近似值足够好,因为通常太阳不会移动 在那个时期就这么多。 对于阴影计算,我们首先尝试使用位于 相机,如果击中位置在外面,如果脸部是在外面,我们将投射阴影光线 朝向太阳。我们将把结果与云阴影结合起来。
Slide 43

📌 要点汇总
- 动态光照优化:通过更新探针照明比例而非全量纹理,实现太阳光照快速变化的高效处理
- 探针照明比例更新:仅调整探针光照比例,避免全量纹理更新以提升性能和精度
- 元数据驱动估计:利用天空能见度、平均阳光等探针元数据计算新照
SIGGRAPH 2025 游戏实时渲染的进展课程 43
支持太阳光照快速变化的情况。第一步 照明计算是重新调整所有探头的辐射亮度和辐照度 尚未被选中。这是通过估计新的平均照度来完成的 探测器观察新的太阳位置和天空强度并进行比较 与之前的估计相比。仅更新探头的照明比例,不更新 缓存的所有纹理元素,因为我们以每个探针自己的光照比例对其进行编码。 这样做是为了优化,也是为了提高精度。
==== 该估计的计算使用探针的元数据信息,例如 天空能见度、平均阳光和天空照明以及平均局部照明。
Slide 44

📌 要点汇总
- 分两遍计算照明:分别处理已命中几何体纹素与未命中部分,优化计算流程。
- gbuffer缓存未命中探头:利用缓存跟踪未命中区域,减少重复计算开销。
- 命中距离分类优化:通过编码MISS_DISTANCE区分命中/未命中,降低20%照明成本。
SIGGRAPH 2025 游戏实时渲染的进展课程 44
在这一步之后,我们将计算所有选定探头的照明, 我们刚刚使用缓存的 gbuffer 跟踪了那些我们没有跟踪的。 我们将计算分为两遍,一次用于已命中几何体的纹素,并且 一份送给小姐的。考虑到以下因素,这样做可将照明成本降低 20%: 分类通过。 ========= ● 查看命中距离来确定命中/未命中。 Miss 被编码为特殊的 距离值(MISS_DISTANCE)
Slide 45

📌 要点汇总
- 直接与间接照明计算:第一遍处理中同时计算所有
SIGGRAPH 2025 游戏实时渲染的进展课程 45
在第一遍中,我们计算所有灯光的直接照明以及间接照明 使用先前的探头体积辐照度缓存进行漫射照明 框架。
Slide 46

📌 要点汇总
- 探头辐射缓存:光线结束位置在探头内时,使用探头辐射缓存体积进行渲染优化。
- 天空近似处理:光线位于探测体积外时,采用每帧更新的8x8天空近似纹理。
- 实时纹理更新:天空近似通过小尺寸8x8纹理实现高效实时渲染与性能平衡。
SIGGRAPH 2025 游戏实时渲染的进展课程 46
在第二遍中,对于未触及任何几何体的纹素,我们首先要 如果光线结束位置包含在探头中,则尝试使用探头辐射缓存 体积。 否则,如果位置落在探测体积之外,则会出现天空近似 使用过。 ===================== 天空近似是每帧更新一个小的 8x8 纹理。
Slide 47

SIGGRAPH 2025 游戏实时渲染的进展课程 47
最后,两个输出将保留在缓冲区中。总的光辉,也 局部光亮度。这将用于帮助重新缩放探针照明。
Slide 48

深度 能见度
SIGGRAPH 2025 游戏实时渲染的进展课程 48
下一步是对所有选定的探针进行卷积。我们首先计算方差 来自深度缓冲区的阴影贴图。这将用于计算探针的重量 进行插值时。一个有趣的点是我们需要重新缩放和钳制 值在 [0, 1] 之间,因为我们用 8 位对其进行编码。但我们之前这样做过 计算平均值和平均值^2 值。这在某些情况下有助于减少泄漏 (内角)。 ========= ● 写入输出时,边界上的纹素会被复制。为打造一个安全 插值的边界。 5x5 探头变成 7x7。请参阅额外幻灯片 代码。
Slide 49

📌 要点汇总
- 辐射卷积处理:通过卷积生成过滤辐射和辐照度探针,计算天空能见度、灯光亮度等元数据
- 辐射率缩放技术:动态调整辐射率以维持不同场景(室内外、昼夜)的光照精度
- 曝光度范围:支持从-16到+16的极端曝光值,适应多变的光照环境
光辉 辐照度 SIGGRAPH 2025 游戏实时渲染进展课程 49
我们还对辐射结果进行卷积以产生过滤辐射和 辐照度探头。在此过程中,我们计算多个元数据,例如 天空能见度、平均局部灯光亮度、以及 将用作照明比例因子。 ============= ● 缩放辐射率有助于在任何地方(阳光下、黑暗的洞穴或室外)保持精度 室内)和任何时间(白天和晚上)。从一个极端到另一个极端 曝光度可以从-16 到+16 左右。
Slide 50

光辉 辐照度 SIGGRAPH 2025 游戏实时渲染进展课程 50
To optimize the compute shader used for doing the convolution, where each thread computes the full convolution of the input probe for an output texel, we first load the 将辐射数据输入 LDS。 While doing so, we use bilinear filtering to reduce by 4 要读取和卷积的样本数量。这使我们的速度提高了 4 倍 exchange of a small decrease in quality, since we are not using the correct weight 对于纹素。 ========= ● 在计算着色器中,每个线程组都在不同的探针上工作 同时进行辐射度和辐照度卷积。每个线程 正在为辐射度或辐照度探头输出一个像素。 ● 线程组的每个线程首先参与将辐射度加载到 LDS(本地数据存储)。这是通过 64 个纹素批量完成的。然后每个 线程将 LDS 中包含的 64 个纹素与其各自的卷积 BRDF(他们的方向)。一直这样下去,直到输入探针的所有纹素都为 已处理。 ● 在 AC Shadows 中,我们使用 10x10 辐射度缓存和 5x5 辐射度缓存。 这为每个探测器提供了 100+25=125 个线程。我们将其舍入到下一个 64 的倍数即 128。 ● 对于辐射过滤,我们使用钳位余弦:pow(saturate((cos-0.75)/(1- 0.75)), 4)
Slide 51

📌 要点汇总
- 探针移动优化:通过调整探针位置以优化辐射度表示,提升渲染效果。
- 背面三角形判定:背面三角形命中数超过阈值时,判定探针位于几何体内部。
- 深度驱动位移:基于gbuffer深度范围(
SIGGRAPH 2025 游戏实时渲染的进展课程 51
探针体积更新的最后一步是移动内部的探针 几何形状(主要看到背面)或太接近的几何形状以获得更好的效果 辐射度表示。如果我们无法移动探头,它将被禁用 几何学之外。 =============== ● 如果背面三角形命中的数量为,则将探针视为在几何体内部 高于阈值。 ● 为了找到更好的位置,需要查看整个探针 gbuffer 深度。如果 最小深度太小,探头沿方向移动 最大深度。
Slide 52

📌 要点汇总
- 探测卷缓存:已计算并更新,为后续步骤提供基础数据
- 每像素间接照明:通过探测卷缓存实现精确的光照计算
- 漫反射间接照明:优先分析,作为间接照明计算的初始阶段
现在我们已经计算并更新了探测卷缓存,我们可以计算 我们的每像素间接照明。我们首先看一下漫反射间接照明 通过。
Slide 53

📌 要点汇总
- 分辨率选择:四分之一分辨率投射光线成本更低,全分辨率质量提升不显著
- 射线参数:方向随机选择(余弦分布/最大值),距离与相机位置正相关
- 命中处理:屏幕空间行进检测几何
SIGGRAPH 2025 游戏实时渲染的进展课程 53
对于漫射波瓣,我们将以四分之一分辨率为每个像素投射一条光线。 我们也支持全分辨率,但质量的提高不足以证明其合理性 成本相差 4 倍。射线方向是从余弦分布和最大值中随机选择的 距离取决于射线原点位置。位置距离越远 相机,光线投射的距离越远。我们首先在屏幕空间中进行光线行进,如果它遇到有效的几何体,我们将添加 像素到命中列表,我们保留命中位置。这些是绿色像素 屏幕。如果我们行驶了最大距离而没有撞到任何东西,那么我们添加 像素到未命中列表。这些是蓝色像素。在所有其他情况下,我们将 将射线投射到 BVH 中。在此图像中,它代表 49% 的像素。 ========= • 需要投放到 BVH 的案例有: • 光线在到达最大距离之前落到屏幕之外。 • 射线击中屏幕上的几何体,但射线位置太落后 深度缓冲区值。在这种情况下,我们回溯到最后一个可见的 在投射到 BVH 之前在屏幕上的位置。 • 材质是半透明的,我们将光线投射到屏幕后面 几何学 ● 13% 跳过(87% 屏幕 RT)、38% 仅屏幕 RT、49% 全球 RT
Slide 54

📌 要点汇总
- BVH光线起始位置:使用BVH最后一个有效位置作为
SIGGRAPH 2025 游戏实时渲染的进展课程 54
对于需要投射到 BVH 中的光线,我们使用 BVH 的最后一个有效位置 raymarching 作为起始位置。 在命中几何体时,我们将其添加到命中列表中。同样,这些是绿色像素 屏幕。我们构建一个包含照明所需信息的 gbuffer: 材料描述和命中位置。同样,如果我们没有击中任何几何体,我们就会将该像素添加到未命中列表中。的 蓝色像素。
=========== 我们还使用最小起始距离来减少自交叉情况。我们用 t = 0.05米。我们只保留命中距离而不保留命中位置,因为我们可以通过以下方式重新生成它 使用相同的种子生成相同的光线方向。
Slide 55

📌 要点汇总
- 直接照明计算:使用级联阴影贴图(CSM)和辅助阴影贴图处理太阳阴影,超出范围则默认全阴影
- 间接照明方法:通过辐照度探
SIGGRAPH 2025 游戏实时渲染的进展课程 55
光线投射完成后,我们可以从间接 gbuffer 中计算照明。 与探测体积相同,我们分两次进行。我们从命中案例开始 我们计算所有灯光的直接照明。与上图略有不同的地方 探针是我们处理太阳阴影的方式。 我们首先查看级联阴影贴图是否有效。如果没有,我们看看是否 可以使用辅助阴影贴图。而如果命中位置超出其范围, 那么我们假设结果完全处于阴影中。 我们还通过使用辐照度探头体积来计算间接照明。 ======== ● CSM 仅对屏幕上可见的命中位置有效。对于点击 包含在视锥体中但隐藏在屏幕上,阴影值可能是错误的 因为 CSM 针对速度进行了优化并且不包含所有遮挡物。 ● 当在阴影贴图外部时,全阴影比全光泄漏更好
Slide 56

📌 要点汇总
- 未命中像素光照计算:对未命中几何体的像素执行光照处理,确保场景完整性。
- 过滤辐射缓存应用:优先使用过滤后的辐射缓存进行光照计算,提升效率。
- 天空纹理近似处理:当射线末端超出体积定义范围时,退化
SIGGRAPH 2025 游戏实时渲染的进展课程 56
然后,我们对未命中任何几何体的像素进行光照计算。 正如我们对探针所做的那样,我们首先尝试使用过滤后的辐射缓存,如果 射线位置的末端包含在体积定义内。如果没有,我们就后退 到天空近似纹理。所显示的图像是框架的最终照明。
Slide 57

SIGGRAPH 2025 游戏实时渲染的进展课程 57
与探头体积相反,我们不会仅输出辐射率。我们是 将其编码为球谐函数。这样,我们将重建 去噪期间每个像素的全球面辐射率。我们还输出命中距离,该距离也将被去噪以产生 RTAO。 ===== • 亮度将根据最后一帧曝光进行缩放,以增加亮度 精度。 • 阶数 0 是常数 1 通道,阶数 1 是线性 3 通道,总共 6 个 YCoCg 中编码的通道。这 6 个通道除以最大值 幅度并以 8 位编码。最大幅度保存在 16 位中 总共给我们 64 位编码。
Slide 58

SIGGRAPH 2025 游戏实时渲染的进展课程 58
照明完成后,我们需要运行降噪器来重建完整的间接 照明。我不会在这里详细讨论,因为这可能是一个单独的谈话。我们使用基于 Nvidia 的 Snowdrop 引擎降噪器的修改版本 降噪器。稍后我们将讨论其中一些修改。该降噪器分为多个通道进行空间和时间滤波
Slide 59

SIGGRAPH 2025 游戏实时渲染的进展课程 59
最后,我们将四分之一分辨率结果升级为全分辨率。 我们升级球谐函数,以全分辨率评估每个像素 高分辨率正常。我们使用的是标准的双边高档。 ===== ● float4 denoisingDepth = GatherDepth(uv); ● float4 深度权重 = 1.f / (0.1 + abs(去噪深度 - fullResDepth)); ● 权重 *= 深度权重 * 深度权重;
Slide 60

SIGGRAPH 2025 游戏实时渲染的进展课程 SIGGRAPH 2025 游戏实时渲染的进展课程 60
我将向您展示使用 SH 时我们获得的详细程度。 首先,这是输入辐射亮度。
Slide 61

📌 要点汇总
- (无内容):此幻灯片无演讲内容
SIGGRAPH 2025 游戏实时渲染的进展课程 SIGGRAPH 2025 游戏实时渲染的进展课程 61
这是过滤后的辐照度结果。
Slide 62

SIGGRAPH 2025 游戏实时渲染进展课程 SIGGRAPH 2025 游戏实时渲染进展课程 62
现在,通过 SH,我们拥有更多细节和更好的照明方向性
Slide 63

📌 要点汇总
- (无内容):此幻灯片无演讲内容
现在,让我们看看间接镜面照明。
Slide 64

SIGGRAPH 2025 游戏实时渲染的进展课程 64
首先简单介绍一下发展背景。该功能最初计划用于 在 AC Shadows 发布后添加,但随着延迟的宣布, 决定在发布前添加它。总共分配了3个月的时间 完整的开发,我们的第一次迭代在三周后完成。 因此,重点更多地是让它发挥作用并看起来不错,而不是完全 优化它(由于时间限制)。此外,数据方面的任何修改都不能 完成后,我们必须在不做任何改变的情况下使其正常工作。该算法与漫反射通道非常相似,但增加了针对 镜面波瓣和改变以提高视觉质量,主要是由于 对不起作用的扩散计算进行了简化和优化 非常适合高反射表面。
Slide 65

📌 要点汇总
- 半分辨率选择:采用半分辨率实现质量与性能平衡,优化光线投射与照明效率。
- 重要性采样优化:基于GGX可见光生成
SIGGRAPH 2025 游戏实时渲染的进展课程 65
每像素通道支持四分之一、一半和全分辨率。我们最终发货 使用半分辨率,具有更好的质量性能比。 首先,通过在 GGX 可见光上使用重要性采样来生成光线方向 正态分布函数。然后,根据光线长度进行调整 表面粗糙度。表面越像镜子,我们需要投射的距离就越远 射线。我们通过尽可能不投射和照明光线来优化此通道。我们已经 计算了在 SH 期间编码的每像素球面辐射率近似值 漫射通道。我们在可能的情况下通过直接评估 SH 来重用它 生成的射线方向。 我们针对高粗糙度表面和远离镜面镜面的光线执行此操作 方向,因为他们的贡献将会很低。这个优化给了我们 铸造和照明方面减少 20%-30%。 =================================== 半分辨率是宽度的一半和高度的全。 我们不对水面进行漫反射评估,但我们对镜面反射和适应进行评估 粗糙度和法线以减少锯齿(考虑世界空间 像素的投影大小(x 和 y 中的 z +1) Raymarching:线性步长+二分搜索+割线
Slide 66

SIGGRAPH 2025 游戏实时渲染的进展课程 66
我们用于 alpha 测试植被的不透明近似非常适合 计算漫射照明,但在用于计算强照明时非常明显 正如您在此图中看到的反射表面。 ============= 关于这种不透明近似的一些细节将在另一节中给出。
Slide 67

SIGGRAPH 2025 游戏实时渲染的进展课程 67
我们必须切换到 alpha 测试纹理的评估,任何命中限制为 4 着色器调用。 =========================== 由于漫反射和镜面反射追踪共享相同的 BVH 和不透明 近似生成不同的几何形状,我们必须切换到不同的 启用镜面反射评估时的漫反射光线投射的近似值。
Slide 68

SIGGRAPH 2025 游戏实时渲染的进展课程 68
我们还看到高反射表面的 BVH 材料近似,但它是 在高粗糙度或计算漫射照明时不可见。
Slide 69

📌 要点汇总
- gbuffer材质优化:通过重新投影击中点,从gbuffer提取更精确的材质定义以提升渲染质量
- 投影差异控制:跨平台材质映射需保持一致性,避免因差异过大导致视觉突兀
- 高端阴影光线:在高性能设备中采用阴影光线投射技术增强阴影细节表现
SIGGRAPH 2025 游戏实时渲染的进展课程 69
为了提高质量,我们总是在屏幕上重新投影击中点,看看是否可以 从 gbuffer 中获得更好的材质定义。 ========================= 但不能相差太大,否则差异太引人注目 当从一个到另一个时。 如有必要,我们还会在高端平台上投射阴影光线。
Slide 70

📌 要点汇总
- 着色质量提升:通过完整评估添加镜面反射,优化材质表现以减少视觉差异。
- 太阳阴影应用:利用高端PC平台的太阳阴影光线计算,增强影子评估精度。
- 避免重投影照明:仅调整
SIGGRAPH 2025 游戏实时渲染的进展课程 70
在着色方面,我们通过进行完整的评估来提高质量, 添加镜面反射部分。我们还使用了太阳阴影光线的结果 高端PC平台上的影子评估。 ======================= ● 我们不会重新投影照明(仅是材质)来减少差异 是否击屏。重用最后一帧结果时,镜面反射也不正确 (在某些情况下差异很大)。
Slide 71

SIGGRAPH 2025 游戏实时渲染的进展课程 71
照明评估成本的大约一半是探针插值。它需要 获取、计算权重并插入 8 个探针。可以做的优化 如果重量很大,则仅在请求的位置使用最近的探头。 否则,我们将回退到标准插值。这样做,多于一半 插值时间没有任何视觉差异。在视觉方面,在水等高反射表面上,我们可以看到 更容易限制我们的一些近似值。我们可以看到远方的思念 我们的 BVH 中未包含几何形状。 为了找回一些丢失的数据,我们替换了天空纹理 通过包含地形、天空、云的动态回退立方体贴图进行近似 和远实体。 ======================= 该立方体贴图的尺寸为 128x128,每帧更新一个面。
Slide 72

SIGGRAPH 2025 游戏实时渲染的进展课程 72
我们可以在这里看到结果,山和树在倒影中。 此外,还调整了屏幕空间追踪,以获取更远的物体,而不是包含在 BVH。 =================== ● 使用重投影: float3 warpedDirection = 标准化((rayOrigin + rayDirection * fakeHitDistance) - 立方体贴图位置); ● 对于镜面反射,减少屏幕空间追踪的长度以减少 可见的文物。 (这减少了步长)。但在水面上对于射线来说, 从 BVH 定义末尾附近开始,光线行进限制的长度 增加以获得更远的几何形状。
Slide 73

SIGGRAPH 2025 游戏实时渲染的进展课程 73
当进行间接漫反射计算时,雾计算会被跳过 优化。我们将其添加回镜面反射通道,但只是一个简化版本。 这是左边不带和右边带的不同。地平线很大 考虑到雾,更平滑。
Slide 74

📌 要点汇总
- 输出辐射噪声问题:输出辐射噪声更大且难以过滤,需特殊处理。
- BRDF解调技术:采用BRDF解调(如Nvidia NRD)过滤辐射率,避免直接计算表面BRDF。
- 分裂求和近似:去噪后通过分裂求和近似将辐射率与BRDF相加,
SIGGRAPH 2025 游戏实时渲染的进展课程 74
与输出辐射相比,输出辐射的噪声更大且难以过滤 漫射通道。我们采用了不同的技术来减少这种情况。第一个 我们所做的就是使用 BRDF 解调,如 Nvidia NRD 中所述 文档。 为此,我们可以在不计算表面 BRDF 的情况下过滤辐射率 并在去噪后相加(分裂求和近似)。这就是我们通常做的 使用 SSR 和本地立方体贴图时。 我们可以在该图像中看到结果,并注意到掠射角存在一些错误,其中 灯光太亮。
Slide 75

SIGGRAPH 2025 游戏实时渲染的进展课程 75
更好的方法是在计算 BRDF(及其 PDF)的同时计算完整的 BRDF(及其 PDF)。 辐射率,但还要将结果除以之前的预积分 BRDF 去噪。然后乘以预积分的 BRDF。这就是什么 如图所示,我们可以看到我们有更好的结果,因为 BRDF 是 正确应用。 =========== ● 解调:参见nvidia nrd:https://github.com/NVIDIA- RTX/NRD/blob/master/README.md ● 如果您正确应用 brdf/pdf,它会变得更加嘈杂,因此解调会减少 BRDF 评估中的噪声
Slide 76

y = x0.625 y = x/(1+x) SIGGRAPH 2025 游戏实时渲染进展课程 76
We also compressed the space in which we do the denoising.这不是身体上的 based but some cases, mainly interior scenes reflecting bright exterior, can be 真的很吵。我们使用幂函数来做到这一点。 ========= ● 压缩辐射度 = 辐射度 * pow(maxRadiance, exp - 1.0); // 指数 = 0.625 ● 逆=comradiance * pow(maxCompRadiance, 1.0/exp – 1.0); ● 经常使用的是 Reinhard 函数 x/(x+1),但高压缩率的压缩 值减少了太多的反射。
Slide 77

SIGGRAPH 2025 游戏实时渲染的进展课程 77
最后,我们专门使用了降噪器来更好地处理镜面反射 BRDF 并添加萤火虫 在空间滤波过程之一期间去除。
Slide 78

SIGGRAPH 2025 游戏实时渲染的进展课程 78
这是去除萤火虫的结果。 =================== 对于萤火虫去除,如果像素的亮度值太高,我们会限制该像素的亮度 与邻居平均强度相比。
Slide 79

📌 要点汇总
- (无内容):此幻灯片无演讲内容
因此,继续应对生产中的挑战。
Slide 80

📌 要点汇总
- Alpha测试成本高:加载和测试alpha纹理导致材料成本高昂,影响实时渲染效率
- 光线跟踪时间差异:叶子聚集成簇使每条光线的跟踪计算时间不一致
SIGGRAPH 2025 游戏实时渲染的进展课程 80
已知经过 Alpha 测试的材料成本高昂,因为需要加载和测试 遍历 BVH 时的 alpha 纹理。这也是一个问题,因为很多 叶子聚集成簇,导致每条光线的时间不同 跟踪计算组。我们在下一张幻灯片中的参考成本就是这个结果,不限制任意命中 调用并获取每个纹理,直到找到命中或丢失叶子。 众所周知,在茂密的森林中实时计算成本太高。
Slide 81

📌 要点汇总
- 限制命中调用:减少计算差异但增加遮挡偏差,需权衡取舍
- 首次实施方法:优先采用因实现简单,但存在偏差风险
- 性能优化矛盾:降低计算差异与遮挡偏差的平衡是关键挑战
*相对于 Nvidia GPU SIGGRAPH 2025 Advances in Real-Time Rendering in Games 课程的参考 81
限制任意命中调用的数量可以帮助我们减少计算差异 组,但通过增加遮挡增加了偏差。这当然是第一个 实施,因为它很容易实施。
Slide 82

📌 要点汇总
- (无内容):此幻灯片无演讲内容
Slide 83

📌 要点汇总
- 噪声抖动alpha测试:通过噪声抖动alpha测试以优化渲染性能
- 预先计算不透明度:利用预先计算的平均不透明度替代BLAS纹理访问
- 性能无提升:该方案未带来性能收益,部分场景成本更高
- 光线追踪引擎限制:方案依赖光线追踪引擎特性,未适配BLAS优化路径
*相对于 Nvidia GPU SIGGRAPH 2025 Advances in Real-Time Rendering in Games 课程的参考 83
我们测试的另一个解决方案是通过噪声来抖动 alpha 测试。你这样做 通过使用预先计算的平均不透明度,可用于光线追踪引擎 不从 BLAS 访问纹理。这并没有带来任何性能 为我们带来收益,甚至有时比真正的测试成本更高。
Slide 84

📌 要点汇总
- 限制命中调用:通过减少任意命中调用次数优化性能,但
*相对于 Nvidia GPU SIGGRAPH 2025 Advances in Real-Time Rendering in Games 课程的参考 84
这可以通过再次限制任意命中调用的数量来改进,从而帮助 性能但增加遮挡。
Slide 85

*相对于 Nvidia GPU SIGGRAPH 2025 Advances in Real-Time Rendering in Games 课程的参考 85
最后使用的解决方案是不透明的近似。我们缩放了三角形 根据平均不透明度并强制它们不透明,给我们留下更好的效果 跟踪的性能并且接近我们的参考结果。我们没有分析 引入的偏差,但发现我们的结果非常接近 alpha 测试 参考,成本几乎一半。
Slide 86

SIGGRAPH 2025 游戏实时渲染的进展课程 86
这是与我们的参考结果进行比较。
Slide 87

SIGGRAPH 2025 游戏实时渲染的进展课程 87
这是使用 alpha 测试纹理,将任何命中着色器的调用限制为 2 次。
Slide 88

SIGGRAPH 2025 游戏实时渲染的进展课程 88
最后,这是我们完全不透明的近似。
Slide 89

继续,AC Shadows 包含大量半透明材质。要么通过 门窗板由纸或树叶和绿色植物制成。
Slide 90

📌 要点汇总
- 半透明渲染步骤:为支持半透明材质添加了关键渲染流程,但图像整体偏暗。
- 直接照明限制:小开口区域二次命中计算受限,导致直接照明效果不完整。
- **间接
SIGGRAPH 2025 游戏实时渲染的进展课程 90
在这里,我将介绍我们为支持半透明而添加的每个步骤。尽你所能 可能看到,或者没有看到,这个图像非常暗。小开口限制数量 二次命中寻找直接照明。我们缺少大部分间接照明 窗户和门。
Slide 91

📌 要点汇总
- 背面法线支持:通过接受背面法线优化二次命中直接照明,但仅限薄半透明材质。
- 法线向量倒数:背面法线为法线向量的倒数,以适应薄半透明材质的光照计算。
- 参数影响照明:半透明度因子与反照率直接决定二次命中照明的贡献强度。
SIGGRAPH 2025 游戏实时渲染的进展课程 91
为了改善二次命中的直接照明,我们让它接受背面 法线。值得注意的是,我们这里只支持薄半透明,所以背面 法线是法线向量的倒数。半透明度因子和反照率也会影响 那个照明贡献。
Slide 92

📌 要点汇总
- 二次命中处理:通过计算面辐照度实现间接照明,提升渲染精度
- 法线权重计算:基于法线方向分配权重,优化探针影响范围
- 探针分割技术:将八探针独立处理,分别评估后合并结果
- 辐照度合成方法:分面计算后叠加,增强全局光照效果
- 实时渲染优化:通过分步计算降低复杂度,提升性能表现
SIGGRAPH 2025 游戏实时渲染的进展课程 92
对于二次命中的间接照明,我们通过以下方式评估每个面的辐照度 根据法线计算权重,将我们的八个探针分开 面并分别评估辐照度,然后将它们加在一起。
Slide 93

SIGGRAPH 2025 游戏实时渲染的进展课程 93
当我们的主光线位于半透明表面上时。我们追踪二次光线 随机选择一侧,概率调整为半透明。如果 选择背面后,我们完全跳过屏幕空间跟踪。 我们根据新的 pdf 重新平衡结果,其中必须包含 背面光线的材质参数。 最后,我们总是对正面光线方向进行编码,因此如果光线是正面的,则翻转光线 被抛到表面后面。 ● 背面概率 = t / (1+t) ● Trans = t*albedo(对于标准材质)和更复杂的树叶 ● (反式/反照率)/概率或 1/(1-概率)
Slide 94

📌 要点汇总
- (无内容):此幻灯片无演讲内容
Slide 95

实时 GI 解决方案中的漏光是一个众所周知的问题。在这里我们分为两个主要部分 泄漏源、直接和间接照明。
Slide 96

📌 要点汇总
- 直接照明:主要问题在于阴影信息缺失,导致光照计算不准确
- 阴影信息缺失:影响直接照明效果,引发光照泄漏问题
- CSM范围泄漏:阴影贴图(CSM)范围内仍存在光照泄漏现象
SIGGRAPH 2025 游戏实时渲染的进展课程 96
对于直接照明,主要问题是缺少阴影信息。一些泄漏 即使在 CSM 范围内也会发生。
Slide 97

📌 要点汇总
- 课程主题:SIGGRAPH 2025 游戏实时渲染技术进展
SIGGRAPH 2025 游戏实时渲染的进展课程 97
我们的辅助阴影贴图有助于弥补 CSM 中缺失的信息。
Slide 98

SIGGRAPH 2025 游戏实时渲染的进展课程 98
当我们对其进行时间切片时,我们每 16 帧更新一次辅助阴影贴图 更新。
Slide 99

📌 要点汇总
- 探针照明偏置:在探针照明中添加额外偏置以优化渲染效果
- 过滤偏差一致性:使用与延迟光照中CSM相同的过滤偏差方法
- 积极过滤策略:通过更积极的过滤减少光照泄漏问题
SIGGRAPH 2025 游戏实时渲染的进展课程 99
我们还在探针照明过程中添加额外的偏置。这里的过滤偏差是 与我们在延迟光照中使用的 CSM 相同 =============== 我们对探测计算使用更积极的过滤,以减少更多 泄漏。
Slide 100

📌 要点汇总
- 阴影贴图精度不足:部分区域超出阴影贴图范围,导致反射效果异常
- 漫反射异常区域:阴影贴图在漫反射表现中存在未被覆盖的误差区域
- 反射错误成因:超出阴影贴图的区域引发不准确的光照反射计算
SIGGRAPH 2025 游戏实时渲染的进展课程 100
在漫反射中不太明显,但有些区域超出了我们的阴影贴图, 从而导致错误的反映。
Slide 101

📌 要点汇总
- 镜面反射阴影优化:在辅助阴影贴图之外添加阴影光线投射以提升效果
- 跨平台性能成本:PC额外耗时0.1毫秒,PS
SIGGRAPH 2025 游戏实时渲染的进展课程 101
在高端平台上,对于镜面反射,我们在以下情况下添加阴影光线投射: 落在辅助阴影贴图之外。 ===================== ● 阴影光线投射的附加成本在 PC 上为 0.1 毫秒,在 PS5 Pro 上为 0.3-0.4 毫秒
Slide 102

📌 要点汇总
- 未修复人工制品:系统错误纳入不应存在的光,导致渲染瑕疵
- 探针评估问题:计算间接照明时使用八探针,可能引入外部光源干扰
- 二次撞击影响:内部/外部墙壁分隔导致探测器误采样外部照明数据
SIGGRAPH 2025 游戏实时渲染的进展课程 102
我们尚未完全修复的最大人工制品是不应该出现的光 被纳入系统中。 当通过探针评估计算辅助命中位置上的间接照明时, 我们评估所有八个周围探头。 由于二次撞击分隔内部和外部的墙壁,一些探测器会带来 在外部照明中。
Slide 103

SIGGRAPH 2025 游戏实时渲染的进展课程 103
为了帮助探针选择和加权,我们偏移了采样位置。 我们使用的最后一个偏移量是由 DDGI 重采样论文引入的,它移动了 沿射线向后定位。我们将最终偏移量限制为跟踪的一半 我们这边的距离。反向光线方向最常见的问题是 许多光线几乎与墙壁平行,因此不会远离我们 采样位置足够。
Slide 104

📌 要点汇总
- 包裹阴影:使用包裹阴影替代点积计算
SIGGRAPH 2025 游戏实时渲染的进展课程 104
通过偏移位置,我们可以计算每个探头的重量。 首先,我们评估方向权重。使用纯点积可能会排除所有 探头,所以我们使用包裹阴影。 [斯隆等人。 11]“包裹阴影” 为了获得可见性,我们评估了探针 VSM。 然后我们压碎小于0.2的权重 最后乘以三线性权重
Slide 105

SIGGRAPH 2025 游戏实时渲染的进展课程 105
尽管如此,这些重量还不足以完全消除室内的室外照明 因为光照系数差异太大。
Slide 106

SIGGRAPH 2025 游戏实时渲染的进展课程 106
我们重用我们烘焙的 GI 解决方案中的飞机列表。
Slide 107

📌 要点汇总
- GI Blocker网格作用:消除光线照射以减少黑暗泄漏,但可能引入错误遮挡,专用于洞穴场景
- 探针分类机制:探针分为内部/外部类型,使用时需匹配命中位置的分类以确保准确性
- 二次命中处理:通过飞机分类优化探测器逻辑,但未展示GI Blocker网格的具体
SIGGRAPH 2025 游戏实时渲染的进展课程 107
通过这些飞机,我们对二次命中和探测器进行分类。此处未显示 GI Blocker 网格。它们通过消除所有照射到的光线来提供帮助 他们。使用它们会带来错误的遮挡,但可以补偿非常黑暗的泄漏 内饰。它们专门用于洞穴。 ========================= 每个探头都分为内部或外部。使用探头时 体积,我们首先对命中位置进行分类,然后仅使用具有相同的探针 分类。
Slide 108

SIGGRAPH 2025 游戏实时渲染的进展课程 108
由于我们的探针在评估其缓冲区和 辐照度,我们丢失了其范围内的微观细节。
Slide 109

📌 要点汇总
- 光线追踪距离与探头范围比较:通过比较判断是否遗漏微观可见性评估。
- 短距离假设遗漏微观可见性:短于探头范围的距离可能意味着评估过程存在缺失。
- 比率计算与范围应用:通过计算距离比率并将其应用于预定范围以优化评估。
SIGGRAPH 2025 游戏实时渲染的进展课程 109
通过将光线追踪距离与探头的范围进行比较,我们假设 任何短于范围的距离都意味着在过程中错过了一些微观可见性 探针评估。 我们通过计算该比率并将其应用于 预定范围。
Slide 110

📌 要点汇总
- (无内容):此幻灯片无演讲内容
在本节中,我们将回顾用于遮挡的技术
Slide 111

SIGGRAPH 2025 游戏实时渲染进展课程 SIGGRAPH 2025 游戏实时渲染进展课程 111
从我们使用球谐函数且没有任何 添加遮挡。我们可以注意到缺失的遮挡和微遮挡。
Slide 112

📌 要点汇总
- 探针AO优化:引入光线长度考量,提升环境
SIGGRAPH 2025 游戏实时渲染进展课程 SIGGRAPH 2025 游戏实时渲染进展课程 112
我们首先添加前面解释的考虑光线长度的探针 AO 比我们的探头间距短。
Slide 113

📌 要点汇总
- RTAO技术:基于降噪器生成的每像素AO,提升环境遮挡效果
- SSAO融合:结合SSAO与光线追踪,优化实时渲染的遮挡表现
- 艺术遮挡增强:通过RTAO改善场景细节与视觉真实感
SIGGRAPH 2025 游戏实时渲染进展课程 SIGGRAPH 2025 游戏实时渲染进展课程 113
然后,我们添加 RTAO,这是来自我们的降噪器的每像素 AO,尽管更多 一种艺术遮挡,它有助于使用我们的 SSAO 引入类似于 SSAO 的环境遮挡 光线追踪光线。
Slide 114

📌 要点汇总
- GTAO后期处理:采用Jimenez & Wu 2016提出的实用实时策略,提升间接遮挡准确性
- 参数化恢复细节:通过参数化GTAO技术,弥补过滤与遗漏导致的微观细节丢失
- BVH对象优化:针对BVH结构中的对象进行处理,增强渲染精度与效率
SIGGRAPH 2025 游戏实时渲染进展课程 SIGGRAPH 2025 游戏实时渲染进展课程 114
然后我们对 GTAO 进行后期效果处理。 (实用的实时策略,准确 间接遮挡,Jimenez & Wu 2016) 我们的 GTAO 经过参数化,可以恢复在过滤和遗漏中丢失的微观细节 我们的 BVH 中的对象。
Slide 115

SIGGRAPH 2025 游戏实时渲染的进展课程 115
没有添加遮挡。
Slide 116

SIGGRAPH 2025 游戏实时渲染的进展课程 116
有闭塞。
Slide 117

SIGGRAPH 2025 游戏实时渲染的进展课程 117
遮挡的最终结果
Slide 118

对于噪声,我们根据我们面临的具体挑战调整了去噪解决方案 在开发过程中。
Slide 119

SIGGRAPH 2025 游戏实时渲染的进展课程 119
去除半透明材料在不透明材料上的渗色 去噪,我们添加了一个包含材质类型的掩模并用它来去除 空间过滤过程中的相邻样本。 ================= 材质 ID 还用于对权重以及如何进行特殊调整 样本是提取的。
Slide 120

SIGGRAPH 2025 游戏实时渲染的进展课程 120 SIGGRAPH 2025 游戏实时渲染进展课程
如果我们不限制光线的范围,它会非常嘈杂。
Slide 121

📌 要点汇总
- 辐射缓存优化:通过追踪短光线并回退至辐射
SIGGRAPH 2025 游戏实时渲染的进展课程 121 SIGGRAPH 2025 游戏实时渲染进展课程
相反,我们追踪较短的光线并回退到辐射缓存上。这有帮助 主要是为了性能和降低噪音,但由于泄漏而牺牲了精度 更多照明。 =========== 我们还丢失了一些细节,因为我们最近的探头之间的间隔为 2m 其他人。
Slide 122

SIGGRAPH 2025 游戏实时渲染的进展课程 122
遮挡是我们的 2D 运动矢量的一个问题。我们添加了一个过滤通道 对于被遮挡的像素,主要用于角色移动。 =========== 遮挡始终是一个问题,因为我们无法使用时间过滤。添加一个 这些像素的额外空间去噪通道有助于减少噪声。在我们的引擎中, 由于我们的运动向量不包含任何深度信息,因此很难 验证重新投影的像素并在移动实体上添加更多的去遮挡, 导致噪音增加。
Slide 123

SIGGRAPH 2025 游戏实时渲染的进展课程 123
风中的高草叶具有较高的法线方差和遮挡。我们 为他们调整了我们的降噪器。
Slide 124

SIGGRAPH 2025 游戏实时渲染的进展课程
Slide 125

SIGGRAPH 2025 游戏实时渲染的进展课程 129
在 BVH 方面,在运行时,我们加载了大约 2000 个 BLAS 大约 30,000 个 TLAS 实例。总共占用 320 MB 内存。 这是典型的都市景象,
============= 这些数字是 Xbox Series X 的表现。
Slide 126

📌 要点汇总
- 探针G缓冲区:最大缓冲区为55MB,每个像素用14字节存储材质属性
- 单像素边框需求:其他缓冲区需单像素边框以支持双线性过滤采样
- 探针缓冲区总大小:10k探针下总内存占用达73MB
SIGGRAPH 2025 游戏实时渲染的进展课程 130
最大的缓冲区是探针 G 缓冲区,为 55MB。我们每个使用 14 个字节 像素来表示所有不同的材质属性。 您还可以在这里看到其他缓冲区需要单像素边框,那是因为 我们需要用双线性过滤对它们进行采样。对于 10k 探针,探针缓冲区的总大小为 73MB。
Slide 127

📌 要点汇总
- (无内容):此幻灯片无演讲内容
SIGGRAPH 2025 游戏实时渲染的进展课程 131
Slide 128

📌 要点汇总
- (无内容):此幻灯片无演讲内容
Slide 129

SIGGRAPH 2025 游戏实时渲染的进展课程 133
在青色中,通道在异步队列中运行,绿色在图形队列中运行。橙色表示单个队列图形管道的计时。 ● 以下是每像素漫反射 GI 的 GPU 时序,按四分之一进行跟踪 分辨率。 ● 这是使用 1440p 的固定内部渲染分辨率进行分析的,除了 XBSS 这里是 900p,以保持与 XBSX 类似的成本。
Slide 130

SIGGRAPH 2025 游戏实时渲染的进展课程 134
最后,以下是以半分辨率追踪 RT 镜面反射的 GPU 时序。 - Specular RT 仅适用于 PS5 Pro 的 30fps 质量模式和 PC。 - PS5 Pro 的半分辨率成本相当高,但质量却是四分之一 分辨率不够好,我们仍达到目标帧率 和分辨率,所以我们将其保持在一半分辨率。
Slide 131

📌 要点汇总
- 数据处理方法差异:两种解决方案需创建特定数据以支持不同视角分析
- 手动转换流程:简化RT材料转换依赖人工操作,效率低下且耗时
- BVH资源缺失:关键资产未纳入
SIGGRAPH 2025 游戏实时渲染的进展课程 135
- 以两种不同的方式查看所有内容。为这两种解决方案创建的特定数据。 2. 手动转换我们的简化 RT 材料。长时间的体力劳动。 3. BVH 中缺少许多资产会导致问题。 4. 在我们的BVH或玩家脚下的资产质量相同。我们希望改变一些东西可以帮助未来的表现。 5. 我们希望在下一个标题中使用 3D 矢量来帮助解除遮挡。
Slide 132

📌 要点汇总
- 几何简化误差:最
最坏的情况是相差 50 厘米(我们需要对我们的 简化的几何形状)。 4. 一些帧放大器出现噪声模式,很难将噪声 GI 结果放大这么多。
Slide 133

SIGGRAPH 2025 游戏实时渲染的进展课程 137
- 降低支持 RTGI 的复杂性。材料简化的自动化。 2. XBSS RTGI 未计划且由于 AC 内存限制而无法实现 阴影。我们正在努力确保我们的下一款游戏将支持所有人的 RTGI 平台。 3. 需要研究许多解决方案来减少泄漏。大多数都会增加需要的成本 平衡了。 4. 花更多时间研究去噪,我们在这方面并没有花很多时间。
Slide 134

📌 要点汇总
- (无内容):此幻灯片无演讲内容
SIGGRAPH 2025 游戏实时渲染的进展课程
Slide 135

SIGGRAPH 2025 游戏实时渲染的进展课程 SIGGRAPH 2025 游戏实时渲染的进展课程 139
● 我们有更多的细节和更少的照明值涂抹
Slide 136

SIGGRAPH 2025 游戏实时渲染的进展课程 SIGGRAPH 2025 游戏实时渲染的进展课程 140
● 我们有更多的细节和更少的照明值涂抹
Slide 137

SIGGRAPH 2025 游戏实时渲染的进展课程 SIGGRAPH 2025 游戏实时渲染的进展课程 141
● 我们有更多的细节和更少的照明值涂抹
Slide 138

SIGGRAPH 2025 游戏实时渲染的进展课程 SIGGRAPH 2025 游戏实时渲染的进展课程 142
● 我们有更多的细节和更少的照明值涂抹
Slide 139

SIGGRAPH 2025 游戏实时渲染的进展课程 SIGGRAPH 2025 游戏实时渲染的进展课程 143
● 我们有更多的细节和更少的照明值涂抹
Slide 140

SIGGRAPH 2025 游戏实时渲染的进展课程 144
● 这是写入探针纹理像素的卷积结果时使用的代码。 它添加了边界纹理元素以启用硬件双线性过滤。