vkSplatting: NVIDIA’s Open Source Vulkan Renderer for 3DGS Exploration

vkSplatting: NVIDIA’s Open Source Vulkan Renderer for 3DGS Exploration

vkSplatting: NVIDIA’s Open Source Vulkan Renderer for 3DGS Exploration

Michael Rubloff

Michael Rubloff

Apr 28, 2025

Email
Copy Link
Twitter
Linkedin
Reddit
Whatsapp
vkSplatting
vkSplatting

Developed as an exploratory testbed by NVIDIA's DesignWorks sample team, this open-source Vulkan renderer is a toolkit for understanding the full technical spectrum of what makes 3DGS work in real-time.

We have profiled other helpful tools such as Florian Barthel's Splatviz and NVIDIA’s vk_gaussian_splatting, which I will refer to as vkSplatting, is similarly an incredibly useful tool. 

vkSplatting is designed to compare different strategies for rendering 3D Gaussian splats in real-time, all within the Vulkan graphics API. The implementation allows developers and researchers to experiment with various shader types, sorting methods, and data layouts, revealing the subtle trade-offs that shape real-time performance and visual fidelity.

Two rendering pipelines are provided, one using traditional vertex shaders, the other leveraging mesh shaders. Since 3DGS relies on accurate alpha blending, the project also explores two sorting approaches. There is a GPU-based radix sort and a multi-threaded CPU-based alternative. By toggling between these configurations, users can see first-hand how storage mode, shader type, and sort timing impact both speed and quality.

What makes vkSplatting particularly compelling is how much control it hands over to the user. Almost every stage of the rendering pipeline is configurable, from how splat attributes are stored in memory to how spherical harmonics (SH) coefficients are compressed. A built-in interface provides panels for tweaking rendering parameters, monitoring performance, and analyzing memory usage in real time.

Want to test how Float16 SH values compare to UInt8? Or see how mesh shaders hold up against vertex shaders on your specific GPU? It’s great to be able to rapidly get feedback. The renderer also supports indirect draw calls that adapt dynamically based on the number of visible splats, ensuring efficient GPU-driven execution without needing round-trips to the CPU.

One of the most critical challenges in 3DGS is sorting splats back-to-front to ensure proper blending. vkSplatting implements both GPU and CPU approaches to this problem. The GPU-based method uses a fast radix sort, keeping the entire operation on the graphics card and minimizing synchronization delays. The CPU alternative runs in parallel and updates asynchronously. 

Interestingly, the GPU path also includes early frustum culling in its compute shaders to avoid wasting resources on invisible splats. The CPU path, by contrast, skips culling to avoid visual artifacts caused by latency during sort updates. The two methods serve different performance profiles, and vkSplatting lets you observe both in action.

vkSplatting is already robust, but there is still more to come. The team plans to incorporate the recently open sourced 3D Gaussian Ray Tracing (3DGRT) using the Vulkan Ray Tracing API. We’ll have to see if they will also include 3D Gaussian Unscented Transform, included with the 3DGRT release. Two other methods they are planning to incorporate are Stop the Pop and Sort-free 3DGS, which solve popping problems. 

To set up vkSplatting, you’ll need the Vulkan SDK and optionally CUDA for GPU monitoring. Once built, the application can load compatible .ply files (like those from Postshot or Nerfstudio) and immediately begin rendering. Models can be opened via the command line, file menu, or even by drag-and-drop. The app’s interface makes it easy to browse the scene, toggle parameters, and dive into the rendering flow in real time.

vkSplatting is Apache 2.0 licensed and free to use from the NVIDIA GitHub repository