Portfolio Live demo · Runs in your browser
Computer Graphics · Full Stack

4D Volumetric

Spacetime Gaussian splats reconstructed from ordinary iPhone videos by my pipeline, rendered by the same custom WebGL viewer the app uses. Drag to orbit, scroll to zoom, and scrub through time: the moving parts follow flow-tracked trajectories that the shader interpolates every frame.

Loading splat… 0%
01 / 1

With the viewer focused: space play, ← → step, R reset, A auto-rotate, F fullscreen.

From a video

The phone was held still, so the pipeline fuses the background once into a canvas of gaussians, removes the moving subject from it, and turns the moving parts into flow-tracked gaussian trajectories with birth and death windows.

Streamed and sorted

The custom .4dsplat format streams the static canvas first for an early first paint, then the trajectories. Every frame the viewer depth-sorts the live splats with a 65,536-bucket counting sort and uploads only a 4-byte index per splat.

Rendered on the GPU

All gaussian data lives in data textures. The vertex shader fetches the two control points around the current time, interpolates, applies an opacity envelope and projects an EWA ellipse, so playback is continuous rather than frame by frame.