Activision 大规模全局光照系统

Large-Scale Global Illumination at Activision


背景与挑战

项目背景

  • 该系统服务于 《使命召唤》(Call of Duty) 系列,尤其是 Warzone(战争地带) 等大地图模式
  • 核心挑战:在 大规模场景 中实现 60fps 实时全局光照,同时需跨越 多代硬件平台

可扩展性矛盾

  • 预计算光照(Pre-computed Lighting) 是引擎的核心依赖——大地图 + 60fps + 多硬件代际的前提下,实时计算 GI 不现实
  • 但同时需要控制 下载包体大小 以保证用户体验
  • 场景规模持续增长(如 Blackout 模式、Warzone 模式支持 100+ 玩家同时竞技),与小包体目标形成直接冲突

演讲路线图

  1. 光照的采样与表示方式(Irradiance Volumes)
  2. 球谐函数(Spherical Harmonics)的通用编码方案
  3. 预计算光照数据的高质量压缩新方法

Warped Irradiance Volumes(变形辐照度体积)

基本概念:Irradiance Volume(辐照度体积)

  • 场景被划分为 体素(Voxel) 网格,每个体素存储该位置的 辐照度(Irradiance) 信息
  • 辐照度以 方向性基函数(如 球谐函数 / Spherical Harmonics )编码,使得可以在场景任意点重建 方向性辐照度
  • 优势
    • 提供 无缝统一 的光照方案
    • 静态几何体、动态几何体、体积雾、粒子 都能良好适配

密集体积的可扩展性问题

  • 使用 密集(Dense)3D 体积 不可扩展——内存占用会严重限制体积分辨率
  • 常见解法是引入 自适应性(Adaptivity)
    • 单层/多层空间层级结构(如八叉树)
    • 哈希查找(Hash Lookup)
  • 但这些方案需要注意 层级边界/块边界处的连续性重建,否则会出现接缝(seam)
    • 虽然技术上不难解决,但会带来额外的 计算或内存开销

Activision 的方案:Domain Warping(域变形)

核心思路不是用空间层级结构,而是 对辐照度体积的空间域进行变形(Warp),使其自适应地包裹场景中细节密集的区域。

具体流程

  1. 射线探测深度范围:从场景 上方和下方 发射探测射线(Feeler Rays),获取地图的 深度边界(Depth Bounds)
  2. 识别稀疏细节区域:根据上下射线的命中结果,确定场景中实际需要高精度光照的区域(如森林、树木等),得到一个 细节遮蔽区域(图中黄色区域)
  3. 归一化高度查找:在做体积查找时,计算每个点的 归一化高度值(Normalized Height / Bar Height),然后执行常规的 3D Volume Texture Lookup
  4. 平滑高度变化:对高度变化进行平滑处理,避免突变,从而 消除变形伪影(Warping Artifacts)

关键优势

  • 自适应高度方向分辨率:体积被"挤压"到有几何细节的地方,无细节的空旷区域被压缩,资源利用率高
  • 重建始终连续:因为是连续的域变形而非离散的层级拼接,不存在块边界接缝问题
  • 实现简洁:不需要维护复杂的层级结构、不需要在层级间做特殊的混合/插值处理
  • 查找操作本质上只是一次 标准 3D 纹理采样,硬件友好、开销极低

概念总结图示

传统方案:Dense Volume → 内存爆炸
         Adaptive Hierarchy → 边界接缝 + 额外开销

Activision 方案:
  场景高度空间 → [Feeler Rays 探测] → 归一化高度映射 → Warped Volume
  ↓
  连续域变形 = 自适应分辨率 + 无接缝 + 低查找开销

关键术语速查

术语含义
Irradiance Volume将场景划分为 3D 体素网格,每个体素存储辐照度的方向信息
Spherical Harmonics (SH)球谐函数,用于紧凑编码球面上的方向性信号(如辐照度)
Voxel体素,3D 空间中的离散采样单元
Adaptivity自适应性,根据场景复杂度动态调整分辨率
Domain Warping域变形,通过非线性映射将体积空间集中到细节区域
Feeler Rays探测射线,用于从上下方向测量场景的高度/深度范围
Normalized Height归一化高度,将实际高度映射到 [0,1] 范围用于纹理查找
Pre-computed Lighting预计算光照,离线烘焙后在运行时直接读取的光照数据

体积光照采样中的漏光问题与解决方案


