Scylla TextMode


A tube with a life. ... On a display at 120 Hz or more, an optional beam simulator restores a CRT's motion ... A monitor in the world. ... Readable by default. ... FEATURES Character grid.


by Surreal Cosmic


Price History +

SDF-based, grid-based, high-performance text-rendering, incl. full VT/ANSI terminal emulation, text effects, and switchable color themes.
  • Unity version: 6.5 or later
  • Language: C# (.NET Standard 2.1, managed code only; no unsafe blocks, no native plugins)
  • Distribution: precompiled runtime and editor DLLs; demos and unit tests included as source
  • Render pipelines: text rendering and the CRT on TextMode displays work in URP, HDRP and the Built-in pipeline. The CRT camera effect needs URP or HDRP; a package for each is included in the Extras folder and imported by hand.
  • Required Unity packages: TextMeshPro, for glyph atlases; everything else Scylla Core already requires
  • Required Scylla packages: Scylla Core 1.2.0 or newer (sold separately)
  • Optional Scylla packages: Scylla Console (sold separately), for the console display bridge; TextMode works fully without it
  • Platforms: every standard Unity 6.5 build target (Windows, macOS, Linux, iOS, Android, WebGL, plus console targets where your Unity license supports them)
  • Demos: a roguelike, a shoot-em-up, a terminal with a shell and games including a text adventure, a 3D monitor scene, text effects, and a CRT camera demo for URP and HDRP
  • License: Unity Asset Store standard EULA (single-seat)
  • Documentation: scyllaframework.com
  • API Docs: apidocs.scyllaframework.com
  • Support: Discord

IMPORTANT: This asset requires Scylla Core.


Scylla TextMode provides fast, grid-based text rendering with TextMeshPro-compatible SDF fonts. It draws a fixed grid of cells, each holding a character, a foreground color, a background color and a set of style flags, on the GPU in a single instanced pass. It is built for games whose screen is made of characters rather than sprites: roguelikes, in-game terminals, ship consoles inside the game world, ASCII art title sequences, text adventures and retro interfaces. Glyphs render from a TextMeshPro font atlas as signed distance fields, so text stays crisp at any resolution and zoom level. On top of the grid sit a drawing API, a VT/ANSI terminal emulator complete enough to run the escape sequences of command-line programs, a text effects library, and a color theme system that repaints a whole screen in one step.


Crisp text is half of the retro look. The other half is the glass it used to sit behind. TextMode includes a CRT display simulation that models the tube itself rather than laying a scanline texture over the screen: an electron beam that swells on bright text, a phosphor mask, afterglow, and optionally the color bleed and dot crawl of a composite or antenna signal. It runs on any TextMode display, and the included URP and HDRP packages put any game camera through the same tube.



===== CRT DISPLAY SIMULATION =====


  • A simulated tube. The grid renders at screen resolution, is averaged down to scanlines, and each line is drawn with a beam that grows with brightness, the way a tube spreads bright text and keeps dark lines thin.

  • Masks and phosphors. Aperture grille, slot mask and shadow mask, phosphor afterglow that follows elapsed time, glow and halation, and optional screen curvature, rounded corners and a bezel that reflects the picture.

  • Seventeen presets. From crisp text-mode terminals and monochrome phosphor monitors to arcade screens and old televisions. Each preset is a starting point, and every setting can be adjusted on top of it.

  • Video signal simulation. Feed the tube through S-Video, composite or RF instead of RGB, in NTSC or PAL. Each scanline is encoded and decoded as a signal, which produces color bleed, dot crawl, rainbow fringes and artifact colors by itself. Snow, jitter, hum bars, rolling and misconvergence are available for a tube that has seen better days.

  • A tube with a life. Switch it off and the picture collapses to a dot; switch it on and it warms up. Degauss it, let static content burn in, or show calibration patterns to tune it to a display.

  • HDR and high refresh rates. On an HDR display the phosphor mask can run at full strength without darkening the picture. On a display at 120 Hz or more, an optional beam simulator restores a CRT's motion clarity.

  • Any camera, not only text. The URP and HDRP packages in the Extras folder show a game camera through the CRT with a renderer feature or a custom post process, controlled by a Volume. A 3D scene, a pixel-art game or a cutscene all go through the same tube.

  • A monitor in the world. Put a terminal on a monitor in a 3D scene, with the phosphor mask laid out on the glass and fading with distance.

  • Readable by default. A readability limit keeps text legible under heavy settings, and a Reduce Motion option freezes the moving disturbances for players who need it.


