Why does 3DGS need so many primitives?
3DGS render
Nexels render
3DGS visualization
Nexels visualization
Drag the circle across the image to compare 3DGS and nexels, and the renders and visualizations.
Gaussian splatting uses a single color across each primitive. As a result, a large number of primitives is needed to represent fine appearance, regardless of the underlying geometry. Our nexels overcome this limitation by moving the majority of the appearance into a shared neural field backed by an Instant-NGP model. This allows us to capture fine appearance using far fewer primitives. For example, the above figure compares 3,675,000 Gaussian splats with 4,000 nexels.
Rendering Nexels Efficiently
The inclusion of textures adds computation time. To ensure that our rendering remains real-time, we only texture a subset of primitives along each ray. Specifically, the K primitives with the highest rendering weights use the neural texture while the remaining primitives fall back to the typical per-primitive color. This can be implemented in a two-pass render as depicted above:
- (a) For each ray, we iterate over the intersected primitives and determine the weights of each one while also computing the non-textured render.
- (b) We collect the K intersections which have the largest weights and return their depths and weights.
- (c) We pass their K positions into a neural field to obtain the textured appearance.
- (d) We composite the textures with the non-textured render to get the final output.
Custom Dataset
Pause the video to enable close-up comparisons.
Nexels (40K)
BBSplat (40K)
3DGS-MCMC (40K)
Oversampled 3DGS-MCMC (400K)
Tip: Look at the girl's right eye.
Pause the video to enable close-up comparisons.
Nexels (40K)
BBSplat (40K)
3DGS-MCMC (40K)
Oversampled 3DGS-MCMC (400K)
Tip: Look at the text on the cards.
Pause the video to enable close-up comparisons.
Nexels (40K)
BBSplat (40K)
3DGS-MCMC (40K)
Oversampled 3DGS-MCMC (400K)
Tip: Look at the white bag.
Pause the video to enable close-up comparisons.
Nexels (40K)
BBSplat (40K)
3DGS-MCMC (40K)
Oversampled 3DGS-MCMC (400K)
Tip: Look at the magazines.
Hover over the left video to see close-ups. Pause to sync frames. Scroll with the mouse-wheel to zoom.
Existing datasets have very few close-up shots, so representations for novel view synthesis are rarely tested on fine appearance details. To evaluate the ability to recover textures, we collected a dataset of four scenes which contains text, patterns, and more. These are observed at a range of distances, including close-up shots.
High Number of Primitives
Pause the video to enable close-up comparisons.
Nexels (400K)
BBSplat (400K)
3DGS-MCMC (400K)
3DGS (2.9M)
Tip: Look at the flowers near the middle of the patch.
Pause the video to enable close-up comparisons.
Nexels (400K)
BBSplat
3DGS-MCMC (400K)
3DGS (4.3M)
Tip: Look at the ground.
Hover over the left video to see close-ups. Pause to sync frames. Scroll with the mouse-wheel to zoom.
The neural texture improves the photometric quality even at a high number of primitives. With 400K primitives, nexels perform on par with 3D Gaussian splats with millions of primitives. The texture provides additional detail in regions which densification misses.
Quantitative Results
To validate the qualitative trends shown above, we evaluated the perceptual quality (lower is better) of renders produced by nexels trained and densified to reach different numbers of primitives. We compare these results to 3DGS-MCMC averaged across the four Mip-NeRF360 indoor scenes and five outdoor scenes, as well as our four custom scenes. Nexels achieve better perceptual quality using fewer primitives and less memory.
Related Work
Nexels builds on recent and concurrent methods for texturing Gaussian splats. Here's a quick overview of some of the most relevant ones to our work:
-
Texture-GS: Disentangling the Geometry and Texture for 3D Gaussian Splatting Editing
Uses a neural UV mapping to texture Gaussian splats in object-centric scenes -
GStex: Per-Primitive Texturing of 2D Gaussian Splatting for Decoupled Appearance and Geometry Modeling
Applies per-primitive RGB image textures to Gaussian splats -
Textured Gaussians for Enhanced 3D Scene Appearance Modeling
Applies per-primitive RGBA image textures to Gaussian splats -
BillBoard Splatting (BBSplat): Learnable Textured Primitives for Novel View Synthesis
Applies per-primitive RGBA image textures to Gaussian splats with adaptive density control of textured splats -
Neural Shell Texture Splatting: More Details and Fewer Primitives
Uses a multiresolution hash-grid to texture Gaussian splats with neural features and renders them in a deferred manner -
Content-Aware Texturing for Gaussian Splatting
Applies per-primitive RGB image textures to Gaussian splats with adaptive density control of textured splats as well as adaptive texture resolution
BibTeX
@article{rong2025nexels,
title={Nexels: Neurally-textured surfels for real-time novel view synthesis with sparse geometries},
author={Rong, Victor and Held, Jan and Chu, Victor and Rebain, Daniel and
Van Droogenbroeck, Marc and Kutulakos, Kiriakos N and Tagliasacchi, Andrea and Lindell, David B},
journal={arXiv preprint arXiv:????.?????},
year={2025}
}
Inspired by the Academic Project Page Template.