Hard EffectsAnimated

4-way kaleidoscope of checkerboard, pulsing with scanlines

A picture built in steps: zoom in and out, then kaleidoscope, then draw checkerboard, then color it, then finish with scanlines. Every step is listed below with its exact numbers.

The target picture for the shader challenge "4-way kaleidoscope of checkerboard, pulsing with scanlines"
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 438 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

Space
p = (uv - 0.5) * float2(aspect, 1.0)
Step 1: Zoom in and out
p *= 1.0 + 0.3 * sin(time * 2.5)
Step 2: Kaleidoscope
a = atan2(p.y, p.x); a = abs(fmod(a + 6.2831853, 1.571) - 0.785); p = length(p) * float2(cos(a), sin(a)) (4 mirrored wedges)
Step 3: Pattern
m = abs(fmod(floor(p.x * 4.0) + floor(p.y * 4.0), 2.0))
Step 4: Colors
lerp(float3(0.19, 0.07, 0.18), float3(0.91, 0.36, 0.7), m)
Step 5: Finish
col *= 0.8 + 0.2 * step(0.5, frac(uv.y * 100.0))

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