===== FEATURES =====


  • Character grid. Up to 512 by 512 cells, capped at 131,072 cells in total. SDF rendering from a TextMeshPro font atlas draws the whole grid in one instanced indirect call, and only the cells that changed are uploaded.

  • Two views. A world-space view places the grid in a scene, for a monitor on a wall or a screen the camera can approach. A UI view works as a regular Canvas element and respects masks, clipping and fading, for an overlay. Either view can frame its content with a border of empty cells, or render into a texture at exact cell size.

  • Drawing API. Printing with alignment and word or character wrapping, single-character writes, region fills and clears, box drawing in five styles, horizontal and vertical rules, and grid-to-grid copying with alpha.

  • Full ANSI color. The standard sixteen colors, the 256-color extended palette and 24-bit truecolor, along with nine cell attributes including bold, italic, underline, inverse, dim and blink. Backgrounds combine through eight blend modes.

  • VT/ANSI terminal emulation. A byte-level parser built on the same DEC-compatible state machine that desktop terminal emulators use. It handles cursor movement and cursor shapes, color and text style codes, scrolling regions, the alternate screen buffer, line-drawing characters, insert and delete, tab stops, status reports and bracketed paste.

  • Terminal frontend. Add a terminal to a scene from code or directly from the Inspector, with a log mode with scrollback for output, a full-screen mode with its own scrollback for programs that take over the display, and an optional command line with history, autocompletion and paste.

  • Text effects. Typewriter and decode reveals, thirteen mask-driven transition patterns (wipes, dissolves, irises, clock sweeps and more), digital rain and static tune-in set pieces, and ambient pulse, flicker, wave, glitch and twinkle. Effects can be chained with a sequencer and authored as presets that designers tune in the Inspector.

  • Color themes. Eight themes are included: Classic, Green Phosphor, Amber Phosphor, Midnight and Paper, plus a pale blue monochrome look, a DOS word processor look and a classic home computer look. Switching the theme repaints every view, recolors content already on screen and updates the ANSI color table with it. Every color on screen can also be inverted at once, and new themes are authored as tagged palette assets.

  • Selection, links and mouse reporting. Click-and-drag text selection with clipboard copy, Ctrl+click to open links, and terminal mouse reporting in normal, button-event and any-event tracking modes, so a program running in the terminal can read the mouse.

  • Setup wizard. The TextMode Wizard builds a complete setup in the open scene in one step: a camera, a display, an optional terminal and an optional CRT, starting from a typical setup such as a grid-based game, a text adventure, an in-world monitor or a terminal.

  • Debug console display. Optionally pairs with Scylla Console, so the in-game developer console renders through the same crisp SDF grid.

  • Configuration. One asset covering the grid, SDF, terminal, effects, theme and CRT settings, mirrored to a JSON config file with the framework's four-tier fallback, so a shipped game can be retuned without a rebuild.


===== DEMOS THAT ARE GAMES =====


The demos are small, complete games and programs rather than feature samples, and their source is included to learn from:


  • A roguelike with procedural dungeons, monsters, items and shrines, shown through a CRT.

  • A shoot-em-up with chain-reaction explosions, growing weapons and ASCII-art bosses, shown through an arcade CRT.

  • A terminal running a shell with pipes, scripts, history and tab completion, more than sixty commands with help, a text editor, a pager and a process monitor, and a crt command that changes every setting of the tube live.

  • One More Page, a horror text adventure inside the terminal, with a parser that understands full sentences, a map that grows during exploration, and saved games.

  • A monitor on a desk in a 3D scene, showing a terminal through the CRT.


===== BUILT FOR PRODUCTION =====


  • Renders the whole grid in one instanced indirect draw call regardless of cell count. Only changed cells are uploaded, so writing one character costs a small buffer update rather than a full re-upload.

  • The terminal parser reads one byte at a time and keeps its state between calls, so an escape sequence split across two network packets, or a UTF-8 character split across two reads, is still read correctly.

  • The CRT on TextMode displays works in URP, HDRP and the Built-in pipeline from the same code. The camera effects come as separate URP and HDRP packages in the Extras folder, so a project only references the pipeline it uses.

  • Depends only on Scylla Core and initializes at Tier 1, ready before any gameplay module that draws with it.

  • The Scylla Console display bridge is optional. Without Scylla Console, TextMode works fully on its own.

  • Effects update automatically just before the grid uploads, so a hidden view stops animating and continues where it left off instead of catching up or drifting.

  • Written for Unity 6.5 and later on current APIs, with no deprecated calls and no compatibility code for older versions.

  • Covered by more than 1,000 automated tests across the grid, the terminal parser, effects, themes and the CRT, and kept free of compiler warnings.


===== LINKS =====


Official Site & Documentation

API Documentation

Discord