Medium MeshAnimated

Marching cubes blobs

Shade a metaball mesh built by the marching-cubes algorithm: iridescent soap-bubble colors.

The target picture for the shader challenge "Marching cubes blobs"
Recreate this picture. You pass at a 99% match, then try to write it in fewer characters than the par.

How this challenge works

You write a fragment shader that draws the picture above, live in your browser. A match bar shows how close you are, and the score combines accuracy, code size (the par is 251 characters in Unity (Built-in)) and GPU speed. Work in HLSL, GLSL, WGSL, Metal or Godot and export the result when you are done.

The numbers you need

About the mesh
Three.js MarchingCubes builds triangles from 4 moving balls (Sebastian Lague has a great video on how the algorithm works). You only write the shading.
t
dot(i_normal, i_viewDir)
Color
0.5 + 0.5 * cos(6.28318 * (t + float3(0.0, 0.33, 0.67)))
Light
normalize(float3(0.6, 0.8, 0.5)) · i_normal, brightness 0.4 + 0.6 * diffuse

Solve it in your language

Unity (Built-in), Unity (URP), Unreal, Shadertoy / WebGL, OpenGL (LWJGL, raylib), three.js, GameMaker, LÖVE (Lua), Godot, Apple (iOS, macOS), WebGPU / Bevy.

Start coding