DeepSeek V4.1 Flash 1017's answer, our pickOur pick: DeepSeek V4.1 Flash 1017

Playground · Animation · WebGL · Standing test: we add each new model as it launches

Humpback whale breach in three.js: frontier models, one prompt

AI models build a 3D ocean where a humpback whale breaches, spins and splashes, in three.js. Only one ocean renders. Play every answer live.

About this test

Can a model build a whole scene that moves, not just an object? We asked for an ocean as real as it can make it, with a humpback whale that swims along the surface, then breaches, twists in the air and crashes back in a splash, all built in code with three.js and shaders it writes itself. The idea came from Ivan Fioravanti's WebGPU ocean, made with MiniMax M3.1 Flash in a coding agent. Ours is one prompt and one answer, with no chance to run the code and fix it.

Every model got the same prompt at its default settings, with room for as many tokens as it can write. Where one ran out, we asked again with less thinking, and say so on its card.

Read more

The prompt, word for word

Build a 3D ocean scene where a humpback whale breaches, in three.js with shaders you write yourself. Use no 3D model files or textures: build every part in code.

- The ocean should look as real as you can make it: moving waves out to the horizon, light and colour that change with depth and angle, foam on the crests, and a sky that suits it.
- A humpback whale, made in code, that looks like a humpback: its shape, long pectoral fins, the fluke. Between breaches it swims just below and along the surface, and you can see it there.
- The breach: it rises out of the water almost vertically, twists in the air so it spins as it falls, and crashes onto its side or back. The water reacts: a big splash and spray, foam that spreads and fades, rings of waves moving out from where it landed.
- It breaches on its own every 12 seconds or so, and at once when you press the space bar or tap the screen.
- A camera you can drag to look around and zoom, plus keys 1, 2 and 3 for three fixed views that show the breach well: one from the water's surface nearby, one wide, and one of your choice.
- Sound, made in the browser with the Web Audio API: the sea, and the splash when the whale lands. Start it on the first click or tap.
- Add the details that make it feel alive.

Make it a single HTML file with inline CSS and JavaScript. The only external code allowed is three.js (and its addons) loaded from cdn.jsdelivr.net; no other libraries, fonts, images or audio files. It should fill the viewport, run smoothly, and work with both mouse and touch.
Show the whole prompt

Default settings: no thinking effort set, no temperature, and as much room as each model has (its own output limit). A card says so when an answer was made with other settings: “limit 128k” means it could use up to 128,000.

These are heavy, so one runs at a time. Start one, press space or tap to make the whale breach, then try keys 1, 2 and 3 for the set views. Sound on.

How each model did

RankModelChecksTimeCost
1 DeepSeek V4.1 Flash 1017 Our pick 5.5 of 6 13 min $0.011
2 GPT-6.1 Sol 4 of 6 5.4 min $0.166
3 MiniMax M3.1 Flash (free route) 3 of 6 7.2 min $0.033
4 Claude Opus 5.5 0 of 6 32 min2 tries $3.951

Ranked by our pick, then checks passed, then cost. Time and cost count every try; each dot is one check, in the order listed below (filled: passed, half: partly, empty: failed). Click a model for its notes.

What each answer cost, against the checks it passed

Best value: DeepSeek V4.1 Flash 1017, 5.5 of 6 checks for $0.011. The best value is the cheapest answer with the most checks passed, counting every try.

0%20%40%60%80%100% $0.01$0.1$1$10 Cost, every try (log scale) Checks passed DeepSeek V4.1 Flash 1017

Best valueOther answers

Notes on each answer

1

DeepSeek V4.1 Flash 1017

Our pick 5.5 of 6

The only working ocean: rolling blue-green water to the horizon, a low sun laying a glittering path across it and a sky that changes with the view. The dark humpback cruises at the surface, then rises almost straight up, shows its pale belly as it twists, and lands in a burst of spray with foam spreading out from the impact. The foam is the weak part: blotchy, camouflage-like patches, and a flat white disc at the centre of the splash. It breaches on its own every 6 to 10 seconds rather than about 12.

  • The landing throws spray, and foam and rings of waves spread out and fade (partly)

