TITLE Lichen on Slate PROMPT A generative piece in which lichens colonise a slab of stone in real time, driven by a Gray-Scott reaction–diffusion simulation running in WebGL 2 (ping-pong float framebuffers, hand-written shaders), then shaded so the chemical field reads as living crust: lobed, ringed, slightly raised, with pale growing margins. Concept: slow life; mathematics that looks exactly like something you have seen on a churchyard wall. Mood: patient, damp, northern; quietly beautiful. Palette: slate grey #3A3F44 with darker cleavage #24282C and a few rusty mineral veins; lichen colours: mustard-ochre #C9B458 (a Xanthoria-like crust), sage grey-green #9DB5A0 (a leafy foliose type), chalk white #E7E3D4 (crustose patches with black dots), and a rare burnt orange #D9793B. Dark-stone page: mid-dark grey rather than black, matte, no glow. The slab is an object lying on darker ground: weathered outline, two chipped corners and a conchoidal notch, with a soft shadow to the lower right. Simulation: two-chemical Gray-Scott on a float texture (RGBA32F, or RGBA16F where full float is not renderable or filterable) at about half screen resolution, capped at 640 on the long side, several iterations per frame. Different feed/kill parameter pairs give different growth habits: branching coral lobes (mustard), broad leafy labyrinthine lobes (grey shield), a crust that buds at its edge (chalk), and a solid crust rippled with concentric rings and pits (ember). Species are implemented by a species-id channel: each seeded colony carries its own parameters, diffusion scale, rate and colour; bare stone is claimed by the strongest neighbouring colony, nothing diffuses across into occupied territory, so colonies grow until they meet and then hold a dark contact line as real lichens do. A fourth channel stores the time each texel was colonised, which gives age for shading. A slowly drifting moisture map (noise, plus the crack) modulates the local reaction rate so growth favours damp areas. Growth is visible but unhurried: at the default speed a colony takes roughly 30–40 seconds to reach palm size, after a brief time-lapse in the first seconds. Shading (display fragment shader): stone first: procedural slate with layered noise, fine parallel cleavage lines, stepped cleavage terraces, a hairline crack running in from the top edge and two rust veins, lit from the upper left with a normal derived from the noise height (baked once per resize into a texture, recomputed procedurally inside the lens so it stays sharp). Lichen on top: thallus colour by species with variation by concentration; pseudo-relief from the gradient of the chemical field (lobes look raised, with a soft shadow on the lower right and a damp halo on the stone); a paler, brighter margin where growth is young; older centres darken, fill in, crack into areoles and develop tiny fruiting bodies (apothecia: small dark-rimmed discs in orange, brown or black, placed by hashed noise where the colony is old enough); concentric growth rings faintly visible from the colonisation time. Where two territories touch, a crisp dark line is drawn. When "rain" is on the stone darkens, colours deepen, a wet sheen appears and small drop rings come and go. Interaction: click/tap the stone to seed a colony of the currently selected species (spores take only on bare stone); drag to smear a line of spores. A small specimen tray at the bottom shows four species as round drawn swatches with invented-but-plausible field names in italics ("mustard wall-crust", "grey shield", "chalk map", "ember rim"); select one to seed. Controls styled as a naturalist's field card: "Rain" (a ticked box: raises moisture, speeds growth, darkens stone, adds sheen), "Years per minute" (a ruler slider, 10–300, default 60), "Scrape clean" (a slate-knife wipe that clears the stone with a scraping sweep from left to right and resets the year), "Fast-forward a century" (runs a century of iterations quickly while the year counter spins and a progress line fills). Hovering shows a hand-lens circle that magnifies the surface 2.5× with a brass rim and handle; on touch the lens floats above the finger; with the keyboard the arrow keys move the lens and Enter sows. Signature moment: the first ten seconds and the collisions: on load three colonies are already seeded and visibly expanding with bright margins, lobes splitting; when two species meet, a crisp dark boundary forms and the pattern becomes a map of territories. Typography: field-notebook restraint: a small ruled card in the corner on off-white (#E7E3D4) with ink #24282C, pinned with a brass drawing-pin: title in a typewriter face (Courier/"American Typewriter") that types itself in, handwritten-style italic notes (Georgia italic): "North wall, slate. Growth: about a millimetre a year. Watching speeds it up." plus a large italic year counter ("Year 37") and coverage percentage per species, and for bare slate, as tiny horizontal bars. The card folds away (and starts folded on phones). Fallback without WebGL 2 or without float render targets: a Canvas 2D reaction–diffusion at low resolution scaled up with the same palette, species rules and controls (no lens). Performance: adaptive iteration count to hold frame rate; canvas pixel count capped; coverage read back asynchronously; pause when hidden; handle resize by re-creating targets and re-seeding. Reduced motion: shows a stone already grown to Year 60 that advances only when the viewer presses "Advance a decade". DESCRIPTION A weathered slab of slate lies on dark ground, lit from the upper left, with a hairline crack, stepped cleavage and two rust veins. Three lichen colonies are already growing on it when the page opens: a mustard crust branching into coral lobes, a sage shield lichen unrolling broad leafy lobes, and a chalk-white crust budding at its edge. They grow slowly but visibly, with pale young margins, raised relief and soft shadows; their centres age, darken, crack and break out in tiny dark-rimmed fruiting discs. When colonies meet they stop and hold a thin black frontier, and over a century the slab turns into a map of territories. A pinned field card in a typewriter face and italic hand records the year and each species' share of the stone; a specimen tray offers four species to sow; a brass hand lens follows the pointer and magnifies the crust two and a half times. The mood is quiet, damp and northern. VISUAL TECHNIQUES - Gray-Scott reaction–diffusion in WebGL 2 on ping-pong float framebuffers, with a nine-point Laplacian and several iterations per frame - Species-id and colonisation-time channels: per-species feed/kill/diffusion/rate, claiming of bare stone, no-flux territory borders - Moisture field (drifting noise plus the crack) modulating local reaction rate; rain raises it everywhere - Procedural slate: fbm height, anisotropic cleavage lines, stepped terraces, crack groove, rust veins, baked to a normal/tone texture - Signed-distance slab outline with chipped corners, bevel light and a ground shadow - Lichen shading from the chemical field: gradient normals, cast shadow, damp halo, pale young margin, age darkening, growth rings from colonisation time - Voronoi areole cracking and hashed apothecia with rims in old crust; manual bilinear blending of species colours and a drawn contact line - Wet look: darkened albedo, specular sheen, animated drop rings - Hand lens: in-shader 2.5× magnification with slight barrel distortion and extra procedural detail, under a CSS conic-gradient brass rim and handle - Slate-knife wipe rendered in the shader with blade, shadow and dust streaks - Field card in CSS: ruled paper, margin line, SVG turbulence grain, drawing-pin, self-typing typewriter title, hand-inked tick, ruler slider, stamped buttons - Specimen swatches drawn in inline SVG with turbulence displacement - Asynchronous coverage readback through a pixel-pack buffer and fence sync - Canvas 2D reaction–diffusion fallback and a reduced-motion still that advances by decades INTERACTION MODEL Moving the pointer over the stone carries a brass hand lens that magnifies the surface beneath it; on touch screens the lens floats above the finger while it is down. Clicking or tapping bare stone sows a colony of the species selected in the specimen tray (a small ring puffs out in its colour), and dragging smears a broken line of spores; nothing takes on stone that is already held. The four tray swatches are a radio group and can be chosen by pointer or arrow keys. On the field card, the Rain tick box wets the slab (faster growth, darker stone, sheen and drop rings), the Years-per-minute ruler sets the pace, Scrape clean sweeps a knife across the slab from left to right and resets the year to zero, and Fast-forward a century runs a hundred years in a few seconds while the year counter spins and the coverage bars update. The card can be folded to leave only the title, year and bars, and starts folded on phones. With the keyboard, focusing the stone shows the lens, arrow keys move it (Shift for larger steps) and Enter or Space sows. The simulation pauses when the tab is hidden and reseeds on resize. With reduced motion the stone appears already grown to Year 60 and only changes when "Advance a decade" is pressed or the viewer sows, wets or scrapes it.