Computer Graphics
This page has all the projects that I have implemented so far, as part of the coursework for the Computer Graphics course under the Computer Science department at CMU. This course provides a comprehensive introduction to computer graphics rendering, basic image processing, geometric transformations, geometric modeling of curves and surfaces, 3D viewing, shading, and ray tracing. This was implemented in C++ and OpenGL.
Basic OpenGL
The objective of this project was to familiarize ourself with basic OpenGL concepts and realtime graphics programming. We had to implement basic camera and lighting functionality, and render a 3D mesh and a heightmap.
Shaders
In this project we learned shader programming using GLSL. This project had two distinct parts. The ﬁrst part is about rendering outlines, similar to a cartoon drawing. We had to take a standard rendering of a scene using BlinnPhong shading and add black outlines around the geometry. The second part was about simulating motion blur eﬀects when you move the camera.
TOON SHADING
MOTION BLUR
Physics Engine
Basic OpenGL
The project consisted of writing a physics engine that simulates both spheres, triangles and planes. The program handles the following logic:

Elastic collisions – SphereSphere, SphereTriangle and SpherePlane.

Adds both force and torque to spheres.

Damping of object forces.
We used RungeKutta 4th order to integrate bodies. Also the video recordings below may not seem smooth, as the framerate dips when using a video recording software. The actual physics are a lot smoother and of much higher frame rate.
SPHERE COLLISIONS
DAMPING
SPRING ROTATION
Raytracer
Basic OpenGL
The Raytracer project has the following features:

Intersection tests for all types of geometric objects in the scene.

Handler for arbitrary scaling, rotation, and translation of geometries.

Direct illumination and shadows by sending rays to point lights.

Specular reflections by sending reflected rays into the scene.