This was our final project for the Yale class Computer Graphics, CPSC 478, in Spring 2021. It was built by Zacharie Sciamma and Matt Udry. The assignment was to create a 10-second movie scene, using our own distribution ray tracing engine built from scratch in C++. Our engine can render triangles, rectangles, and cylinders, and it also has the following complex features:
- Soft shadows
- Glossy reflections
- Textures
- Cook-Torrance reflectance
You can watch our final movie scene here:
To install the project:
- Clone the repository
- On Mac, install jpgeglib using
brew install jpeglib
- Install IINA for viewing the movies
Then, to run it:
- In the top level directory, call
make
then./previz
- Go into the frames directory, then call
make
- Run
./movieMaker
- View the output .mov file using IINA (on Mac, right click it then select "Open with IINA")
We used code provided by Professor Kim for the Cook-Torrance model. This was the BRDF demo, provided on 19th April 2021, in file BRDFs/chapter6/illumination_models/shaders.js, line 113-176. We edited this code to convert it from GLSL to C++. We used it in the file material.cpp, lines 39-89
We used the following images as textures for the swimming pool:
swimming_floor_1: https://pixabay.com/photos/water-swimming-pool-wave-pool-1018808/ swimming_wall_1: https://pixabay.com/photos/swimming-pool-pool-tiles-blue-4638912/ swimming_marble_1: https://pixabay.com/photos/marble-texture-white-pattern-2362262/