Skip to content

gemini 4 argon vs claude opus 5.5 – two 1-shot new york scenes, one prompt

Comic-style race: a lime-green supercar crosses the checkered finish line while a smoking orange supercar trails behind models

gemini 4 argon built a full times square scene in three.js in 10m 46s for $1.17. claude opus 5.5 needed 1h 11m of agent time on the same prompt. we gave both models one prompt per scene - times square at night and central park in autumn

times square and central park: gemini 4 argon (left) and claude opus 5.5 (right), one prompt per scene

the setup:

  • one prompt per scene, the same text for both models
  • the harness: the model writes a plan of files and chunks, then writes the chunks one by one; the page runs in headless chrome, and console errors go back to the same model for an automatic fix round
  • gemini 4 argon: openrouter api, model id google/gemini-4-argon
  • claude opus 5.5: claude code on a subscription
  • three.js 0.170 from a cdn, every mesh, texture and environment generated in code - no models, images or hdris

models: google gemini 4 argon, anthropic claude opus 5.5

the numbers

time and cost of each model's own run:

times square

  • gemini 4 argon - 10m 46s, $1.17
  • claude opus 5.5 - 1h 11m, $10.50

central park

  • gemini 4 argon - 13m 22s, $1.57
  • claude opus 5.5 - 49m 16s, $7.70

code shipped, times square / central park

  • claude opus 5.5 - 5,529 lines in 42 files / 5,491 lines in 39 files
  • gemini 4 argon - 4,106 lines in 17 files / 4,051 lines in 16 files

times square at night

the prompt asked for broadway in the rain: huge animated billboards, wet asphalt reflecting the neon, taxis, a crowd with umbrellas, steam from manholes and four camera shots.

Gemini 4 Argon (left) and Claude Opus 5.5 (right): Times Square street in the rain with neon billboards, taxis and steam
street level – argon (left), opus (right)
Gemini 4 Argon (left) and Claude Opus 5.5 (right): people with umbrellas under red billboards vs a glowing billboard in the rain
billboards and umbrellas
Gemini 4 Argon (left) and Claude Opus 5.5 (right): a wet plaza with a taxi and steam vs a high view of lit skyscrapers
the wet plaza and the view from above
Gemini 4 Argon (left) and Claude Opus 5.5 (right): One Times Square with the 2026 sign at night vs a rainy sidewalk crowd with umbrellas
one times square and the crowd
TASK: a PHOTOREALISTIC real-time 3D scene of TIMES SQUARE at night after rain, New York City, in Three.js. It will be recorded as a short video and shown side by side with the same scene made by another AI model, so the goal is simple: the frame must look as close to a real photograph / cinematic drone shot as possible. Judge every decision by "would this pass for a photo at a glance?".

COORDINATES AND SCALE
- Metres, real-world proportions. +Y up. Origin and layout described below. Everything sits on the ground, nothing floats or intersects.
- Origin at the centre of the "bow tie" where Broadway crosses Seventh Avenue at W 45th St; +Z north (uptown, towards Duffy Square and the TKTS red steps), +X east.

THE SCENE
- STREETS: Broadway and Seventh Avenue crossing diagonally, wet dark asphalt with puddles and painted crosswalks/lane markings, sidewalks and the pedestrian plazas, curbs, manholes with rising steam, traffic lights, street signs ("Broadway", "7 Av", "W 45 St"), lamp posts, bollards, newsstand.
- BUILDINGS: dense tall buildings on all sides covered with HUGE LED BILLBOARDS and NEON - One Times Square at the south end with its stacked screens and the ball on top, curved and wrap-around screens on corners, horizontal news tickers, vertical signs; between screens: facades with windows, cornices, fire escapes. All billboard content is GENERATED IN CODE on canvases and ANIMATED (abstract ads, gradients, product-like shapes, fake brand names, scrolling tickers, clocks) - no real trademarks. The screens must actually emit light onto the street, the people and the wet ground.
- THE TKTS RED STEPS (glowing red glass stairs) in Duffy Square with people sitting on them.
- TRAFFIC: yellow NYC taxi cabs and a few other cars driving with headlights, tail lights and reflections; a bus.
- CROWD: many pedestrians (instanced, simple but well-proportioned, walking cycles), some with umbrellas.
- WET REFLECTIONS: the main effect - glossy wet asphalt with puddles reflecting the screens and neon (screen-space reflections or a planar reflector blended by a puddle mask with roughness variation), streaks of coloured light on the ground.
- ATMOSPHERE: light drizzle (rain streaks lit by the screens), steam from manholes, haze that glows with the neon colours; dark night sky with low clouds lit orange by the city.

