Computer Graphics Homework Directory


This is the weekly programming project for a graduate level Computer Graphics class during Spring 2021 semester.
I implemented lots of concepts in Computer Graphics from the ground up instead of using WebGL builtins, especially the first 4 homeworks, where I literally only drew a square with WebGL and everything else is done in the shaders. It's also my first time seriously using JavaScript, and I absolutely loved it and frontend development in general.

Demo & Description:

  • Homework 1: Shadows, texture mapping, Perlin noise for clouds, Phong lighting, basic animation and improved UI (Better shader editor with ace)
  • Homework 2: Real-time Recursive Raytracing in shaders, self-written math library for matrix arithmetics and using it to implement basic interactions (Adjust camera with mouse)
  • Homework 3: Fast Real-time Recursive Raytracing with Refraction, custom data structure, pruning optimization to prevent explosion of spawned rays.   Video: Ray Tracing on Apple Watch!
  • Homework 4: Homework 3 with user interactions, hit detection. (Select/move/add/delete objects with mouse)
  • Homework 5: Reverse kinematics, walking animations. Implemented on top of custom implementation of transformation matrix stack.
  • Homework 6: Self-written SVG path (Bezier Splines) parser + interpolator + renderer and Animation trajectory using Splines.
  • Homework 7: Mesh creation with splines (Drawn with Adobe Illustrator and exported to SVG) and surface of revolution (SOR)
  • Homework 8: Interactive controls, hit dection for other shapes (can be correctly interacted at any camera position). Mouse Trace implementation using SVG paths as sprites.
  • Homework 9: More animations, naive game AI.
  • Homework 10: Complex 3D Mesh with Marching Tetrahedra and SOR.
  • Final Project: Physics based Flares (M. Hullin et al.), bumpy glass filter (using randomized ray distortion) and homework compilation.


Homework 4
Homework 1
Homework 8
Homework 7, 3D mesh from SOR
Homework 7, SVG for 2D curve
Homework 8, mouse trace