You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Clyne 658b6a2bc7 | 5 months ago | |
---|---|---|
imgui@d06b8b58d8 | 6 months ago | |
.gitignore | 6 months ago | |
.gitmodules | 6 months ago | |
LICENSE | 6 months ago | |
Makefile | 6 months ago | |
README.md | 5 months ago | |
color.h | 6 months ago | |
main.cpp | 6 months ago | |
object.h | 6 months ago | |
random.h | 6 months ago | |
ray.h | 6 months ago | |
renderer.h | 6 months ago | |
screenshot.png | 5 months ago | |
sphere.h | 6 months ago | |
vec3.h | 6 months ago | |
view.h | 6 months ago | |
world.h | 6 months ago |
README.md
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
.