· GPT-6 Astra + Codex CLI · 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.

A rain-soaked cyberpunk street canyon at night, lit windows and cyan and red neon signs on both sides, reflections on the wet road, rain streaking diagonally
Run the demo WebGL · uses your GPU
drag to orbit · scroll to zoom · space to pause · 1/2/3 for palettes Open full screen ↗

The on-screen labels are in Chinese: this is the model's verbatim output from an experiment run in Chinese, and editing it would make the artifact something other than what was measured.

How it was made

Model
GPT-6 Astra + Codex CLI
gpt-6-astra
How
agent loop
Codex CLI 0.153.4
Reasoning effort
high
Turns
1
Tool calls
28
Output tokens
32.9k
Wall time
17m 53s
Artifact
377 lines, one file
Error feedback
none

The third prompt: procedurally generate a city at night in the rain. Harder than either the black hole or the shape morph, because “does this look like a city” cannot be written as an assertion — the hooks can verify particle counts, error counts and hashes, and nothing else. Whether the composition works has to be seen.

Five rounds of visual iteration and ten render checks: no GLSL errors, no console errors, matching hashes for the fixed-time screenshot, and three palettes, interactions and resize all passing. 3,707 buildings plus 1,048,576 rain particles, at roughly 4 FPS under SwiftShader software rendering — a real GPU is far smoother.

What makes it work is the street-level scale: the camera flies through canyons between towers rather than over the skyline, so lit windows, neon signage, road reflections and streaked rain all land in the same frame. The Fable 5.1 run scores higher on the technical numbers — 5,422 buildings, a more complete reflection implementation — but frames it from above and darker, and reads less like a city. That contrast is the point of publishing both.

One honest note: the upstream stream disconnected once during this run and the harness reconnected automatically (1/5) before finishing. The artifact was unaffected, but the wall time includes that retry.

Controls: mouse movement for parallax, drag for a free camera, scroll to zoom, space to pause, 1/2/3 for palettes, ?t= to freeze the clock.

Same prompt, other runs

three.js r170 is served from this site, so running a demo makes no third-party request. Published by the author as an individual; testing was self-funded and nothing here represents an employer's position.