Home · ASPLOS 2024 · GPUs & Parallel Hardware

GSCore: Efficient Radiance Field Rendering via Architectural Support for 3D Gaussian Splatting

Junseo Lee, Seokwon Lee, Jungi Lee, Junyong Park and Jaewoong Sim

Conference
ASPLOS 2024
Published
2024
Pages
497-511
Citations
75

Photorealistic 3D scenes made of millions of tiny Gaussian blobs render beautifully on desktop GPUs and crawl on headsets and edge devices — GSCore is a 4-square-millimeter chip that renders them 16× faster than a mobile GPU by refusing to sort, test, or shade anything that will not end up in a pixel.

The argument in one glance

  1. Problem

    Photorealistic novel-view rendering finally got fast — for desktop GPUs

    3D Gaussian Splatting represents a scene as millions of learned, colored, translucent ellipsoids and renders new viewpoints beautifully. An RTX 3090 manages over 100 frames per second; a Jetson Xavier NX — the class of chip in headsets and edge devices — manages 6.4. Mobile power budgets will never close that gap with raw force.

  2. What people did

    Run the state-of-the-art GPU pipeline: cull, project, sort, blend per tile

    The reference implementation is already clever: it culls invisible Gaussians, splats the rest onto the screen as 2D ellipses, assigns them to 16×16-pixel tiles, sorts each tile’s ellipses by depth, and alpha-blends front to back with early termination.

  3. Why it fell short

    Most of the pipeline’s work provably serves no pixel

    The tile-assignment test wraps every ellipse in a square box, so skewed ellipses are assigned to tiles they never touch — in the paper’s example, 75% of assignments are false. Early termination discards up to 98% of a tile’s carefully sorted Gaussians unread. And in lockstep GPU execution, whole thread groups compute alpha values for pixels their Gaussian cannot reach.

  4. This paper's idea

    Skip work at three levels, with hardware shaped to what remains

    GSCore fits tighter boxes to elongated ellipses (shape-aware intersection), sorts lazily in chunks so early termination cancels sorting that has not happened yet (hierarchical sorting), and tracks per-Gaussian pixel influence in tiny bitmaps (subtile skipping) — all exact, no approximation. Synthesized at 28 nm: 3.95 mm², 0.87 W, 15.86× faster and 15.5× more energy-efficient than the mobile GPU.

Why this problem is worth solving

Novel-view synthesis — photograph a scene from some positions, then render it from any position — was revolutionized by radiance-field methods. NeRF stores the scene implicitly in a neural network and pays for beauty with millions of network evaluations per frame. 3D Gaussian Splatting (2023) is the breakthrough that made radiance fields fast: it represents the scene explicitly, as a dense set of 3D Gaussians — soft ellipsoid blobs, each with a position, shape (scale plus rotation), opacity, and view-dependent color stored as spherical-harmonic coefficients, 59 learned parameters in all. Rendering is rasterization, not neural inference: project each ellipsoid onto the screen as a 2D ellipse (a “splat”), sort splats by depth, and blend their colors front to back until each pixel is opaque. Unity, Unreal and Blender began adopting it almost immediately.

The catch is where the technique most wants to run. Virtual-reality headsets and edge devices are exactly the platforms hungry for photorealistic 3D — and exactly the platforms whose power budgets cap GPU performance. The paper’s motivating measurement: a scene that renders at over 100 frames per second on a desktop RTX 3090 achieves 6.4 frames per second on a Jetson Xavier NX, with the Oculus Quest 2’s GPU only marginally better. Battery-powered devices will not grow desktop-class GPUs; the computation must shrink instead.

Profiling shows where the time goes: Gaussian sorting and rasterization together consume about 80% of rendering time across scenes and platforms. But the paper’s contribution begins with refusing to accelerate those steps blindly — because much of that 80% is work whose output is never used.

What people did before, and where it broke

The reference pipeline has four stages. Frustum culling discards Gaussians behind or beside the camera. Feature computation projects each survivor to a 2D ellipse with a screen-space covariance, and collapses its 48 spherical-harmonic coefficients into one RGB color for this viewpoint. Sorting orders each tile’s Gaussians by depth, because blending must run front to back. Rasterization computes each Gaussian’s alpha — its opacity at each pixel, an exponential falloff from the ellipse center — and accumulates colors until early termination: once a pixel is effectively opaque, everything behind it is skipped.

Three measured inefficiencies hide inside this sensible design:

