I learned the fundamentals of the computer graphics pipeline by implementing different components in C++ and GLSL as part of assignments in a graduate-level graphics course at the University of Toronto.
I created several vertex and fragment shaders in GLSL, including both photorealistic (Phong, Gouraud) and non-photorealistic (cell and cross-hatching) shading techniques. My cross-hatching shader was used as the canonical example for the assignment in later sessions of the course.
For another project, I built a C++ raytracer with a variety of features, including environment maps, textures, anti-aliasing, soft shadows, and an octree data structure that drastically improved the raytracer’s runtime. This raytracer won the award for best course project.
Contributions: Implementation, Report Writing. These projects built off starter code provided by the course instructor. Environment maps were created using pseudocode and images provided by Paul Bourke. My partner for the raytracing project was Oliver Straszynski.