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
- 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.
- 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.
- 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.
- 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.
- 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
- 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
- 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
- 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