朴素体积采样的根本问题

漏光伪影(Light/Darkness Leaking)

  • 对每个 体素(Voxel) 随机选取一个位置,再随机选取一个方向,发射 Final Gather 射线 来积累辐照度
  • 结果:场景中到处出现 亮光泄漏暗影泄漏 的伪影
  • 根本原因体素分辨率几何特征尺寸 之间的 不匹配(Mismatch)
    • 一个大体素可能同时覆盖建筑外墙和室内空间,导致室外的亮光"渗入"室内,或室内的暗影"渗出"到室外

直观解释

以一栋带门的建筑为例:

  1. 大体素的中心落在建筑边缘处,同时覆盖室内和室外区域
  2. 在该体素范围内随机采样位置 → 有的采样点在室外(命中天空穹顶 → 亮值),有的在室内(命中屋顶 → 暗值)
  3. 蒙特卡洛估计将所有样本 等权平均,得到一个 既非室内也非室外 的混合值
  4. 这个"半亮半暗"的结果在重建时产生明显的视觉错误

传统解决方案及其局限

方案原理局限
室内/室外分离体积将室内和室外分配到不同的体积中,防止交叉采样需要美术手动标记区域;对 非方盒形状(如 V 形屋脊)需要大量分割平面,工作量大
法线感知重建在重建辐照度时考虑表面法线方向,过滤掉不合理方向的贡献只是缓解症状,未解决根因——体素与几何的分辨率不匹配依然存在

基于可见性的样本验证(Visibility-Based Sample Validation)

核心思想

并非所有采样位置对最终结果同等重要。我们拥有 先验知识

  • 玩家/摄像机 更大概率 处于室外(开阔区域)
  • 这构成了一个关于摄像机位置的 先验概率分布(Prior Distribution)
  • 将这个先验概率模型融入采样过程,对样本进行 有效性筛选

算法流程

第一步:生成候选采样点

  • 在体素内生成一组 候选 3D 位置(与朴素方法相同)

第二步:可见性验证射线(Visibility Validation Rays)

对每个候选采样点,向周围发射一组 验证射线

  • 室内样本(如位于建筑内部):验证射线很快就会命中附近的墙壁/天花板 → 命中距离很短
  • 室外样本(如位于屋顶上方):验证射线命中距离 非常远,甚至直接看到天空

第三步:基于命中距离的筛选

  • 设定一个 固定距离阈值(Threshold)
  • 验证射线的命中距离 大于阈值 → 样本标记为 有效(Valid)
  • 验证射线的命中距离 小于阈值 → 样本标记为 无效(Invalid) ❌ → 丢弃

第四步:仅使用有效样本进行光照计算

  • 对每个 有效样本(绿色样本) 发射方向性射线,收集辐照度
  • 按照 三线性权重(Trilinear Weighting) 将贡献 溅射(Splat) 到受影响的体素中心

流程可视化

候选样本 → [可见性验证射线] → 命中距离判定
                                  ↓
                    ┌─────────────┴─────────────┐
                    ↓                           ↓
              命中距离 > 阈值              命中距离 < 阈值
              → 有效样本 ✅                → 无效样本 ❌(丢弃)
                    ↓
           从有效样本发射方向性射线
                    ↓
           三线性溅射到体素中心

效果对比

场景特征朴素采样可见性验证采样
屋顶区域严重的亮光/暗影泄漏基本消除 所有泄漏
门洞/窗户下方错误的混合光照保留正确的阴影细节——有可见性的地方有光,该暗的地方暗
建筑外壁周围丑陋的暗色斑块暗色斑块 完全消除
狭窄遮蔽区域不可控仍然保持 合理的阴影效果
残余噪声结构性漏光伪影仅剩 蒙特卡洛噪声(随机噪声,非结构性错误)

方法本质

  • 该方法利用 "大可见区域 = 更可能是玩家所在位置" 的先验,将采样偏向于对最终渲染结果 真正有贡献 的区域
  • 不需要美术手动标记室内/室外,也不依赖几何法线——是一种 自动化、数据驱动 的漏光修复方案

球谐函数与低阶物理合理性问题


球谐函数(Spherical Harmonics)回顾

  • 球谐函数(SH)球面上有限能量函数的正交归一化基底
  • 在图形学中广泛用于紧凑编码 方向性辐照度/辐射度信号

低阶 SH 投影的核心问题

无约束最小二乘投影的缺陷

