The shader draws the screen as a grid of fixed-size cells. Each cell samples a tile from a spritesheet with 20 brightness columns. A small hash on cell coordinates alternates sprite rows, which breaks up repetition.
Base brightness comes from two sine waves that move at different angles and speeds. Before sampling, the cell coordinates are warped with slower cross-axis motion, so crests bend instead of staying straight. The Wave A / B slider blends the two waves, and Frequency and Speed control their spacing and motion.
Only the positive part of the blended wave lights cells, then the value is squared for stronger contrast. Floor and Ceiling clamp the output range. Dim and Bright colours tint dark and bright tiles, and Scale plus Style switch between fine and coarse dots or crosses.
Interaction ripples are layered on top of the wave field. Mouse movement adds short ripples, while click or tap adds a larger burst with a longer fade. Draw on drag affects mouse input with a trail off, it lets you paint only while the button is held.