A Gaussian splat is a captured scene made of many small coloured, semi-transparent blobs floating in space rather than a mesh of triangles. This page renders one such scene, a synthetic still life, so you can orbit around it and thin out the blobs to see how little geometry is really there. Everything runs in your browser: the bundled scene and any file you drag in are read and drawn locally, and nothing leaves the browser.
Drag with the mouse, or swipe with one finger, to orbit; scroll the wheel, or pinch with two fingers, to zoom. Click the view first, then use the arrow keys to orbit and the plus and minus keys to zoom.
Each splat is really a small three-dimensional Gaussian blob: a centre, a size along three local axes, and a rotation. The renderer turns each one into a flat, camera-facing quad shaped like the blob's own silhouette, coloured with its flat colour and fading towards the edge in a Gaussian curve, so a cluster of splats blends into a soft, correctly stretched surface instead of a field of round dots. This needs the maths of "splatting": the three-dimensional Gaussian's shape (built from its scale and rotation) is projected through the camera to a two-dimensional ellipse on screen, and the quad is drawn along that ellipse's own two axes. On hardware where the browser cannot draw many copies of a shape efficiently (instancing), the viewer falls back to plain round dots sized by each splat's largest axis, which keeps the scene readable but loses the stretch of flattened or elongated splats; the status area of "How it works" says nothing when this happens, but flattened splats such as the tabletop will look more speckled than usual. Quads are blended with standard, non-additive alpha blending, and are sorted from back to front by distance from the camera every few frames on the CPU (immediately after the splat count changes, then roughly every 2 frames for a few thousand visible splats down to roughly every 45 frames as the count approaches the 500 000 cap), which keeps overlapping, semi-transparent splats in the right order as you orbit even though the ordering itself only refreshes now and then.
The bundled scene, scene.splat, is a synthetic still life of a sphere, a torus and a cube standing on a plane that acts as a table, built from about 60 000 splats by scripts/build-splat-viewer-data.py using numpy. It was generated by the course team and is released under a CC-BY-4.0 licence. It is not a real capture; drop in a genuine one to see the difference.
The file format is the common 32-byte-per-splat .splat layout: position (x, y, z as float32), scale (x, y, z as float32), colour (r, g, b, a as one byte each) and a rotation quaternion (four bytes), all little-endian. "Thin the splats" keeps a fixed random subset by comparing a per-splat random number, generated once with a fixed seed when a scene loads, against the slider's percentage, so the same splats drop out first every time.