13 min · 109,905 output tokens (75,269 thinking) · $0.011

2

GPT-6.1 Sol

4 of 6

"Pelagic", the best whale here: a grey-blue humpback with a white belly, knobbly head, long pale pectoral fins and a notched fluke, which leaps clear, rolls through the air and comes down on its back, with views called Waterline, Wide and Portrait. But there is no sea. The ocean shader names a variable <code>patch</code>, a word WebGL 2 reserves, so it does not compile and the whale swims and breaches against a grey haze, with only faint rings where it lands.

  • An ocean surface with moving waves out to the horizon, light that changes with angle, and foam
  • Between breaches you can see the whale swimming along the surface (partly)
  • The landing throws spray, and foam and rings of waves spread out and fade (partly)

5.4 min · 16,526 output tokens (3,624 thinking) · $0.166

3

MiniMax M3.1 Flash (free route)

3 of 6

"Humpback Breach: Open Ocean Study", with a status line ("Breaching · airborne", "Impact · foam and pressure rings") and a countdown to the next breach. The whale is a small dark silhouette with long fins that rises straight up, and the landing throws up a column of spray balls with cloud-like foam. Like GPT-6.1 Sol's, its ocean shader uses the reserved word <code>patch</code> and fails to compile, so the sea is a flat teal plane with no waves.

Missed or only partly met 5 of the 6 checks.

7.2 min · 55,065 output tokens (35,834 thinking) · $0.033

4

Claude Opus 5.5

0 of 6

Nothing to see: the page stays black behind its control hints. While building the whale it merges about a dozen pieces into one mesh, but the bumps for the tubercles and eyes carry texture coordinates and the body does not, so three.js refuses to merge them and the script stops before the first frame. At its default thinking it used all 128,000 tokens it can write without finishing; this is the second try, at low thinking.

Failed every check.

11 min · 69,341 output tokens (42,838 thinking) · $1.389 for this answer; 32 min and $3.951 over 2 tries

Took 2 tries: ran out of room at 128,000 tokens; finished at 128,000 tokens, low thinking.

One answer per model, at each model's default settings unless the card says otherwise, through OpenRouter. If an answer ran out of room or stopped short, we asked again with more room, then with thinking off, and say so. This is a quick look, not a benchmark: run it again and every answer will differ. For measured results, see our benchmarks.

How we pick. Claude Opus 5.5 tried every answer (clicking, dragging and playing it in a browser), marked the checks and drafted the notes. Our pick is a judgement among the answers with the most checks passed, not a score: the checks show what works, the pick is which of those we would rather use. Opus is an Anthropic model, and Claude answers are our pick in 17 of 29 tests, so weigh Claude picks with that in mind. Our method calls for a blind second opinion from another lab's model on any Claude pick; none is recorded for this page yet.

What we checked, by trying each answer ourselves: An ocean surface with moving waves out to the horizon, light that changes with angle, and foam; The whale reads as a humpback, with long pectoral fins and a fluke; Between breaches you can see the whale swimming along the surface; It rises almost vertically, spins in the air and lands on its side or back; The landing throws spray, and foam and rings of waves spread out and fade; Space or a tap breaches at once, it also breaches on its own, keys 1–3 change the view, and you can drag and zoom. A partial pass counts as half.

Verdict

DeepSeek V4.1 Flash 1017 is the only model whose answer has both a sea and a whale: sun on moving water, a breach with a twist, and spray and foam where it lands, for about a cent. GPT-6.1 Sol built the best whale and the best breach, but its ocean shader uses a word WebGL 2 reserves (patch) and never compiles, so the whale leaps through grey haze. MiniMax M3.1 Flash made the same mistake with the same word. Claude Opus 5.5 ran out of room at its default thinking, and its second try stops before drawing anything. Two of four answers came down to one variable name, which a coding agent would probably have caught on its first run and a single answer could not.

What would your prompt get?The Spring Prompt playground runs one prompt on several models at once, from OpenAI, Anthropic, Google, Mistral and others, side by side.
Ask for access
More from the playground
All tests →
Export
Include

Chrome will ask to share this tab: choose Allow. Only the board below is recorded.

Spring Promptspringprompt.com