
Neon Koi
Background3DSeamless loopPortrait8 seconds
Rain running down a misted window at night, the city lights blurred into soft bokeh behind it. Loops perfectly.
In Light, glass & shine, Liquids, Nature & weather
Next: Neon KoiSurprise me
Your current settings go with it. Combine several clips and hand them over together from your sequence.
Presets
A short word or two, as if written with a fingertip. Leave empty for none.
Changes where the drops are and how they run.
The preview runs the same code your AI receives. These settings travel with the hand-off.
Looking out through a wet window: the street beyond is out of focus, its lamps, car lights and neon melted into round bokeh, while the water on the glass is sharp. Small beads land and merge away; larger drops slide down in fits and starts, clearing a trail through the condensation that slowly mists over again, and every drop holds a tiny upside-down picture of the lights. Choose the view (city night, neon street, golden hour or a grey morning with trees), how hard it rains, how misted the glass is, the drop size and the blur, and optionally write a word in the mist as if with a fingertip.
src/rain-window.js is the ingredient your AI reuses. demo.js is only the example scene around it, and uses neon-sign only for the demo.
src/rain-window.jscreateRainOnGlass(renderer, { width, height, rain?, fog?, size?, blur?, refraction?, highlights?, mist?, wipe?, seed?, exposure?, grain? }) => { render({ background, time, loopSeconds, output? }), dispose() }createRainScene(renderer, { scene?, width, height, seed? }) => { texture, render(time, loopSeconds), dispose() }RAIN_SCENES: ['city', 'neon', 'dusk', 'morning']three@0.185.1 (source) — Renderer and the glass, bokeh and backdrop shaders.neon-sign@1.0.0 (demo) — Its tube alphabet for the word written in the mist.apw-runtime@1.0.0 (demo) — Demo harness.Coordinates: Screen space; drop sizes are fractions of the frame height, so the look holds at any resolution.
Lighting: Self-contained: the backdrops are in linear light, and the drops refract the in-focus picture and catch a highlight from the room.
Timing: Everything is a pure function of time within the loop; frames render in any order.
npm install
npm run render -- rain-window/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.sha256:0e7071d4372d2a38…
Background3DSeamless loopPortrait8 seconds

Background3DSeamless loopPortrait8 seconds

Background2DSeamless loop12 seconds

Background3DSeamless loop12 seconds

Background3DSeamless loop12 seconds

Background3DSeamless loop12 seconds

Background3DSeamless loop12 seconds

Background3DSeamless loop12 seconds