Demo Show
The part of an experiment that runs. Each demo is one self-contained HTML file — no build step, no backend, and three.js is served from this site rather than a CDN, so the link you send someone shows them the same thing you saw.
These are WebGL scenes and they want a GPU; a phone will run them and get warm. A card opens the write-up, and running the demo takes a second click — nothing starts burning your GPU before you ask it to.
One thing to expect: the labels inside the demos are in Chinese. They are the model's verbatim output from an experiment run in Chinese, and editing them would make the artifact something other than what was measured. The controls are on each demo's page in English.
blackhole
Same prompt: a million-particle three.js black hole
Event horizon in one shot: a million-particle black hole
One call, no human edits: GPT-6 Astra returned 1,230 lines of single-file HTML — a million particles, a custom GLSL accretion disk, UnrealBloomPass, zero console errors, and screenshots that reproduce byte for byte once ?t= locks the clock. The defect is still in it: bloom washed the event horizon white.
The run where the code was right and the camera was inside the light source
Same prompt, GPT-5.6 Terra, one shot: 759 lines, a million particles, zero errors, and every HUD and ?t= hook implemented. But the camera and the scene scale were never reconciled, so the frame is one enormous white arc. Nothing an assertion can check failed. It is still a failure.
A TDZ error blanked the page, and one round of feedback fixed it
Fable 5.1's one-shot attempt died in initialisation on a temporal dead zone error and rendered nothing. Handed back the machine-collected stack trace, it repaired itself in 111 seconds and one round. This page runs the repaired version — which boots, but is nearly all white, and lost the byte-for-byte ?t= contract along the way.
Same prompt, given an agent: Astra + Codex CLI screenshots itself and fixes it in three rounds
The same black hole prompt, but this time to something that can run commands, take screenshots and read back pixel statistics. GPT-6 Astra iterated three times inside Codex CLI, pushed the count to 1,048,576, found and killed the bloom overexposure the one-shot run shipped with, and the fixed-time screenshot hashes match exactly.
Five rounds to bring mean luminance from 0.43 down to 0.10
The same black hole prompt to Fable 5.1 inside Claude Code: 42 turns, 41 tool calls, $4.24. Every round it rendered the frame itself, read the pixel statistics and decided what was blown out. Five rounds later the centre is black again, with spiral bands and a Doppler-brightened side — the one-shot attempt rendered nothing at all.
city
Same prompt: a cyberpunk city in the rain
Night city: 3,707 buildings and 1.04 million raindrops on one InstancedMesh
A cyberpunk city in the rain, from GPT-6 Astra iterating five times inside Codex CLI with ten render checks. Street-level canyons, wet-ground reflections, neon signage and streaked rain all computed in shaders, with matching fixed-time screenshot hashes. Of the two runs, this is the one that reads as a city.
Five smoothstep edges reversed, and SwiftShader folds them to a constant: where the rain went
The same rain-city prompt, run by Fable 5.1 inside Claude Code: 82 turns, $6.43, six render rounds. The part worth reading is rounds three and four — five smoothstep calls had their edge arguments swapped, this SwiftShader build evaluates that as a constant, and a million rain particles rendered nothing at all.
fractal
Same prompt: a raymarched fractal tunnel
Fractal tunnel: writing raymarch depth so a million points are occluded properly
A KIFS variant of the Menger sponge, with a tunnel carved along a curved path driven by simTime. The hard part is not the fractal — it is making the raymarched surface and a million THREE.Points occlude each other correctly. GPT-6 Astra did it in three rounds inside Codex CLI, first frame in 1.6–2.1 seconds.
Six rounds to light the tunnel walls: Fable 5.1 + Claude Code on a fractal sponge
The same fractal tunnel prompt: Fable 5.1 inside Claude Code, 69 turns, $4.80, six render rounds. Five of them oscillated between overexposure and invisible dust; the sixth swapped in a point light ahead of the camera plus half-Lambert shading, which is what finally fixed walls that went dark at grazing angles.
morph
Same prompt: a million-particle shape morph
A million particles exploding and reassembling between four shapes
A different prompt: one cloud of a million particles has to morph between a DNA double helix, a spiral galaxy, a torus knot and extruded 3D text, and every transition has to scatter outward before it converges. GPT-6 Astra iterated four times inside Codex CLI, with every shape position computed in the vertex shader from simTime.
DNA, galaxy, torus knot, 3D text: Fable 5.1 + Claude Code morphing a million points
The same shape-morph prompt, run by Fable 5.1 inside Claude Code: 65 turns, 64 tool calls, $4.68. Each of the four iterations records what it fixed — blown-out whites, a torus knot the camera flattened into a figure eight, transitions that looked like uniform fog, and clipping in a narrow viewport.