当将高阶 SH 信号(或连续球面信号)通过 无约束最小二乘法(Unconstrained Least Squares) 投影到 低阶 SH 基底 时,会产生两类严重问题:

振铃伪影(Ringing Artifacts)

  • 球谐函数的低阶截断本质上是 带限近似(Band-limited Approximation)
  • 对于包含尖锐特征(如硬阴影边界、点光源方向)的信号,截断会引发 吉布斯现象(Gibbs Phenomenon)——在不连续点附近出现振荡
  • 在辐照度重建中表现为 局部出现负值(物理上不可能的辐照度)

颜色偏移(Color Shift)

  • 不同颜色通道的 SH 系数被独立截断
  • 截断误差在各通道上不同步,导致重建出的方向性光照出现 原信号中不存在的颜色
  • 例如:参考辐射度中没有红色成分,但低阶 SH 重建后却出现了 明显的红色偏移

示例说明

  • 参考信号:二阶 SH(L2)编码的辐射度
  • 降阶操作:通过正交基直接 丢弃二阶基函数,保留一阶 SH(L1)
  • 结果
    • 球面上出现 负值区域(non-negative 约束被违反)
    • 出现不应存在的 颜色偏移
    • 最终结果 不满足物理合理性(Physically Plausible)

问题总结

根本矛盾:SH 的无约束投影是纯数学操作(最小化 误差),但 物理光照信号必须满足非负性约束。数学最优解 ≠ 物理合理解。


关键术语速查

术语含义
Light Leaking由于体素分辨率不足,光照信息跨越几何边界错误传播
Final Gather Ray从采样点发射的射线,收集来自场景的间接光照贡献
Trilinear Splatting将采样贡献按三线性插值权重分配到周围 8 个体素中心
Visibility Validation通过发射验证射线判断采样点是否处于"开阔"区域的预筛选步骤
Prior Distribution先验概率分布——此处指摄像机更可能处于室外/开阔区域的假设
Ringing ArtifactsSH 低阶截断引起的振荡伪影,类似吉布斯现象
Color ShiftSH 投影误差导致各颜色通道不一致,产生原信号中不存在的颜色
Physically Plausible物理合理性——辐照度/辐射度必须为非负值

球谐函数的去振铃方法与空间域表示


振铃伪影(Ringing Artifacts)的两类经典修复方案

方案一:窗函数缩减高阶系数(Windowing)

  • 核心思路:将高阶 SH 系数 向零收缩(Shrink toward zero),使得重建函数保持 非负性(Non-negativity)
  • Pike & Sloan 方法:使用搜索例程找到 最小窗系数(Minimal Window Coefficient)
  • 对于 线性 SH(L1),该问题存在 简单的解析解

方案二:修改重建方式(Modified Reconstruction)

  • Habel 方法:在 方向性分量(Directional Component)非方向性分量(Non-directional Component) 之间进行插值,确保满足非负性
  • 局限
    • 基本 只适用于线性 SH,推广到更高阶并不直观
    • 非负性约束本身可能不够——即使函数非负,仍可能出现 颜色偏移/失真(Color Distortion)

非负性约束的不足

  • 应用窗函数后,辐照度函数确实变为球面上的 非负函数
  • 但在球面某些区域仍然可观察到 红色偏移(Red Color Shifts) 等颜色失真
  • 这说明仅约束非负性是不够的——需要更 通用的约束(如 色彩空间边界约束,类似 Temporal AA 中的颜色裁剪/Clamping 思想)

从频率域到空间域:为什么需要空间域表示

问题本质

  • SH 展开本质上是 频率域表示(Frequency Domain Representation)
  • 每个 SH 基函数在 整个球面上具有全局支撑(Global Support)
  • 因此,很难对 SH 系数施加 逐点约束(Pointwise Constraints),如"某方向上的辐照度值必须落在某个色彩空间范围内"

频率域表示(回顾)

目标函数 被展开为 SH 基函数的线性组合:

其中系数通过 内积 获得(因为 SH 基是 正交归一 的):

空间域表示(Spatial Domain Representation)

设想一种不同的表示方式:

  • 系数不再是 SH 系数,而是目标函数在 一组固定球面点 处的 函数值
  • 基函数 是某种待确定的 对偶基函数(Dual Basis Functions)
  • 这种表示的 核心优势:系数就是函数值本身 → 直接对系数施加约束 = 直接对函数值施加约束 → 颜色空间约束变得自然而简单

