XYZNOT

Papers · arXiv 2308.04079

3D Gaussian Splatting for Real-Time Radiance Field Rendering

Published cs.GRcs.CV arXivPDF

Read with translation and AI

Summary in three lines

  1. 🎯 Radiance field methods (like NeRFs) produce high visual quality but suffer from slow volumetric ray-marching and long optimization times, while fast grid-based methods compromise on quality or rendering speed.
  2. 🔧 Represent scenes explicitly with 3D anisotropic Gaussians initialized from sparse SfM points, optimize them with adaptive density control (cloning and splitting), and render via a visibility-aware, tile-based differentiable GPU rasterizer.
  3. 📈 Achieves state-of-the-art visual quality matching Mip-NeRF360 with real-time rendering speeds over 130–160 FPS at 1080p resolution and training times under an hour.

Abstract

Radiance Field methods have recently revolutionized novel-view synthesis of scenes captured with multiple photos or videos. However, achieving high visual quality still requires neural networks that are costly to train and render, while recent faster methods inevitably trade off speed for quality. For unbounded and complete scenes (rather than isolated objects) and 1080p resolution rendering, no current method can achieve real-time display rates. We introduce three key elements that allow us to achieve state-of-the-art visual quality while maintaining competitive training times and importantly allow high-quality real-time (>= 30 fps) novel-view synthesis at 1080p resolution. First, starting from sparse points produced during camera calibration, we represent the scene with 3D Gaussians that preserve desirable properties of continuous volumetric radiance fields for scene optimization while avoiding unnecessary computation in empty space; Second, we perform interleaved optimization/density control of the 3D Gaussians, notably optimizing anisotropic covariance to achieve an accurate representation of the scene; Third, we develop a fast visibility-aware rendering algorithm that supports anisotropic splatting and both accelerates training and allows realtime rendering. We demonstrate state-of-the-art visual quality and real-time rendering on several established datasets.

Reading guide

Problem and motivation

Neural Radiance Fields (NeRFs) have transformed novel view synthesis by optimizing continuous implicit scene representations via Multi-Layer Perceptrons (MLPs). However, rendering these continuous fields relies on stochastic volumetric ray-marching, which requires evaluating tens or hundreds of samples per ray. This leads to heavy computational burdens, long training times (e.g., up to 48 hours for Mip-NeRF360), and very slow inference speeds (seconds per frame), preventing real-time navigation at high resolutions like 1080p.

While faster radiance field variants (such as Plenoxels and InstantNGP) rely on voxel or hash grids to accelerate training, they often trade off visual fidelity and struggle with empty space or high-frequency detail. Conversely, point-based approaches offer explicit geometry that is GPU-friendly, but traditional point rasterization requires dense Multi-View Stereo (MVS) geometry to avoid holes, or relies on CNN post-processing that introduces temporal flickering.

This paper proposes an unstructured, explicit scene representation using 3D Gaussians combined with a fast tile-based rasterizer, achieving the rendering fidelity of top-tier implicit radiance fields alongside real-time frame rates and competitive optimization times.


Key ideas

  1. Unstructured 3D Gaussian Representation: Instead of continuous coordinate networks or dense grids, the radiance field is parameterized by discrete 3D Gaussians with full anisotropic covariance matrices, initialized from sparse Structure-from-Motion (SfM) point clouds without requiring normals or dense MVS.
  2. Parameterization via Scale and Rotation: To ensure the covariance matrix remains positive semi-definite throughout gradient descent, it is decoupled into a 3D scaling vector and a unit quaternion.
  3. Adaptive Density Control: The optimization dynamically manages scene density by tracking view-space position gradients: cloning under-reconstructed Gaussians and splitting over-reconstructed Gaussians, while pruning transparent or overly large splats.
  4. Visibility-Aware Tile-Based Rasterization: A custom GPU rasterizer organizes screen pixels into tiles, depth-sorts splats per frame using a fast Radix sort, and alpha-blends anisotropic projections front-to-back without limiting the number of splats that receive gradient updates.

Method

1. 3D Gaussian Scene Representation

A 3D Gaussian centered at mean is defined by its covariance matrix in world space:

To guarantee that remains positive semi-definite during optimization, it is factorized into a rotation matrix and a scaling matrix : Here, is stored as a 3D vector evaluated with an exponential activation, and is parameterized by a normalized unit quaternion .

For rendering, 3D Gaussians are projected to 2D image coordinates following the EWA splatting framework. Given a viewing transformation and the Jacobian of the projective transformation's affine approximation, the 2D covariance matrix in screen space is: The third row and column are discarded, yielding a covariance matrix for planar splatting.

2. Rendering and Image Formation

Each Gaussian has an opacity (constrained to via a sigmoid activation) and spherical harmonics (SH) coefficients describing view-dependent color . Blending ordered overlapping Gaussians at a pixel follows the standard volumetric formulation: where is determined by evaluating the 2D projected Gaussian multiplied by the learned per-point opacity.

3. Optimization and Adaptive Control

The loss function combines an loss with a D-SSIM loss (with ):

