CS 184

This page showcases selected assignments from UC Berkeley’s CS184: Foundations of Computer Graphics. Throughout the course, I implemented fundamental algorithms in C++ and OpenGL, covering topics from rasterization and mesh processing to physically based rendering. Each project emphasized both visual fidelity and mathematical rigor.

In Homework 1, I implemented a triangle rasterizer that supports barycentric interpolation, supersampling anti-aliasing, and texture mapping with MIP maps. The project demonstrated an understanding of the graphics pipeline and image sampling techniques, and allowed precise control over transformations and zooming.

Homework 2 focused on mesh processing using the half-edge data structure. I implemented edge flip and split operations as well as Loop subdivision to refine geometry. This assignment required a detailed grasp of topology and geometry, and highlighted the power of local mesh manipulation in surface modeling.

In Homework 3, I built a Monte Carlo path tracer from scratch, capable of rendering scenes with global illumination, mirror and glass materials, and soft shadows. The implementation included importance sampling, multiple bounces, Russian roulette termination, and environment lighting, producing physically accurate images with realistic light transport.

For the Final Project, I extended the path tracer with a physically based BSDF for glass, integrated multiple importance sampling (MIS) to reduce variance, and experimented with materials and lighting in complex scenes. This project synthesized all prior techniques and focused on enhancing realism through mathematically grounded rendering strategies.