The nightcrawler, the fox, the duck, Suzanne, two fires and a ring of turning shapes are drawn as always, and ascii() turns the finished frame into letters: it cuts the frame into cells, reads the colour in the middle of each, and draws a letter as dense as that colour is bright, a space in the dark and @ in the light. Lights, gradients and reflections come through on their own, because the letters are chosen after they are drawn.
ascii() carries its letters inside the shader, so nothing has to be loaded. size is the side of a cell in game pixels, ownColor goes from every letter in ink (a terminal) to the picture's own colour, and glyphs picks the letters, darkest first. bloom() after it makes them glow.
Click the preview first so it hears the keyboard. The arrows change the size of a cell, C the picture's colour or a green terminal, B the glow, G another set of letters, F a shower of sparks from the fires and space switches it off.