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 19s to compile on a fast gpu; slower hardware can take longer. this browser needs the main-thread fallback, which may freeze the page.
params (37)
1.00
0.16
0.30
3.00
176.00
1.00
7.00
0.85
0.07
8.00
1.00
0.34
1.00
5.00
1.00
0.09
1.30
1.60
1.00
0.80
0.55
0.70
0.65
0.85
1.00
0.50
210.00
0.55
0.45
3.00
0.55
0.55
0.05
0.55
1.00
0.28
1.35
.fs source · isf not running

Star Eater

#lpisze4e
⑂ fork it{ } json

An 8-bit boss fight against something that should not be there, orbited in 3D and drawn on a tube. The scene is actually three-dimensional: the head, every joint of every limb, every fighter and every shell lives at a real xyz, is turned by an orbiting camera and projected with perspective, and depth is resolved per pixel by a hand-rolled z test - which is what a fragment shader has instead of a sort, each element writing only if it both covers the pixel and is nearer than what is already there. That is what makes the orbit convincing rather than decorative: the eyes are placed on the SURFACE of the head in 3D, so as the camera comes round they slide across it, foreshorten and rotate out of sight while others rotate in behind them, and the maw sits at a direction that slowly precesses so it swings toward the camera and away again. A billboarded sprite cannot do any of that. Everything is pixels FIRST: the frame is snapped to a chunky raster and every colour forced into a SIXTEEN ENTRY palette by nearest match, before the CRT touches it - so the tube bends and scans a genuinely indexed low-resolution picture rather than a smooth one wearing a costume. Snapping after the glow is the single most common way to get this wrong. Nothing is antialiased either, on purpose: a 1985 raster had hard edges, so every shape is a step() of its distance field rather than a smoothstep. The fight is closed form and keeps no state between frames. A ship's position is a function of time, so the position it FIRED from is that same function evaluated at the instant it fired - floor(t/period)*period - a shell in flight is a lerp from there toward the beast, and the impact is the same arithmetic run past the end. The guns and the hits therefore agree with nothing remembering anything, the scanner plots the squadron by simply asking where it is, and the phosphor trail behind each fighter is that same function asked about the recent past. The limbs are an incremental WALK rather than a formula: each turns a little at every step so curvature accumulates down its length and it curls, which a closed-form bend cannot do - that can only ever wave the whole limb at once. The beast is built to be wrong: its RADIUS is modulated so the silhouette itself is lumpy rather than merely textured, veins run under the hide, a maw opens ringed with teeth made by radial repetition of a single wedge, suckers ride the underside of every limb, and up to six eyes sit unevenly placed, each blinking on its own clock behind a vertical slit. Behind it all: a vast banded spiral turning in log-polar space, gas built from three sines at different angles rather than two (with two the level sets are parallel lines, so banding them draws a hard diagonal across the frame that reads as a bug), stars scrolling by whole pixels, void creeping in at the corners with a ragged moving edge, and a great eye far back - a vesica, being the intersection of two discs, squashed vertically to make the lid - that opens now and then. The overlay is dense and drawn in the same bent raster as the game, because on a real cabinet the HUD is on the same glass: corner brackets, score, wave counter, a segmented threat meter, labelled HULL and PWR columns with percentage readouts down both flanks, a scanner with two rings, a sweep hand and blips that brighten as the hand passes, a boxed CORE/FLUX/VOID readout panel, an oscilloscope that roughens as damage lands, spinning LOCK brackets, a crawling ticker, and a WARNING that flashes only while something is actually wrong. Text is a real 3x5 bitmap font, one bit per pixel packed into floats, with whole words packed base-42 into a single float - four glyphs fit inside a 24-bit mantissa - both decoded with mod and floor since GLSL ES 1.00 has no bitwise operators. The tube is built to be believable rather than decorative: scanlines use a real beam profile so a bright line is a FATTER line (a flat multiply cannot do that, which is why most scanline filters look like a screen door laid on top), the mask is a proper slot mask with triads staggered every other row and the dark gap between slots rather than plain stripes, halation models light scattering sideways inside the glass which is much wider and softer than phosphor glow, and the glare sits on the glass in FRONT of the picture so it does not move with it. Thirty-seven controls.

#8bit#crt#game#space#demon#azathoth#black hole#scifigenerator8bitpixelretrocrtgamespacehudhorrorsdf
by ksinwitnessed_generationmade with ClaudeCC0-1.0credit: CC0activecreated 2026-09-05 12:47Z147 views0 forks37 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).