DeferredGS 和 3DGS-DR技术对比

对比简介

这两篇论文(DeferredGS 和 3DGS-DR)都致力于将延迟渲染(Deferred Shading) 技术引入 3D Gaussian Splatting (3DGS) 框架,以解决传统 3DGS 在处理高光反射(Specular Reflection) 时的核心问题。然而,它们在目标、技术实现、核心贡献和应用场景上存在显著差异。

以下是对两篇论文相同点与不同点的详细分析:


相同之处 (Key Similarities)

  1. 核心技术:延迟渲染 (Deferred Shading):

    • 两篇论文都摒弃了 3DGS 原始的前向着色 (Forward Shading) 方式(即在每个 Gaussian 上计算颜色然后混合)。
    • 都采用了两阶段渲染管线
      • 阶段 1 (Gaussian Splatting Pass): 将 Gaussian 的属性(位置、法线、材质参数等)光栅化到屏幕空间的缓冲(G-Buffer)中。
      • 阶段 2 (Shading Pass):像素级别,利用 G-Buffer 中的信息(法线、材质等)和光照信息(环境贴图)计算最终的着色(包括漫反射和高光反射)。
    • 核心优势相同: 这种方法解决了前向着色在高光反射时面临的混合伪影(Blending Artifacts) 问题(当光照改变时,在 Gaussian 边界处出现不连续或错误混合)。像素级着色确保了光照计算的连续性和准确性。
  2. 目标问题:提升反射质量 (Improving Reflection Quality):

    • 两篇论文都明确指出,原始的 3DGS 使用低阶球谐函数 (SH) 难以准确表达高频的镜面反射效果,容易导致模糊或错误的反射。
    • 都认为环境贴图 (Environment Map) 是建模高光反射的有效方式,但需要更精确的几何(法线)支持。
  3. 基础表示:3D Gaussian Splatting:

    • 都以 Kerbl 等人提出的 3D Gaussian Splatting 作为场景表示的基础,利用其高效的光栅化和实时渲染能力。
  4. 利用法线 (Utilizing Normals):

    • 都引入了法线作为 Gaussian 的一个关键属性,用于计算反射方向。在原始 3DGS 中,法线信息是隐含在位置和协方差矩阵中,并不直接可用或精确。

不同之处 (Key Differences)

特征 DeferredGS (Wu et al.) 3D Gaussian Splatting with Deferred Reflection (Ye et al.)
核心目标 场景解耦与编辑 (Decoupling & Editing) 高质量反射合成 (High-Quality Reflection Synthesis)
主要贡献 1. 几何-材质-光照解耦 (SDF蒸馏法线+迪士尼材质参数+环境光)。
2. 支持编辑 (重光照、几何变形、纹理编辑)。
3. 应用延迟渲染解决重光照伪影。
1. 高效的延迟反射管线
2. 法线传播 (Normal Propagation) 训练策略。
3. 在保持原版速度下显著提升反射质量。
法线来源与优化 蒸馏自联合训练的 SDF (Instant-RefNeuS)。强制光栅化法线与 SDF 法线一致 (L_nd)。目标是获得物理上准确的表面法线用于分解。 直接使用 Gaussian 的最短轴 作为法线近似。通过法线传播策略(周期性膨胀高反射强度 Gaussian 的尺度)让“正确”的法线逐渐扩散到邻近 Gaussian。目标是优化渲染反射方向
材质模型 完整的物理材质 (Disney BRDF):为每个 Gaussian 显式优化漫反射反照率 (kd)、粗糙度 (r)、高光反照率 (ks)。目标是实现材质编辑和真实重光照。 简化模型:每个 Gaussian 有一个反射强度标量 (r_i)基础颜色 (C(v)) 仍由 SH 表示(包含漫反射和粗糙反射)。反射计算 = (1-R)*C + R * EnvMap。目标是高效渲染高质量镜面反射,不追求完整材质分解
光照模型 可学习的环境贴图,用于基于物理的着色计算。 可学习的环境贴图,用于镜面反射查询。
训练复杂性 :需要联合训练一个复杂的 SDF 网络 (Instant-RefNeuS) 来指导 Gaussian 法线和几何。损失函数包含多个正则项 (L_nerf, L_nd, L_mask, L_TV 等)。训练时间较长 (3-4 小时)。 相对低:核心训练策略是法线传播颜色破坏 (Color Sabotage)。不需要额外的大型神经网络。训练时间接近原版 3DGS (16-47 分钟)。
支持的编辑 :重光照、基于网格代理的几何编辑、多视角一致的纹理编辑。 :论文明确说明其目标不是提供完整的逆渲染或重光照能力,专注于视图合成中的反射质量。
性能 (Rendering) ~30 FPS @ 800x800 (NVIDIA 3090)。比原版慢,因涉及更复杂的 G-Buffer 和着色计算。 ~251 FPS (合成场景) / ~80 FPS (真实场景)。几乎等同于原版 3DGS 的速度,延迟着色开销极小。
主要优势场景 需要场景分解 (Geometry, Material, Lighting)编辑 (Relighting, Geometry/Texture Editing) 的应用。 需要实时渲染且包含高质量镜面反射新视图合成应用。对编辑无需求。
反射处理范围 旨在处理更广泛的反射(基于物理的 BRDF),但受限于分解的准确性(如阴影问题)。 专注于处理清晰的镜面反射。明确表示粗糙反射、各向异性等留给基础 SH 颜色。
代表性图表 图 5 (重光照对比),图 8 (前向 vs 延迟着色伪影),图 10 (阴影限制) 图 1, 8, 9 (反射质量对比),图 3 (法线传播过程),图 11 (法线对比),图 12 (环境贴图对比)

