crucıble

Umbra

A dark veil: black-on-black volumetric drape of domain-warped ridged fbm where only the fold crests catch a whisper of light and a deep violet undertone breathes at a tenth of a hertz — luminance hard-capped so overlay text always wins. Original OGL fragment shader, time-dithered, offscreen-paused, reduced-motion-safe.

oglfree

Installation

CLI

npx shadcn@latest add @crucible/umbra

Manual — install dependencies, then copy the source

npm install ogl

Props

PropTypeDefaultDescription
colors[string, string][undertone, crestLight]. The undertone is the deep hue that breathes in the folds (default black-violet); crestLight is the pale tint the fold crests catch. Both stay whisper-subtle under the luminance cap.
speednumberAnimation speed multiplier. 1 = default drift + ~0.1 Hz breathing.
scalenumberField scale. 1 = default; higher packs more, smaller folds.
warpnumberDomain-warp strength. 0 = straight ridges, 1 = default drape, up to 3.
luminanceCapnumber0.3 — raise with careHard ceiling on output luminance (0–1). The veil soft-clips beneath this so overlay text always wins.
pausedbooleanFreeze the animation at its current frame.
Also accepts all props of React.ComponentPropsWithoutRef<"div">they pass through to the underlying element.

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