False tile assignments. Which tiles does an ellipse overlap? The GPU implementation answers cheaply: bound every ellipse with an axis-aligned square whose half-width is the ellipse’s semi-major axis. For round splats, fine. But trained scenes are full of highly elongated ellipses — and a long thin ellipse in a fat square gets assigned to every tile the square touches, mostly falsely (75% of tiles in the paper’s illustration). Every false assignment inflates both sorting and rasterization downstream.

Sorting for the bin. Early termination means back-of-scene Gaussians are often never blended: on average 18–55% of a tile’s assigned Gaussians — up to 98% in some tiles — are discarded after being fully sorted. The pipeline pays a precise global sort for elements whose order will never be consulted.

Lockstep waste. A GPU thread block processes one tile, all 256 threads marching through the same Gaussian list. When a small splat touches only a corner of the tile, the other threads compute its alpha anyway — multiple floating-point operations including an exponential — just to discover irrelevance. The fraction of computed Gaussians that actually contribute color to a pixel is small across every scene measured.

GSCore's pipeline

  1. CCU new

    Culling and Conversion Unit: frustum culling, projection, color computation — plus the shape-aware intersection test with paired OBB test units.

  2. GSU new

    Gaussian Sorting Unit: approximate chunking by depth pivots, then precise sorting of one chunk at a time, overlapped with rendering.

  3. VRU new

    Volume Rendering Unit: 4×4 rendering cores, each owning 2×2 pixels, consuming per-Gaussian subtile bitmaps to skip untouched subtiles.

  4. Buffers new

    Double-buffered Gaussian feature storage (256-Gaussian chunks) hides off-chip memory latency behind computation.

  5. DRAM

    Holds the scene’s Gaussians; the optimizations exist partly to read less of it.

Three algorithmic ideas (shape-aware intersection, hierarchical sorting, subtile skipping) and three matching hardware units — each idea is exact, changing no rendered output beyond FP16 rounding.

The idea

Shape-aware intersection: fit the box to the blob

The fix for false assignments is a tighter box: an oriented bounding box (OBB) that rotates with the ellipse instead of hugging the axes. Testing tile-versus-OBB overlap costs more — it needs the Separating Axis Theorem, checking projected overlap on four axes — so GSCore spends it opportunistically: only when the cheap axis-aligned test found multiple candidate tiles and the ellipse is elongated (major-to-minor axis ratio above 2). Round splats keep the cheap test; skewed splats — the ones that generate false positives — get the strict one. In the paper’s example the OBB cuts 16 falsely-intersected tiles to 4. Crucially the test errs only one way: no false negatives, so the rendered image is untouched. On the GPU alone, this one change yields a 1.71× speedup; in GSCore, dedicated OBB intersection units (two per CCU) make it nearly free.

Hierarchical sorting: don’t sort what termination will discard

Sorting is restructured into two stages. Approximate sorting quickly partitions a tile’s Gaussians into depth-ordered chunks (pick a pivot depth, split lower/higher — recursively, like one level of quicksort): every Gaussian in chunk i is nearer than every one in chunk i+1, but chunks are internally unordered. Precise sorting then orders one chunk at a time, just before the renderer needs it. Two savings compound: precise sorting of later chunks overlaps with rasterization of earlier ones (hiding sort latency), and when early termination fires mid-tile, the remaining chunks are simply never sorted. The blending order that matters is preserved exactly — laziness, not approximation. Chunk size tunes the trade (small chunks expose memory latency, huge ones re-import the waste); 256 Gaussians is the sweet spot.

Subtile skipping: know which pixels a Gaussian can touch

Per-pixel Gaussian lists would eliminate lockstep waste but cost too much state. GSCore takes the middle ground: divide each 16×16 tile into subtiles, and during preprocessing store, per Gaussian, an N-bit bitmap — bit i says whether the Gaussian’s ellipse (its exact 3-sigma boundary, computed from the covariance eigenvalues) overlaps subtile i. During rendering, the Volume Rendering Unit processes one subtile at a time across its 4×4 grid of cores (each core owning 2×2 pixels); a zero bit skips the whole subtile’s alpha computation for that Gaussian. Measured bitmap sparsity runs 35–52% — a third to half of all per-subtile alpha work vanishes, exactly the work that produced nothing.

Hardware shaped to the surviving work

With the waste removed, the remaining pipeline maps onto three specialized units — culling/conversion, sorting, and volume rendering — connected by a double-buffered feature store, all in FP16 arithmetic (measured harmless: at most a 0.5% PSNR change, none perceptible). The units pipeline across tiles the way the pure algorithm cannot on lockstep GPU hardware. Total: 3.95 mm² at 28 nm, 1 GHz, 0.87 W — a small corner of a mobile SoC.

