top of page

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, 3-D viewing, shading, and ray tracingThis was implemented in C++ and OpenGL.

Basic OpenGL​​

The objective of this project was to familiarize ourself with basic OpenGL concepts and real-time graphics programming. We had to implement basic camera and lighting functionality, and render a 3D mesh and a heightmap.


In this project we learned shader programming using GLSL. This project had two distinct parts. The first part is about rendering outlines, similar to a cartoon drawing. We had to take a standard rendering of a scene using Blinn-Phong shading and add black outlines around the geometry. The second part was about simulating motion blur effects when you move the camera.



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:

  1. Elastic collisions – Sphere-Sphere, Sphere-Triangle and Sphere-Plane.

  2. Adds both force and torque to spheres.

  3. Damping of object forces.

We used Runge-Kutta 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.





Basic OpenGL​​

The Raytracer project has the following features:

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

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

  3. Direct illumination and shadows by sending rays to point lights.

  4. Specular reflections by sending reflected rays into the scene.


Cube with Textures
Scaling, rotation and translation
bottom of page