Canvas 2026

Ambient Rain

I wanted the lab section to have a bit of weather, something atmospheric and barely there. So I made 35 streaks that fall at their own pace, and each one ends its life in a flat little ellipse where it meets the ground.

Live · running now
01

Each drop is independent

Every streak carries its own x position, fall speed, length, and a randomised "ground" height. When a streak respawns I reroll all of those, so the rain never settles into a visible pattern or a shared rhythm.

02

Landing into ripples

A streak falls until its tip crosses its ground line. At that instant I push a ripple into a separate list and respawn the streak above the frame. The ripple remembers where it landed and a perspective factor based on how far down the scene it is.

03

Fake perspective

I draw the ripples as ellipses squashed to 35% height, which reads as a circle seen at a shallow angle. Ripples lower in the frame expand wider, and that alone sells a floor receding away from you without any real 3D.

04

Frame-rate independent

I multiply movement by the real elapsed time between frames, clamped so a backgrounded tab cannot make every drop teleport. The rain falls at the same speed on a 60Hz screen and a 120Hz one.