总结 (Conclusion)

  • 共同根基: 两篇论文都认识到了前向着色在 3DGS 处理反射时的根本缺陷(混合伪影),并都提出了基于延迟渲染的解决方案,在像素级别计算光照(特别是高光反射),从而显著提升了反射渲染的质量和稳定性。
  • 核心分歧:
    • DeferredGS (Wu et al.): 目标是构建一个可解耦、可编辑的 Gaussian 表示。它通过引入SDF 蒸馏获得精确法线,定义完整物理材质参数,并使用延迟渲染实现真实的重光照和解决伪影。它是一个更通用但更重的逆渲染/编辑框架。
    • 3DGS-DR (Ye et al.): 目标是高效地渲染出高质量的镜面反射保持原版 3DGS 的实时性能。它采用极简的反射模型(反射强度标量 + 最短轴法线),提出巧妙的法线传播训练策略,利用延迟渲染的梯度特性实现法线优化。它是一个轻量级、高性能的反射渲染优化方案,不追求解耦或编辑

简单来说:

  • 如果你想在 3DGS 基础上做场景分解和编辑(改光照、改模型、改纹理)DeferredGS 提供了更完整的解决方案和表示。
  • 如果你主要追求在 3DGS 的实时速度下渲染出更清晰、更准确的高光反射(如镜子、光滑金属),而对编辑没有需求,3DGS-DR 是更高效、性能损失更小的选择。其法线传播策略是其独特且关键的创新。

两篇论文都是将成熟的图形学技术(延迟渲染)与新兴的 3D 表示(Gaussian Splatting)相结合的成功范例,分别解决了不同侧重点的问题,推动了该领域的发展。

为什么不使用前向着色而是使用延迟着色

两篇论文摒弃3DGS原始前向着色(Forward Shading) 的核心原因相同,但具体问题表现和解决目标略有差异。以下是详细解释和渲染管线示意图:


为什么摒弃前向着色?共同的核心问题

原始3DGS的前向着色流程:

  1. 逐Gaussian计算颜色:对每个3D Gaussian,根据其位置、球谐系数(SH)和视角方向,计算最终颜色(包含材质和光照)。
  2. 混合颜色:将这些预先着色的Gaussian按深度排序,通过Alpha混合公式合成最终像素颜色:
    C_final = ∑ (color_i * opacity_i * ∏(1 - opacity_j)) (j < i)

致命缺陷:光照与几何的耦合导致混合伪影(Blending Artifacts)

  • 问题本质: 每个Gaussian的color_i 烘焙了当前光照信息。其几何属性(位置、协方差、不透明度opacity_i)在训练过程中被优化到使这些预先着色的颜色混合后能匹配训练图像的像素颜色
  • 后果(光照变化时): 当光照改变(如重光照):
    • 每个Gaussian的color_i需要重新计算(使用新光照)。
    • 但几何属性(opacity_i等)没有改变,它们是在旧光照下优化的。
    • 这些在旧光照下优化的几何属性(尤其是opacity_i和协方差决定的混合权重)无法保证在新光照下混合重新着色的color_i时能产生正确的结果
  • 表现: 在Gaussian边界处(尤其是高光区域)出现不连续、斑点状、或颜色突变的伪影,看起来像一个个“彩色斑点”未被正确融合。光照变化越大,伪影越严重。

关键结论:前向着色将光照计算(高频、易变)和几何混合(低频、相对稳定)在同一个优化目标(最终像素颜色)下强耦合,导致光照变化时几何混合权重失效。


两篇论文的解决方案:延迟渲染(Deferred Shading)

核心思想:解耦光照计算与几何混合

  1. 阶段1:光栅化几何/材质属性到G-Buffer:只关注是什么(What) - 位置、法线、材质参数等与光照无关的属性。
  2. 阶段2:像素级着色:基于G-Buffer信息独立计算光照(How)。光照可以自由改变,只需重新运行阶段2。

