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 about 4m to compile on a fast gpu; slower hardware can take longer. this browser needs the main-thread fallback, which may freeze the page.
params (46)
2.20
1.45
0.00
-0.02
1.00
1.62
0.35
0.55
13.00
7.20
7.00
0.88
0.45
0.55
0.75
0.55
0.30
0.35
0.40
0.85
2.00
2.30
34.00
0.35
0.92
1.00
0.30
0.25
0.00
3.60
1.00
0.02
0.55
0.85
0.30
0.70
0.70
0.70
0.45
0.70
0.80
1.00
0.55
0.30
0.30
0.55
.fs source · isf not running

the burbs

#c3ixdpt7
⑂ fork it{ } json

SUBURB. An endless residential street, generated rather than modelled: no level file and no mesh, every lot decided by hashing an integer index, so the neighbourhood is unbounded and identical for everyone who runs it. The street itself is the same trick the backrooms uses on its corridors - a 2D CROSS-SECTION swept along a curve. Road crown, gutter, curb, verge, sidewalk and lawn are one plane figure in (lateral, height) extruded down z, so the entire streetscape costs six box tests no matter how far it runs; the road bends because the lateral coordinate is measured from a wandering centreline rather than from the axis, and the field is divided by sqrt(1 + slope^2) afterwards because shearing a distance field is not an isometry and an uncorrected shear overshoots exactly where the street turns. Houses are the part that genuinely cannot be 2D, so they are bounded instead: each lot is tested against its bounding box first and only opened up when the sample is within half a metre of it, which is what keeps six lots in flight at the price of six box tests and one house. A house is a main mass, a gable whose ridge runs to the street or along it, a garage wing, a porch roof and sometimes a chimney - and the gable is built as the intersection of two half-spaces rather than as a rotated box, because the intersection is convex and stays a usable field where a rotation would not. Windows are never geometry. They are drawn on the facade from the lot's own hashes, recomputed once per shaded pixel rather than threaded out through two hundred marcher steps, and lit individually - which is the whole night-time image, because a dark house with three warm rectangles in it reads as occupied and an emissive box does not. A few of them are a television instead: colder, and flickering on a beat. Time of day is one continuous control rather than three presets, and it moves five things at once - the key light's elevation and colour, the sky gradient, whether the lamps have struck, how many windows are lit, and the fog, which is the one that matters most, since a suburban street at night is not a dark version of the same street but a completely different scene made almost entirely of scattered light. THE LAMPS ARE THE SUBJECT AT NIGHT. Each is gathered as a real fixture with an inverse-square falloff and a downward bias, three at a time with a window that fades each to nothing before the set changes, because a lamp that vanishes at a set boundary paints a hard plane across the road. The cone of light in the air is integrated along the ray rather than smeared on afterwards, so it sits correctly in front of and behind geometry, and it is thickest inside a drifting ground-mist layer that sits below head height, which is what puts the light on the road rather than in the sky. There is also an optional CEILING: a fluorescent deck a few metres over the rooftops, strips running across the street on their own lattice, at which point the sky is never seen again and the whole neighbourhood is indoors. A strip is a line light, so it falls off as one over distance rather than one over distance squared - that single exponent is the difference between a room lit by tubes and a street lit by lamps. Wet asphalt reflects analytically: the reflected ray samples only the sky and the lamp field, never the geometry, because on a horizontal mirror at grazing incidence what you see is almost entirely the lamps anyway, and the specular lobe is stretched vertically so they smear into columns instead of dots. The camera's own optics get a diagonal anamorphic streak off each lamp, projected from the lamp's world position rather than found in the frame, which is the artefact in every phone photograph of an empty street at night. THE TREES ARE BUILT OUTLINE FIRST, because at forty metres in fog the outline is the only thing left of them. A spruce is a stack of drooping skirts and not a cone - one whorl of branches per year, each overhanging the one below - and folding the height into tiers buys every whorl for the price of one, with two tiers evaluated rather than one because a fold makes the field jump where the index changes and a marcher walks through a jump. A broadleaf is three lumpy masses wider than they are tall, edge-broken at two scales, on a crown lifted clear of the ground so you can see under it and down the street: a canopy that reaches the grass turns the row into a hedge and takes the depth of the frame with it. A new street is planted with staked saplings instead, which are bare, so there is nowhere to hide and the branching itself has to carry them - a whip, five whips off it, a stake and a tie. None of the three stands perfectly vertical, because a row that does reads as instanced however good each tree is. The verge tree also dodges the driveway, which costs one sign flip and removes the loudest tell that a street was generated; a second, larger rank sits back in the lawns, because trees all at one distance from the kerb give the row no depth. Foliage is lit as a translucent thing rather than an opaque one, since a canopy with a streetlamp behind it is the brightest object on the street and not a black cutout. Forty-six controls: walk, lens, aim, camera height and how far across the road it stands, street curve, lot frontage, road width, setback, house density, second storeys, roof pitch, garage frequency, trees and the mix of spruce, broadleaf and staked sapling, parked cars, driveways, time of day, sun azimuth, lamp spacing, lamp colour from sodium to LED, working lamps, brightness, lit windows, televisions, ceiling height and its strips, fog, mist, haze, wetness, moon, siding variety, grass, grime, ambient occlusion, shadow, exposure, and five camcorder controls.

#backrooms#liminal#suburbsgeneratorraymarchliminalsuburbiabackroomsnightarchitectureprocedural3d
by kiwitnessed_generationmade with glslopCC0-1.0credit: CC0. Section sweeping, footprint filtering, the windowed light gather and the in-scatter integration follow the CC0 BACKROOMS shader.activecreated 2026-09-10 03:50Z122 views0 forks46 paramsclaude-opus-5
lineage
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).