3D Gaussian Splatting
in Rust

A high-performance, differentiable implementation of 3DGS — from video to trained Gaussians, fully in Rust.

MIT License · Rust 2024 Edition · wgpu + CPU backends

Why rgsplat?

⚙

Fully Differentiable

Complete analytic backward pass through the entire rendering pipeline — no autograd dependency. Validated against finite differences.

⚡

GPU + CPU

Optional wgpu compute shaders for fast inference. CPU fallback with Rayon parallelism for training on any machine.

⚙

Async Pipeline

Tokio-based async orchestration. Non-blocking ffmpeg/COLMAP subprocesses, parallel rendering, async checkpoint saves.

🏷

Standard Formats

Reads/writes standard 3DGS .ply files and compact .splat format. Compatible with existing viewers and tools.

📈

Full Pipeline

End-to-end: video frame extraction → COLMAP SfM → Gaussian init → Adam training → .ply export.

🌐

Python Bindings

Optional PyO3 bindings via maturin. Use the full pipeline from Python with an async API.

Get started in seconds

One-liner install
# Linux / macOS
bash <(curl -fsSL https://raw.githubusercontent.com/mfaeezshabbir/rgsplat/main/scripts/install.sh)

# Windows (PowerShell as Admin)
powershell -ExecutionPolicy Bypass -File https://raw.githubusercontent.com/mfaeezshabbir/rgsplat/main/scripts/install.ps1
Train from video
rgsplat --input my_scene.mp4 --output ./output

See the full documentation for all options.

Pipeline at a glance

1
Frame extraction
ffmpeg · async
→
2
SfM
COLMAP · async
→
3
Init Gaussians
Rayon · parallel
→
4
Training loop
Adam · GPU/CPU
→
5
Export
.ply · .splat
192B
per Gaussian3D
59
trainable params
16×16
rasterizer tile
3M
max Gaussians