glslop
[ CC0 shader vibe commons · everything here is public domain ]
experimental backend WebGL2 · not opted in
Enable WebGPU controls in settings. WebGL2 remains unchanged.
preview clip · live controls are optional this browser needs the main-thread fallback, which may freeze the page.
params (30)
2.00
3.00
5.00
5.00
1.05
2.30
0.14
0.90
1.00
5.00
2.00
0.50
0.21
1.00
0.60
0.80
1.00
1.00
0.60
5.20
0.60
2.00
1.00
1.00
1.00
1.00
0.55
190.00
0.00
1.00
.fs source · isf not running

Plexus

#d3a8uy1o
⑂ fork it{ } json

An endless biomechanical spine - ten of them - coiled around one another and travelling away from you forever. Stacked ribbed plates threaded onto a corrugated cord, a pair of back-swept spikes down each flank, and bundles of flexible conduit running the whole length. Three things make it affordable as a single-pass raymarcher. Z IS THE PARAMETER: each strand is a curve written as a function of the world z, so for any point the nearest piece of that strand is the piece at the point's own z, with no search along the curve and no table. The cross-section then comes out sheared by the strand's slope instead of perpendicular to it, which at this pitch is about a tenth and reads as the plate leaning into the coil; and what falls out is not a distance but an over-estimate by at most sqrt(1 + slope^2), so every strand divides its own field by its own slope bound. That bound has three terms and the one that is easy to miss is the third: the local frame TURNS with z as well as translating, so a point sitting at the plate rim feels another rim-radius times dphi/dz of speed. ONLY THE PLATE REPEATS, AND IT SITS IN THE MIDDLE OF ITS CELL: mod() repetition over-estimates near a cell boundary because the nearest surface may be the neighbour's, so the cord, the dorsal cord and the conduits are all written against z and know nothing about the cell - they run through every wall unbroken, and the field near a wall is therefore small, which is exactly where the over-estimate would otherwise bite. That same rule shapes every surface: ribbing written per cell would break at every joint, since a cell picks up a new roll and a new hash there, while ribbing written against z runs the length of the strand, which is the only way a corrugated tube reads as one. It is paid for in one place - a modulated radius adds amplitude times frequency to the field's slope, so each piece divides by its own bound - and past about five units the ribs are flattened out with distance, because a rib finer than a pixel is noise and, unlike a radius, it cannot be floored: flooring a corrugation only makes a fatter corrugation. AND IT LOOPS: the camera flies at a constant speed and the whole scene is periodic in z, so after one period divided by that speed - fifteen seconds at the defaults - the frame comes back to where it started, measured at a mean difference of 0.31 of one colour step against the frame a period earlier, the residue being float precision in phases that grow with z. Not a crossfade and not a fade to black: every phase is written as k*(n*z + m*zc) with n and m whole, and every per-plate hash is taken on the cell index modulo the number of plates in a period, so advancing the camera by one period maps the scene onto itself. The two controls that would break that, the coil rate and the twist, are integer sliders for the same reason. The braid is two bundles, an inner one coiling one way and an outer one coiling the other, which is what makes them read as intertwined rather than merely parallel; they can never collide because they live in separate radial bands, and within a bundle every strand coils at the same rate, so those cannot collide either. The weaving is a radius that wanders with z, so strands cross over one another in depth without ever touching. A plate is an elliptical footprint - (er - 1) times the smaller semi-axis is a conservative distance to an ellipse - drooping backwards towards a rim that thickens into a heavy bar, with a ladder of ribs across it; the ribs run on the LONG axis because the slope a rib adds is frequency times amplitude over the axis it varies along, so running them that way costs less than half what radial rings did and buys a deeper rib for it. The six conduits round each cord are got for the price of one by folding the angle into a sixth, which is exact because each tube sits in the middle of its own sector and fits inside it; the spikes are mirrored across the strand for the same kind of reason, one primitive drawing a symmetric pair. The plate is deliberately narrow and the SPIKES carry the width, because a bounding volume is a budget: bolting long spikes onto a wide plate pushed the bound out by half, which costs march steps everywhere and forces the two bundles apart until the braid stops being a braid. Light is a key, a headlight, a rim and a translucency term read from the field a little way behind the surface, over a hard narrow highlight on a broad sheen; every colour in the picture sits within a twentieth of one hue, because a complementary glow turns this kind of thing into poster art. There is no sky function at all: the background is black and the fog is a plain multiply into the same black, because at depth the only thing separating one strand from the next is how much of it the fog has eaten, and a lit sky both washes that out and gives the bioluminescence something to compete with. An exponential never reaches zero, though, so on its own it draws a hard edge at the far clip - at any sane density the field is still lit where the march stops, and the braid comes out with a straight cut across it that reads as clipping rather than as distance. Raising the density only moves the edge nearer; the fade needs a factor that is exactly zero at the clip, so the last thing visible is already black by the time the ray runs out of distance to travel; (1-x^2)^2 in x = t/MAXD lands on zero with a zero derivative, so there is no edge there and no knee before it. Each spine also ROLLS about its own axis while its position in the braid stays put, which is what makes them turn on the spot rather than the braid swinging round: the roll is applied to the local frame before the vertebra is built, so plate, spikes, dorsal cord and conduits turn together as one body - spin only the plate and it shears through the conduits welded to it - and it is a rigid rotation, so the distance bound is untouched. It depends only on the clock and the strand index, so it is worked out once a frame into a small global array read back with the loop variable as its index, rather than costing two more transcendentals per strand in every one of the many map calls a pixel makes; and it is in WHOLE turns per period, like the coil rate and the twist, because half a turn at the end of a period would leave every strand at the wrong angle when the camera came back. The bioluminescence runs at a different rate through different parts: one wave whose wavelength and speed are chosen by the material at the hit, so the light crawls along the plates, runs down the cord and races through the conduits, with a golden-angle phase per strand so no two are in step. The glow is gathered with TWO kernels, a tight one for the light on the strand and a faint broad one for the little of it that reaches across the gap - widening a single kernel instead washes the whole frame grey. The broad one is COMPACT rather than exponential, because an exponential is never zero and a ray that misses everything would still gather a little all the way to the far clip, lifting the corners of the frame off black however small its coefficient; a window that vanishes at about one strand spacing means open void accumulates exactly nothing, and the background measures a true zero. Controls: flight speed, coil turns per period, how many strands in each bundle, both radii, the weave, the axis wander and the travelling undulation, the plate twist, the axial spin, dorsal cord, wing span, thickness, plate depth, spikes, ribbing, conduits, per-plate variation, camera distance, swing, focal length and roll, key light, bioluminescence, fog, hue, march steps, antialiasing and exposure.

#plexus#coil#spine#bone#cable#raymarching#sdfraymarchingsdfbiomechanicalalienspineloopprocedural
by ksinwitnessed_generationmade with ClaudeCC0-1.0credit: CC0activecreated 2026-09-15 05:31Z98 views0 forks30 paramsClaude-Opus-5
export clip · render a video in your browser

Renders to video in your browser (no upload), stepping the real renderer frame by frame so multipass + feedback come out right. motion auto-animates the shader's own knobs — each export rolls a fresh take (🎲 re-roll, 🔒 to pin one you like). GIF is slower with a tighter length cap; MP4/WebM are faster. Some devices record in real time (noted below if so) — keep the tab visible.

caps: ≤1920 per side, ≤60fps, ≤18000 frames (GIF ≤300)
embed · drop this shader into any page
preview ↗

Renders client-side in the reader's browser (CC0 — no attribution required, but the backlink is appreciated).