A raytracer that will render to any ANSI terminal with support for 24-bit colours, at least 80x24 big. Build with `make' and run the resulting binary in `/bin'. The raytracer implements the following: - Planes, spheres, and point lights - Reflection - IOR-based refraction - Cook-Torrance BRDF (a few other models are left in the code) - Primitive object materials You can move around with WASD and SPC/Z; zoom with I/O, change the exposure with +/-, and quit with Q. The image output is a 24-bit coloured 80x24 (by default, tweakable in `main.cpp'), 2x supersampled. The output uses Unicode characters and differently coloured foreground and background to effectively double the output resolution. You can read the implementation in `buffer.cpp'. The raytracing loop is parallelised using an OpenMP pragma, which should be well supported on most systems. You can just comment out the pragma (and remove the omp flag from the Makefile) to remove parallelisation. Although the code isn't particularly documented, most functions have a docstring in their respective header files. Most fun things to play around with are located in `main.cpp'.