再生核(Reproducing Kernels):连接两种表示的桥梁

再生核的定义

对于球面上的固定点 ,定义 再生核函数(Reproducing Kernel)

即:将所有 SH 基函数在 处的值逐项相乘后求和。

再生性质(Reproducing Property)

含义:目标函数 与关于点 的再生核做内积,恰好得到 处的函数值

这一性质是整个空间域表示的数学基础。

与加法公式的关系

利用 球谐函数加法定理(Addition Theorem),可以直接看出:

其中 勒让德多项式 之间的夹角。

因此,每个 阶的再生核本质上就是一个 Zonal Harmonic(带谐函数)——以 方向为轴的旋转对称函数。


基与对偶基的构建

基向量集合

  • 选取球面上 一组不同的方向
  • 对应的再生核 构成基向量
  • 线性无关条件:只要选取的方向 互不相同,即可保证线性无关 → 构成一组 基(Basis)

恰好完备 vs. 超完备

情况基向量数 = SH 系数数基向量数 > SH 系数数
名称基(Basis)框架(Frame)
对偶基确定方式双正交条件(Bi-orthogonality) 唯一确定使用 典范对偶(Canonical Dual)

典范对偶(Canonical Dual)—— 超完备情况

定义 核矩阵(Kernel Matrix)

  • 将每个基向量 的 SH 系数作为列向量,排列成矩阵

由于超完备, 为共轭转置/转置)是 可逆的

典范对偶 定义为:

这是超完备框架下对偶基的一个 合理且唯一的规范选择


两种表示之间的变换算子

频率域 → 空间域

  • :SH 系数向量(频率域表示)
  • :函数在各采样点 处的值向量(空间域表示)
  • (核矩阵的转置/共轭转置):频率域 → 空间域 的变换算子

空间域 → 频率域

  • :对偶基矩阵
  • 作用:从空间域函数值 恢复 SH 系数

变换流程总结

空间域表示 y = [f(x₁), f(x₂), ..., f(xₙ)]ᵀ
         ↕  (K* 和 K̃ 构成一对变换算子)
频率域表示 c = [c₀, c₁, ..., cₗ]ᵀ  (SH 系数)

关键意义

  • 空间域 中施加约束(如颜色裁剪)→ 操作直观,约束的就是函数值本身
  • 通过变换算子 转回频率域 → 得到满足约束的 SH 系数
  • 这一对变换算子是后续 去振铃/去色偏算法 的核心工具

核心思路总结

问题链:
  SH 投影 → 振铃/负值 → 窗函数修复 → 非负了但仍有颜色失真
                                        ↓
                              需要更通用的逐点约束(如色彩空间约束)
                                        ↓
                              但 SH 是频率域表示 → 逐点约束难以直接施加
                                        ↓
                              引入再生核 → 建立空间域表示
                                        ↓
                              系数 = 函数值 → 约束直接作用于函数值
                                        ↓
                              频率域 ↔ 空间域变换算子完成桥接

再生核希尔伯特空间去振铃与光照数据压缩


基于再生核希尔伯特空间(RKHS)的色彩空间约束去振铃

目标

  • 不仅消除负值(非负性约束),还要消除 颜色偏移/失真(Color Distortion)
  • 引入 色彩空间边界框约束(Color Space Bounding Box Constraint),确保 SH 投影在整个球面上的重建值都落在合理的颜色范围内

具体步骤

  1. 计算参考辐照度函数的统计量:取原始辐照度函数的 均值颜色(Mean Color)最大颜色值(Max Color)
  2. 色彩空间选择:在 YCoCg 色彩空间 中执行约束
    • 原因:YCoCg 能很好地 去相关化(Decorrelate) 颜色通道,使各通道可以独立约束
  3. 构造约束边界框:要求 SH 投影的重建值在所有采样点上都位于该 色彩空间边界框
    • 这个边界框实际上存在于 空间中( 为球面上的采样点数)

效果对比

方法结果
窗函数(Windowing)消除负值,但仍有 红色偏移 等颜色失真
色彩空间边界框约束完全消除红色偏移,与参考二阶 SH 非常接近

交替投影法(Method of Alternating Projections)

核心思想

  • 可行域(Feasible Region) 在空间域中是一个 凸集(Convex Set)——它是多个半空间的交集
  • 该凸集位于 为空间域采样点数量)
  • 利用 两个凸集之间的交替投影 来迭代求解

