CS184 Graphics Projects

May 10, 2023 · 2 min read

For UC Berkeley’s CS184: Computer Graphics and Imaging course, I worked on implementing a 2d rasterizer, 3d Bezier curves and surfaces, algorithms to manipulate half-edge meshes, mesh up-sampling by loop subdivision, ray-tracing renderers for various materials, and a clothing simulation mod for Minecraft.

Projects

2D Rasterizer

2D Rasterizer
In this project, I implemented a simple 2d rasterizer that rasterizes mathematical expressions for shapes into pixel image buffers the implemented features include supersampling, hierarchical transforms, and texture(uv) mapping with antialiasing. The above image was rendered using my program.

Here’s a link to the project report

MeshEdit

MeshEdit
In this project, I built Bezier curves and surfaces using de Casteljau’s algorithm, implemented algorithms to manipulate half-edge meshes, and implemented mesh up-sampling using loop subdivision.

Here’s a link to the project report

Pathtracer-1

PathTracer-1

In this project, I implemented a CPU-based ray-traced renderer that can render complex scenes with multiple light sources and complex materials. The above image was rendered using my program.

Here’s a link to the project report

Pathtracer-2

PathTracer-2

In this project, I further extended Pathtracer-1 to support Microfacet(rough-surface) materials, glass materials and mirror materials.

Here’s a link to the project report

ClothSim

ClothSim

In this project, I wrote a physics engine that simulates clothing materials. I also implemented shaders to render the cloth (and environments) in real-time.

Here’s a link to the project report

ClothingMC

ClothingMC

In this project, we wrote a physics-based cloak simulation mod in Minecraft. The cloak is made of cubical meshes with $32 \times 20$ by size and is simulated by a mass-spring system.

Here’s a link to the project report