Skip to main content
GitHub

The Gaussian Splat Viewer opens the complete 741,883-splat Train capture from the public Hugging Face catalog. Use the scene selector to explore Train, Truck, Dr Johnson, or Playroom; the Train capture automatically falls back to its two GitHub-hosted segments when the Hugging Face CDN is unavailable. Source identification, downloaded bytes, progressive batches, and actual splat counts remain visible while each capture streams.

A separate, dynamically imported loaders.gl 5 alpha browser bundle handles .ply, .splat, .ksplat, .spz, and independently range-fetched .rad pages without replacing the website's existing loaders.gl installation. @luma.gl/arrow adapts each Apache Arrow record batch directly to @luma.gl/splats, preserving batch ownership, floating-point HDR radiance, camera-aware transparency, and the WebGL2 fallback.

On WebGPU, every streamed batch renders through a compiled GPU command graph as soon as it arrives. Projection, visibility, depth ordering, and rendering remain GPU work from the first visible splats rather than reprojecting source rows on the main thread while the scene loads. Directional spherical harmonics remain GPU-native and update as the camera moves. Large RAD captures use bounded projected segments and one shared global GPU depth order, keeping overlapping source pages correctly blended beyond a single storage-buffer limit. Expand GPU graph inspector to see the real graph nodes, encoding timings, and transient-memory reuse. Choose CPU depth ordering in the execution selector, or append ?renderer=cpu, to compare against the original renderer. WebGL2 always retains its compatible CPU-ordered fallback.

Append ?scene=truck, ?scene=drjohnson, ?scene=playroom, or ?scene=train-github to select a capture directly. ?scene=coit selects the 50,937,127-splat Coit Tower RAD source and retains a camera-driven, one-million-splat source-page window. A bounded background-worker pool decodes independently range-fetched pages while the GPU remains responsive to camera movement. Spark-style best-first refinement, angular foveation, nonlinear coarse-node opacity, area-preserving antialiasing, and a 75-degree camera recover the authored scene without loading all 50 million source splats. Parents remain visible until their children arrive; irrelevant requests are canceled and pages can be evicted or reloaded as the camera changes. Use &residentSplats=250000 to choose a different whole-page residency limit. Browsers without module-worker support retain a clearly reported main-thread decoding fallback. The homepage poster uses Spark's reference view of Vincent Woo's Coit Tower capture; the interactive scene itself is rendered by luma.gl. Provide ?source=https://example.com/scene.ply for another compatible public file. Choose Synthetic chromatic showcase in the scene selector or visit the separate Gaussian Splats showcase for the deterministic generated scene.

Local development can still override the bundled parser with a neighboring loaders.gl checkout: start the standalone example with VITE_LOADERS_GL_ROOT=/path/to/loaders.gl and open ?loaders=local. The lightweight parser fixture remains available as ?loaders=local&scene=fixture.