Skip to content

Paper Birds, Real Shadows

Three folded paper cranes rest in afternoon light. Their shadows escape, become a living flock and return to the paper. Ray-traced origami. Loops.

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

In Nature & weather, Craft & heritage, Art & illustration styles, Made for phones

Next: A Door Into Four SeasonsSurprise me

Paper Birds, Real Shadows preview
Starting live preview…
00:00:00:00 / 00:00:00:01

Live, running the real source at reduced resolution.

Combine several clips and hand them over together from your sequence.

A finished film

It plays exactly as rendered and has nothing to adjust. The preview runs the same code your AI receives.

Info

What it is

Three origami cranes, orange, red and white, sit on warm paper in a slanting shaft of afternoon sun. Their softly projected shadows slip free, split into a flock of small birds that circles above the cranes, then fly back and settle into the shadows. The cranes are ray-traced triangular meshes with properly projected shadows, and the flock is animated bird by bird. The 12 seconds loop. The film has no settings.

Reuse it in your own idea

  • Wellness intro: the flock rises from about 1 s and circles until about 9 s.
  • Seamless loop: the birds settle back into the shadows, so it repeats cleanly.
  • Quiet backdrop: the empty paper at the top and bottom holds a title.

Which part is reusable

src/paper-birds.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 film is finished: it has no settings. To change colours or timing, edit the shader.
  • It is composed for a 4:5 portrait frame.
  • Its length is fixed at 12 seconds; repeat the loop to fill a longer clip.

Technical details

Technical details
Implementation
Three.js 0.185.1 (WebGL) · ES module src/paper-birds.js
Exports
  • createPaperBirds() => { scene, camera, setSize(width, height), update(time), dispose() }
Dependencies (exact)
  • three@0.185.1 (source) — Renderer and a full-screen shader material.
  • apw-runtime@1.0.0 (demo) — Demo harness.
How it fits a scene

Coordinates: Composed for a 4:5 portrait frame and measured by the frame height: in a wider frame the picture stays centred at full height and its background fills the sides; in a narrower one, such as 9:16, the sides are cropped.

Lighting: A warm slanting shaft of afternoon sun across the paper, with soft projected shadows.

Timing: The shadows slip free from about half a second in, form a flock through the first four seconds, circle until about nine seconds, then return to the cranes.

Output
1080×1350, 30 fps, 12 s · procedural (computed from the frame number) · seamless loop — Every part of the film is a function of the time modulo its length, and every motion completes whole cycles, so the last frame meets the first.
Tested
Rendered 360 frames on 2026-10-10 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 fragment shader. About 46 ms a frame at 1080 by 1350 on an integrated Intel GPU (Iris Xe), and about 8 s a frame with software WebGL. Real-time playback at full size needs a discrete or recent integrated GPU; on weaker graphics use the rendered video, or draw into a smaller canvas.
Export a video yourself
Download the source, then in the folder: npm install npm run render -- paper-birds/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:a3fa3665cb65dcc4…
Files
License
MIT. Copyright (c) 2026 AI Pixel Wizard. Released under the MIT License. See LICENSE in this folder. License details
Provenance
From the owner's collection Twenty Impossible Worlds: the original GLSL ES 3.00 shader of the film “Paper Birds, Real Shadows”, created with ChatGPT / Codex and used as published, wrapped for AI Pixel Wizard as a three.js full-screen shader in October 2026. The collection's synthesised soundtrack is not part of this ingredient.
BinMore like this