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 tracing. This was implemented in C++ and 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 ﬁrst 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 eﬀects when you move the camera.
The project consisted of writing a physics engine that simulates both spheres, triangles and planes. The program handles the following logic:
Elastic collisions – Sphere-Sphere, Sphere-Triangle and Sphere-Plane.
Adds both force and torque to spheres.
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.
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.