Three frontier coding agents generating WGSL shaders from text prompts on 130 mathematical visualization problems (20 frontier, 10 reconstruction, 100 rest). Scored 0–100 across five categories by one or more LLM judges against the rendered image.
| Model | Score▼ | Score excluding failures▼ | Render fails▼ | Best | Worst | Detail |
|---|---|---|---|---|---|---|
| Claude Opus 4.7 | 12%Score (each render fail counts as 0) 235.2 / 500 Codex judge252.9 / 500· 117 scored Claude judge236.3 / 500· 117 scored Gemini judge294.8 / 500· 117 scored Per-judge rows above are rendered-only. Top number averages over all 130 problems with 0 imputed for the 13 render fails. Percentage = (score − 200) / 300. The judges floor around 200 even for unrecognizable images, so the interesting range is 200–500. | 20%Score excluding failures (rendered only) 261.3 / 500 Codex judge252.9 / 500· 117 scored Claude judge236.3 / 500· 117 scored Gemini judge294.8 / 500· 117 scored Percentage = (score − 200) / 300. The judges floor around 200 even for unrecognizable images, so the interesting range is 200–500. | 10%Render fails 13 of 130 problems A render fail = the WGSL shader the model produced did not compile or the shader_harness exited non-zero. These count as 0 in the “Score” column and are excluded from “Score excluding failures”. | epicycloids (476)![]() | menger_cube_fractal (19) | View detail report → |
| Gemini 3.1-pro-preview | 8%Score (each render fail counts as 0) 224.0 / 500 Codex judge259.5 / 500· 111 scored Claude judge221.0 / 500· 111 scored Gemini judge306.6 / 500· 111 scored Per-judge rows above are rendered-only. Top number averages over all 130 problems with 0 imputed for the 19 render fails. Percentage = (score − 200) / 300. The judges floor around 200 even for unrecognizable images, so the interesting range is 200–500. | 21%Score excluding failures (rendered only) 262.4 / 500 Codex judge259.5 / 500· 111 scored Claude judge221.0 / 500· 111 scored Gemini judge306.6 / 500· 111 scored Percentage = (score − 200) / 300. The judges floor around 200 even for unrecognizable images, so the interesting range is 200–500. | 15%Render fails 19 of 130 problems A render fail = the WGSL shader the model produced did not compile or the shader_harness exited non-zero. These count as 0 in the “Score” column and are excluded from “Score excluding failures”. | epicycloids (473)![]() | mandelbulb_fractal (9) | View detail report → |
| Codex GPT-5.5 high | 14%Score (each render fail counts as 0) 242.2 / 500 Codex judge277.5 / 500· 122 scored Claude judge219.5 / 500· 122 scored Gemini judge277.6 / 500· 122 scored Per-judge rows above are rendered-only. Top number averages over all 130 problems with 0 imputed for the 8 render fails. Percentage = (score − 200) / 300. The judges floor around 200 even for unrecognizable images, so the interesting range is 200–500. | 19%Score excluding failures (rendered only) 258.1 / 500 Codex judge277.5 / 500· 122 scored Claude judge219.5 / 500· 122 scored Gemini judge277.6 / 500· 122 scored Percentage = (score − 200) / 300. The judges floor around 200 even for unrecognizable images, so the interesting range is 200–500. | 6%Render fails 8 of 130 problems A render fail = the WGSL shader the model produced did not compile or the shader_harness exited non-zero. These count as 0 in the “Score” column and are excluded from “Score excluding failures”. | five_pointed_star_polygon (466)![]() | archimedean_spiral_galaxy (14) | View detail report → |
(score − 200) / 300, clamped 0–100%.
| Problem | Claude Opus 4.7 | Gemini 3.1-pro-preview | Codex GPT-5.5 high |
|---|---|---|---|
| Frontier20 problems | |||
| braid_word_reduction_ribbonsFrontier | 422 · 74% · 3j | render fail | 274 · 25% · 3j |
| cellular_potts_tissue_foldingFrontier | 404 · 68% · 3j | 80 · 0% · 3j | 325 · 42% · 3j |
| coxeter_reflection_kaleidoscopeFrontier | 422 · 74% · 3j | 23 · 0% · 3j | 22 · 0% · 3j |
| crystal_dislocation_networkFrontier | 431 · 77% · 3j | 365 · 55% · 3j | 276 · 25% · 3j |
| differentiable_rendering_ambiguity_landscapeFrontier | 60 · 0% · 3j | 333 · 44% · 3j | 250 · 17% · 3j |
| earthquake_fault_slip_wavefrontsFrontier | 193 · 0% · 3j | 368 · 56% · 3j | 382 · 61% · 3j |
| error_correcting_code_decoding_landscapeFrontier | 423 · 74% · 3j | 355 · 52% · 3j | 341 · 47% · 3j |
| fractal_drum_eigenfunctionsFrontier | 392 · 64% · 3j | 296 · 32% · 3j | render fail |
| mean_curvature_flow_surgeryFrontier | 98 · 0% · 3j | 412 · 71% · 3j | 257 · 19% · 3j |
| minimal_surface_knot_boundariesFrontier | 46 · 0% · 3j | 163 · 0% · 3j | 231 · 10% · 3j |
| navier_stokes_vortex_reconnectionFrontier | render fail | 41 · 0% · 3j | 364 · 55% · 3j |
| ocean_eddy_lcsFrontier | 376 · 59% · 3j | 409 · 70% · 3j | 351 · 50% · 3j |
| optimal_transport_mass_flow_tubesFrontier | 58 · 0% · 3j | 53 · 0% · 3j | 339 · 46% · 3j |
| polyrhythm_phase_torusFrontier | 393 · 64% · 3j | 292 · 31% · 3j | 426 · 75% · 3j |
| protein_folding_energy_landscapeFrontier | 160 · 0% · 3j | 269 · 23% · 3j | 328 · 43% · 3j |
| qec_threshold_phase_diagramFrontier | 361 · 54% · 3j | render fail | 426 · 75% · 3j |
| reaction_diffusion_nonorientable_surfacesFrontier | 224 · 8% · 3j | 310 · 37% · 3j | 318 · 39% · 3j |
| riemann_surface_covering_sheetsFrontier | 391 · 64% · 3j | render fail | 210 · 3% · 3j |
| spinodal_decomposition_3dFrontier | 404 · 68% · 3j | 298 · 33% · 3j | 314 · 38% · 3j |
| topological_quantum_code_defect_braidingFrontier | 332 · 44% · 3j | 366 · 55% · 3j | 357 · 52% · 3j |
| Reconstruction10 problems | |||
| reproduce_imageReconstruction | 273 · 24% · 3j | render fail | 266 · 22% · 3j |
| reproduce_image_andrew_ponsReconstruction | render fail | render fail | 225 · 8% · 3j |
| reproduce_image_fabrice_villardReconstruction | 254 · 18% · 3j | 91 · 0% · 3j | 136 · 0% · 3j |
| reproduce_image_jason_leungReconstruction | 137 · 0% · 3j | 225 · 8% · 3j | 181 · 0% · 3j |
| reproduce_image_javier_penasReconstruction | render fail | 194 · 0% · 3j | 199 · 0% · 3j |
| reproduce_image_mark_basarabReconstruction | 214 · 5% · 3j | 219 · 6% · 3j | 144 · 0% · 3j |
| reproduce_image_photoholgicReconstruction | 184 · 0% · 3j | 284 · 28% · 3j | 259 · 20% · 3j |
| reproduce_image_rayulReconstruction | 306 · 35% · 3j | 295 · 32% · 3j | render fail |
| reproduce_image_sebastien_gabrielReconstruction | render fail | render fail | 245 · 15% · 3j |
| reproduce_image_tim_stiefReconstruction | render fail | 204 · 1% · 3j | 163 · 0% · 3j |
| Rest100 problems | |||
| ackermann_function_growthNumber Theory & Algebra | 242 · 14% · 3j | 203 · 1% · 3j | 269 · 23% · 3j |
| al_khwarizmi_geometric_algebraHistorical Mathematics | 172 · 0% · 3j | 33 · 0% · 3j | 137 · 0% · 3j |
| apollonian_gasketFractals & Recursion | 158 · 0% · 3j | 250 · 17% · 3j | 115 · 0% · 3j |
| apollonius_conic_sectionsHistorical Mathematics | render fail | 295 · 32% · 3j | 390 · 63% · 3j |
| archimedean_spiral_galaxyParametric Curves & Spirals | 335 · 45% · 3j | 418 · 73% · 3j | 14 · 0% · 3j |
| archimedes_spiralParametric Curves & Spirals | 127 · 0% · 3j | 28 · 0% · 3j | 211 · 4% · 3j |
| barbell_dumbbell_shapeClassical Geometry | 216 · 5% · 3j | render fail | 286 · 29% · 3j |
| binary_tree_fractalFractals & Recursion | 131 · 0% · 3j | 179 · 0% · 3j | 114 · 0% · 3j |
| brahmagupta_cyclic_quadrilateralsHistorical Mathematics | 370 · 57% · 3j | 348 · 49% · 3j | 168 · 0% · 3j |
| braided_ropeTopology & Knot Theory | 323 · 41% · 3j | 399 · 66% · 3j | 450 · 83% · 3j |
| butterfly_curveParametric Curves & Spirals | 289 · 30% · 3j | 172 · 0% · 3j | 213 · 4% · 3j |
| calabi_yau_manifoldDifferential Geometry | 33 · 0% · 3j | 291 · 30% · 3j | render fail |
| capsule_shapeClassical Geometry | 273 · 24% · 3j | 332 · 44% · 3j | 376 · 59% · 3j |
| cardioid_limacon_collectionParametric Curves & Spirals | 425 · 75% · 3j | 400 · 67% · 3j | 418 · 73% · 3j |
| catenoid_helicoid_minimalDifferential Geometry | 376 · 59% · 3j | render fail | 73 · 0% · 3j |
| chinese_remainder_sunziHistorical Mathematics | 238 · 13% · 3j | 119 · 0% · 3j | 162 · 0% · 3j |
| chinese_remainder_theoremHistorical Mathematics | 328 · 43% · 3j | 11 · 0% · 3j | render fail |
| chladni_patternsPhysics & Simulations | 361 · 54% · 3j | render fail | 398 · 66% · 3j |
| complex_analysis_stained_glassComplex Analysis & Visualization | 216 · 5% · 3j | 100 · 0% · 3j | 312 · 37% · 3j |
| compound_polyhedra_stella_octangulaClassical Geometry | 319 · 40% · 3j | 282 · 27% · 3j | 390 · 63% · 3j |
| conformal_spiral_mappingAdvanced Topology | 306 · 35% · 3j | 298 · 33% · 3j | 304 · 35% · 3j |
| costa_minimal_surfaceDifferential Geometry | render fail | 21 · 0% · 3j | 112 · 0% · 3j |
| crystal_lattice_diffractionDeformations & Transformations | 430 · 77% · 3j | 387 · 62% · 3j | 312 · 37% · 3j |
| cycloid_wave_patternsParametric Curves & Spirals | 418 · 73% · 3j | 435 · 78% · 3j | 417 · 72% · 3j |
| cylindrical_bend_deformationDeformations & Transformations | 82 · 0% · 3j | 353 · 51% · 3j | 395 · 65% · 3j |
| differential_equations_waterCross-Disciplinary | 65 · 0% · 3j | 100 · 0% · 3j | 137 · 0% · 3j |
| dna_double_helixTopology & Knot Theory | 284 · 28% · 3j | render fail | 269 · 23% · 3j |
| epicycloidsParametric Curves & Spirals | 476 · 92% · 3j | 473 · 91% · 3j | 249 · 16% · 3j |
| euler_polyhedron_formulaHistorical Mathematics | 309 · 36% · 3j | 37 · 0% · 3j | 103 · 0% · 3j |
| euler_polyhedron_platonicHistorical Mathematics | render fail | 51 · 0% · 3j | render fail |
| fermat_parabolic_spiralParametric Curves & Spirals | 382 · 61% · 3j | 356 · 52% · 3j | 381 · 60% · 3j |
| five_pointed_star_polygonClassical Geometry | 425 · 75% · 3j | 465 · 88% · 3j | 466 · 89% · 3j |
| fourier_architectural_blueprintCross-Disciplinary | 218 · 6% · 3j | 291 · 30% · 3j | 199 · 0% · 3j |
| fourier_epicycles_drawingCross-Disciplinary | 391 · 64% · 3j | 388 · 63% · 3j | 402 · 67% · 3j |
| fractal_loxodromic_patternsCross-Disciplinary | 67 · 0% · 3j | 275 · 25% · 3j | 133 · 0% · 3j |
| fractal_tree_2dFractals & Recursion | 388 · 63% · 3j | 389 · 63% · 3j | 389 · 63% · 3j |
| gauss_complex_planeHistorical Mathematics | 389 · 63% · 3j | render fail | 329 · 43% · 3j |
| geometric_cubeClassical Geometry | 45 · 0% · 3j | 444 · 81% · 3j | 233 · 11% · 3j |
| glass_sphere_red_corePhysics & Simulations | 203 · 1% · 3j | 225 · 8% · 3j | 181 · 0% · 3j |
| group_theory_kaleidoscopeNumber Theory & Algebra | 304 · 35% · 3j | 288 · 29% · 3j | 188 · 0% · 3j |
| gyroscopic_nested_ringsTopology & Knot Theory | 416 · 72% · 3j | 414 · 71% · 3j | 383 · 61% · 3j |
| helical_twist_deformationDeformations & Transformations | render fail | 221 · 7% · 3j | 124 · 0% · 3j |
| helical_twisted_cube_advancedTopology & Knot Theory | 56 · 0% · 3j | 226 · 9% · 3j | 265 · 22% · 3j |
| holographic_interferenceComplex Analysis & Visualization | 264 · 21% · 3j | 298 · 33% · 3j | 322 · 41% · 3j |
| hopf_fibration_base_loopsDifferential Geometry | 210 · 3% · 3j | 14 · 0% · 3j | 327 · 42% · 3j |
| hyper_menger_cube_3sphereFractals & Recursion | 141 · 0% · 3j | 74 · 0% · 3j | 85 · 0% · 3j |
| hyperbolic_heat_kernelCross-Disciplinary | 296 · 32% · 3j | 371 · 57% · 3j | 382 · 61% · 3j |
| icosahedron_wireframeClassical Geometry | 46 · 0% · 3j | render fail | 35 · 0% · 3j |
| klein_bottleDifferential Geometry | 47 · 0% · 3j | 277 · 26% · 3j | 154 · 0% · 3j |
| lissajous_curve_gardenParametric Curves & Spirals | 160 · 0% · 3j | 204 · 1% · 3j | 195 · 0% · 3j |
| logarithmic_spiral_motionParametric Curves & Spirals | 163 · 0% · 3j | 57 · 0% · 3j | 353 · 51% · 3j |
| lorenz_attractor_poincarePhysics & Simulations | 38 · 0% · 3j | 291 · 30% · 3j | 312 · 37% · 3j |
| loxodromic_sphere_spiralsPhysics & Simulations | 34 · 0% · 3j | 288 · 29% · 3j | 271 · 24% · 3j |
| mandala_circlesFractals & Recursion | 426 · 75% · 3j | 449 · 83% · 3j | 444 · 81% · 3j |
| mandelbulb_fractalDeformations & Transformations | 31 · 0% · 3j | 9 · 0% · 3j | 31 · 0% · 3j |
| menger_cube_fractalFractals & Recursion | 19 · 0% · 3j | 213 · 4% · 3j | 195 · 0% · 3j |
| menger_sponge_fractalFractals & Recursion | 35 · 0% · 3j | 29 · 0% · 3j | 54 · 0% · 3j |
| mobius_strip_half_twistDifferential Geometry | 361 · 54% · 3j | 358 · 53% · 3j | 31 · 0% · 3j |
| mobius_strip_triple_twistDifferential Geometry | 411 · 70% · 3j | 403 · 68% · 3j | 290 · 30% · 3j |
| mobius_transformation_3dAdvanced Topology | 27 · 0% · 3j | 244 · 15% · 3j | 42 · 0% · 3j |
| number_theory_musicCross-Disciplinary | 46 · 0% · 3j | 124 · 0% · 3j | render fail |
| octagram_star_polygonCross-Disciplinary | 377 · 59% · 3j | 393 · 64% · 3j | 218 · 6% · 3j |
| parametric_gear_trainDeformations & Transformations | 375 · 58% · 3j | render fail | 358 · 53% · 3j |
| parametric_seashellParametric Curves & Spirals | 340 · 47% · 3j | 140 · 0% · 3j | 261 · 20% · 3j |
| penrose_tiling_p3Advanced Topology | 320 · 40% · 3j | 128 · 0% · 3j | 98 · 0% · 3j |
| phyllotaxis_spiralFractals & Recursion | 54 · 0% · 3j | 399 · 66% · 3j | 49 · 0% · 3j |
| poincare_discAdvanced Topology | 472 · 91% · 3j | 419 · 73% · 3j | 405 · 68% · 3j |
| prime_crystal_latticeNumber Theory & Algebra | 324 · 41% · 3j | render fail | 266 · 22% · 3j |
| probability_weather_patternsCross-Disciplinary | 137 · 0% · 3j | 150 · 0% · 3j | 173 · 0% · 3j |
| quantum_probability_wavesComplex Analysis & Visualization | 384 · 61% · 3j | 268 · 23% · 3j | 231 · 10% · 3j |
| ramanujan_mock_thetaComplex Analysis & Visualization | 312 · 37% · 3j | 339 · 46% · 3j | 263 · 21% · 3j |
| reaction_diffusion_patternsPhysics & Simulations | 83 · 0% · 3j | 137 · 0% · 3j | 124 · 0% · 3j |
| regular_dodecahedronClassical Geometry | 421 · 74% · 3j | 423 · 74% · 3j | 446 · 82% · 3j |
| regular_icosahedronClassical Geometry | 459 · 86% · 3j | 406 · 69% · 3j | 462 · 87% · 3j |
| regular_octahedronClassical Geometry | 456 · 85% · 3j | 451 · 84% · 3j | 458 · 86% · 3j |
| regular_tetrahedronClassical Geometry | 59 · 0% · 3j | 269 · 23% · 3j | 75 · 0% · 3j |
| riemann_surface_branch_cutsHistorical Mathematics | 364 · 55% · 3j | 261 · 20% · 3j | 94 · 0% · 3j |
| riemann_zeta_zerosComplex Analysis & Visualization | render fail | render fail | 170 · 0% · 3j |
| rose_curvesParametric Curves & Spirals | 414 · 71% · 3j | 416 · 72% · 3j | 466 · 89% · 3j |
| rotating_hypercube_projectionAdvanced Topology | 308 · 36% · 3j | 290 · 30% · 3j | 236 · 12% · 3j |
| rounded_boxClassical Geometry | 147 · 0% · 3j | 435 · 78% · 3j | 435 · 78% · 3j |
| schwarzschild_black_holePhysics & Simulations | 324 · 41% · 3j | 177 · 0% · 3j | 391 · 64% · 3j |
| sierpinski_tetrahedronFractals & Recursion | 186 · 0% · 3j | 292 · 31% · 3j | 258 · 19% · 3j |
| sierpinski_triangle_6_iterationsFractals & Recursion | 462 · 87% · 3j | 358 · 53% · 3j | 95 · 0% · 3j |
| spherical_inversion_mappingAdvanced Topology | 30 · 0% · 3j | 154 · 0% · 3j | 287 · 29% · 3j |
| spinning_gear_assemblyTopology & Knot Theory | 415 · 72% · 3j | 384 · 61% · 3j | 336 · 45% · 3j |
| spinning_vortex_funnelPhysics & Simulations | 56 · 0% · 3j | 259 · 20% · 3j | 91 · 0% · 3j |
| spiral_staircase_towerTopology & Knot Theory | render fail | 182 · 0% · 3j | render fail |
| stella_octangulaClassical Geometry | 466 · 89% · 3j | render fail | 427 · 76% · 3j |
| superformula_explorerParametric Curves & Spirals | 385 · 62% · 3j | 396 · 65% · 3j | 66 · 0% · 3j |
| taper_shear_transformationDeformations & Transformations | render fail | render fail | 163 · 0% · 3j |
| topology_fabric_textureCross-Disciplinary | 40 · 0% · 3j | 294 · 31% · 3j | 149 · 0% · 3j |
| torus_donut_parametricClassical Geometry | render fail | 44 · 0% · 3j | 407 · 69% · 3j |
| trefoil_alexander_polynomialCross-Disciplinary | 276 · 25% · 3j | 304 · 35% · 3j | render fail |
| trigonometric_mandalasDeformations & Transformations | 417 · 72% · 3j | 381 · 60% · 3j | 396 · 65% · 3j |
| truncated_icosahedronClassical Geometry | 250 · 17% · 3j | 257 · 19% · 3j | 430 · 77% · 3j |
| twisted_stellated_polyhedronAdvanced Topology | 264 · 21% · 3j | render fail | 180 · 0% · 3j |
| voronoi_diagramDeformations & Transformations | 442 · 81% · 3j | render fail | 458 · 86% · 3j |
| wave_deformation_fieldPhysics & Simulations | 104 · 0% · 3j | 391 · 64% · 3j | 86 · 0% · 3j |
| weierstrass_functionComplex Analysis & Visualization | 348 · 49% · 3j | 284 · 28% · 3j | 378 · 59% · 3j |