​Project: Mesh Rendering

To render a given mesh input as OBJ file by setting the camera transformations to follow mouse input, set up correct perspective, lighting, properties of material, generate a new mesh for the animated water pool and finally render the whole scene. ​

Motion Blur:

Project: Non-Photorealistic Shading

To do NPR (Non-Photorealistic Rendering) of a given model input as OBJ file by writing vertex and fragment shaders in GLSL. In addition, we also had to implement motion blur for whenever we moved the scene. You can see the results in the screenshots below:​

Project: Mesh Subdivision

To apply loop subdivision algorithm to sub-divide any mesh (check for both textured & untextured mesh and subdivide (accordingly) given as an input to the program. For loop subdivision algorithm, it was essential to design our own data structure to store the adjacency triangular mesh information. As additional work to make the project better, I optimized the subdivision to work far more efficiently. ​

Optimization Results (for subdivision of stegosaurus model seen below):

​Without Optimization: 5th iteration - 12 min

With Optimization:       5th iteration - 0.8 sec

                                        6th iteration - 3 sec

                                        7th iteration - 10 sec


Project: Physics Simulation

To create physics simulations demonstrating physical phenomenas and forces such as collisions, gravity, spring forces, linear forces and torque etc.

Computer Graphics

OpenGL and C++ Graphics Programming


In Spring 2013 Semester, I worked in OpenGL in Computer Graphics at Carnegie Mellon.

Highlights: My Ray Tracer project won gold in class. My overall rank was 2nd in class.



Project: Ray Tracer

To create a Ray Tracer by implementing algorithms how rays of light hit physical objects and illuminate them. Simulate effects such as reflection, refraction, fresnel effect. Advanced lighting effects: Softer shadows, Glossy Reflections, Anti Aliasing, Depth of Field.




To play, press and hold the enter key. To stop, release the enter key.