ascii-video README: add missing sections (value fields, SDFs, coordinate transforms, temporal coherence, feedback buffer, masking, OKLAB, design patterns)

This commit is contained in:
SHL0MS 2026-03-14 11:08:10 -04:00
parent 707f3ff41f
commit 66f8c2d5e8

View file

@ -2,7 +2,7 @@
Renders any content as colored ASCII character video. Audio, video, images, text, or pure math in, MP4/GIF/PNG sequence out. Full RGB color per character cell, 1080p 24fps default. No GPU. Renders any content as colored ASCII character video. Audio, video, images, text, or pure math in, MP4/GIF/PNG sequence out. Full RGB color per character cell, 1080p 24fps default. No GPU.
Built for [Hermes Agent](https://github.com/NousResearch/hermes-agent). Usable in any coding agent. Built for [Hermes Agent](https://github.com/NousResearch/hermes-agent). Usable in any coding agent. Canonical source lives here; synced to [`NousResearch/hermes-agent/skills/creative/ascii-video`](https://github.com/NousResearch/hermes-agent/tree/main/skills/creative/ascii-video) via PR.
## What this is ## What this is
@ -51,7 +51,7 @@ Characters render on fixed-size grids. Layer multiple densities for depth.
Rendering the same scene on `sm` and `lg` then screen-blending them creates natural texture interference. Fine detail shows through gaps in coarse characters. Most scenes use two or three grids. Rendering the same scene on `sm` and `lg` then screen-blending them creates natural texture interference. Fine detail shows through gaps in coarse characters. Most scenes use two or three grids.
## Character palettes (20+) ## Character palettes (24)
Each sorted dark-to-bright, each a different visual texture. Validated against the font at init so broken glyphs get dropped silently. Each sorted dark-to-bright, each a different visual texture. Validated against the font at init so broken glyphs get dropped silently.
@ -95,51 +95,78 @@ Custom palettes are built per project to match the content.
Plus 10 discrete RGB palettes (neon, pastel, cyberpunk, vaporwave, earth, ice, blood, forest, mono-green, mono-amber). Plus 10 discrete RGB palettes (neon, pastel, cyberpunk, vaporwave, earth, ice, blood, forest, mono-green, mono-amber).
## Effects Full OKLAB/OKLCH color system: sRGB↔linear↔OKLAB conversion pipeline, perceptually uniform gradient interpolation, and color harmony generation (complementary, triadic, analogous, split-complementary, tetradic).
### Backgrounds ## Value field generators (21)
| Effect | Description | Parameters | Value fields are the core visual building blocks. Each produces a 2D float array in [0, 1] mapping every grid cell to a brightness value.
|--------|-------------|------------|
| Sine field | Layered sinusoidal interference | freq, speed, octave count |
| Smooth noise | Multi-octave Perlin approximation | octaves, scale |
| Cellular | Voronoi-like moving cells | n_centers, speed |
| Noise/static | Random per-cell flicker | density |
| Video source | Downsampled video frame | brightness |
### Primary effects ### Trigonometric (12)
| Effect | Description | | Field | Description |
|--------|-------------| |-------|-------------|
| Concentric rings | Bass-driven pulsing rings with wobble | | Sine field | Layered multi-sine interference, general-purpose background |
| Radial rays | Spoke pattern, beat-triggered | | Smooth noise | Multi-octave sine approximation of Perlin noise |
| Spiral arms | Logarithmic spiral, configurable arm count/tightness | | Rings | Concentric rings, bass-driven count and wobble |
| Tunnel | Infinite depth perspective | | Spiral | Logarithmic spiral arms, configurable arm count/tightness |
| Vortex | Twisting radial distortion | | Tunnel | Infinite depth perspective (inverse distance) |
| Frequency waves | Per-band sine waves at different heights | | Vortex | Twisting radial pattern, distance modulates angle |
| Interference | Overlapping sine waves creating moire | | Interference | N overlapping sine waves creating moire |
| Aurora | Horizontal flowing bands | | Aurora | Horizontal flowing bands |
| Ripple | Point-source concentric waves | | Ripple | Concentric waves from configurable source points |
| Fire columns | Rising flames with heat-color gradient | | Plasma | Sum of sines at multiple orientations/speeds |
| Spectrum bars | Mirrored frequency visualizer | | Diamond | Diamond/checkerboard pattern |
| Waveform | Oscilloscope-style trace | | Noise/static | Random per-cell per-frame flicker |
### Particle systems ### Noise-based (4)
| Type | Behavior | Character sets | | Field | Description |
|------|----------|---------------| |-------|-------------|
| Explosion | Beat-triggered radial burst | `*+#@⚡✦★█▓` | | Value noise | Smooth organic noise, no axis-alignment artifacts |
| Sparks | Short-lived bright dots | `·•●★✶*+` | | fBM | Fractal Brownian Motion — octaved noise for clouds, terrain, smoke |
| Embers | Rising from bottom with drift | `·•●★` | | Domain warp | Inigo Quilez technique — fBM-driven coordinate distortion for flowing organic forms |
| Snow | Falling with wind sway | `❄❅❆·•*○` | | Voronoi | Moving seed points with distance, edge, and cell-ID output modes |
| Rain | Fast vertical streaks | `│┃║/\` |
| Bubbles | Rising, expanding | `○◎◉●∘∙°` | ### Simulation-based (4)
| Data | Falling hex/binary | `01{}[]<>/\` |
| Runes | Mystical floating symbols | `ᚠᚢᚦᚱᚷᛁ✦★` | | Field | Description |
| Orbit | Circular/elliptical paths | `·•●` | |-------|-------------|
| Gravity well | Attracted to point sources | configurable | | Reaction-diffusion | Gray-Scott with 7 presets: coral, spots, worms, labyrinths, mitosis, pulsating, chaos |
| Dissolve | Spread across screen, fade | configurable | | Cellular automata | Game of Life + 4 rule variants with analog fade trails |
| Starfield | 3D projected, approaching | configurable | | Strange attractors | Clifford, De Jong, Bedhead — iterated point systems binned to density fields |
| Temporal noise | 3D noise that morphs in-place without directional drift |
### SDF-based
7 signed distance field primitives (circle, box, ring, line, triangle, star, heart) with smooth boolean combinators (union, intersection, subtraction, smooth union/subtraction) and infinite tiling. Render as solid fills or glowing outlines.
## Hue field generators (9)
Determine per-cell color independent of brightness: fixed hue, angle-mapped rainbow, distance gradient, time-cycled rotation, audio spectral centroid, horizontal/vertical gradients, plasma variation, perceptually uniform OKLCH rainbow.
## Coordinate transforms (11)
UV-space transforms applied before effect evaluation: rotate, scale, skew, tile (with mirror seaming), polar, inverse-polar, twist (rotation increasing with distance), fisheye, wave displacement, Möbius conformal transformation. `make_tgrid()` wraps transformed coordinates into a grid object.
## Particle systems (9)
| Type | Behavior |
|------|----------|
| Explosion | Beat-triggered radial burst with gravity and life decay |
| Embers | Rising from bottom with horizontal drift |
| Dissolving cloud | Spreading outward with accelerating fade |
| Starfield | 3D projected, Z-depth stars approaching with streak trails |
| Orbit | Circular/elliptical paths around center |
| Gravity well | Attracted toward configurable point sources |
| Boid flocking | Separation/alignment/cohesion with spatial hash for O(n) neighbors |
| Flow-field | Steered by gradient of any value field |
| Trail particles | Fading lines between current and previous positions |
14 themed particle character sets (energy, spark, leaf, snow, rain, bubble, data, hex, binary, rune, zodiac, dot, dash).
## Temporal coherence
10 easing functions (linear, quad, cubic, expo, elastic, bounce — in/out/in-out). Keyframe interpolation with eased transitions. Value field morphing (smooth crossfade between fields). Value field sequencing (cycle through fields with crossfade). Temporal noise (3D noise evolving smoothly in-place).
## Shader pipeline ## Shader pipeline
@ -172,11 +199,25 @@ Plus 10 discrete RGB palettes (neon, pastel, cyberpunk, vaporwave, earth, ice, b
## Blend modes and composition ## Blend modes and composition
20 pixel blend modes for layering canvases: normal, add, subtract, multiply, screen, overlay, softlight, hardlight, difference, exclusion, colordodge, colorburn, linearlight, vividlight, pin_light, hard_mix, lighten, darken, grain_extract, grain_merge. 20 pixel blend modes for layering canvases: normal, add, subtract, multiply, screen, overlay, softlight, hardlight, difference, exclusion, colordodge, colorburn, linearlight, vividlight, pin_light, hard_mix, lighten, darken, grain_extract, grain_merge. Both sRGB and linear-light blending supported.
Mirror modes: horizontal, vertical, quad, diagonal, kaleidoscope (6-fold radial). Beat-triggered. **Feedback buffer.** Temporal recursion — each frame blends with a transformed version of the previous frame. 7 spatial transforms: zoom, shrink, rotate CW/CCW, shift up/down, mirror. Optional per-frame hue shift for rainbow trails. Configurable decay, blend mode, and opacity per scene.
Transitions: crossfade, directional wipe, radial wipe, dissolve, glitch cut. **Masking.** 16 mask types for spatial compositing: shape masks (circle, rect, ring, gradients), procedural masks (any value field as a mask, text stencils), animated masks (iris open/close, wipe, dissolve), boolean operations (union, intersection, subtraction, invert).
**Transitions.** Crossfade, directional wipe, radial wipe, dissolve, glitch cut.
## Scene design patterns
Compositional patterns for making scenes that look intentional rather than random.
**Layer hierarchy.** Background (dim atmosphere, dense grid), content (main visual, standard grid), accent (sparse highlights, coarse grid). Three distinct roles, not three competing layers.
**Directional parameter arcs.** The defining parameter of each scene ramps, accelerates, or builds over its duration. Progress-based formulas (linear, ease-out, step reveal) replace aimless `sin(t)` oscillation.
**Scene concepts.** Scenes built around visual metaphors (emergence, descent, collision, entropy) with motivated layer/palette/feedback choices. Not named after their effects.
**Compositional techniques.** Counter-rotating dual systems, wave collision, progressive fragmentation (voronoi cells multiplying over time), entropy (geometry consumed by reaction-diffusion), staggered layer entry (crescendo buildup).
## Hardware adaptation ## Hardware adaptation