Crushed velvet under a single lamp. The nap has been brushed in swirls, so each fold catches the light differently; move the pointer and the sheen rolls across the fibres.
Tune here, paste once — it ships as about a kilobyte of WebGL.
Pick a palette, drag the sliders, hit randomize. The prompt carries the values you see, not the defaults.
Single HTML by default. Switch to Next.js, React, Vue, Astro, WordPress, Shopify or Webflow and the output contract changes with it.
Claude, Cursor, ChatGPT, Copilot, v0 — anything that writes code. You get a self-contained canvas with the shader inline.
First child of a relative container, content above it. Add a scrim if text needs more contrast.
The uniforms stay named and the CONFIG object sits at the top of the script. Nothing is baked.