The brief
It started with a short video that keeps going around: a browser page grows a bouquet of lilies out of text characters, under the line who needs flowers when you can code them. In the comments, people ask for the code so they can make one for someone.
We wanted to answer that crowd with real craft, so we built the whole genre in our own code, from scratch.
What we made
- Thirteen pieces that grow on their own, including lilies, roses, tulips, sunflowers, a cherry tree, a lotus pond, a Christmas tree, a birthday cake and fireworks
- Seven 3D worlds you can travel through without end, including a night garden, a Christmas village, deep space, a neon city and a sunset drive
- Six vertical videos for social, 10 to 16 seconds each
- An original music-box arrangement of Jingle Bells, which is in the public domain, for the Christmas video
How it works
Each scene is painted into a small hidden buffer the size of the character grid, two pixels per cell. A shader reads every cell's brightness and picks from 18 characters, ranked by how much ink each one really uses in the font.
A cell is either a full-strength character or empty. There is no glow and no soft edge, and the color comes straight from the scene. There are no images, no 3D models and no video footage: every frame is computed in the browser.
The 3D worlds build themselves in chunks around the camera from a seeded random, so a place looks the same on every visit and never runs out.
What we threw away
In review, solid square blocks kept breaking the look, so we measured them. Every world was rendered at phone size at five points along its path, and the grid was scanned for solid single-color rectangles of 16 cells or more. The neon city went from 18.4 blocks per frame to 0.4, the harvest road from 9.0 to 0.4 and New Year's Eve from 6.8 to 0.
The causes were specific: snow and leaves drawn as squares that grew near the lens, lights with no size cap, camera paths that brushed past lanterns, and windows and signs built as flat filled panels. Each got its own fix, and the scan ran again.
Limits
This is a self-initiated series that follows a trend format, not client work, and there are no results to report yet. The engine and every piece are our own code, and nothing was copied from the trend's original.
A personalised version with a name in it is planned as a made-to-order gift, but it has no price yet. Deep space still averages 0.2 blocks per frame after the fix.