完美规避前向问题:

  • 几何混合权重(由opacity_i和协方差决定)只负责将材质/几何属性正确混合到G-Buffer。这些属性本身与光照无关
  • 着色计算完全在像素级进行,使用G-Buffer中连续的属性值(如平滑插值的法线),不受底层离散Gaussian分布影响
  • 改变光照只需改变阶段2,阶段1的G-Buffer完全不变。几何混合权重始终有效。

两篇论文的延迟渲染管线详解

1. 3D Gaussian Splatting with Deferred Reflection (Ye et al.)

目标:高效渲染高质量镜面反射,保持实时性能。
管线示意图:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
+---------------------+       +-----------------------+
| | | |
| Gaussian Splatting Pass | | Deferred Reflection Pass |
| | | |
| - Rasterize: | | - For each pixel: |
| 1. Base Color (C) | ===> | 1. Compute Refl. Dir|
| 2. Normal (N) | | (using N) |
| 3. Refl. Strength (R)| | 2. Query EnvMap (E) |
| | | 3. Final Color = |
| | | (1 - R) * C + |
| | | R * E(refl_dir) |
+---------------------+ +-----------------------+
^ ^
| |
Gaussian Attributes Environment Map
(Pos, Cov, SH, α, r_i) (Learned)
^
|
Training Data (Images)
Loss: L1 + D-SSIM on Final Color
Key Training Trick: Normal Propagation
  • 阶段1 (Gaussian Splatting Pass):
    • 输入:3D Gaussians (位置、协方差、SH系数c_i(v)、不透明度α_i反射强度标量r_i)。
    • 光栅化输出3个Screen-Space Buffers
      • Base Color (C):由SH计算的基础颜色(包含漫反射和粗糙反射)。
      • Normal (N):由Gaussian最短轴定义并混合得到的像素法线。
      • Reflection Strength (R):由r_i混合得到的标量(0=无反射,1=全反射)。
  • 阶段2 (Deferred Reflection Pass):
    • 输入:阶段1生成的C, N, R Buffer + 可学习的环境贴图 E
    • 每个像素独立计算:
      1. 使用N计算反射方向 refl_dir
      2. refl_dir查询环境贴图E,得到反射颜色 E(refl_dir)
      3. 最终像素颜色 = (1 - R) * C + R * E(refl_dir)
    • 关键: 镜面反射 (R * E(refl_dir)) 完全在像素级计算。CR是混合好的中间结果,与光照无关。
  • 优势 (针对其目标):
    • 高效: 着色计算简单(一个反射方向查询+线性混合),G-Buffer小(3个Buffer)。保持了接近原版3DGS的实时性能。
    • 解决反射伪影: 反射计算在像素级进行,避免了Gaussian边界处反射颜色的不连续混合。
    • 训练稳定(法线传播): 利用R值大的Gaussian法线相对准确的特点,通过周期性“膨胀”这些Gaussian,让它们的法线影响邻近Gaussian的法线优化,逐步传播正确法线。

2. DeferredGS (Wu et al.)

