/web-splat

3D Gaussian Splatting Renderer implemented in WebGPU (WGPU) and Rust

Primary LanguageRust

Example Render generated by the renderer

3D Gaussian Splatting Renderer implemented in WebGPU (WGPU) and Rust

This code implements a renderer for the reconstructions obtained with 3D Gaussian Splatting

👉 Click to run the web demo 👈

Build

First, install the Rust compiler (e.g. with rustup)

Clone the repository and run

cargo build --release --bin viewer 

Run

Use the point_cloud.ply and cameras.json files generated by 3D Gaussian Splatting:

cargo run --release --bin viewer point_cloud.ply cameras.json

To load compressed npz files the npz feature must be enabled:

cargo run --release --features npz --bin viewer point_cloud.npz cameras.json
Usage 3D Gaussian Splatting Viewer
Usage: viewer [OPTIONS] <INPUT> [SCENE]

Arguments:
  <INPUT>  Input file
  [SCENE]  Scene json file

Options:
      --no-vsync  
  -h, --help      Print help
  -V, --version   Print version

About

Splat Sorting : We ported the Fuchsia RadixSort to WGPU for sorting the splats on the GPU.

Performance: The renderer reaches >200 FPS on a NVIDIA 3090 RTX and ~130 FPS on a AMD Radeon R9 380 Series (8 years old). Measurements where taken for the bonsai scene at 1200x799 resolution.

Citation

If you find our work useful, please cite:

@misc{niedermayr2023compressed,
    title={Compressed 3D Gaussian Splatting for Accelerated Novel View Synthesis}, 
    author={Simon Niedermayr and Josef Stumpfegger and Rüdiger Westermann},
    year={2023},
    eprint={2401.02436},
    archivePrefix={arXiv},
    primaryClass={cs.CV}
}