raytracer
An implementation of raytracing in modern C++, based on code from the Ray Tracing in One Weekend book series. This implementation uses multi-threading, ranges, and imgui to provide an interactive rendering experience.
UI controls include:
- Field of view
- CPU thread/worker count
- XYZ camera position
- IJK camera "look at" position
- Samples count to control render quality
- Global shade control for "day" or "night" rendering
- "balls" window: Add or remove spheres and set each sphere's material, size, and position
The UI also does low-quality "live" rendering as settings are changed; click "recalculate" to render in high-quality. The visible render can be exported as a PNG image to the current directory.
Build instructions
- Download imgui submodule via
git submodule
. - Have GCC, GNU Make, and SDL2 installed.
- Run 'make'.
The final program binary is called main
.