# 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](DOCUMENTATION.md) for deeper knowledge of subsystems, technical boundaries, and lighting logic optimizations employed in the source code. Review [CHANGELOG.md](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 ```bash # 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]` or `ESC` – Safely detaches the IO hooks and shuts the process down cleanly. ## Execution Options Command-line invocations to bypass or configure TUI session states: ```bash # 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.