LOOK AND RENDERING (this is what the comparison is about)
- Physically based: MeshStandardMaterial / MeshPhysicalMaterial everywhere, renderer.outputColorSpace = SRGB, ACES Filmic (or AgX) tone mapping with a tuned exposure, physically plausible light intensities.
- Image-based lighting: build an environment map IN CODE (Sky addon or a gradient/sun sky scene rendered through PMREMGenerator) and use it as scene.environment, consistent with the sun/key light.
- PROCEDURAL TEXTURES generated in code (canvas or DataTexture, with mipmaps, anisotropy, correct colour space): albedo variation, roughness maps and normal maps for stone, concrete, asphalt, brick, glass curtain walls, metal, bark, grass, water. No flat single-colour surfaces anywhere near the camera. Break tiling (world-space UVs, noise blending, decals of dirt/wear/stains).
- Geometry detail where the camera looks: bevelled edges, real silhouettes (lofted / lathed / extruded / displaced shapes, not boxes), instancing for repeated things (windows, leaves, people, lamps, cars), LOD or impostors for far buildings.
- Shadows: soft, high-resolution, tight shadow camera around the action (cascades or a camera-following shadow frustum), contact shadows / ambient occlusion so objects sit on the ground.
- Post-processing with EffectComposer: GTAO (or SAO), bloom only on bright emissives and the sun glints, depth of field on close shots, a subtle filmic grade (lift/gamma/gain or LUT-like curve), vignette, very light film grain, SMAA/FXAA, OutputPass. Atmospheric perspective: distance haze / height fog that matches the sky colour, so far buildings fade realistically.
- Life: subtle motion everywhere so it reads as video, not a still - animated billboards and tickers, moving taxis with light streaks, walking crowd, rain, steam, flickering neon.
- Performance: at least 30 fps at 1280x720 on a mid-range GPU. Use instancing, merged geometry and a quality setting window.__quality = 'high' | 'medium'.

CAMERA - an automatic cinematic sequence (no user input needed)
- The page opens straight into the sequence: (1) street-level slow push north up Broadway through the crowd towards the TKTS steps; (2) low angle on the wet ground with screen reflections in a puddle and a taxi passing; (3) crane up along One Times Square's screens to the ball; (4) wide high shot looking down over the whole square. Each shot 6-8 s with smooth eased camera moves (dolly, crane, slow orbit, push-in) and real lens choices (focal length via fov; longer lens for detail shots). The sequence loops seamlessly.
- All animation and camera motion are a pure function of time taken from performance.now() / the requestAnimationFrame timestamp (no Math.random() per frame, seeded randomness only), so the video can be recorded frame-by-frame with a virtual clock.
- Press "O" to switch to OrbitControls free camera and back. No other UI, no text on screen (the frame must be clean for the video); log errors only to the console.
- The frame must look right at any aspect ratio (it will be captured at roughly 940x780 and at 1920x1080): fill the window, handle resize.

