A simple ray tracer written from scratch in C++, with multicore support, customizable camera, attenuation, alpha-beta correction, reflection, shadows, and more!
Primary author: Jeffrey Persons
Additional Contributions by @DerekMcBlane:
- Bug Fixes: Fixed false positive sphere intersections, and leaky reflections that bled through
- Infrastructure Improvements: Addition of test (gtest) and build systems (cmake)
- Parallelized tracing algorithm using OpenMP
- Perspective, axis aligned camera with lookAt functionality
- Attenuation, specular, and diffuse lighting implemented via phong shading
- Material, Color, vector, and geometric primitives
- Fully modularlized tracing pipeline with Camera, Scene, FrameBuffer, virtual interfaces for shape and lighting primitives
- Self contained math libraries for interpolation, vector operations, and ray intersections
- Stopwatch for benchmarking
- YAML scene discription files
- Polygon meshes
- Softer shadows
- Refraction
- Scripting for creating animations
- Proper refraction with fresnels
- KD-trees for fast rendering and culling with tons of on screen-objects
- Radiance
(click on below images to view full size in a seperate tab)
(click on below images to view full size in a seperate tab)
(click on below image to view full size in a seperate tab)
#CMake on Unix
Build:
./build.sh
Build output goes to directory named after build type. Can pass build type as an argument (e.g. ./build.sh Debug)
Run:
./Release/bin/App



