Lab · 04 systems · WebGL2 · three.js · RXXR

Things built to find out.

Systems that make imagery from rules rather than frames. Agentic workflows in three.js, GLSL and whatever else the job needs, so a still can become a loop, a loop can become a launch, and none of it has to be redrawn.

Built for Dialog RSN-1 · 2026

The signal shader

A WebGL2 shader that turns any image or video into a field of glyph particles, at any size. It was built to give Dialog RSN-1 its own imagery: the launch page, the film inserts, the 4K model frames and the ads all come from this one system, and this project ran on RXXR.

How it works

  1. 01

    The source, a still or a video frame, is sampled into a grid of cells. Cell size is a parameter, not a resolution, so the same scene renders at 300 pixels or 4K without a new export.

  2. 02

    Each cell picks a character from a chosen set. The set is the identity: which glyphs are allowed, and which one lands where, follows how much light falls in the cell.

  3. 03

    The cells are particles. They have a position, a velocity and a life, and they drift, gather or scatter according to a field. Feed it a video and the motion of the source drives the motion of the particles.

  4. 04

    It runs in the browser and exports frames at whatever size is asked for, so one file made the stills, the loops and the frames the film cut to.

  1. 01 / 04

    Field

    A field of glyphs. Characters stand in for pixels, so the image reads as type from a distance and as noise up close.

    1256 × 704 · 25 fps · 7.8 s

  2. 02 / 04

    Terrain

    A strip of terrain drawn in glyphs, scrolling under a fixed frame. The character set thins where the slope falls away.

    1256 × 704 · 25 fps · 7.8 s

  3. 03 / 04

    Orb

    A sphere of particles rendered as characters, turning. The glyph in each cell follows how much light lands on it.

    1256 × 704 · 25 fps · 12 s

  4. 04 / 04

    Cloud

    A volume of particles with no hard edge. Same renderer as the orb with the surface removed, so the form is only ever density.

    1256 × 704 · 25 fps · 9.2 s

  • Signal Lab

    A raster-to-glyph tool that turns any image or frame into a dithered signal field. The precursor to the shader above, built for a client site.

    Client tool, gated

  • Ad and campaign generators

    Browser tools that produce on-brand display ads, gradient slides and kinetic type from copy alone. Colour, motion and layout are locked; the copy is the only input.

    Client tools, in use

  • Audio-reactive particle systems

    TouchDesigner and WebGL experiments where speech drives a particle volume.

    In progress

  • The studio

    The hero of this site. A modelled room drawn in the browser, with an opening that builds it edge by edge, then surface by surface.

    Live