crucıble

Cathode

A CRT / VHS tube background: a synthetic phosphor signal rolls under dense scanlines while a slow vertical tracking bar sweeps down and shears the picture, the whole frame barrel-distorted into a bulging glass tube with a dark bezel, radial chromatic aberration, phosphor bloom, aperture-grille shimmer, and animated snow — all graded through a single phosphor tint. Original OGL fragment shader, DPR-clamped, offscreen-paused, reduced-motion-safe.

oglfree

Installation

CLI

npx shadcn@latest add @crucible/cathode

Manual — install dependencies, then copy the source

npm install ogl

Props

PropTypeDefaultDescription
colors[string, string]a classic green-phosphor terminal on near-black. Pass e.g. ["#ffb454", "#140a02"] for amber, or ["#bfe6ff", "#050a12"] for a cold blue-white tubeScreen palette as [phosphor, ambient]. phosphor is the glowing tube tint that colours the scanned image and bloom; ambient is the faint screen-on wash in the dark areas.
speednumber1Playback-rate multiplier for the roll, tracking bar, and snow. 1 = default.
intensitynumber1Overall luminosity of the phosphor, scanlines, and bloom, 0–2. 1 = default; lower banks a dim standby tube, higher blazes.
curvaturenumber0.32Barrel-distortion / tube-bulge amount, 0–1. 0 is a flat panel; 1 is a fat vintage CRT with pronounced curvature and a dark bezel.
noisenumber0.35Snow / signal-noise amount, 0–1. 0 is a clean transmission; 1 is heavy VHS static.
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.