Skip to content

nvpro-samples/vk_gaussian_splatting

Repository files navigation

Vulkan Gaussian Splatting

License Download Documentation

image showing the rendering modes on the train 3DGS model

This project is a testbed to explore and compare various approaches to real-time visualization of 3D Gaussian Splatting (3DGS) [Kerbl2023] and related evolutions.

This project is not a 3DGS reconstruction tool — it is a viewer. It does not generate or train models, only tries to visualize them at the highest possible speed.

By evaluating various techniques and optimizations, we aim to provide valuable insights into performance, quality, and implementation trade-offs when using the Vulkan API.

This project implements several rendering pipelines based on rasterization, ray tracing, and hybrid approaches. It can be used as a lab for developers or as a day-to-day viewer for your splats.

Quick Start

  1. Download the latest release for your OS
    • decompress the archive
    • run the executable vk_gaussian_splatting[.exe]
  2. Download this small 3DGS flowers model
    • decompress the archive
    • drag and drop the file flowers_1.ply into the app viewport
  3. Happy splatting!

Documentation

Please consult the documentation to browse:

If you are working offline, you can browse the documentation markdown pages in the docs folder.

Implemented pipelines features

News

  • [2026/04] 🔥Release 2026.1.7
    • Pre-built binaries available on GitHub Releases page
    • New online documentation website — user guides, technical deep dives, and references now available as a browsable site
    • Simplified root README.md (this file)
    • Rendering pipeline selector added to the menu bar
    • Navigation mode icons in toolbar with improved camera controls
    • Fix profiler reporting during camera drag in raster/hybrid pipelines
    • Fix 32-bit addressing overflow in sorting buffers by converting to LargeBuffer (supports larger models)
  • [2026/03] 🔥Release 2026.1
    • Multi-instance splat set architecture with global index tables and unified sorting
    • Centralized bindless asset management with a root bindless scene assets buffer
    • Multi-light lighting system (point / spot / directional, ray traced hard / soft shadows)
    • Front-to-back rasterization with depth consolidation for lighting
    • Deferred shading for rasterized Gaussian splats
    • GPU-built particle acceleration structures with multi-TLAS / multi-BLAS chunking and VRAM budget pre-checking
      • Ray tracing now supports very large models and updates faster
    • Stochastic splat sorting and Monte Carlo trace strategy for enhanced interactivity
    • DLSS Ray Reconstruction for anti-aliasing, upscaling and denoising
    • Expanded visualization modes in ray tracing and hybrid pipelines (normals, depth, DLSS buffers, splat ID)
    • UI / UX enhancements (summary overlay, shader feedback and ray hit profile, editing mode)
    • 3D transform and infinite grid visual helpers
    • Runtime image comparison tool with MSE / PSNR / FLIP metrics
    • Added new models from teleportour.com. Thanks to Andrii Shramko. See Datasets page.
  • [2025/10] Migration from GLSL to SLANG.
  • [2025/09] Added Unscented Transform (3DGUT) and hybrid rendering (3DGUT/3DGRT) pipelines, with support for fisheye and depth of field.
  • [2025/09] Added import of .spz file format from nianticlabs.
  • [2025/08] Added depth of field to raytracing (3DGRT) pipeline.
  • [2025/08] Added raytracing (3DGRT) and hybrid rendering (3DGS/3DGRT) pipelines + 3DGRT dataset.
  • [2025/08] Added compositing with meshes and project save/load functionality.
  • [2025/06] Ported to new NVIDIA DesignWorks nvpro_core2.
  • [2025/03] Added new models from 3ds-scan.de. Thanks to Christian Rochner.
  • [2025/03] First release with 3DGS rasterization.

Support and Feedback

For bug reports and feature requests, please use the GitHub Issues page.

For general questions and discussions, please use the GitHub Q&A Discussions page.

We would be very happy to get feedback from you, to know whether you use the software to learn, teach, apply to your own renderer, or just use it as a viewer. Please do not hesitate to give feedback and send screenshots in the GitHub Show and Tell Discussions page.

