June 17, 2025
After working around a bunch of terminal quirks to display text at such a fast rate, I managed to implement camera movement. I also added more primitives (planes and triangles). I also reworked the path tracing logic to be more accurate.
Ported all major components of the renderer to the WebGPU shading language, resulting in a massive 91× speed increase! Also revamped the lighting and rendering model, which dramatically boosted image realism.
(Just if you are skeptical, all of this is rendered directly to terminal — not an image display trick.)
Added the ability to make objects reflective and also a light source. Majorly revamped the way the shadows are created to now they are softer and more realistic, however this introduced noise which i've mostly combated through the implementation of antialiasing, increasing the quality of the output.
Added ability to print the ASCII text as color, making it easier to see shapes. Also added new emission property, which will make it easier to add new light sources as well as new launch args to print as more solid characters, making it look more like a traditional raytracer.
Added core functionality to the ray tracer and made it easier to add new objects.
A ray tracer that renders directly in the terminal using either ASCII or Unicode block characters. Written in Rust and WGSL. Features camera controls and the ability to easily make new scenes using a JSON format.
This was widely regarded as a great move by everyone.