Ray tracing playground in modern C++
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 Update 'README.md' 2 weeks ago
imgui@d06b8b58d8 initial commit 2 months ago
.gitignore many changes, more controls 2 months ago
.gitmodules initial commit 2 months ago
LICENSE initial commit 2 months ago
Makefile many changes, more controls 2 months ago
README.md Update 'README.md' 2 weeks ago
color.h initial commit 2 months ago
main.cpp renderer refactoring; controls for lookat 2 months ago
object.h abstract objects 2 months ago
random.h un-fix threads; more refactoring 2 months ago
ray.h initial commit 2 months ago
renderer.h renderer refactoring; controls for lookat 2 months ago
screenshot.png add screenshot 2 weeks ago
sphere.h abstract objects 2 months ago
vec3.h many changes, more controls 2 months ago
view.h renderer refactoring; controls for lookat 2 months ago
world.h abstract objects 2 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

  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.