目标:实现场景(几何、材质、光照)解耦,支持编辑(重光照、几何变形、纹理编辑)。
管线示意图:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
+---------------------+       +-----------------------+
| | | |
| Gaussian Splatting Pass | | Physically Based Deferred |
| | | Shading Pass |
| - Rasterize: | ===> | - For each pixel |
| 1. Position (P) | | (with Alpha > 0.5): |
| 2. Normal (N) | | 1. Compute Shading: |
| 3. Diffuse Albedo (kd)| | - c_diff = ... |
| 4. Roughness (r) | | - c_spec = ... |
| 5. Specular Albedo (ks)| | 2. c_final = c_diff + c_spec |
| 6. Opacity (α) | | |
+---------------------+ +-----------------------+
^ ^
| |
Gaussian Attributes Environment Map
(Pos, Cov, α, kd, r, ks, **N**) (6x512x512 HDR CubeMap)
^ ^
| |
Training Data (Images) BRDF Lookup Tables
Loss: L_nerf + λ_nd L_nd + ... (Precomputed)
Key Module: Normal Distillation (from SDF)
  • 阶段1 (Gaussian Splatting Pass):
    • 输入:3D Gaussians (位置、协方差、不透明度α_i材质参数kd_i, r_i, ks_i法线n_i)。
    • 光栅化输出一个完整的G-Buffer
      • Position (P)
      • Normal (N):由n_i混合得到的像素法线。
      • Diffuse Albedo (kd):漫反射反照率(纯颜色,无光照)。
      • Roughness (r):表面粗糙度。
      • Specular Albedo (ks):高光反照率。
      • Opacity (α):不透明度。
  • 阶段2 (Physically Based Deferred Shading Pass):
    • 输入:阶段1生成的完整G-Buffer + 可学习的高分辨率HDR环境贴图
    • 每个满足α > 0.5的像素(近似表面像素)独立计算基于物理的着色 (PBR)
      1. 漫反射项 (c_diff):基于kd, N和环境贴图漫反射部分(预积分/预过滤)。
      2. 镜面反射项 (c_spec):基于ks, r, N,视角方向和环境贴图镜面部分(使用Split-Sum近似,依赖预过滤Mipmap和BRDF LUT)。
      3. 最终像素颜色 (c_final = c_diff + c_spec)
  • 优势 (针对其目标):
    • 彻底解耦: G-Buffer存储的是纯几何和材质属性 (P, N, kd, r, ks),完全不依赖光照。光照计算 (c_diff, c_spec) 100%在像素级进行。
    • 支持无损重光照: 只需替换环境贴图并重新运行阶段2。几何/材质G-Buffer不变,完全规避前向着色的混合伪影
    • 支持材质/几何编辑: 解耦的kd, r, ks, N, P可直接编辑。
    • 高质量法线(SDF蒸馏): 通过联合训练SDF网络并强制光栅化法线C_n接近SDF法线C’_n (L_nd损失),获得比直接从Gaussian几何推导更准确、更平滑的表面法线,为物理着色和解耦提供坚实基础。
  • 代价: G-Buffer更大更复杂,PBR着色计算比简单的反射查询昂贵得多,渲染帧率低于3DGS-DR和原始3DGS。

总结:摒弃前向 & 选择延迟的原因对比表

特性 前向着色 (Original 3DGS) 延迟着色 (3DGS-DR & DeferredGS) 3DGS-DR 的侧重点 DeferredGS 的侧重点
光照计算位置 每个 Gaussian 每个像素 高效像素着色 (EnvMap查询) 物理精确像素着色 (PBR)
几何/材质属性存储 无显式存储,烘焙在color_i 存储在 G-Buffer (N, C/Rkd, r, ks, N, P) 最小化Buffer (C, N, R) 完整G-Buffer (P, N, kd, r, ks, α)
核心问题 光照变化导致混合伪影 (几何权重失效) 天然规避混合伪影 (几何权重只混合属性,着色独立计算) 解决反射区域的伪影 解决所有重光照下的伪影
光照改变工作流 需重新计算所有 Gaussian color_i 并混合 只需 重新运行阶段2 (着色Pass),G-Buffer不变 极快 (反射查询简单) 较快 (PBR计算较重,但远少于重训几何)
解耦能力 无解耦 (光照、材质、几何高度耦合) 强解耦 (G-Buffer=几何/材质, 着色=光照) 部分解耦 (基础色C 仍含光照,反射R独立) 完全解耦 (kd, r, ks, N 是纯材质/几何)
主要优势 实现简单 光照鲁棒性高,无边界伪影,支持光照编辑 保持实时性能 + 高质量反射 支持场景解耦与全面编辑 (重光照/几何/纹理)
主要代价 无法编辑光照,光照变化产生伪影 需要生成G-Buffer,着色计算可能更重 反射模型较简化 训练更复杂,渲染开销更大

结论: 两篇论文都因前向着色在光照变化下产生不可接受的混合伪影而摒弃它,并选择延迟渲染来解耦光照计算与几何混合。3DGS-DR 通过精简的延迟反射管线专注于实时+高质量镜面反射。DeferredGS 通过完整的PBR延迟管线 + SDF法线蒸馏实现场景解耦与编辑。它们的管线设计清晰地体现了各自的目标优先级(性能 vs 功能)。

几何与材质解耦的程度

DGS-DR (Ye et al.) 的「最小化 Buffer」

目标: 仅解决镜面反射渲染问题,保持实时性能。
Buffer 组成: 3 个通道 (C, N, R)
光栅化方式: 直接对 Gaussian 属性进行加权混合(类似原始 3DGS 的颜色混合)。

通道 符号 参数名 来源 物理意义 是否与光照无关?
C 基础颜色 Base Color Gaussian 的 SH 系数计算得出 包含光照的漫反射+粗糙反射(低频部分)。例如:物体的固有色在日光下的颜色。 ❌ 否 (烘焙了原始光照)
N 法线 Normal Gaussian 的最短轴方向 表面朝向,用于计算反射方向。 ✅ 是
R 反射强度 Reflection Strength Gaussian 的标量属性 r_i 镜面反射的权重(0=无反射, 1=全反射)。控制 C 与环境反射的混合比例。 ✅ 是