算法流程

输入:目标信号的 SH 系数向量 c_k

循环:
  1. [SH 域 → 空间域]
     使用核矩阵的伴随(Adjoint of Kernel Matrix)将 c_k 变换到空间域
     → 得到各采样点上的函数值

  2. [空间域投影 — 关键步骤]
     对空间域中的函数值施加约束投影算子
     → 对于边界框约束:投影算子 = Clamp 函数(裁剪到边界框范围内)

  3. [空间域 → SH 域]
     使用对偶核矩阵(Dual Kernel Matrix)将裁剪后的值变换回 SH 域
     → 得到下一次迭代的 SH 系数 c_{k+1}

直到收敛

收敛性保证

  • 两个凸集上的交替投影 必定收敛 到交集中的某一点
  • 交集 非空 是已知的:均值颜色(DC 分量) 本身就满足所有色彩空间约束,所以可行解一定存在

关键优势:空间域投影极其简单

约束类型空间域投影算子
色彩空间边界框clamp(value, min, max) — 简单裁剪
非负性约束max(value, 0) — 另一种简单裁剪
其他凸约束只需修改投影算子即可扩展

推广到通用凸约束

框架的通用性

再生核基变换允许我们将 任意凸约束 在空间域中以简单、实用的方式表达:

  • 修改投影算子即可——算法主体不变
  • 然后用相同的交替投影迭代来求解

重要应用:域约束(Domain Constraints)

半球约束(Hemispherical Constraint)

  • 场景:我们只关心 可见半球 上的辐照度精度,背面无所谓
  • 做法:约束 SH 投影在可见半球上尽可能匹配参考函数
  • 效果
    • 可见半球上的重建质量 显著优于 简单的线性 SH 最小二乘投影
    • 背面质量可能更差,但 永远不会被看到

球冠约束(Spherical Cap Constraint)

  • 类似半球约束,但约束域为任意球冠(Spherical Cap)
  • 传统做法 需要求解拉普拉斯算子在复杂域上的 特征函数,非常困难
  • RKHS 方法:完全不需要这些——只需在空间域中对对应点施加约束即可

最大优势:输出仍是标准 SH 系数

  • 无论施加什么约束,最终得到的 (系数向量)始终是标准的 SH 系数向量
  • 不需要从"半球特殊基"或"球冠特殊基"做基变换
  • 可以直接与其他 SH 运算(旋转、卷积等)组合使用

光照数据压缩:动机

场景案例

  • 《使命召唤:黑色行动 冷战》 单人战役地图
  • 关闭材质纹理后可清晰看到光照贡献
  • 进一步关闭直接日光 → 只剩 预计算光照数据,可看出它对场景渲染的 决定性作用
    • 体积雾、粒子、所有几何体都依赖该预计算数据

内存问题

  • 在场景上铺设一个 合理分辨率线性 SH RGB 辐照度体积
  • 原始数据量:约 1.5 GB
  • 这对于游戏运行时完全 不可接受 → 必须进行高效压缩

相关工作:线性降维(Linear Dimensionality Reduction)

问题设定

  • 高维目标数据:每个数据点维度 可能在 10 到 300–400 之间
  • 目标:用少量基函数的线性组合来紧凑表示

其中:

  • 基函数(Basis Functions),与数据同维
  • 基系数(Basis Coefficients),标量
  • :分量数,需要 远小于 数据维度

关键要求

  1. 重建误差 在某种范数下足够小
  2. 分量数 远小于数据维度 ——这才是真正的"降维"

意义

这是后续光照数据压缩方法的 数学基础——将高维的 SH 辐照度数据投影到低维子空间中,实现内存的大幅缩减,同时保持视觉质量。


阶段性总结

讲座至此覆盖的三大模块:

1. 采样与表示  → Warped Irradiance Volumes + 可见性验证采样
2. 质量修复    → RKHS 框架下的通用凸约束去振铃
                  (色彩空间边界框 / 非负性 / 半球约束等)
3. 数据压缩    → 动机已明确(1.5GB → 必须压缩)
                  下一步:线性降维技术用于光照压缩

聚类不连续性问题与移动基分解(MBD)


聚类不连续性问题(Cluster Discontinuity Problem)

问题展示:平滑向量场的压缩示例

以一个平滑向量场作为输入数据,对比两种经典压缩方法:

