A custom parallel ray tracing solution built in C++.
- Physically-Based Rendering (PBR): Implements diffuse (Lambertian), metallic, and dielectric (glass/water) materials.
- Parallelism: Utilizes oneTBB to distribute rendering across multiple CPU cores.
- Antialiasing: Samples each pixel with multiple rays in order to smooth out edges.
- Depth of Field: Implements a positionable camera with depth of field, resulting in blurred background objects.
Rendered 1920x1080 resolution with 150 samples per pixel.
This project uses CMake for configuration and building.
You will need the following tools installed:
- C++23
- CMake (version 3.31 or higher)
- oneTBB library (often available via package managers)
- ImageMagick (for converting the output
.ppmfile to.pngfor display) - chafa (for displaying the image in the terminal)
- Create a build directory:
cmake -S . -B ./build - Execute the generate script:
./generate.sh
This script will:
- Build and run the
raytracerexecutable. - Convert the resulting ppm file into a png.
- Display the image in the terminal.
