Aurora drift
Soft light that answers softly: a stack of two to six colour blobs is tiled across infinite space with one mod(), stretched into horizontal curtains by an anisotropic spread, and sheared into aurora by two fBm samples warping the whole coordinate; then the cursor treats it like an atmosphere. Five hover modes, none with a hard radius: velocity becomes a decaying global wind, proximity lifts the warp's amplitude, an unbounded 1/(1+r²) pull leans the whole field toward the cursor, absolute position pans the viewport, and a high-frequency shimmer scales itself by a broad Gaussian. A click is the one local event, an expanding Gaussian ring, and eleven named palettes carry the field from boreal green to nebula.
Build prompt
WebGLBuild a fullscreen WebGL aurora whose shape is a tiled signed-distance blob field and whose whole interactivity follows one rule: if the visual is soft, the inputs have to be soft too: no hard cursor radius anywhere. Paint it with raw WebGL: one fullscreen triangle; aspect-correct coordinates with a zoom and x/y offset for framing; then the colour comes from two to six soft circles stacked vertically and blended by Euclidean distance through a smoothstep whose softness is a dial, and the mod() operator tiles that entire construct across infinite space, with tile spacing, blob size, an anisotropic blob spread that stretches each circle into a horizontal bar of light, a base rotation, and a slow auto-rotation all exposed. Before sampling the tile grid, warp the coordinate with two independent fBm samples of 3D simplex noise (one for x, one for y, offset so they decorrelate) with strength, scale, octave count, and a seed that drifts along the noise's third axis at its own speed, so the field morphs instead of scrolling. Make the cursor atmospheric with five modes, each whole-field: Breeze accumulates pointer velocity into a decaying wind vector and adds the same offset to every pixel; Swell multiplies the warp amplitude by one plus a broad Gaussian of cursor proximity so the aurora breathes harder with no displacement at all; Tide pulls the field with 1/(1+r²·k), an unbounded falloff that never reaches zero and multiplies by the un-normalized direction so displacement vanishes at the cursor instead of pinwheeling; Parallax pans the viewport with absolute cursor position like a camera; Shimmer scales a global high-frequency noise layer by the same broad Gaussian. On pointer-down, fire the one local event: an expanding ring (radius = age × speed, a Gaussian of distance to that radius for thickness, amplitude = strength × fade³), edge-triggered per click and gone after a decay dial's worth of time. Finish with a YIQ-space hue rotation over time, and film grain as 2D value noise re-seeded in discrete steps of a grain speed dial so it flickers rather than interpolates. Cap the drawing buffer at 1.5 device pixels and freeze the field under reduced motion. Expose everything: the palette as five colour dials plus background, warp, blobs, framing, cursor mode/strength/radius/wind decay/wind gain, the pulse, grain. Ship named palette presets that read as moods: Boreal Green, Arctic Glacier, Peach Blossom, Ember Glow, Mint Lilac, Orchid Spark, Tide Pool, Rose Copper, Velvet Rose, Amber Glass, Nebula Drift.
Append your stack, content, and brand constraints before handing it to your agent.