方法一:分块 PCA(Blockwise PCA)

  • 将输入空间域 切分为固定大小的块(Fixed-size Blocks)
  • 对每个块独立计算 PCA 基(Principal Component Analysis Basis)
  • 各块的 PCA 基 相互独立,因此在 块边界处出现不连续伪影

方法二:聚类 PCA(Cluster PCA)

  • 不依赖空间域分块,直接对 数据向量本身 进行聚类
  • 使用 到子空间的距离(Distance to Subspace) 作为度量,将数据向量分入 相干聚类(Coherent Clusters)
  • 为每个聚类计算独立的基
  • 优势:不假设任何特定的空间聚类形状,能更好地 自适应数据分布
  • 问题依旧:聚类之间仍然 相互独立 → 聚类边界处出现 不连续伪影

根本原因

  • 两种方法中的聚类 互不通信(Not Cooperating/Communicating)
  • 重建模型试图优化整体质量,但由于聚类间没有信息交换,无法消除边界处的跳变
  • 这不是线性降维方法的特有问题——它是 广泛存在于各类相关方法中的基础性问题(详见 EGSR 2021 论文)

核心启示

要从 第一性原理(First Principles) 出发,将 插值性(Interpolation)平滑性条件(Smoothness Condition) 直接内建到模型中。


移动基分解(Moving Basis Decomposition, MBD)

从线性基分解到移动基分解

起点:经典线性基分解

给定一组 高维数据向量,用线性组合来近似目标数据:

其中 是标量系数, 是基向量。

关键创新:让系数和基向量都成为空间位置的函数

假设目标函数是定义在某个 低维域(如 )上的 逐片平滑函数(Piecewise Smooth Function)

将系数和基向量都写成 空间位置的函数

然后用 核展开(Kernel Expansion) 分别表示 移动系数 移动基向量

其中:

  • 系数核函数(Coefficient Kernels) — 数量多,空间支撑小
  • 基向量核函数(Basis Kernels) — 数量少,空间支撑大
  • , :对应的待优化参数

核函数重叠:消除不连续性的关键

属性说明
基向量核函数互相重叠相邻的基向量核在空间上有交集 → 允许它们在重叠区域 共享信息 → 消除聚类边界
系数核函数互相重叠相邻系数核在空间上有交集 → 平滑过渡
一个基向量核覆盖多个系数核一个高维基向量被大量低维系数共享 → 压缩效率的来源

压缩原理

  • 基向量:高维但数量少(少量大支撑核函数)
  • 系数:低维但数量多(大量小支撑核函数)
  • 只需存储少量高维基 + 大量低维系数 → 高效压缩

简单示例:1D 区间 上的帽函数核

选择最简单的 帽函数核(Hat Kernels),位于

  • 基向量核:
  • 系数核:同样为

将核展开代入重建公式后展开:

由于 都是 的线性函数,它们的乘积产生 的二次项

线性帽函数核 → 二次重建模型

这说明 MBD 的表达能力 严格强于 简单的线性基分解——可以视为线性基分解的 广义化(Generalization)

MBD 的完整定义

MBD 由两组序列定义:

  1. 系数核序列 及其对应参数
  2. 基向量核序列 及其对应参数

MBD 的求解方法

优化目标

给定固定的目标函数和核函数,最小化空间域上的 逐点重建误差

其中 是 MBD 的重建结果, 是空间域。

与独立聚类方法的区别

  • 独立聚类方法中,每个聚类的优化是 完全解耦
  • MBD 中,由于核函数重叠,聚类之间存在 交互(Interaction) → 这是一个 全局优化问题

稀疏结构——可扩展性的关键

  • 尽管是全局优化,但问题具有 非常稀疏的块结构(Sparse Block Structure)
  • 稀疏性来源:核函数具有 紧支撑(Compact Support) → 每个核只与少数邻居重叠,而非与所有核交互
  • 这是 选择核函数时的关键设计考量

数值求解器

组件具体方法
优化器拟牛顿法(Quasi-Newton Solver),使用 对角海森近似(Diagonal Hessian Approximation)
梯度计算梯度和对角海森元素有 简洁的表达式,可解析求解或通过 蒙特卡洛积分(Monte Carlo Integration) 数值求解
可扩展性可靠地扩展到 超过 1 亿个未知参数 的问题规模
求解时间通常只需 几分钟 即可收敛

求解得到的结果是基向量核参数 和系数核参数