Contributing

Merge requests to vk_gaussian_splatting are welcome, and use the Developer Certificate of Origin (https://developercertificate.org included in CONTRIBUTING).

When committing, please certify that your contribution adheres to the DCO and use git commit --sign-off. Thank you!

References

[Zwicker2002]. EWA Splatting. E., Zwicker, M., Pfister, H., Van Baar, J., Gross, M.H., Zwicker, M., Pfister, H., Van Baar, J., & Gross, M.H. (2002). IEEE Transactions on Visualization and Computer Graphics.

[Enderton2010]. Stochastic transparency. Eric Enderton, Erik Sintorn, Peter Shirley, and David Luebke. In Proc. Symposium on Interactive 3D Graphics and Games (I3D), pages 157–164, 2010.

[Kerbl2023] 3D Gaussian Splatting for Real-Time Radiance Field Rendering. Kerbl, B., Kopanas, G., Leimkuehler, T., & Drettakis, G. (2023). ACM Transactions on Graphics (TOG), 42, 1 - 14.

[Yu2023] Mip-Splatting: Alias-Free 3D Gaussian Splatting.. Yu, Z., Chen, A., Huang, B., Sattler, T., & Geiger, A. (2023). 2024 IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR), 19447-19456.

[Radl2024] StopThePop: Sorted Gaussian Splatting for View-Consistent Real-time Rendering. Radl, L., Steiner, M., Parger, M., Weinrauch, A., Kerbl, B., & Steinberger, M. (2024). ACM Trans. Graph., 43, 64:1-64:17.

[Moënne-Loccoz2024] 3D Gaussian Ray Tracing: Fast Tracing of Particle Scenes. Moënne-Loccoz, N., Mirzaei, A., Perel, O., Lutio, R.D., Esturo, J.M., State, G., Fidler, S., Sharp, N., & Gojcic, Z. (2024). ACM Trans. Graph., 43, 232:1-232:19.

[Hou2024] Sort-free Gaussian Splatting via Weighted Sum Rendering. Hou, Q., Rauwendaal, R., Li, Z., Le, H., Farhadzadeh, F., Porikli, F.M., Bourd, A., & Said, A. (2024). ArXiv, abs/2410.18931.

[Morgenstern2024] Compact 3D Scene Representation via Self-Organizing Gaussian Grids. Wieland Morgenstern, Florian Barthel, Anna Hilsmann, Peter Eisert. ECCV 2024.

[Wu2024] 3DGUT: Enabling Distorted Cameras and Secondary Rays in Gaussian Splatting. Wu, Q., Esturo, J.M., Mirzaei, A., Moënne-Loccoz, N., & Gojcic, Z. (2024). ArXiv, abs/2412.12507. CVPR 2025.

[3DGRUT] This repository provides the official implementations of 3D Gaussian Ray Tracing (3DGRT)[Moënne-Loccoz2024] and 3D Gaussian Unscented Transform (3DGUT)[Wu2024].

[Kheradmand2025] “StochasticSplats: Stochastic Rasterization for Sorting-Free 3D Gaussian Splatting.”. Kheradmand Shakiba, Delio Vicini, George Kopanas, Dmitry Lagun, Kwang Moo Yi, Mark J. Matthews and Andrea Tagliasacchi. ICCV 2025.

3rd-Party Licenses

Library URL License
miniply https://github.com/vilya/miniply MIT
vrdx https://github.com/jaesung-cs/vulkan_radix_sort MIT
spz https://github.com/nianticlabs/spz MIT

Some parts of the current implementation are strongly inspired by, and in some cases incorporate, source code and comments from the following third-party projects:

Project URL License
vkgs https://github.com/jaesung-cs/vkgs MIT
GaussianSplats3D https://github.com/mkkellogg/GaussianSplats3D MIT

Additional 3rd-Party software is listed in nvpro_core2/third_party.