The prompt
# Build Prompt — Charybdis: The Whirlpool A single build. A real-time, controllable open-sea scene from *The Odyssey*: Odysseus' galley caught at the edge of **Charybdis, the great whirlpool**, with **Scylla's** cliff looming on the far side of the strait. This is a graphics-and-feel showpiece. It has to look like a **2026 AAA video game** — real dynamic lighting, real materials, real depth — not a tech demo. Everything is generated in code. --- You are a world-class real-time graphics engineer working in the browser. Build a production-quality, full-screen, interactive ocean-and-whirlpool scene using **WebGPU via Three.js (WebGPURenderer + TSL)**, native ES modules, no build step. **Ground rule on assets:** build ALL geometry and ALL materials procedurally, in code — no pre-made 3D model files, no downloaded image textures, no HDRIs. You MAY use Three.js and its official addons, plus open-source *libraries* for simulation, physics, and post-processing (e.g. a physics engine like `@dimforge/rapier3d` or `cannon-es`, an FFT ocean reference such as the technique in `jbouny/fft-ocean`, `lil-gui` for controls). The point is that YOU build the ship, the figure, the whirlpool, and every texture from math — libraries are for the hard rendering/physics plumbing, not for the content. ## The single most important thing: it has to look REAL The last version of a scene like this failed in one specific way: **the ocean was okay, but the ship read as a flat, dimensionless blob and the figure on it looked like a stick figure.** That cannot happen again. The ship and the figure have to hold up in a close-up. Hit the realism bar below on every element, and do not stop until they all clear it. ### Ocean (physically-based, FFT-driven) - Drive the surface with an **FFT / Tessendorf ocean spectrum**, ideally **multi-cascade** (2–3 frequency bands: long swell + chop + capillary ripples) rather than a handful of Gerstner waves. Derive correct normals and the **Jacobian** for foam. - **Persistent, rolling whitecap foam** that accumulates where waves steepen and break, and lingers/streaks off the crests. **Spray and mist** off the tops in wind. - **Physically-based water optics:** color absorbs with depth (bright over shallows, deep saturated blue-green in the trough), **Fresnel** reflectance, **subsurface scattering** glow through backlit crests, **sun glitter**, and **screen-space reflections (SSR)** so the ship, cliff, and sky land on the water. Fog to the horizon. ### Charybdis — the whirlpool (the hero effect) - A genuine, physically-suggestive **vortex**: the ocean surface spirals down into a **funnel** that punches below sea level, water accelerating and stretching toward the throat, with a dark churning core and a ring of breaking foam around the rim. - Downdraft **spray/particle** system pulled inward and down. The whole thing is **live and animated**, with a `whirlpoolStrength` control that grows it from a swirl to a ship-swallowing maelstrom. - The galley responds to it: buoyancy plus the vortex's inward/rotational pull, so the ship **lists, spins, and gets dragged** toward the throat as strength rises. ### The galley (this is where it must not be a blob) Build a believable **Homeric-era Greek galley** as real 3D geometry with volume and correct proportion, close-up-worthy: - **Hull:** loft it from spline cross-sections (a keel line + ribs + a smooth planked skin), a **high curved sternpost and prow**, a painted **oculus (eye)** on the bow. Real thickness — you should be able to orbit it and see a solid, hollow-decked ship, not a slab. - **Materials (PBR):** use `MeshPhysicalMaterial`-equivalent with **procedural wood-grain** (albedo + roughness + normal generated from noise), plank seams, tar/pitch darkening at the waterline, salt/wetness sheen (**clearcoat**), and weathering. Bronze fittings with proper metalness. - **Rig:** mast + yard (TubeGeometry), a **square sail** as a real subdivided cloth that **billows and luffs** via position-based / spring cloth sim driven by wind, ropes/rigging as thin tubes, banks of **oars** along both sides. - **Ambient occlusion** in the crevices so it reads as solid. ### Odysseus and the crew (no stick figures) - A **properly-proportioned humanoid** figure — real head, torso, arms, legs with correct scale — braced at the helm, plus a few crew at the oars. Segmented or lightly skinned bodies with **PBR skin and cloth (tunic/cloak)**, simple believable poses that react to the pitch and roll. Stylized is fine; **stick-figure or featureless-blob is a fail.** ### Lighting & rendering pipeline (name-checked, all required) - **Image-based lighting:** generate a procedural HDR sky and turn it into an environment map with **PMREM** for real reflections/ambient. **Physically-correct sun** as the key light. - **Cascaded shadow maps (CSM)** so the ship and cliff cast crisp shadows on the water and themselves. **SSAO** for contact shadowing. **ACES filmic tone mapping** + **bloom** on the sun/foam/spray. Optional **depth-of-field** for the cinematic beats. - Run a real **post-processing pipeline** (TSL/EffectComposer): SSAO → SSR → bloom → DoF → ACES output. Correct **linear/sRGB** color management throughout. ## Scylla (the far side) On the opposite cliff of the strait, suggest **Scylla** — a rock-bound, many-necked silhouette that occasionally lunges. It doesn't need to be the focus; it frames the danger. ## Feel & interactivity (make it play like a game) - Free-orbit camera **and** a cinematic "follow the ship" rig with slight shake near the vortex. Smooth, damped, no snapping. - A clean control panel (`lil-gui`): `whirlpoolStrength`, sea state / wind, time of day, camera mode, and a live **FPS** readout. Let the viewer crank the whirlpool and feel the ship get taken. - Steering: let the player nudge the galley (rudder/oars) to fight the pull — it should *feel* like you're losing a battle with the sea as strength climbs. ## Runtime handling (required) WebGPU detection with a graceful message, loading and failure states, resize, touch, capped DPR, hidden-tab pause, `prefers-reduced-motion`, accessibility, and performance safeguards (LOD / throttling so it holds a smooth frame rate). Live FPS readout. ## Standards & iteration — do not stop early This is judged on how real and how alive it looks. **Do not consider it done until every element above clears the realism bar.** After you build it, **render it, screenshot your own output, and inspect it** — the ocean, the whirlpool, and especially the ship and the figure in close-up. If the ship reads flat, if the figure reads like a stick, if the water looks like noise instead of a real sea — **fix it and go again.** Do a minimum of **three full self-review-and-improve passes**, more if it's not there yet. No placeholders, no invented APIs, no console errors, no hidden fallback rendering. ## Deliverable Complete, directly runnable code (index.html + JS modules, and any pinned library imports) plus brief launch instructions. It must run at a smooth frame rate and look like a modern game.
The exact prompt from the published test.
The builds
Kimi K3 · Screenshot of the buildRuns in your browser
Featured in
Kimi K3 vs Fable 5 vs. GPT 5.6 (Raw Results)
This build’s chapter starts at 0:39.




