diff options
author | Clyne <clyne@bitgloo.com> | 2024-07-02 11:32:44 -0400 |
---|---|---|
committer | Clyne <clyne@bitgloo.com> | 2024-07-02 11:32:44 -0400 |
commit | 658b6a2bc773a6315819420142ed2a049b6ff14e (patch) | |
tree | 85da8d278329a1a7fc37cd0695f1864462a6fa93 | |
parent | 660df4c12cc6aa064c4b740c68b308c641494e63 (diff) |
-rw-r--r-- | README.md | 23 |
1 files changed, 22 insertions, 1 deletions
@@ -1,4 +1,25 @@ # raytracer -Based on code from the [Ray Tracing in One Weekend](https://raytracing.github.io/) book series. +An implementation of raytracing in modern C++, based on code from the [Ray Tracing in One Weekend](https://raytracing.github.io/) book series. This implementation uses multi-threading, ranges, and [imgui](https://github.com/ocornut/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 + +1. Download imgui submodule via `git submodule`. +2. Have GCC, GNU Make, and SDL2 installed. +3. Run 'make'. + +The final program binary is called `main`. |