Gaussian Point Splatting: Scaling Real-Time Rendering for Large-Scale Scenes
Gaussian Point Splatting (GPS) 是一种随机渲染技术,旨在将 Gaussian splatting 扩展到包含数亿个 Gaussians 的场景中。通过将传统的渲染管线替换为一种从 Gaussians 中采样像素级、不透明点并使用 64-bit GPU atomics 进行 splatting 的方法,GPS 为原本在计算上难以实现的庞大数据集实现了实时性能。
High-Parallelism Rendering via GPU Atomics
Gaussian Point Splatting 通过将渲染过程视为一个随机采样问题来实现极高的可扩展性。系统不再处理场景中的每一个 Gaussian,而是从 Gaussians 中采样不透明点,并使用 64-bit atomics 将它们 splat 到 framebuffer 中。
这种方法允许将工作负载分布到数百万个 GPU 线程中,每个线程独立地进行 splatting。由于这些线程是独立运行的,该方法避免了标准 Gaussian splatting 通常伴随的繁重排序需求,而这通常是渲染管线中的主要瓶颈。
Solving the Opacity and Distribution Problem
由于多个点可能会 splat 到同一个像素,因此确定一个 Gaussian 需要采样多少个点以保持视觉保真度是一个非平凡问题。作者们将分布问题形式化并予以解决,以确保最终的渲染结果能够忠实于原始的 Gaussian splatting 模型。
为了进一步优化性能,系统采用了:
- Hierarchical Frustum Culling:移除落在相机视野之外的 Gaussians。
- Occlusion Culling:防止渲染被其他物体遮挡的 Gaussians。
Visual Trade-offs: Noise and Aliasing
虽然 GPS 实现了数亿个 Gaussians 的实时渲染,但它也引入了特定的视觉伪影。与传统 Gaussian splatting 相比,主要的区别在于引入了轻微的噪声和不同的 aliasing 表现。
社区讨论指出,这些伪影是基于 Monte Carlo 的采样方法性质所致。一些观察者注意到,交互式查看器表明可能需要较高的每像素采样数 (spp) 才能达到 3D Gaussian Splatting (3DGS) 的质量,有人建议 128 spp 可能对于达到同等质量是必要的。
Technical Insights and Community Perspectives
Hacker News 上的技术观察者就该方法的实现及其实现提出了几点看法:
"Their point splatting method is orthogonal to level-of-detail (LoD) rendering... so both point splatting and LoD could be combined in the future for an even greater performance gain."
其他讨论集中在硬件要求上,指出当前的实现需要 CUDA 和 NVIDIA GPUs。还有一个问题是,这种方法是否可以用于 AAA 游戏来替换传统的 3D 世界渲染,从而可能提供更可预测的性能特征。
Comparison to Other Techniques
Gaussian Point Splatting 与传统的 point splatting(一种 1990 年代的技术)和 mesh splatting 有所不同。虽然 mesh splatting 由于使用了三角形,在表示锐利特征方面可能表现更好,但 GPS 专注于大规模、开放世界规模场景的新视角合成的可扩展性。