2.4 KiB
ASCII 3D Renderer
An advanced software-based 3D text renderer pipeline written purely in C11.
By avoiding proprietary graphics stacks, this engine demonstrates foundational rendering principles—like Z-buffer processing, Phong illumination models, matrices integration, and anti-aliasing sweeps—executing cleanly inside standard POSIX terminal boundaries.
Architecture & Documentation
Review DOCUMENTATION.md for deeper knowledge of subsystems, technical boundaries, and lighting logic optimizations employed in the source code. Review CHANGELOG.md for version release tracking constraints.
Technical Feats
- Real-time
termios-driven TUI with non-blocking key capture for dynamic typing - Mathematically robust 3D normal computations leveraging 2D glyph extrusion passes
- Configurable AA (multi-sampling) and shading density metrics per-pixel
- Support for RGB Truecolor processing directly through terminal escape sequences
- Strictly isolated C11 components minimizing external dependencies
Rapid Compilation via Makefile
# Deploys standard -O3 and -flto compiler optimizations
make release
# Run directly, observing standard parameters
./bin/ascii3d
Interactive TUI Controls
Upon executing, the renderer spins into an active TTY session:
- Type Alphanumeric Characters – Immediately replaces the internal 3D model with your input in real-time.
[w]and[s]– Increase / decrease rotational velocity.[Space]– Toggle rotation engine pause constraints.[m]– Cycles between topology rendering (Wireframe -> Shaded Pipeline -> Solid Geometry -> Points).[c]– Switch between rendering spaces (Mono Base -> 16/256 ANSI -> Full Truecolor mapping).[p]– Change ASCII shading dictionaries on the fly.[q]orESC– Safely detaches the IO hooks and shuts the process down cleanly.
Execution Options
Command-line invocations to bypass or configure TUI session states:
# Tumbling rotation utilizing Truecolor ANSI standards
./bin/ascii3d -a -c3 WORLD
# Quality override with heavy Anti-Aliasing pipeline
./bin/ascii3d -A -q1.5 -c2 HQ
# Show full parameter dictionary
./bin/ascii3d -h
Contributing
The codebase attempts strict functional modularity. We accept modifications introducing new geometry patterns, deeper PBR emulation methods, or expanded rendering logic assuming complete dependency evasion.