Skip to content

devlog

Why splats — the photoreal-first stance

2026-05-16

Gaussian splats are the moat. Everything else — post-process, audio, mode design — is in service of not getting between the capture and the eye.

A captured Gaussian-splat scene encodes geometry and view-dependent appearance in one representation. The light is already in the data. So are the shadows and the materials. The render path doesn't fake any of it; it samples it back out.

That changes how the engine should treat photoreal. The default should be "show the photograph," and departures from that should be deliberate and opt-in. A vignette over a real photo reads as a filter. Tonemapping a correctly-mapped image turns it into a dream of the place rather than the place.

I call this photoreal-first, and it shows up in the code as a literal default: the visual preset starts at null, which bypasses the whole post-process chain. LUTs only bind under the Cinematic preset. The accessibility surfaces are accessibility, not aesthetics. The atmosphere chip an earlier design wanted ("ROOM · 13:42 LOCAL · 22 °C · CLEAR") never shipped, because the time and temperature would be invented and the brain reads an invented timestamp over a real photo as a tell.

The flip side: when a capture itself reads weak, washed out or low contrast, the post chain is right there. The Cinematic preset is one tap away in Settings, and the per-arena LUTs are authored. None of it is hidden.

It would be cheaper to just ship the post chain on by default. That isn't the bet I'm making.