Adaptive density control runs every 100 iterations on Gaussians whose average view-space positional gradient exceeds :

  • Clone (Under-reconstruction): For small Gaussians, a duplicate is created and moved along the positional gradient direction.
  • Split (Over-reconstruction): For large Gaussians, the primitive is replaced by two smaller Gaussians whose scales are reduced by a factor of , sampling their initial positions from the parent Gaussian.
  • Pruning: Prunes Gaussians where or those excessively large in world/view space. Every iterations, opacities are reset near zero to filter out floating artifacts.

4. Fast Differentiable Tile-Based Rasterizer

  • The screen is divided into pixel tiles.
  • Gaussians passing 99% confidence interval frustum culling are assigned 64-bit keys encoding tile ID and view-space depth.
  • A single GPU Radix sort orders all instances across the frame.
  • Thread blocks accumulate color per tile front-to-back until reaches saturation (stopping before exceeding ).
  • The backward pass traverses tiles back-to-front, recovering intermediate opacities by dividing the final accumulated opacity by each primitive's , avoiding expensive dynamic per-pixel memory buffers.

Results

  • Mip-NeRF360 Dataset: After 30K iterations (41m 33s average training time), 3D Gaussian Splatting achieves an average SSIM of 0.815, PSNR of 27.21 dB, and LPIPS of 0.214, matching or exceeding Mip-NeRF360 (SSIM 0.792, PSNR 27.69 dB, LPIPS 0.237, 48 hours training), while rendering at 134 FPS compared to Mip-NeRF360's 0.06 FPS.
  • Fast Configuration (7K iterations): Delivers an SSIM of 0.770 and PSNR of 25.60 dB in just 6m 25s at 160 FPS, outperforming InstantNGP-Base (SSIM 0.671, 11.7 FPS) and Plenoxels (SSIM 0.626, 6.79 FPS) within comparable training times.
  • Tanks&Temples & Deep Blending: On Tanks&Temples, 30K iterations reach an SSIM of 0.841 and PSNR of 23.14 dB at 154 FPS. On Deep Blending, it achieves an SSIM of 0.903 and PSNR of 29.41 dB at 137 FPS.
  • Synthetic Blender: Scores an average PSNR of 33.32 dB from a completely random initialization of 100K points, rendering at 180–300 FPS.

Limitations and open questions

  • Unobserved Views and Outliers: Sparse coverage or views far from training trajectories can produce visible artifacts, such as elongated or "splotchy" Gaussians.
  • Popping Artifacts: Sudden switching in depth ordering or aggressive guard-band culling can introduce popping during navigation, pointing to the need for better antialiasing.
  • Memory Consumption: Although compact compared to classic dense point clouds, the explicit representation requires hundreds of megabytes (e.g., 400–750 MB for scenes with 1–5 million Gaussians), and unoptimized prototype training can spike GPU memory above 20 GB.
  • Lack of Regularization: The framework does not include explicit geometric smoothness or density regularizers, leaving room for background floaters in regions poorly constrained by camera rays.

Key terms

3D Gaussians
The core unstructured, differentiable 3D primitives defined by a mean position, anisotropic covariance matrix, opacity, and spherical harmonic appearance coefficients.
Anisotropic Covariance
A directional 3D spread parameterized into separate scaling vectors and unit rotation quaternions, allowing Gaussians to deform into flat ellipsoids aligned with physical surfaces.
Adaptive Density Control
An interleaved optimization strategy that adds Gaussians by cloning or splitting primitives with large positional gradients and prunes transparent or oversized ones.
Tile-Based Rasterization
A GPU-driven rendering pipeline that splits the viewport into pixel bins to sort and blend overlapping Gaussian splats efficiently in parallel.
Alpha-Blending
Front-to-back accumulation of color and transmittance that mirrors standard NeRF volumetric integration over sorted 2D projected splats.
Radix Sort
A GPU sorting algorithm used to globally order Gaussians in parallel based on 64-bit keys combining tile ID and view-space depth.
Spherical Harmonics (SH)
A frequency-based directional function basis used to represent view-dependent color on each Gaussian primitive across up to 4 bands.

Questions

How are 3D Gaussians initialized before optimization?

They are initialized using the sparse point cloud generated as a byproduct of Structure-from-Motion (SfM) camera calibration, with initial isotropic scales derived from the average distance to the nearest three neighboring points. For synthetic scenes, uniform random initialization can also be used.

What is the difference between cloning and splitting Gaussians?

Cloning copies a small Gaussian and shifts it along its position gradient to cover missing geometric features (under-reconstruction), while splitting divides an overly large Gaussian into two smaller Gaussians scaled down by a factor of 1.6 to better capture high-variance detail (over-reconstruction).

Why does the rasterizer sort per-tile rather than per-pixel?

Sorting per-tile using a single global GPU Radix sort on combined tile-depth keys avoids the high computational overhead of sorting primitives per pixel, enabling high frame rates with negligible visual approximation.

How does the backward pass avoid storing long per-pixel primitive lists in global memory?

The rasterizer re-traverses the existing sorted per-tile lists back-to-front and reconstructs intermediate opacities by dividing the final accumulated opacity by each Gaussian's alpha value, requiring only a constant per-pixel memory overhead.

The overview on this page was written by AI from the paper and may contain mistakes. Read the paper for the details.

Read with translation and AI