效果对比:重新审视聚类不连续性问题

全聚类数量对比

方法表现
Blockwise PCA块边界处明显的不连续伪影
Cluster PCA聚类边界处明显的不连续伪影
Moving Basis Decomposition与参考结果几乎完全一致,无任何可见边界伪影

将聚类数量减半后的对比

方法表现
Blockwise PCA质量明显下降,伪影加剧
Cluster PCA质量明显下降,伪影加剧
MBD基本不变,仍然与参考非常接近

数值指标

  • MBD 在 相对均方误差(Relative MSE)全面优于 其他对比方法
  • 不仅视觉上接近目标函数,数值上也 收敛到最低误差

核心要点总结

问题:聚类独立性 → 边界不连续

传统方法:
  Blockwise PCA:空间固定分块 + 独立PCA → 块边界跳变
  Cluster PCA:数据驱动聚类 + 独立PCA → 聚类边界跳变

MBD 解决方案:
  让基向量和系数都成为空间位置的连续函数
  ↓
  通过重叠的核展开实现
  ↓
  核函数重叠 = 聚类间信息共享 = 平滑过渡
  ↓
  全局优化(稀疏块结构 → 可扩展)
  ↓
  结果:无边界伪影 + 最低MSE + 更高压缩效率

移动基分解(MBD)的压缩效果与实际应用


图像压缩对比示例

实验设置

  • 输入数据:RGB 图像
  • 压缩参数:64×64 像素的大块,每块仅 2 个基向量
  • 目的:在大块 + 少基向量这种"极端条件"下,突显聚类边界伪影的严重性

对比结果

方法视觉表现
分块 PCA(Blockwise PCA)块边界处出现 硬切割伪影(Hard Block Boundary Artifacts),非常刺眼
移动基分解(MBD)硬边界变成 平滑渐变过渡(Smooth Gradual Ramp),视觉上几乎不可见

关键观察:MBD 将离散的"硬边界"转化为连续的"软过渡",这正是核函数重叠带来的本质优势。


光传输数据压缩——MBD 的核心应用场景

输入数据结构

光传输数据由两部分组成:

  1. 直接光传输矩阵(Direct Light Transport Matrix)
  2. 间接光传输矩阵(Indirect Light Transport Matrix)——每个颜色通道独立

将二者 堆叠(Stack) 成一个 高维向量

输出

  • MBD 的基向量和系数
  • 重建时还原完整的光传输信息

对比方法

方法额外内存开销
分块 PCA(Blockwise PCA)聚类索引隐含在空间块位置中 → 无额外开销
窗口 PCA(Windowed PCA)同上
聚类 PCA(Cluster PCA)需要显式存储 聚类索引(Cluster Index)更多内存
移动基分解(MBD)聚类信息隐含在空间核函数中 → 无额外开销

重要提示:聚类 PCA 在相同基向量数下 实际占用更多内存,因为必须为每个数据点存储聚类归属索引。


直接光传输压缩结果

数值指标

  • 使用 4 个基向量 时,MBD 的绝对误差最低

视觉质量

方法聚类不连续伪影与参考解的接近程度
分块 PCA / 窗口 PCA / 聚类 PCA均存在明显的聚类不连续伪影有可见偏差
MBD无聚类伪影视觉与数值上均 非常接近参考解

间接光传输压缩结果

测试场景

  • 直接光照以一定角度照射场景,观察间接光照(弹射光)的重建质量

结果

  • MBD 在整个图像平面上的绝对误差依旧最低
  • 当基向量数量变化时,观察 相对 MSE(均方误差) 的变化:
    • MBD 与聚类 PCA 性能相当,但 MBD 不需要额外的聚类索引存储
    • 考虑到内存公平性,MBD 的性价比更优
  • 近景对比:MBD 无聚类不连续伪影,视觉和数值均接近参考解

基函数支撑尺寸的鲁棒性实验

实验设计

  • 逐步增大核函数/聚类的空间支撑尺寸(从 9×9×9 逐步增大)
  • 同时意味着 聚类数量减少(每个聚类覆盖更大的空间范围)

对比方法的表现

随着支撑尺寸增大:

  • 分块 PCA / 窗口分块 PCA:聚类不连续伪影 愈发严重
    • 在伪彩色误差图中清晰可见
    • 相对 MSE 数值也明显恶化
    • 伪影逐渐 主导整个画面

