CMU 15-662 Computer Graphics

As part of the Computer Graphics course at CMU, I completed a variety of lab assignments implementing various computer graphics functions. Below, I give a brief summary of each assignment as well as screenshots of my implementation in action.

Duration of Experience: August 2016 - December 2016

Technologies: C++

    Lab 5 - Irradiance Caching (Raytracer revisited)

    For the fifth lab, we were tasked with expanding the codebase from labs 2 through 4 with additional functionality of our choosing. This time, I worked alongside another student to add irradiance caching and some associated features to the raytracer. Our full writeup can be found here. We implemented:

    • Stratified sampling
    • Irradiance caching
    • Two-pass rendering
    • Rotational irradiance gradients
    Original rendering (time 8.1711s)

    Original rendering (time 8.1711s)

    Same scene with 8x8 stratified sampling, irradiance caching, double pass, and rotational irradiance gradients (first pass time 12.2244s, second pass time 7.0216s)

    Same scene with 8x8 stratified sampling, irradiance caching, double pass, and rotational irradiance gradients (first pass time 12.2244s, second pass time 7.0216s)

    Cache entry visualization

    Cache entry visualization

    Lab 4 - Animation

    For the fourth lab, I implemented a variety of animation-focused features:

    • Spline interpolation
    • Forward and inverse kinematics
    • Linear blend skinning
    • Physically-based wave simulation
    Spline interpolation

    Spline interpolation

    Forward kinematics

    Forward kinematics

    Inverse kinematics

    Inverse kinematics

    Linear blend skinning

    Linear blend skinning

    Physically-based wave simulation

    Physically-based wave simulation

    Lab 3 - Raytracer

    For the third lab, I implemented the following features of a raytracer:

    • Generating camera rays
    • Triangle and sphere intersection tests
    • Construction of a bounding volume hierarchy (BVH)
    • Ray-BVH intersection test
    • Shadow rays
    • Indirect illumination
    • Mirror and glass materials
    • Infinite environment lighting
    Bounding volume hierarchy (BVH)

    Bounding volume hierarchy (BVH)

    Diffuse material with indirect lighting and shadows

    Diffuse material with indirect lighting and shadows

     
    Mirror material and environment lighting

    Mirror material and environment lighting

     

    Lab 2 - Mesh Processing

    Note: Labs 2 through 5 build on top of the same code base. We were provided with a skeleton architecture and some basic features upon which to build our implementations.

    For the second lab, I implemented the following operations for polygon meshes with half-edge representation:

    • Vertex erase
    • Edge erase
    • Edge collapse
    • Face bevel
    • Triangulation
    • Linear subdivision
    • Catmull-Clark subdivision
    • Mesh simplification
    (1) Vertex erase, (2) edge erase, (3) edge collapse, (4) face bevel

    (1) Vertex erase, (2) edge erase, (3) edge collapse, (4) face bevel

    Linear subdivision

    Linear subdivision

    Triangulation

    Triangulation

    Catmull-Clark subdivision

    Catmull-Clark subdivision

    Simplification

    Simplification

    Lab 1 - 2D Rasterization

    For the first lab, I implemented a 2D software rasterizer capable of loading simple SVG files. My implementation added the following features to a skeleton implementation with which we were provided:

    • Drawing points
    • Drawing lines (both Bresenham's and Xiaolin Wu's line drawing algorithms)
    • Drawing triangles
    • Supersampling
    • Scaling of primitives
    • Nearest neighbor filtering
    • Bilinear filtering
    • Mipmap generation and trilinear filtering
    • Alpha compositing
    • Panning and zooming the view
    Bresenham's and Xiaolin Wu's line drawing algorithms

    Bresenham's and Xiaolin Wu's line drawing algorithms

    Mipmaps and trilinear filtering

    Mipmaps and trilinear filtering

    Triangles with varying degrees of supersampling

    Triangles with varying degrees of supersampling

    Alpha compositing

    Alpha compositing