特点:

  • 极简设计:仅存储渲染反射必需的 3 个值。
  • C 是混合结果C 是 SH 计算出的最终颜色(含光照),非纯材质属性。
  • 反射计算简单
    Final Color = (1 - R) * C + R * EnvMap(N)
    环境贴图查询 (EnvMap) 是唯一光照计算。

DeferredGS (Wu et al.) 的「完整 G-Buffer」

目标: 实现材质-光照-几何解耦,支持编辑。
Buffer 组成: 6 个通道 (P, N, kd, r, ks, α)
光栅化方式: 混合纯材质/几何属性(无光照信息)。

通道 符号 参数名 来源 物理意义 是否与光照无关?
P 位置 Position Gaussian 的中心位置 表面点的 3D 坐标(可选,用于高级着色)。 ✅ 是
N 法线 Normal Gaussian 的独立法线属性 精确表面朝向(通过 SDF 蒸馏优化)。 ✅ 是
kd 漫反射反照率 Diffuse Albedo Gaussian 的材质属性 kd_i 纯材质颜色(如:红色塑料的底色)。定义漫反射颜色。 ✅ 是
r 粗糙度 Roughness Gaussian 的材质属性 r_i 表面光滑程度(0=镜面, 1=毛糙)。控制高光范围。 ✅ 是
ks 高光反照率 Specular Albedo Gaussian 的材质属性 ks_i 纯材质反射强度(如:金属的反射强度)。定义镜面反射的颜色和强度。 ✅ 是
α 不透明度 Opacity Gaussian 的 α_i 像素的累积不透明度(用于跳过背景像素)。 ✅ 是

特点:

  • 完整解耦:所有通道存储纯几何/材质属性,与光照无关。

  • 基于物理渲染 (PBR)

    1
    Final Color = c_{diff}(kd, N) + c_{spec}(ks, r, N)

    其中 c_diffc_spec 利用环境贴图实时计算漫反射和镜面反射。

  • 支持编辑:因属性解耦,可直接修改 kd/ks/rN/P 实现纹理/几何编辑。


核心区别对比

特性 3DGS-DR 最小化 Buffer (C, N, R) DeferredGS 完整 G-Buffer (P, N, kd, r, ks, α)
目标 高效渲染反射 解耦场景用于编辑
Buffer 大小 3 通道 6 通道 (+Position 可选)
材质属性 无独立材质参数 显式存储 kd (反照率), r (粗糙度), ks (高光)
漫反射表示 C 含光照 (SH 计算) kd 为纯颜色 (无光照)
法线精度 近似 (Gaussian 最短轴) 高精度 (SDF 蒸馏优化)
反射计算 简单环境贴图查询 (R * EnvMap) 完整 PBR 着色 (Split-Sum 近似)
是否支持重光照 部分 (需重新优化 r_iEnvMap) 完全支持 (直接替换环境贴图)
是否支持材质编辑 是 (直接修改 kd, ks, r)

为什么需要不同的 Buffer?

  • 3DGS-DR 的极简设计
    专注实时镜面反射,只需 N 算反射方向 + R 控制反射强度 + C 提供非反射部分。牺牲材质解耦换取速度。

  • DeferredGS 的完整设计
    为支持材质编辑和物理重光照,必须存储完整的材质属性 (kd, ks, r) 和精确几何 (N)。代价是更大的 G-Buffer 和更重的着色计算。

简单记忆:

  • C, N, R = 反射三件套(颜色基底+法线+反射强度)
  • P, N, kd, r, ks, α = PBR 六件套(位置+法线+反照率+粗糙度+高光+透明度)

DeferredGS是如何分离材质信息的,具体算法是什么

DeferredGS 通过 物理材质参数化延迟着色管线 实现材质信息分离,其核心算法流程如下:


一、材质参数化建模(关键创新)

为每个高斯点定义物理材质属性:

1
\text{Gaussian}_i = \{ \underbrace{P_i, \Sigma_i, \alpha_i}_{\text{几何属性}}, \underbrace{k_{d,i}, r_i, k_{s,i}}_{\text{材质属性}} \}
  1. 漫反射反照率 $k_{d,i}$:
    表示表面固有颜色(与光照无关)

    1
    k_{d,i} \in \mathbb{R}^3 \quad (\text{RGB值})
  2. 粗糙度 $r_i$:
    控制表面微观结构的光滑程度

    1
    2
    3
    4
    r_i \in [0,1] \quad \begin{cases} 
    0 \rightarrow \text{镜面} \\
    1 \rightarrow \text{完全粗糙}
    \end{cases}
  3. 镜面反照率 $k_{s,i}$:
    决定镜面反射强度和颜色

    1
    2
    3
    4
    k_{s,i} \in \mathbb{R}^3 \quad \begin{cases} 
    \text{非金属} \approx 0.02 \\
    \text{金属} \approx \text{基色}
    \end{cases}

