My implementation of Peter Shirley's Ray Tracing in one weekend.
- CPU version, accelerated with OpenMP
- GPU+CPU version, accelerated with CUDA
- GPU+CPU version, accelerated with CUDA, with Open Image Denoise support
This code follows the steps of Peter Shirley's mini book series.
-
Cmake support
-
Multithreaded implementation with OpenMP
-
Supported output formats: PNG with STB image library and PPM
-
SDL2 for real-time display support + keyboard movement support
-
CUDA support
-
Open Image Denoise support
-
Implementation of all features included in Peter Shirley's Ray Tracing In One Weekend
- Spheres
- Surface Normals
- Antialiasing
- Diffuse Materials
- Metal
- Dielectrics
- Positionable Camera
- Defocus Blur (“depth of field”)
-
Implementation of the following features included in Peter Shirley's Ray Tracing: The Next Week
- Bounding volume hierarchy (BVH) support on CPU
- Solid texture
- Perlin noise support on CPU
- Ray Tracing: The Next Week
- Ray Tracing: The Rest of Your Life
- Bounding volume hierarchy (BVH) support on GPU
These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.
The basic requirements for building the executable are:
- CMake 2.8+
- a C++ compiler
- make
- SDL2
Other requirements:
- CUDA support
sudo apt-get install build-essentials cmake
sudo apt-get install libsdl2-dev
This program have been tested on Ubuntu 16.04 but should work under any systems that fulfills the aforementioned requirements.
If you succesfully cloned the source files and you are currently in the project directory, you can generate the Makefile using the following command:
mkdir build
cd build/
cmake ..
Now you can build the binary by running:
make
Now, you should see the executable in the build folder. Examples for the final images are:
Some screenshots along the way of developing:
- SDL2 - used for display
- OpenMP - used for creating multiple threads for the tasks (pixel color calculation)
- CUDA - used for acceleration
- Open Image Denoise - used for acceleration
- Biró Enikő - BiroEniko