spectral / ARCHITECTURE.md
stevenkhan's picture
Upload ARCHITECTURE.md
671f03a verified
# Spectral Terminal Emulator Architecture
## Design Philosophy
Spectral is designed to be the fastest terminal emulator while solving the font rendering problems that plague other GPU-accelerated terminals (especially Ghostty's "too thin" font issue on non-macOS platforms).
## Key Differentiators
1. **MSDF Font Rendering**: Multi-channel signed distance fields for GPU-native font rasterization with configurable per-pixel thickening across all platforms
2. **Compute Shader Glyph Generation**: Glyph rasterization happens on GPU, not CPU β€” eliminating the biggest bottleneck in existing terminals
3. **SIMD-Optimized Parser**: VT100/ANSI escape sequence parsing with SIMD byte scanning for CSI/OSC/DCS sequences
4. **Unified wgpu Backend**: Single Rust codebase renders via Metal on macOS, Vulkan on Linux, DirectX 12 on Windows
5. **Cross-Platform Font Thickening**: `font-thicken` and `font-thicken-strength` work identically on macOS, Linux, and Windows via MSDF threshold adjustment
## Crate Structure
```
spectral/
β”œβ”€β”€ spectral-core/ # Terminal grid, cell model, VT parser, damage tracking
β”œβ”€β”€ spectral-pty/ # PTY abstraction (Unix/Windows)
β”œβ”€β”€ spectral-font/ # Font discovery, MSDF atlas, metrics
└── spectral-render/ # wgpu renderer, compute shaders, frame pacing
```
## Renderer Architecture
```
PTY bytes β†’ SIMD VT Parser β†’ Terminal Grid β†’ Damage Tracker
↓
Renderable Content Iterator
↓
Font Shaper (HarfBuzz/swash)
↓
Glyph Cache (HashMap<GlyphKey, AtlasSlot>)
↓
MSDF Compute Pass (missing glyphs)
↓
Texture Atlas Update
↓
GPU Render Pass (Instanced Quads)
↓
wgpu Surface Present
```
## Performance Targets
| Benchmark | Target |
|-----------|--------|
| ASCII cat /dev/urandom | >150 MB/s (faster than Kitty's 121) |
| Key-to-screen latency | <8ms (120Hz refresh, no batching) |
| Startup time | <100ms cold |
| Memory (100k scrollback lines) | <50MB |
| Font atlas (complete Unicode BMP) | <16MB GPU |