Every frame, the CPU walks a scene graph. For every object, it sets uniforms, binds textures, issues a draw call. The GPU waits. The driver validates. State changes flush the pipeline.
456 draw calls. Each one a CPU-to-GPU round trip. Each one a driver validation. Each one a pipeline stall. Multiply by 60 frames per second. This was the #1 bottleneck in game engines for 15 years — not the GPU's ability to shade pixels, but the CPU's ability to tell the GPU what to shade.
The entire history of real-time rendering from 2010 to 2025 is the story of trying to get the CPU out of the GPU's way.
| Approach | How it achieves "one dispatch" | Still needs |
|---|---|---|
| GPU instancing | Merge identical meshes | CPU scene graph |
| GPU-driven (Nanite) | GPU compute culls, GPU indirect draw | CPU uploads objects once |
| Mesh shaders | GPU generates geometry on-chip | CPU uploads parameters |
| Cloud streaming | Server GPU renders, client decodes video | Server infrastructure |
| SDF raymarching | One fullscreen quad, one shader | Nothing — geometry IS math |
| Lithos megakernel | One AGX dispatch, font table → silicon | Nothing |
Universe's SDF path is already past where the AAA industry is going.
The industry spent a decade learning that the scene graph is the enemy. Nanite's genius is making the GPU manage the scene graph instead of the CPU. But they're still within the paradigm of "there are objects, and we must decide which ones to draw."
SDF raymarching doesn't manage objects. There are no objects. There's sceneSDF(vec3 p) — a function that returns a distance. No vertex buffers. No index buffers. No draw calls. No culling. No LOD chains. No scene graph. Just a function.
Both get to 1 dispatch per frame. Lithos gets there with 69KB instead of a 30MB runtime.
Not the rendering — the interactivity.
Objects move, physics collide. SDF must be re-emitted when objects move. The bull breathes but its position is baked. A game needs the bull to charge, knock over barrels, respond to the player. SDF re-emission per frame is the unsolved problem.
GJK/SAT/impulse solvers. Universe has no physics. The bull breathes but doesn't walk. A Nanite world has rigid body dynamics, ragdolls, destructible geometry. Universe has contemplation.
Multiplayer state sync. Universe is single-user. 100 players in a destructible building need server-authoritative tick rates, delta compression, client prediction. Universe needs none of this.
LOD chains, virtual textures, mipmap hierarchies. SDF doesn't need this — math is infinite resolution. You don't stream a polynomial. You evaluate it.
sceneSDF(p)The streaming mode (/virgo/stream) IS cloud gaming. Dawn WebGPU on M4 → JPEG over WebSocket → canvas.drawImage. That's GeForce NOW at home scale. No A100 datacenter required — an M4 Mac Mini renders the cosmos and streams it to any browser.
The Lithos endgame is more radical: instead of rendering through a graphics API, the megakernel dispatches 40k threads directly on AGX silicon through the font table. No API. No driver overhead. No runtime. The math IS the bytes on the GPU.
For a cosmos — for a contemplative universe of terrain and stars and zodiac homes — SDF is the right architecture. The industry's solutions are for games with 100 players shooting each other in destructible buildings. You're building a universe where someone walks through a meadow and listens to their sign's ambient soundscape.
Different problem, different solution. Yours is more elegant for what it does.