Skip to content

Digital Rain

Columns of glowing code falling around the camera in layers of depth, with a message you can write in the rain. Loops perfectly.

Background, V1 Effects3DSeamless loop, verified447 lines of codev1.0.0

In Liquids, Text & data

Next: Wave TextSurprise me

Digital Rain preview
Starting live preview…
00:00:00:00 / 00:00:00:01

Live, running the real source at reduced resolution.

Open in the title maker

Your current settings go with it. Combine several clips and hand them over together from your sequence.

Effect controls

Presets

Up to 24 letters, written in the finest layer of the rain.

0.8
1
1
1
4
1
1
7

The preview runs the same code your AI receives. These settings travel with the hand-off.

Info

What it is

Streams of invented glyphs falling in the dark, each with a white-hot head and a trail fading to black, seen from the middle of four concentric cylinders of them: the near glyphs are big and soft, the far ones small and fine, and the camera's slow sway slides the layers past each other. Cells flicker through an alphabet of 128 glyphs, quicker at the head of a column. Write a message of up to 24 letters and it appears in the finest layer as a dot-matrix of glowing glyphs that stays lit while the rain falls through it. Choose the colours (terminal green, cyan, amber or magenta), the message, how much rain, how fast it falls, how long the trails are, how big the glyphs, how many depth layers, how far the camera sways and how much the glyphs glow.

Reuse it in your own idea

  • AI or tech title: Terminal green with the title as the message.
  • Countdown or reveal: Amber terminal with a short message.
  • Background for code and security explainers: Blue rain, no message.

Which part is reusable

src/digital-rain.js is the ingredient your AI reuses. demo.js is only the example scene around it, and uses the demo harness only for the demo.

Good to know

  • The glyphs are invented shapes, not real writing systems.
  • The message sits in the finest layer, so it is small on screen unless it is short.

Technical details

Technical details
Implementation
Three.js 0.185.1 (WebGL) · ES module src/digital-rain.js
Exports
  • createDigitalRain({ palette?, density?, fall?, trail?, size?, layers?, sway?, glow?, message?, seed? }) => { scene, camera, material, setSize(width, height), update(time, loopSeconds), dispose() }
  • createBloomPass(renderer, { width, height, glow?, exposure?, grain? }) => { render(scene, camera, output?), dispose() }
  • PALETTES: { green, cyan, amber, magenta }
  • MAX_MESSAGE: 24
Dependencies (exact)
  • three@0.185.1 (source) — Renderer and the full-screen shader.
  • apw-runtime@1.0.0 (demo) — Demo harness.
How it fits a scene

Coordinates: The camera sits on the axis of four concentric cylinders (radii 1.2 to 4.6) of columns; the rays are intersected with them, so the glyphs curve gently towards the edges of the frame.

Lighting: Self-lit: every glyph glows; the bloom adds the halation.

Timing: update(time, loopSeconds) sets the loop phase; frames render in any order.

Output
1080×1080, 30 fps, 12 s · procedural (computed from the frame number) · seamless loop — Each column's head falls a whole number of its own length per loop, so the rain wraps exactly; every cell changes glyph a whole number of times a loop (the glyph is picked from the cell and the count of changes modulo that whole number); the camera's sway is a sine of the loop, so the last frame meets the first.
Tested
Rendered 360 frames on 2026-10-06 in Chrome 154.0.8037.97 headless on Linux 7.0.0-38-generic (x64), Node 22.14.0 (WebGL 2 via SwiftShader (software)). Same frame twice from fresh pages: identical. Loop: Frame 0 vs end state (progress 1): mean |Δ| 0.0000, max |Δ| 0 of 255.
Performance
One full-screen pass: up to four layers, each a ray-cylinder intersection, a few hashes and one texture lookup, plus a small bloom. About 14 ms a frame at 1080p on an integrated Intel GPU. Messages are capped at 24 letters; characters outside letters, digits and . , ! ? - : ' are drawn as spaces.
Export a video yourself
Download the source, then in the folder: npm install npm run render -- digital-rain/1.0.0 --out my-video.mp4Needs Node 18+, ffmpeg and Chrome/Chromium. Add --params my-settings.json (from Copy settings) for your own settings.
Version
1.0.0 · sha256:2cfef652b3bcb188…
Files
License
MIT. Copyright (c) 2026 AI Pixel Wizard. Released under the MIT License. See LICENSE in this folder. Third-party: three.js 0.185.1 (MIT). License details
Provenance
Adapted from the owner's threejs-sketches/abstract-artistic/matrix-rain (MIT) and rebuilt for AI Pixel Wizard in October 2026 as an original shader: concentric cylinders of columns seen from their axis, signed-distance glyphs invented in code, a dot-matrix message, an exact loop and the frame/time contract.
BinMore like this

Wave Text

Text layer2DSeamless loop6 seconds