Graphics Processing
in OpenGL, C++

Ray Tracer
#1 Lamdertian Shading



#2 Glass and Mirror Materials 



#3 Infinite Environment Lighting



3D Geometric Processing
#1 BVH Building
[Image below: BVH building for the cow model]


#2 Mesh Editor
In this project I implemented a simple mesh editor that can manipulate and resample triangle meshes, which is a tool that allows you to load and edit basic COLLADA mesh files that are now used by many major modeling packages and real time graphics engines.

- Downsampling
In this task I implemented a method that simplifies a given model by applying quadric error simplification. This method was originally developed at CMU by Michael Garland and Paul Heckbert, in their paper Surface Simplification Using Quadric Error Metrics.
[Image below: Downsampling a beast model]

- Upsampling
In this task, I implemented an upsampling processing function that makes a low resolution image displayed at a higher resolution.
[Image below: Upsampling a low-sampled torus]

- Resampling
In this task, I implemented resampling via Isotropic Remising, which makes the mesh as "uniform" as possible.
[Image below: Resampling a quadball]

- Edge Flip / Split / Collapse
In this task I implemented a local remeshing operation that "flips" an edge, which:
#Handles corner cases.
#Performs efficiently.
#Is memory allocated clearly.
[Image below: Edge flipping, splitting, collapsing]