rasterminal v0.1.0-alpha.2
Pre-release
Pre-release
Added
- Native-resolution graphics through the kitty and sixel protocols.
--graphics kitty|sixel|blocks|autoselects the backend;autoprefers kitty, then sixel, and falls back to half-blocks. Local kitty sessions use shared memory, remote sessions send compressed frames, and sixel uses its fixed 240-color palette. Capability detection prevents a forced pixel backend from failing silently. Pixel graphics are unavailable under tmux and GNU screen. - Synchronized output on terminals that support it, so complete frames appear at once.
- Built-in support through Assimp 6.0.5 for more than 40 additional model formats. It imports static geometry, scene transforms, common materials and textures. OBJ, PLY, STL and glTF/GLB continue to use only their native loaders.
- A free-flying camera selected with
--first-person. WASD moves,EandVmove along world up, arrows and mouse drag look around, and+,-and the wheel adjust speed.--first-person-speedsets the initial speed. The camera has no gravity or collision and can pass through geometry. --yaw,--pitchand--zoomfor the initial camera pose. They also set the benchmark camera and the state restored byR.- Automatic 24-bit or 256-color output, with perceptual palette matching for 256-color terminals.
--color truecolor|256|autooverrides detection. Kitty images remain 24-bit and sixel images use 240 colors, so the option affects only the HUD with those backends. --spin-speedand--spin-direction left|rightfor auto-rotation.--inputand--no-input. The latter ignores every keyboard and mouse binding exceptQand Ctrl+C while leaving resize handling and auto-rotation active.- Positive and negative forms for every state flag, including
--spin/--no-spin,--ao/--no-aoand--hud/--no-hud. When both forms appear, the later one wins. - CMake install and uninstall targets, plus a
rasterminal(1)man page.
Changed
- Rendering is faster, especially when large triangles fill a high-resolution frame. On a 16-thread laptop, Phong frame time at 1920x1080 fell from 61 ms to 9 ms for Sponza and from 202 ms to 94 ms for a dense jungle scene. Alpha-blended scenes improved by two to eight times. Wireframe rendering is unchanged.
- glTF and GLB files with many mesh primitives load faster. Load time for a 645,000-triangle, 113-primitive model fell from 1.9 seconds to 0.6 seconds on a 16-thread laptop. Single-primitive models are unaffected.
- Model loading and every rendering backend now use the system's hardware concurrency by default. Bare
-jhas the same effect, while-j Noverrides the count for both loading and rendering. - Idle half-block sessions no longer redraw the model. Rendering resumes immediately after input, resize or auto-rotation.
- The default frame cap is now 30 fps instead of 60. Use
-f 60to restore the previous cap. - The HUD is now a full-width status bar that drops less useful fields as the terminal narrows. It measures display columns correctly and safely shortens or sanitizes problematic filenames.
Qand Ctrl+C are now the only quit controls. Escape sequences are buffered and parsed as complete units, so unsupported keys and partial terminal replies no longer quit the viewer or trigger unrelated bindings.Rrestores the launch state selected by command-line flags, including camera pose, shading, lighting, background, wireframe color, spin, culling and texturing.--culland--textureare now paired boolean flags with--no-culland--no-texture. Their former values and the-cand-taliases have been removed.- Interactive mode now reports an error when stdin or stdout is not a terminal,
TERM=dumb, or the Windows console cannot process ANSI escapes.--bench,--helpand--versionstill work with redirected streams. - Bright lit surfaces use a soft highlight rolloff instead of clipping to flat white. Midtones, shadows, unlit materials, wireframe, HUD and background are unchanged.
- Building now requires CMake 3.22 or newer.
Removed
- The Makefile. CMake is now the only build system. The binary is written to the build directory, and the
portable,distanddebugpresets replace their former Make targets. - Numeric aliases for
--shading,--bg,--lightingand--wireframe-color. Use the named values. - Shadow mapping and
--no-shadow. A single model with no ground plane has little use for cast shadows, while the shadow map cost load and frame time. Baked ambient occlusion remains available.
Fixed
- Terminal teardown on POSIX no longer loses cleanup escapes when Ctrl+S has paused output. Linux releases the pause before cleanup; systems that queue stopped output retain the cleanup until Ctrl+Q. Quitting under XOFF no longer leaves the alternate screen, hidden cursor, or mouse tracking active.
- rasterminal restores Windows console modes and the output code page after normal exits, Ctrl+C, and Ctrl+Break. It clears queued mouse reports and handles Ctrl+C when processed input was inherited disabled, so the shell receives no stale escapes and keeps its original input behavior.
- POSIX interactive startup now stops safely if raw input mode cannot be enabled. Terminal restoration retries interrupted or transient failures instead of leaving the shell in raw mode.
- POSIX sessions now restore terminal state before terminating from
SIGINT,SIGTERM,SIGQUIT, orSIGHUP, and preserve the signal termination status.SIGINTandSIGTERMtherefore report their usual shell statuses, typically 130 and 143, instead of 0. - POSIX job control restores the terminal before suspending the viewer.
fgresumes rendering with a full redraw;bgleaves the viewer idle without reclaiming the terminal. Suspension also works during startup queries and with--no-input. - Triangle coverage is more accurate. Long, nearly horizontal edges no longer bleed beyond their triangles, and shared edges have fewer pinholes.
- Malformed models with non-finite texture coordinates or undersized glTF vertex attributes are rejected instead of reading uninitialized or out-of-bounds memory.
- Valid STL files no longer fail when their opening text confuses the ASCII/binary heuristic. STL coordinates are also remapped from the format's usual Z-up convention so models load upright. ASCII STL lines longer than 64 KB are rejected as malformed.
- PLY rejects missing or unknown format declarations instead of treating them as ASCII.
- Input parsing no longer waits for incomplete escape sequences on POSIX. Modified wheel events, horizontal scrolling, malformed mouse reports, interrupted drags and unbound keys no longer cause jumps or cancel held movement.
- Windows falls back to 80x24 when the console cannot report a valid size. Files of 2 GB or more now use 64-bit file sizing.
--threadsvalues above the hardware thread count are clamped consistently, and--bench-sizerejects dimensions whose pixel count overflows the addressable range.- Horizontal orbit follows the input direction when the view is upside down. The HUD frame-rate counter now includes sub-millisecond frames and no longer starts at zero on light models.
- glTF now supports the ratified
KHR_meshopt_compressionname, itsCOLORfilter, and sparse accessors. - CMake handles mixed C and C++ compiler configurations correctly and no longer applies C++ or LTO flags to vendored C sources.
- Release builds no longer fail on AVX10-capable CPUs because of Clang's promotion warning.