This assignment implements a simple ray-tracing application that renders scenes lit by various light sources. Scenes are described in a simple, easy-to-parse text specification file.
Notes for the reviewer:
I implemented all required features for this project: setting up the camera with specified film resolution and aspect ratio, changing the background color, adding sphere models, and adding ambient, point, directional, and spot light sources. I also implemented shadow rendering and recursion to bounded depth.
The source code can be downloaded from the zip file below (Project 3b/Resources/main.cpp)

Position (0, 0, 0) → Making the sphere appear in the center of the camera frame.

Position (0, 0, 1) → Camera moved backward in the positive z direction, far from the sphere.

Position (1, 0, 0) → Camera moved rightward in the positive x direction.

Position (0, 1, 0) → Camera moved upward in the positive y direction.

Spheres

Triangle

Spheres and triangles

Triangles with vertex normals

Grey background

Red background



Red ambient light on a white background

Green ambient light on a white background

Point light source on the right side of dual spheres

Point light source on the top side of dual spheres

Spot light pointing left to right

Spot light pointing right to left

Directional light source pointing towards the right direction (1, 0, 0)

Directional light source pointing right, down and towards the sphere (1, -1, -1)

Two light sources illuminating the sphere

Three light sources illuminating the sphere