One tile of one frame, through GSCore

Tile = 16×16 pixels; subtile = a quarter of it in this trace (bitmap bits shown as 4). GID = Gaussian ID, d = depth. The chunking/pivot walkthrough follows the paper's Figure 7; the false-positive counts follow its Figure 6 example.

Step 1 of 6

Project and test, shape-aware

The CCU culls off-screen Gaussians and projects the rest to screen-space ellipses. A long thin ellipse near our tile passes the cheap axis-aligned test for 16 tiles — but its axis ratio exceeds 2, so the OBB unit runs the strict test: only 4 tiles genuinely intersect. Twelve tiles’ worth of downstream sorting and shading for this Gaussian just vanished.

AABB test: 16 candidate tiles
OBB (SAT) test: 4 real intersections
false positives eliminated: 75%

Why it works

Because the waste was identified before the hardware was designed, each optimization removes a class of dead work rather than accelerating it: false tile assignments (shape-aware testing), sorted-then-discarded Gaussians (hierarchical laziness), and alpha computations outside a Gaussian’s reach (subtile bitmaps). → Because every optimization is exact — no false negatives, preserved blending order, precise ellipse extents — the speedups compound without touching image quality: PSNR and LPIPS match the reference to FP16 rounding. → Because the surviving work has a fixed, known structure, small specialized units (OBB testers, pivot-based sorters, a 4×4 blending grid with bitmap gating) execute it at far higher utilization than lockstep GPU warps — rendering-core utilization rises roughly 4×. → Because sorting now overlaps rendering and skipping shrinks memory traffic, the pipeline stays busy end to end on 0.87 watts. → Therefore a 3.95 mm² block turns 6.4 frames per second into 91.2 on the same scene at the same quality — real-time radiance-field rendering inside an edge-device power budget.

What it costs

  • It is new silicon. GSCore is a synthesized 28 nm design evaluated in a cycle-level simulator (with functional output images) — an IP block a mobile SoC would need to adopt, not software you can ship today. The algorithmic ideas partially transfer (1.71× + 15% on the GPU itself), the full 15.86× does not.
  • Rendering only. Training the Gaussians — the cloning, splitting and gradient descent that create the scene — stays on big GPUs; GSCore accelerates inference-time view synthesis.
  • Preprocessing does more work up front. OBB tests and bitmap generation add cost to the cheapest pipeline stage to save the expensive ones — a good trade, but one whose balance (axis-ratio threshold 2, chunk size 256, 4×4 cores) was tuned empirically and inherits the evaluated scenes.
  • FP16 is a quality judgment call. The measured degradation is negligible on six scenes; the exponential in alpha computation already needed care, and different content could stress precision differently.
  • The pipeline is frozen in hardware. Gaussian Splatting is evolving fast (the paper predates many variants); fixed-function units bet that the ellipse-sort-blend skeleton stays stable.

The evaluation

Six scenes — four real-world captures (Train, Truck, Playroom, Drjohnson) and two synthetic (Lego, Palace) — each trained for 30K iterations, at varying resolutions. Baseline: Jetson Xavier NX (mobile Volta GPU) running the reference implementation. GSCore: SystemVerilog, synthesized on a commercial 28 nm library at 1 GHz, evaluated in a cycle-level simulator with a detailed DRAM model that also produces the rendered images.

Mobile GPU versus GSCore

PropertyXavier NX (reference pipeline)Xavier NX + software optimizationsGSCore
Rendering speed
Image quality (PSNR / LPIPS)referenceidentical — the optimizations are exact
Silicon and powera full mobile GPU (shared with everything else)same
Energy efficiency / compute utilizationbetter, limited by GPU execution model
Six scenes trained 30K iterations; Jetson Xavier NX as the mobile baseline; GSCore synthesized at 28 nm and evaluated via a cycle-level simulator with functional image output and a detailed DRAM model.Underlined values explain themselves when clicked.

Check your understanding

  1. 1. Why does the reference pipeline’s axis-aligned bounding box cause so much wasted work for trained Gaussian scenes?

  2. 2. Hierarchical sorting leaves each chunk internally unsorted until just before rendering. Why is this safe for image correctness?

  3. 3. Predict: a scene consists almost entirely of small, nearly circular Gaussians, evenly spread in depth, and tiles rarely reach early termination quickly. Which of GSCore’s three algorithmic optimizations helps least, and what remains?

  4. 4. The subtile bitmap is described as a “middle ground.” Between what extremes, and why is the middle right?

Related papers on GPUs & Parallel Hardware

See all 80 →