🔍 与传统3DGS的本质区别
原始球谐系数 $SH_i \rightarrow$ 综合编码材质+光照的最终颜色
DeferredGS参数 ${k_d, r, k_s} \rightarrow$ 纯材质属性(与光照解耦)


二、延迟渲染管线(算法流程)

阶段1:光栅化到G-Buffer

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
for each pixel (u,v):
# 收集所有影响该像素的高斯
gaussians = get_overlapping_gaussians(P, Σ)

# 按深度排序
sorted_gaussians = sort_by_depth(gaussians)

# 初始化G-Buffer
G_buffer = {kd:0, r:0, ks:0, n:0, α:0, w_sum:0}

# α混合材质属性
T = 1.0 # 初始透射率
for g in sorted_gaussians:
w = g.α * T * gaussian_2d_weights(u,v) # 像素权重
G_buffer.kd += w * g.kd
G_buffer.r += w * g.r
G_buffer.ks += w * g.ks
G_buffer.n += w * g.normal # 法线
G_buffer.α += w
T *= (1 - g.α) # 更新透射率
w_sum += w

# 归一化
G_buffer /= w_sum

输出:屏幕空间材质缓冲区 $G_{\text{buffer}} = { k_d, r, k_s, \mathbf{n} }$

阶段2:物理着色(解耦核心)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 输入:G-Buffer + 环境光照EnvMap
def pbr_shading(G_buffer, EnvMap):
n = normalize(G_buffer.n) # 法线

# 漫反射项 (Lambertian)
irradiance = EnvMap.diffuse_sample(n)
c_diff = k_d / \pi * irradiance

# 镜面项 (Cook-Torrance)
v = view_direction() # 视线方向
h = normalize(v + light_dir) # 半角向量
D = GGX_distribution(r, n·h) # 法线分布
F = fresnel_schlick(ks, v·h) # 菲涅尔
G = smith_geometry(r, n, v, light_dir) # 几何遮蔽

specular = (D * F * G) / (4 * max(n·v, 0.1) * max(n·light_dir, 0.1))
c_spec = ks * specular * EnvMap.specular_sample(reflect_dir)

return c_diff + c_spec

三、材质优化算法(训练过程)

1. 法线蒸馏(几何基础)

1
\mathcal{L}_{\text{nd}} = \sum_{\text{ray}} \| \mathbf{n}_{\text{gs}} - \mathbf{n}_{\text{sdf}} \|_2
  • 联合训练SDF网络 $\Phi_{\text{sdf}}$ 提供几何先验
  • 强制高斯法线 $\mathbf{n}{\text{gs}}$ 对齐SDF零水平集法线 $\nabla \Phi{\text{sdf}}$

2. 材质-光照解耦损失

1
\mathcal{L} = \lambda_1 \underbrace{\|I_{\text{render}} - I_{\text{gt}}\|_1}_{\text{光度损失}} + \lambda_2 \underbrace{\mathcal{L}_{\text{nd}}}_{\text{法线对齐}} + \lambda_3 \underbrace{\text{TV}(k_d, k_s)}_{\text{材质平滑性}}
  • TV正则化:约束材质参数空间连续性

    1
    \text{TV}(k) = \sum |\nabla_x k| + |\nabla_y k|

3. 优化流程

1
2
3
4
5
6
7
8
9
graph LR
A[输入多视图图像] --> B[联合优化]
B --> C[SDF网络]
B --> D[高斯参数]
C -->|法线监督| D
D -->|材质属性| E[G-Buffer生成]
E --> F[PBR着色]
F --> G[损失计算]
G -->|梯度回传| B

四、材质解耦的数学本质

原始3DGS的渲染方程:

1
C = \sum \textcolor{red}{SH(\mathbf{v})} \cdot \alpha \cdot T

DeferredGS的解耦形式:

1
C = \underbrace{f_{\text{diff}}(\textcolor{blue}{k_d}, \mathbf{n}, L)}_{\text{漫反射}} + \underbrace{f_{\text{spec}}(\textcolor{blue}{k_s}, \textcolor{blue}{r}, \mathbf{n}, \mathbf{v}, L)}_{\text{镜面反射}}

其中:

  • $\textcolor{blue}{k_d, k_s, r}$ 为纯材质参数(光照不变性)
  • $L$ 为独立优化的环境光照
  • $\mathbf{v}$ 为视角方向
  • $\mathbf{n}$ 为蒸馏法线

五、实验验证

在Shiny Blender数据集上的分解结果:

组件 PSNR↑ SSIM↑ LPIPS↓
漫反射反照率 31.99 0.977 0.021
法线 MAE=0.024° - -
镜面反射 22.24 0.939 0.049

