Files
ASCIIRenderer/README.md

2.4 KiB
Raw Blame History

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] 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:

# 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.