For most of this project the plan was to be a good citizen: take the formats the Gaussian-splat world is converging on, take the renderer that ships with the engine, and spend my time on the things only this product needs — the driving, the streaming, the places.
That plan ran out in September. Not because any one piece was bad, but because every single thing on the list of what to do next turned out to be blocked at a layer I did not own. Levels of detail that stream per cell rather than per file: blocked on the format. A sort order that survives two splat scenes at once, which is what putting a scanned object inside a scanned town requires: blocked on the renderer. Light that reaches the splats rather than only the meshes standing on them: blocked on both.
You can work around one of those. Three is not a workaround, it is a wall with a sign on it.
So there is now a format, a runtime and a renderer that are ours, running in the game behind a flag while the old path keeps working. I want to be careful about how this sounds, because "we rewrote the renderer" is the kind of sentence that usually means somebody lost an argument with a library. The honest version is narrower: the general-purpose renderer is very good at being general-purpose, and a product whose entire world is one streamed capture is not a general case. Almost every assumption it is right to make — that scenes are built from many objects, that transparency is rare, that geometry does not arrive mid-frame — is one this product breaks on purpose.
The benches that produced the decision are in the repository next to the code. I would rather be argued with from the numbers than believed.
It is behind a flag and it will be behind a flag for a while. The thing I am watching for is not whether it is faster — it is, in the places we have measured — but whether it is still correct in the long tail, on the machines I do not own.