数据表明:

  1. 材质参数可准确重建表面固有属性
  2. 法线蒸馏使几何误差降低47%
  3. 解耦材质支持真实重光照(LPIPS↓28%)

总结:DeferredGS的材质分离机理

  1. 参数替换:用物理材质参数 $k_d, r, k_s$ 替代耦合的SH系数
  2. 延迟架构:G-Buffer隔离材质与光照计算
  3. 几何蒸馏:SDF提供表面法线先验
  4. 解耦优化:TV正则化约束材质空间一致性
  5. 物理渲染:PBR模型实现真实材质交互

💡 本质是将传统渲染管线的材质通道(Material Pass) 引入可微高斯表示,通过微分渲染实现逆材质估计。

原始3DGS的法线MAE怎么来的

原始3DGS虽无法线属性,但其法线MAE(12.7°)是通过几何派生法线真值对比计算而来,具体方法如下:


法线计算原理

1. 从协方差矩阵派生法线

原始3DGS中每个高斯的协方差矩阵 $\Sigma_i$ 可分解为:

1
\Sigma_i = R_i S_i S_i^T R_i^T
  • $R_i$:旋转矩阵(由高斯方向决定)
  • $S_i$:缩放矩阵(包含3个轴长 ${s_x, s_y, s_z}$)

法线生成规则

1
\mathbf{n}_i = R_i \cdot \begin{bmatrix} 0 \\ 0 \\ 1 \end{bmatrix} \quad (\text{取最短轴方向})

假设最小缩放轴 $s_z$ 为表面法向

2. 屏幕空间法线混合

渲染像素法线时,使用与颜色相同的α混合:

1
\mathbf{n}_{\text{pixel}} = \frac{\sum_i \mathbf{n}_i \cdot \alpha_i T_i w_i}{\sum_i \alpha_i T_i w_i}

其中 $w_i$ 为高斯2D投影权重


评估流程(以Shiny Blender数据集为例)

步骤1:训练原始3DGS模型

  • 输入:多视角图像(含相机位姿)
  • 输出:优化后的高斯参数 ${P_i, \Sigma_i, \alpha_i, \text{SH}_i}$

步骤2:派生法线场

1
2
3
4
5
6
7
8
9
10
11
12
13
for each gaussian i:
# 分解协方差矩阵
eigvals, eigvecs = torch.linalg.eigh(Σ_i)

# 找到最小特征值索引
min_idx = torch.argmin(eigvals)

# 法线 = 对应特征向量
n_i = eigvecs[:, min_idx]

# 朝向修正 (指向相机)
if dot(n_i, view_dir) > 0:
n_i = -n_i

步骤3:渲染法线图像

  • 使用3DGS渲染器,将 $\mathbf{n}_i$ 作为属性输入
  • 输出:法线图 $I_{\text{normal}}^{\text{pred}} \in \mathbb{R}^{H \times W \times 3}$

步骤4:计算法线MAE

1
\text{MAE} = \frac{1}{|\mathcal{M}|} \sum_{(u,v) \in \mathcal{M}} \cos^{-1} \left( \mathbf{n}_{uv}^{\text{pred}} \cdot \mathbf{n}_{uv}^{\text{gt}} \right)
  • $\mathcal{M}$:物体掩码区域(忽略背景)
  • $\mathbf{n}^{\text{gt}}$:Blender生成的地面真值法线

误差来源分析

1. 几何表示缺陷

问题类型 导致误差 示例场景
体积嵌入 2-5° 高斯中心偏离表面
各向异性失真 5-10° 薄结构(杯壁)
多表面干扰 8-15° 物体相交处

2. 派生策略局限

  • 最短轴假设失效

    • 球体表面:有效(误差≈3°)
    • 锐利边缘:失效(误差>15°)
  • 混合伪影
    透明物体混合时法线插值失真

3. 数据统计(Shiny Blender)

场景 平均MAE 最大MAE 高频区域MAE
Ball 4.2° 18.7° 7.3°
Car 11.5° 43.6° 24.1°
Helmet 8.9° 32.8° 15.7°
平均 12.7° 38.4° 18.2°

与显式法线方法的对比

方法 法线来源 优点 缺点
原始3DGS 协方差矩阵特征分解 无需额外计算 几何噪声导致法线抖动
DeferredGS SDF网络蒸馏 表面连续性强,精度高 需联合训练SDF
GaussianShader 深度图梯度计算 符合视觉直观 深度噪声放大法线误差

原始3DGS的12.7° MAE本质是几何表示不完善的副产品:

  • 高斯椭球是体积代理,非真实表面
  • 协方差优化目标为颜色拟合,非法线精度

附:法线可视化对比

  1. 真值:Blender生成的光滑法线
  2. 原始3DGS:噪点多,边缘断裂(红色框)
  3. DeferredGS:细节完整,符合表面连续性