TECH
- A folder of plain ES modules: index.html + src/*.js. Three.js 0.170 from a CDN via an importmap in index.html ("three" -> https://cdn.jsdelivr.net/npm/[email protected]/build/three.module.js, "three/addons/" -> https://cdn.jsdelivr.net/npm/[email protected]/examples/jsm/). Addons (Sky, Water, EffectComposer passes, OrbitControls, BufferGeometryUtils, SimplexNoise, RoomEnvironment...) are allowed.
- Every mesh, texture and environment is generated in code: no external models, images, fonts or HDRs.
- No file over ~350 lines. Every file imports what it uses (including THREE) and exports what others need; every import must name an export that exists in that exact file; never use a const before its declaration. The page must start without errors.
- Expose window.__app = { ready: true once everything is built and the first frame is rendered, shots: [{name, start, duration}], setShot(i) }.

# DETAIL REQUIREMENTS (binding, they override anything above)
No blockouts: no boxes, cones, spheres-on-sticks trees, cube people or flat cardboard buildings. The target is INSANE, film-level detail - every object must look modelled by a senior 3D artist, not placed as a primitive.
1. NO BARE PRIMITIVES anywhere the camera gets within 50 m: no raw Box/Sphere/Cone/Cylinder used as a finished object. Build shapes with LatheGeometry, ExtrudeGeometry with bevels, TubeGeometry along curves, lofted cross-sections, subdivided meshes with vertex displacement, merged sub-parts. Every hard edge is bevelled; every surface has micro-detail (normal map) AND macro-detail (real geometry: mouldings, seams, panels, rivets, joints, trim).
2. PEOPLE in high detail: anatomically proportioned humans (8 heads tall, real limb tapering, shoulders, neck, hips, hands with fingers, feet in shoes), a head with nose, eye sockets, ears, lips, jaw and hair volume; layered CLOTHING as separate meshes (coats, jackets with collars and pockets, jeans, skirts, scarves, hats, backpacks, bags, umbrellas, phones in hands); varied skin tones, body types, heights, colours. At least 12 distinct people variants, each with a natural skeletal walk cycle (arm swing, knee bend, heel-toe, slight head bob, hips rotation) built with a Skeleton/SkinnedMesh or a joint hierarchy; some standing, sitting, talking, taking photos. Instanced or cloned so the crowd stays fast.
3. VEHICLES (taxis, cars, buses, ferries, boats) modelled properly: lofted body with real silhouette, glass with frames, door seams, mirrors, grille, headlight/taillight units with lenses, wheels with tyres, rims and spokes, the taxi roof sign and NYC livery stripes/numbers, a ferry with decks, railings, windows, lifeboats.
4. ARCHITECTURE: every building is a real building - setbacks, cornices, pilasters, window frames with mullions and recessed glass (inset depth, sills, lintels), interior-mapped lit rooms behind windows (parallax interior shader), storefronts with awnings and signage, fire escapes, AC units, water tanks on roofs, roof equipment, spires and crowns of the famous towers modelled to their real shape.
5. NATURE: trees grown with a recursive branching algorithm (trunk -> branches -> twigs, tapered, bark-textured) carrying tens of thousands of instanced individual LEAF meshes (proper leaf outline, two-sided, translucent in backlight, colour variation per leaf); grass as hundreds of thousands of instanced blades with wind; rocks as displaced noise meshes; water with layered normal maps, foam, caustics where shallow.
6. THE HERO SUBJECT (the statue / Bow Bridge and lamp posts / One Times Square and the billboards) gets the most detail of all: sculpted with layered displacement, every characteristic element of the real landmark recognisable in a close-up.
7. Budget: a few million triangles in total is fine (use InstancedMesh, merged geometry, LOD). Spend more chunks: a larger project with more modules (e.g. one module per asset type: people.js, peopleClothes.js, walkCycle.js, taxi.js, facade.js, windows.js, tree.js, leaves.js ...) is expected - do not compress the work to save chunks.
8. Correctness: every identifier is declared before use (check for typos like "constx"), every shader injection via onBeforeCompile only uses variables that exist in that Three.js 0.170 shader chunk (e.g. there is no "geometryNormal" in the normal_fragment_maps chunk - use "nonPerturbedNormal" or declare your own), every import names an existing export. The page must start without errors.

central park in autumn

the prompt asked for a morning in the park: autumn trees, bow bridge over the lake, the skyline above the treetops, a bench with falling leaves.

Gemini 4 Argon (left) and Claude Opus 5.5 (right): a misty park path with lamp posts under autumn trees
the path under the trees – argon (left), opus (right)
Gemini 4 Argon (left) and Claude Opus 5.5 (right): an iron bridge over a lake with skyscrapers behind the trees
the lake and bow bridge
Gemini 4 Argon (left) and Claude Opus 5.5 (right): view over autumn trees to a hazy Manhattan skyline
above the treetops
Gemini 4 Argon (left) and Claude Opus 5.5 (right): a park bench and lamp post with falling leaves
the bench close-up
TASK: a PHOTOREALISTIC real-time 3D scene of CENTRAL PARK, Manhattan, on an autumn morning, New York City, in Three.js. It will be recorded as a short video and shown side by side with the same scene made by another AI model, so the goal is simple: the frame must look as close to a real photograph / cinematic drone shot as possible. Judge every decision by "would this pass for a photo at a glance?".

COORDINATES AND SCALE
- Metres, real-world proportions. +Y up. Origin and layout described below. Everything sits on the ground, nothing floats or intersects.
- Origin at a junction of park paths near The Lake / Bow Bridge; +X east, +Z south (towards Central Park South).

THE SCENE
- PATHS: two or three gently winding asphalt paths with stone curbs, a cobblestone/hexagonal-paver section, leaves on the ground, slight wear and wet patches; classic Central Park cast-iron lamp posts, green wooden slat benches with iron frames, a drinking fountain, trash cans.
- BOW BRIDGE (cast-iron arch with its ornamental railings and planters) over THE LAKE: water with ripples and reflections of the trees, bridge and sky; a rowboat or two.
- TREES: dense autumn trees (American elm, maple, oak) in October colours (gold, orange, red, some still green) with real trunk/branch structure and thousands of instanced leaves with translucency/backlight; falling leaves; lawns with instanced grass blades, rock outcrops of Manhattan schist (grey, with mica sparkle and lichen).
- THE CITY AROUND: the park is framed by Manhattan skyscrapers rising above the treeline on the horizon - Central Park South / Billionaires' Row (very tall slender towers like 432 Park Avenue and Central Park Tower), pre-war apartment buildings of Central Park West with their twin towers (like The San Remo), glass and limestone facades with windows that reflect the sky; atmospheric haze makes them softer with distance.
- PEOPLE: a few joggers, walkers and a cyclist on the paths (simple but well-proportioned figures with walking cycles), pigeons, a squirrel.
- LIGHT: soft morning sun low in the east, light mist over the lake, sun rays through the leaves (volumetric shafts / god rays), dappled light on the paths.

LOOK AND RENDERING (this is what the comparison is about)
- Physically based: MeshStandardMaterial / MeshPhysicalMaterial everywhere, renderer.outputColorSpace = SRGB, ACES Filmic (or AgX) tone mapping with a tuned exposure, physically plausible light intensities.
- Image-based lighting: build an environment map IN CODE (Sky addon or a gradient/sun sky scene rendered through PMREMGenerator) and use it as scene.environment, consistent with the sun/key light.
- PROCEDURAL TEXTURES generated in code (canvas or DataTexture, with mipmaps, anisotropy, correct colour space): albedo variation, roughness maps and normal maps for stone, concrete, asphalt, brick, glass curtain walls, metal, bark, grass, water. No flat single-colour surfaces anywhere near the camera. Break tiling (world-space UVs, noise blending, decals of dirt/wear/stains).
- Geometry detail where the camera looks: bevelled edges, real silhouettes (lofted / lathed / extruded / displaced shapes, not boxes), instancing for repeated things (windows, leaves, people, lamps, cars), LOD or impostors for far buildings.
- Shadows: soft, high-resolution, tight shadow camera around the action (cascades or a camera-following shadow frustum), contact shadows / ambient occlusion so objects sit on the ground.
- Post-processing with EffectComposer: GTAO (or SAO), bloom only on bright emissives and the sun glints, depth of field on close shots, a subtle filmic grade (lift/gamma/gain or LUT-like curve), vignette, very light film grain, SMAA/FXAA, OutputPass. Atmospheric perspective: distance haze / height fog that matches the sky colour, so far buildings fade realistically.
- Life: subtle motion everywhere so it reads as video, not a still - leaves swaying and falling, ripples on the lake, mist drifting, joggers and walkers moving along the paths, the rowboat drifting, birds.
- Performance: at least 30 fps at 1280x720 on a mid-range GPU. Use instancing, merged geometry and a quality setting window.__quality = 'high' | 'medium'.

CAMERA - an automatic cinematic sequence (no user input needed)
- The page opens straight into the sequence: (1) low dolly along a winding path under the trees with sun shafts; (2) wide shot across The Lake to Bow Bridge with the skyline above the trees; (3) crane up above the treetops revealing the park surrounded by skyscrapers; (4) close shot of a bench and lamp post with falling leaves and shallow depth of field. Each shot 6-8 s with smooth eased camera moves (dolly, crane, slow orbit, push-in) and real lens choices (focal length via fov; longer lens for detail shots). The sequence loops seamlessly.
- All animation and camera motion are a pure function of time taken from performance.now() / the requestAnimationFrame timestamp (no Math.random() per frame, seeded randomness only), so the video can be recorded frame-by-frame with a virtual clock.
- Press "O" to switch to OrbitControls free camera and back. No other UI, no text on screen (the frame must be clean for the video); log errors only to the console.
- The frame must look right at any aspect ratio (it will be captured at roughly 940x780 and at 1920x1080): fill the window, handle resize.

TECH
- A folder of plain ES modules: index.html + src/*.js. Three.js 0.170 from a CDN via an importmap in index.html ("three" -> https://cdn.jsdelivr.net/npm/[email protected]/build/three.module.js, "three/addons/" -> https://cdn.jsdelivr.net/npm/[email protected]/examples/jsm/). Addons (Sky, Water, EffectComposer passes, OrbitControls, BufferGeometryUtils, SimplexNoise, RoomEnvironment...) are allowed.
- Every mesh, texture and environment is generated in code: no external models, images, fonts or HDRs.
- No file over ~350 lines. Every file imports what it uses (including THREE) and exports what others need; every import must name an export that exists in that exact file; never use a const before its declaration. The page must start without errors.
- Expose window.__app = { ready: true once everything is built and the first frame is rendered, shots: [{name, start, duration}], setShot(i) }.

# DETAIL REQUIREMENTS (binding, they override anything above)
No blockouts: no boxes, cones, spheres-on-sticks trees, cube people or flat cardboard buildings. The target is INSANE, film-level detail - every object must look modelled by a senior 3D artist, not placed as a primitive.
1. NO BARE PRIMITIVES anywhere the camera gets within 50 m: no raw Box/Sphere/Cone/Cylinder used as a finished object. Build shapes with LatheGeometry, ExtrudeGeometry with bevels, TubeGeometry along curves, lofted cross-sections, subdivided meshes with vertex displacement, merged sub-parts. Every hard edge is bevelled; every surface has micro-detail (normal map) AND macro-detail (real geometry: mouldings, seams, panels, rivets, joints, trim).
2. PEOPLE in high detail: anatomically proportioned humans (8 heads tall, real limb tapering, shoulders, neck, hips, hands with fingers, feet in shoes), a head with nose, eye sockets, ears, lips, jaw and hair volume; layered CLOTHING as separate meshes (coats, jackets with collars and pockets, jeans, skirts, scarves, hats, backpacks, bags, umbrellas, phones in hands); varied skin tones, body types, heights, colours. At least 12 distinct people variants, each with a natural skeletal walk cycle (arm swing, knee bend, heel-toe, slight head bob, hips rotation) built with a Skeleton/SkinnedMesh or a joint hierarchy; some standing, sitting, talking, taking photos. Instanced or cloned so the crowd stays fast.
3. VEHICLES (taxis, cars, buses, ferries, boats) modelled properly: lofted body with real silhouette, glass with frames, door seams, mirrors, grille, headlight/taillight units with lenses, wheels with tyres, rims and spokes, the taxi roof sign and NYC livery stripes/numbers, a ferry with decks, railings, windows, lifeboats.
4. ARCHITECTURE: every building is a real building - setbacks, cornices, pilasters, window frames with mullions and recessed glass (inset depth, sills, lintels), interior-mapped lit rooms behind windows (parallax interior shader), storefronts with awnings and signage, fire escapes, AC units, water tanks on roofs, roof equipment, spires and crowns of the famous towers modelled to their real shape.
5. NATURE: trees grown with a recursive branching algorithm (trunk -> branches -> twigs, tapered, bark-textured) carrying tens of thousands of instanced individual LEAF meshes (proper leaf outline, two-sided, translucent in backlight, colour variation per leaf); grass as hundreds of thousands of instanced blades with wind; rocks as displaced noise meshes; water with layered normal maps, foam, caustics where shallow.
6. THE HERO SUBJECT (the statue / Bow Bridge and lamp posts / One Times Square and the billboards) gets the most detail of all: sculpted with layered displacement, every characteristic element of the real landmark recognisable in a close-up.
7. Budget: a few million triangles in total is fine (use InstancedMesh, merged geometry, LOD). Spend more chunks: a larger project with more modules (e.g. one module per asset type: people.js, peopleClothes.js, walkCycle.js, taxi.js, facade.js, windows.js, tree.js, leaves.js ...) is expected - do not compress the work to save chunks.
8. Correctness: every identifier is declared before use (check for typos like "constx"), every shader injection via onBeforeCompile only uses variables that exist in that Three.js 0.170 shader chunk (e.g. there is no "geometryNormal" in the normal_fragment_maps chunk - use "nonPerturbedNormal" or declare your own), every import names an existing export. The page must start without errors.

our take

gemini 4 argon gets a full scene of 4,000+ lines on the page in 11-13 minutes for under $2 - 6.6x cheaper than opus by our estimate. opus 5.5 gets there on its own, at several times the time and cost. opus - softer light, mirror-like reflections, the most cinematic shots

limitations

  • one run per model per scene; another run will look different
  • opus ran in claude code with three sub-agents in parallel, argon through the api in one loop
  • argon struggles with collisions - objects pass right through each other

sources

ON AIR · RADIO.THEHYPE.NEWS ↗ ai news radio — 24/7