Crucible

Stipple

An ordered-dither shader field: a drifting noise field quantized through an 8x8 Bayer matrix into chunky retro dot patterning, in risograph sepia duotone with a slowly slipping print register. Original OGL fragment shader, offscreen-paused and reduced-motion-safe.

oglfree

Installation

CLI

npx shadcn@latest add @crucible/stipple

Manual — install dependencies, then copy the source

npm install ogl

Props

PropTypeDefaultDescription
colors[string, string]risograph sepia — warm cream ink on near-black paperDuotone pair [paper, ink]: the dark paper tone and the light ink laid over it. Any hex strings.
pixelSizenumber4Dither cell size in canvas pixels — bigger is chunkier. Clamped 2–16.
levelsnumber4Quantization steps between the two inks. Clamped 2–8.
speednumberDrift speed multiplier. 1 = default.
intensitynumberContrast / ink coverage of the underlying field. 1 = default.
pausedbooleanFreeze the animation, holding the current frame.
classNamestringExtra classes for the wrapper. Positioned absolute inset-0 -z-10.

Honors prefers-reduced-motion with a designed static fallback, pauses offscreen and on hidden tabs, and passes className through.