An AI reads it, blind
Fed glyph frames with no image, just the characters, a text-only LLM identifies the scene at 83% versus 25% chance. Glyph video is already the model's native input: text. Real blind verdicts, logged:
sampling…
Every video codec on earth races to reconstruct the same thing: a grid of pixels for a human eye. glyphcast reconstructs a grid of printable characters. One fork in the road, and four doors open that no pixel codec can walk back through.
A codec is defined by what it rebuilds the picture out of. Pick pixels and you inherit pixels' constraints forever. Pick characters and the output is, by construction, readable by anything that can place a character.
Decodes to a 2D array of RGB samples. Brilliant fidelity-per-bit. But the output only means something to one kind of consumer:
Decodes to a grid of Unicode cells (octant / sextant / quadrant blocks) with per-cell color. Worse fidelity-per-bit, on purpose. In exchange:
Each number below was measured live on an M4 Max against Big Buck Bunny 1080p60, not estimated. The point is never the number alone; it's the property a pixel format structurally cannot retrofit.
Fed glyph frames with no image, just the characters, a text-only LLM identifies the scene at 83% versus 25% chance. Glyph video is already the model's native input: text. Real blind verdicts, logged:
sampling…
bun clients/term.ts renders the same stream with ANSI truecolor, no browser, no GPU, no codec library, at a checksum identical to the GL canvas. 4,337 real octant glyphs in one captured frame.
The frame is skip/emit runs against the previous frame, byte-aligned, no entropy coding. Checksums are identical in every config. No DCT, no reference frames. Dumb enough for a microcontroller to decode.
One stream feeds a browser (GPU, one draw call), a terminal (ANSI), or a character LCD. The reconstruction alphabet is printable characters, so the set of valid displays is everything that can place a glyph, not just framebuffers.
The panel on the left is a video being re-encoded into glyph cells on your GPU, right now. The bytes on the right are the actual wire packets for those cells, never pixels.
"Video as text" is one sentence. Making it run at video fps, losslessly, on a terminal and a GPU at once, is the work.
230 octant glyphs (U+1CD00 to 1CDE5) generated from UnicodeData.txt, double the vertical detail of quadrants, mask-indexed on a separate glyph page.
The entire cell encode runs in a WebGL2 fragment shader straight from the video texture. Atomic frames, so tearing is impossible by construction.
An 8-worker band-parallel caster streams a 3840×2600 subpixel lattice at 32 fps (single thread: 17), with drop-frame and backpressure gates.
Streaming over a constrained link, feeding video to a text-only model, drawing on a terminal or an MCU: if any of that is your problem, I'd love to show you the full thing.