Hotdry.

Article

高斯点云 Splatting 实时渲染管线:Tile-Based 光栅化与深度排序的硬件加速方案

解析 3D Gaussian Splatting 的 tile-based 光栅化管线,从 16×16 分块策略到 SnugBox/AccuTile 精确局部化算法,提供可落地的渲染优化参数与剪枝策略。

2026-06-04systems

引言:从 NeRF 到实时点云渲染的范式转移

神经辐射场(NeRF)在高质量新视角合成领域取得了突破性进展,但其基于 MLP 的连续表示需要昂贵的随机采样光线行进,导致训练和渲染速度受限。3D Gaussian Splatting(3D-GS)通过将场景表示为可微分的 3D 高斯点云,结合 tile-based 光栅化,在 1080p 分辨率下实现了 ≥30 FPS 的实时渲染,同时保持与 Mip-NeRF360 相当的视觉质量。

与传统点云渲染不同,3D-GS 的核心创新在于显式的高斯原语高效的 tile-based 光栅化管线的协同设计。每个 3D 高斯由位置 μ、各向异性协方差 Σ、不透明度 α 和球谐系数(SH)定义,通过投影到 2D 后进行 α-blending 渲染。这种方法避免了 NeRF 的体积光线行进开销,同时利用 GPU 的并行计算能力实现实时性能。

Tile-Based 光栅化的核心机制

分块策略与预排序

3D-GS 将屏幕划分为 16×16 像素的 tiles,这是权衡并行度与内存局部性的关键参数。渲染流程遵循以下步骤:

  1. 视锥剔除:仅保留 99% 置信区间与视锥相交的高斯,使用 guard band 剔除极端位置的高斯以避免投影协方差计算的不稳定性
  2. Tile 分配:计算每个高斯重叠的 tile 数量,为每个实例分配一个 64-bit key(低 32 位编码投影深度,高 32 位编码 tile ID)
  3. 全局排序:使用 GPU Radix sort 对高斯进行单次全局排序,避免逐像素排序的开销
  4. 范围标识:通过比较相邻元素的 tile ID,并行生成每个 tile 的高斯列表起止索引

这种设计的关键洞察是:预排序的近似深度顺序足以满足 α-blending 的可见性需求,当 splat 接近像素大小时,近似误差变得可忽略。

各向异性 Splatting 与可微分渲染

3D 高斯通过投影变换到 2D 图像平面。给定视图变换 W 和投影变换的雅可比矩阵 J,相机坐标系中的协方差矩阵 Σ′ 计算为:

Σ′ = J · W · Σ · W^T · J^T

为避免直接优化协方差矩阵导致非正定问题,3D-GS 将 Σ 分解为旋转矩阵 R(用四元数表示)和缩放矩阵 S:

Σ = R · S · S^T · R^T

这种参数化允许通过梯度下降独立优化旋转和缩放,实现各向异性高斯对复杂几何的紧凑表示。

渲染器采用前向 - 后向遍历策略:前向遍历时按深度顺序累积颜色和 α 值,当 α 达到饱和(接近 1)时提前终止;后向遍历时复用排序结果,从最后一个贡献像素的高斯开始反向遍历,通过存储的累积 α 值恢复中间透明度,计算各参数的梯度。

优化策略:精确局部化与剪枝

SnugBox 与 AccuTile:精确的 Tile 分配

原始 3D-GS 使用最大特征值 λ_max 估计高斯的 tile 范围,这种保守估计会导致大量冗余计算。Speedy-Splat 提出的 SnugBoxAccuTile 算法通过精确计算高斯与 tile 的交集显著提升性能:

SnugBox 算法计算高斯椭圆的四极值点(一阶导数为零处),构建紧密的轴对齐包围盒,将 tile 范围计算复杂度从 O (n) 降至 O (1)。

AccuTile 进一步扩展,沿包围盒的短边遍历,在每行 / 列中计算椭圆与边界的精确交点。核心洞察是:每行 / 列只需计算两个交点即可确定完整的 tile 范围。这种精确局部化可将渲染速度提升 6.71×,同时减少 10.6× 的原语数量。

自适应密度控制与剪枝

3D-GS 在训练过程中通过自适应密度控制优化高斯分布:

  • 克隆(Clone):对于视图空间位置梯度超过阈值 τ_pos(默认 0.0002)的小高斯,创建副本并沿梯度方向移动,用于填充欠重建区域
  • 分裂(Split):对于覆盖大范围的高斯,按因子 ϕ=1.6 分割为两个新高斯,用于处理过度重建

软剪枝(Soft Pruning) 在 densification 阶段集成敏感度评分,识别对重建误差影响最小的高斯;硬剪枝(Hard Pruning) 在 densification 后执行,可移除约 90% 的高斯而不显著降低视觉质量。剪枝评分基于投影高斯值 g_i 的梯度平方和,相比原始方法内存效率提升 36×。

可落地的工程参数清单

基于上述分析,以下是部署 3D Gaussian Splatting 实时渲染的关键参数配置:

参数类别 参数名 推荐值 说明
Tile 配置 Tile 大小 16×16 权衡并行度与内存局部性
剔除策略 置信区间阈值 99% 视锥剔除的保守度
密度控制 位置梯度阈值 τ_pos 0.0002 触发克隆 / 分裂的敏感度
密度控制 分裂因子 ϕ 1.6 控制高斯分裂后的尺寸
透明度 剔除阈值 ϵ_α 1/255 移除几乎透明的高斯
数值稳定 α 上限 0.99 防止数值溢出
数值稳定 累积 α 上限 0.9999 提前终止阈值
优化 学习率衰减 指数衰减 位置参数使用类似 Plenoxels 的调度
SH 训练 渐进式激活 每 1000 迭代 从零阶开始逐步激活高阶 SH

局限性与风险

尽管 tile-based 光栅化实现了实时性能,仍需注意以下工程风险:

  1. 深度排序近似:全局排序的近似深度顺序在特定视角可能产生可见性伪影,表现为突然的深度切换或闪烁
  2. 内存开销:大型场景训练时峰值 GPU 内存可达 20GB 以上,主要来自高斯参数的存储和排序缓冲区
  3. 未观察区域:在训练视角覆盖不足的区域,高斯可能退化为细长的各向异性形状,产生低质量重建
  4. guard band 剔除:简单的边界剔除可能导致大高斯在特定视角突然消失,需要更 principled 的剔除策略

结论

3D Gaussian Splatting 的 tile-based 光栅化管线通过预排序的全局深度管理各向异性 splatting自适应密度控制,在保持 NeRF 级别视觉质量的同时实现了实时渲染。Speedy-Splat 的 SnugBox/AccuTile 算法进一步证明了精确局部化的价值 —— 通过减少冗余计算而非牺牲质量来提升性能。

对于工程部署,建议采用渐进式优化策略:先使用标准 3D-GS 实现基线质量,再集成 SnugBox 进行 tile 分配优化,最后在训练后期引入剪枝策略压缩模型。这种分阶段方法可在保持视觉保真度的同时,将渲染速度提升 6-7 倍,模型大小压缩 10 倍以上。


参考来源

  • Kerbl et al., "3D Gaussian Splatting for Real-Time Radiance Field Rendering," arXiv:2308.04079, 2023
  • Hanson et al., "Speedy-Splat: Fast 3D Gaussian Splatting with Sparse Pixels and Sparse Primitives," CVPR 2025

systems

内容声明:本文无广告投放、无付费植入。

如有事实性问题,欢迎发送勘误至 i@hotdrydog.com