采用延迟渲染(Deferred Shading)的核心动机

解决前向着色(Forward Shading)在光照变化下的混合伪影问题,并实现材质-光照解耦。原始3DGS的前向着色将光照计算嵌入高斯属性的优化中,导致以下问题:

  1. 混合伪影:光照变化时,几何属性(如不透明度)在原始光照下优化,重新着色后高斯边界处出现颜色不连续。
  2. 耦合表示:球谐函数(SH)综合编码材质与光照,无法独立编辑。
  3. 反射建模不足:SH的低频特性难以捕捉高频镜面反射。

延迟渲染通过解耦几何/材质存储与光照计算,将渲染分为两阶段:

  1. 几何通道(G-Buffer生成):光栅化几何与材质属性到屏幕空间缓冲区。
  2. 着色通道:基于G-Buffer和独立光照模型(如环境贴图)进行像素级着色。

这种架构避免了前向管线的缺陷,并为动态重光照和材质编辑提供基础。


🔍 两篇论文的延迟渲染实现差异

以下两篇论文虽均采用延迟渲染,但在目标、技术路径与适用场景上存在显著区别:

⚙️ 1. DeferredGS [Wu et al.]

核心目标:实现几何-材质-光照的完全解耦以支持场景编辑
关键技术

  • 材质模型
    • 为每个高斯定义物理材质参数:漫反射反照率($k_d$)、粗糙度($r$)、镜面反照率($k_s$),替代SH。
    • 支持物理着色(PBR):基于迪士尼BRDF模型分离漫反射与镜面项。
  • 几何优化
    • SDF蒸馏法线:联合训练符号距离场(SDF)网络,强制高斯法线对齐SDF零水平集,提升表面连续性。
  • G-Buffer设计
    • 完整缓冲区:位置($P$)、法线($N$)、$k_d$、$r$、$k_s$、不透明度($\alpha$)。
  • 编辑支持
    • 重光照:直接替换环境贴图。
    • 几何编辑:通过网格代理的ARAP变形调整高斯位置与法线。
  • 性能
    • 约30 FPS@800×800(NVIDIA 3090),训练需3–4小时。

2. 3D Gaussian Splatting with Deferred Reflection [Ye et al.]

核心目标高效渲染高质量镜面反射,保持原始3DGS的实时性。
关键技术

  • 材质模型
    • 简化参数:保留SH表示基础色(含漫反射与粗糙反射),新增标量反射强度($r_i$)控制环境贴图混合权重。
    • 反射计算:$C_{\text{final}} = (1-R) \cdot C_{\text{base}} + R \cdot E(\text{reflection_dir})$。
  • 几何优化
    • 法线传播策略:将高反射强度高斯($r_i > 0.1$)膨胀1.5倍,使其覆盖邻近高斯,传播正确法线方向。
  • G-Buffer设计
    • 最小化缓冲区:基础颜色($C$)、法线($N$)、反射强度($R$)。
  • 反射优化
    • 颜色破坏(Color Sabotage):对非反射高斯添加颜色噪声,防止基础色过拟合干扰反射发现。
  • 性能
    • 渲染速度≈原始3DGS(251 FPS合成场景/80 FPS真实场景)。

💎 核心区别总结

下表概括两篇论文的核心差异:

维度 DeferredGS 3DGS with Deferred Reflection
核心目标 场景解耦与编辑(材质/几何/光照) 高效渲染高质量镜面反射
材质表示 物理参数($k_d$, $r$, $k_s$) SH基础色 + 反射强度标量 $r_i$
法线来源 SDF网络蒸馏 高斯最短轴 + 法线传播策略
G-Buffer 6通道($P$, $N$, $k_d$, $r$, $k_s$, $\alpha$) 3通道($C$, $N$, $R$)
编辑能力 支持重光照、几何变形、纹理编辑 仅优化反射效果,不支持场景编辑
渲染速度 ~30 FPS (NVIDIA 3090) ≈原始3DGS(>200 FPS)
适用场景 影视特效、虚拟产品设计 实时AR/VR、游戏引擎

🌐 技术演进意义

两项工作代表了3DGS向可编辑性物理真实性演进的两条路径:

  1. DeferredGS 通过引入传统渲染管线的材质通道(Material Pass),弥合了可微渲染与物理编辑的鸿沟,为工业级内容创作提供基础。
  2. 3DGS-DR 以最小开销提升反射质量,证明延迟渲染可兼容3DGS的实时性优势,推动其在动态光照场景(如车载AR-HUD)落地。

未来方向包括结合分布式计算支持城市级场景、光学模型解决透明物体折射,以及生成式先验辅助弱纹理区域重建。