3D Gaussian Accelerated Ray Tracing: Fast training through particle-based backward propagation
Laurent Vit, Oliver Batchelor, Richard Green
cs.GR, cs.CV
2026-08-18
3DGART 把光线追踪版高斯渲染的反向传播从按像素累加梯度改成按基元累加,减少显存写入冲突和线程等待,训练速度在 Mip-NeRF 360 上比 3DGRT 快约四倍,画质同时变好。
3D Gaussian Splatting(3DGS)靠光栅化把高斯基元投影到屏幕再排序合成,速度快,但只能做屏幕空间近似,处理不好反射、折射、阴影这类需要真实光线传播的效果。Gaussian ray tracing 用真实的 ray-primitive 求交替代投影,精度更高,但训练极慢。这篇论文发现真正的瓶颈不是求交(ray traversal)本身,是反向传播的组织方式。现有实现按像素分配线程,同一个高斯基元往往被很多像素同时看到,这些像素线程要并发地把梯度写回同一组基元参数,靠 atomic 操作抢锁,大量线程被迫排队等待(thread serialisation)。论文把这个现象称为 pixel-centric backward propagation 的 atomic contention。
论文提出 3DGART,核心思路是把反向传播的组织单位从像素换成基元(primitive)。具体分三步:先给每个高斯算一个 conservative perspective-correct 的屏幕空间包围盒(screen-space AABB),确定哪些像素可能和这个基元相交;再按包围盒大小预先分配一块 intermediate buffer(论文称 LT buffer),按「基元优先、tile 其次、像素最后」的顺序存每次求交产生的累积颜色 L 和透过率 T;最后建一张 tile-primitive 映射表,让反向传播时每个线程负责一个 tile 内的一个基元,遍历这个基元覆盖的像素,把梯度累加在寄存器里,最后只做一次 atomicAdd 写回全局参数。原来「多个像素线程同时写一个基元」的 scatter 操作,变成「一个线程读多个像素、写一次」的 gather 操作,atomic 竞争大幅减少。tile 大小选 8×8,是负载均衡、聚合开销和 shared memory 占用之间的折中。论文还发现三阶 spherical harmonics 系数贡献了 59 次 atomic 操作里的 48 次,于是设计了一个 hybrid 方案:颜色梯度走 primitive-centric,其余项仍走 pixel-centric,用来换取显存。
所有实验用同一块 RTX 4090。原始训练速度对比中(不设光线求交上限,Gaussian kernel k=2,αmin=1/255):1.00M 基元时,per-pixel 版本要 44分08秒,primitive 版本 12分35秒,提速 3.51 倍;2.00M 基元时从 51分13秒降到 16分32秒,提速 3.10 倍。基元越多提速比越小,原因是单个基元覆盖的像素变少,atomic 竞争本来就没那么严重。组件拆解显示,per-pixel 方案里反向传播占单次迭代时间的 81%-86%,是绝对大头;换成 tile-primitive 后,反向传播比同规模的 per-pixel 反向快 7.3 倍(1.0M 基元)和 6.5 倍(2.0M 基元),已经压到和前向渲染差不多的量级。hybrid 方案能把 LT buffer 显存降到四分之一,速度比纯 primitive 方案慢约 1.5 倍。
跟 Mip-NeRF 360 上的 3DGRT(NVIDIA 提出的光线追踪基线)比较,3DGART 在 2.00M 基元设置下 PSNR 27.51 对 27.11,SSIM 0.820 对 0.809,LPIPS 0.211 对 0.214,训练时间 16分32秒对 62分21秒,三项质量指标都更好,训练时间约 3.8 倍差距,接近论文强调的「约 4 倍」。1.00M 基元设置下 3DGART 的 LPIPS 是 0.239,比 3DGRT 的 0.214 更差,只有 PSNR(27.31 对 27.11)占优。「提升质量」这个结论,更准确地说是在 2M 基元规模下才成立。
Ray tracing 相比光栅化的优势一直存在,精确的可见性排序、反射折射阴影这些效果理论上都能做,训练成本太高导致没人真去用。这篇论文没有改前向渲染的物理模型,只重排了反向传播的内存访问模式,就把训练时间从「不实用」拉到接近光栅化基线的量级(16分32秒对 3DGS 的 20分19秒)。ray-traced Gaussian 训练慢的锅,更多要算在系统实现上,不是算法本身注定要慢。这种改内存布局、不动算法的加速思路,对做 GPU 并行训练系统的工程团队有直接参考价值。
论文自己承认两点。一是当前的 perspective-correct 投影只支持标准透视相机,鱼眼镜头等强非线性投影模型不支持。二是 LT buffer 额外占显存,分辨率越高开销越大,hybrid 方案能省 4 倍显存但要牺牲部分速度,论文承认还没找到两全的方案。
论文表 2 里还有一处没被强调的细节:1.00M 基元设置下 3DGART 的 LPIPS 比 3DGRT 差,说明基元预算被压到和竞品同一量级时,质量优势并不稳固,「提速又提质」的结论主要靠拉高基元数(2.00M)换来。原始加速比(3-3.5 倍)和对 3DGRT 的加速比(约 4 倍)测的不是一回事:前者是同架构下 per-pixel 对比 primitive 的纯反向传播效率,后者混入了基元数量、Gaussian kernel、αmin 等一系列实现差异,不是单一变量的干净对比。实验只在单张 RTX 4090 上跑,没有验证反向传播的加速比在其他硬件架构上是否稳定。