Generative Assets · Field notes
How it was made
Lichtenberg renders dielectric breakdown — the branching path a trapped charge takes to find ground through a block of acrylic. The figure is grown live on a canvas, not drawn from an image. This page documents the palette, the type, the growth model, and the three craft passes.
The concept
A slab of acrylic is charged until the field inside exceeds what the material can hold. The discharge that follows does not travel in a straight line to ground — it branches, splitting again and again, choosing its path by chance weighted toward the steepest local field. When it arrives it freezes, leaving a fractal fossil of the strike. The page's single job: let a visitor trigger that discharge anywhere and watch the invisible field made briefly, brilliantly legible.
Palette — argued from trapped acrylic
Cast acrylic under a captured discharge is nearly black with a violet cast; the filaments burn cold white-blue. Every colour here is that scene, and the bright discharge blue is reserved for lines and marks only — body copy runs on a derived light ink that clears 4.5:1 on the dark ground.
Type
Technique — the signature
The figure is a dielectric-breakdown / DLA branching growth on a 2D canvas. From an injection point, six-to-nine leader tips push outward. Each frame every tip advances one step, its heading perturbed by noise and gently biased along the radial field toward ground (∇²φ = 0). At each step a tip may branch — spawning a child at an angle with reduced life — so the tree multiplies as it races out, an avalanche that accelerates then dies at the block's edge.
Every segment is stored with its radius and branch order. Rendering layers three strokes — a wide dim halo, a mid discharge thread, and a hot white core near the origin — onto an offscreen buffer, which is then composited with an additive blurred copy for the glow. At rest the figure faintly pulses, and every few seconds a re-ignition ripple of brightness sweeps outward along the branches — the block quietly recharging. Live readouts report filament count, reach, branch order, and the 1/r potential under the cursor; a mini-histogram plots branch density against radius.
Reduced-motion visitors get the full figure grown synchronously and held static — no loop, no pulse — so the page is never blank and never moving.
Iteration log
Spacing, contrast, colour balance
Re-read the render top to bottom and drove a discharge to check the figure actually grew.
- The bright
#B9C6FFread fine on lines but I confirmed it fails as small text on the dark ground — demoted it to lines/marks and set all body copy in a derived#C3CADD(11.8:1), micro-labels in#787E93(4.8:1). - Tuned the type scale — headline optical size pinned to 96, editorial to 48 — so Bricolage's heavier cuts stayed crisp rather than muddy.
- Balanced the readout bar rhythm and gave the acrylic stage an inset bevel so the block reads as a physical object, not a flat panel.
Enrich the signature, add a second read
Drove repeated discharges and watched the resting state settle.
- Added the re-ignition ripple — a band of brightness that sweeps outward along the frozen branches every few seconds, the second-read detail: the block looks recharged and ghosts the strike.
- Split rendering into halo / thread / hot-core passes with an additive blur bloom, so the discharge glows like it's lit from within rather than being a flat stroke.
- Made the cursor readout a live
1/rpotential in kV — the micro-interaction that rewards moving near the injection point.
375px, reduced motion, performance
Tested the layout at 375 / 768 / 1440 and drove the reduced-motion path.
- Confirmed the canvas sizes to its container, DPR is capped at 2, resize regrows a fitted figure, and the rAF loop pauses on
document.hidden. - Reduced-motion renders a complete figure statically — verified it draws, not blanks — and interaction regrows synchronously.
- Removed a redundant second glow ornament (the Chanel rule) and did a final copy read; capped the filament count so growth stays smooth on modest hardware.
Named for Georg Christoph Lichtenberg, who mapped these figures in dust in 1777.