Hard NatureAnimated
Tornado
A swaying funnel with spinning bands, dust at the base, under a stormy sky.
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 672 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
- x
(uv.x - 0.5) * aspect- Sky
lerp(float3(0.10,0.11,0.15), float3(0.38,0.41,0.48), 1.0 - uv.y)- Sway
0.07 * sin(uv.y * 5.0 + time * 1.5)- Funnel half-width
w = lerp(0.03, 0.30, uv.y) (narrow at the bottom!)- k
(x - sway) / w → -1..1 across the funnel- Body
1.0 - smoothstep(0.8, 1.0, abs(k))- Bands
0.5 + 0.5 * sin(uv.y * 40.0 - time * 8.0 + k * 3.0)- Funnel colors
lerp(float3(0.20,0.21,0.25), float3(0.65,0.66,0.72), bands), darkened by 1.0 - 0.45 * abs(k)- Dust
exp(-uv.y * 14.0) * (0.6 + 0.4 * sin(x * 30.0 + time * 4.0)), color float3(0.55,0.5,0.42), weight 0.8
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