MBD 的表现

  • 误差数值略有增加,但 视觉质量几乎不变
  • 对支撑尺寸变化极其鲁棒(Robust)
  • 不会出现突然"弹出"的块状伪影

核心结论

MBD 对空间支撑尺寸的选择不敏感——即使参数选择不是最优,结果依然稳定。而对比方法一旦支撑尺寸增大,伪影会迅速恶化。


实际项目应用:《使命召唤:黑色行动 冷战》

压缩数据

指标数值
原始数据大小1.5 GB
压缩后每体素开销约 1 字节/体素
原始每体素开销48 字节/体素
压缩比约 40:1
存储内容完整的 RGB 线性 SH 辐照度(全方向性 RGB 辐照度)

重建方式

  • MBD 重建 逐像素、逐帧执行——完全实时

巧妙的维度混搭设计

这是 MBD 框架灵活性的最佳体现:

基向量核函数:2D

  • 回忆前面介绍的 变形辐照度体积(Warped Irradiance Volume)
  • 基向量核函数使用该变形体积的 2D 平面投影 作为空间域
  • 即:基向量核是二维函数 → 进一步降低内存占用

系数核函数:3D

  • 由于需要在整个 3D 空间中的任意位置 重建光照
  • 系数核函数使用 3D 帽函数(3D Hat Functions),对应体积纹理的 纹素重采样函数(Texel Resampling Functions)

框架灵活性

MBD 允许:
  ├── 基向量核函数 → 2D(平面投影)
  ├── 系数核函数 → 3D(体积纹理)
  ├── 不同核函数可以有不同的尺寸、形状、维度
  └── 求解器(Solver)无需修改 → 只需正确定义核函数即可

这意味着你可以根据数据特征自由选择 自适应基函数——不同维度、不同支撑大小——而整个优化框架保持不变。


Warzone 夜间地图展示

场景特点

  • 夜间地图 中存在 大量点光源和直接光源
  • 这些光源全部 烘焙到辐照度体积中

MBD 重建效果

  • 即使在包含大量点状光源的远景视角下,也能清晰还原光源分布
  • 体积的空间分辨率 足够高,能表达这些小型点光源
  • 关键性能优势
    • 远距离的大量小光源 不需要运行时动态灯光
    • 全部从预计算体积中重建 → 保持 60 FPS
    • 这种"远景大量光源"的场景如果用动态灯光实现,帧率根本不可能达标

最终效果总结

方面成果
压缩比~40:1(48 B → 1 B/体素)
质量无聚类伪影,逼近参考解
性能逐像素逐帧重建,60 FPS
灵活性2D 基核 + 3D 系数核混搭
鲁棒性对支撑尺寸参数不敏感
实际价值远距离大量光源无需动态灯光,彻底解决性能瓶颈

总结与闭幕致辞


三大核心贡献回顾

基于可见性的体积光照采样(Visibility-Based Sample Validation)

要点说明
核心视角采用 概率论观点(Probabilistic Point of View),引入观察位置的先验分布
优化目标最小化 期望观察位置上的重建误差(Reconstruction Error over Expected View Position)
关键洞察体素表示的 漏光问题是基础性的,无法根本解决——但通过考虑观察位置的先验分布,可以 极大地减轻漏光伪影
方法论启示不试图解决不可解的问题,而是 巧妙地绕过它(Side-step)

再生核希尔伯特空间(RKHS)约束 SH 投影

要点说明
核心框架利用 RKHS 将 SH 系数 变换到空间域,在空间域中施加约束
色彩空间约束超越单纯的非负性约束,引入 色彩空间边界框约束 → 消除颜色偏移
通用性可以编码 多种不同的凸约束(非负性、色彩空间、半球域约束等)
实用性实现简单,鼓励大家自行实验

移动基分解(Moving Basis Decomposition, MBD)

要点说明
本质现有线性基分解模型的 泛化(Generalization)
核心创新第一性原理(First Principles) 出发,将 插值性移动基向量 直接内建到模型中
与传统方法的根本区别传统方法:先降维,再事后修补伪影 → MBD:在优化问题中直接解决
聚类不连续性传统方法中独立聚类 无法协作重建 → MBD 通过核函数重叠让聚类 自然衔接
效果高维数据的 高效、无缝压缩(Efficient and Seamless Compression)

深入阅读:EGSR 2021 论文及演讲,详细讨论了相关方法与 MBD 的对比。