SplatRender

Graphics · CUDA · 2024

SplatRender

3D Gaussian Splatting Renderer from Scratch in C++/CUDA

Overview

SplatRender is a high-performance implementation of 3D Gaussian Splatting built entirely from scratch in C++/CUDA — no dependencies on existing implementations. The project reconstructs the full rasterization pipeline from mathematical foundations, from 3D-to-2D Gaussian projection through to differentiable alpha compositing.

The goal was educational and research-ready: understand the algorithm at a deep level, achieve real-time 60+ FPS through custom CUDA kernels, and produce a clean codebase suitable for algorithmic extensions. Based on the original Kerbl et al. SIGGRAPH 2023 paper.

Features

Custom CUDA Kernels

Hand-written rasterization kernels with memory coalescing, shared memory caching, and warp-level primitives for maximum throughput.

Tile-Based Rasterization

Screen divided into 16×16 tiles for parallel processing. Gaussians are bucketed per tile and sorted by depth within each.

Spherical Harmonics

View-dependent appearance evaluated up to degree 3, capturing directional lighting and specular-like effects.

Alpha Blending

Differentiable alpha composition accumulating Gaussian contributions front-to-back per tile.

PLY Model Loading

Load pre-trained 3DGS scenes from PLY files, including position, covariance, opacity, and SH coefficients.

Real-Time Camera

Interactive first-person camera controls for navigating rendered scenes at 60+ FPS.

Mathematical Foundations

3D CovarianceΣ = R · S · Sᵀ · Rᵀ
2D ProjectionΣ₂D = J · Σ₃D · Jᵀ
Alpha BlendingC = Σ αᵢ · cᵢ · ∏(1 − αⱼ), j < i

Requirements

HARDWARE

  • NVIDIA GPU — Compute Capability 7.0+ (RTX 20-series or newer)
  • 8GB+ VRAM recommended
  • 16GB+ system RAM

SOFTWARE

  • Linux
  • CUDA Toolkit 11.8+
  • GCC 9+ or Clang 10+
  • CMake 3.18+