ASCII jaguar — the rainforest inside the letters

2026

A jaguar made of ASCII characters runs through the rainforest of Suriname. The same jungle scrolls through the characters he is made of, slower than outside. Built with Vite, TypeScript, WebGL2 and the Web Audio API.

The page starts in the dark. Loose characters become jungle, two eyes light up and the jaguar fills with characters from the eye outwards. He starts walking, trots, gallops and sprints. After that he keeps galloping, with a short sprint every twenty seconds. Scrolling, swiping or the right arrow key gives him a brief burst of extra speed.

Every frame the GPU draws four small images: the jungle outside the jaguar, the same jungle inside the jaguar (slower and brighter), the jaguar itself and the foreground. A shader turns these into ASCII, one character per cell. Outside the jaguar it picks the character from the brightness of the jungle; only the brighter parts get a character, in muted colours. Inside the jaguar the fur decides where characters go: the rosettes become holes, the outline stays solid. The light of the jungle inside decides how full each character is. The characters keep the colours of that jungle, with a warm amber tint and a minimum brightness, and one empty cell runs around the jaguar. That keeps him the clearest shape on screen. When the jaguar runs through a ray of light, his characters fill up.

The jaguar is one painted side view, cut into a body and four legs, with a 2D skeleton and skinning. The legs follow foot paths for walk, trot and rotary gallop, with inverse kinematics, so they do not slide over the ground. Rain, mist, lianas, five parallax layers and puddles with splashes are made of characters too; the puddles are ripple lines that move with the ground. Underneath lies the painted forest, dimmed. Leaves and lianas in the foreground darken the jaguar when they pass in front of him, but do not cover him. Sound is optional: the rainforest and the rain were synthesised in advance, the footsteps are made live, in step with the animation. The images were made in advance with gpt-image-2 and gpt-image-1.5; the page never calls an AI service.

Technologies

Vite TypeScript WebGL2 Web Audio gpt-image-2 gpt-image-1.5

More of my work

Browse the full portfolio or read the blog.

More work