Left Brain!

GPU Path Tracer

This is a clip showing my Path Tracer results. This was implemented in C++ using CUDA, the motivation was to harness the built in parallel nature of the Path tracing algorithm. Path tracing is an elegant solution to solve the rendering equation and simulation Global Illumination.   


  • Subsurface Scattering.
  • Cook-Torrance BRDF.
  • Full global illumination (including soft shadows, color bleeding, etc.) by path tracing rays through the scene.
  • Supersampled antialiasing
  • Parallelization by ray instead of by pixel via string compaction.
  • Fresnel reflections
  • Interactive Camera movement in the scene.

Code-:  https://github.com/gundeep/GPUpathTracer
Paper-: https://www.dropbox.com/s/lhyzvvawf6nu2mv/CIS_565_FINAL_Project_final.pdf

Physics Based Animation projects

Here are some of the projects I did as a part of my Physics based animation class. The jello cube and rigid body simulations were both realtime whereas the smoke simulation was done offline as the grid sizes for it was fairly high.

Jello Cube animation

This was my assignment for Physically Based Animation course. In this assignment i created a real time JELLO simulation,  its collisions and contacts. The challenging part of the assignment was to figure out right combinations of Ks(Spring Constant) and Kd (Damping constant). I ported it to MAYA, to get  some neat renders. This is just a temporary render.

Smoke Simulation

This is a smoke simulator that is also implement in c++. The process involved advecting the parameters like velocity, temperature and density. Then calculating the appropriate pressure to satisfy the impressibility condition of fluids. Here we assume the fluid is non viscous and incompressible, and since it is smoke simulation it does not account for surface tension unlike water or other fluids.


Escape- A unity game

This was a game that i created in a group project over the course of two weeks in Unity. My role was specifically taking care character motion in the game ie Character modeling, rigging, animation and importing the character into unity and syncing between the various movements of the character. Beside that i also worked on some small aspects of the UI and also did some level design. Here is a short video of the gameplay showing some of the game features and Levels.

Presentation: CIS568 Presentation 1015

L-Systems Maya plugin

It was plugin that was created for Maya. It takes in the L-system grammar, iterations, default angle and size as input and generates  procedural trees. It was implemented  in two ways-:

  • Creating a hypergraph node.
  • MEL Command based approach.

Crowd simulation

Here i  simulated various actors on basis of some condition or behavior. Some of the behaviors we individual behaviors like arrival ,flee etc. and some were group behaviors like cohesion leader follow etc. Based on BOID’s paper by Craig Reynolds.

GLSL Shading

Introduction to the world of GLSL, fragment shading, and vertex shading. Here i implemented the following

  • Bump mapped terrain
  • Rim lighting to simulate atmosphere
  • Nighttime lights on the dark side of the globe
  • Specular mapping
  • Moving clouds

Screen space ambient occlusion

In this project i explored Screen Space Ambient Occlusion (SSAO), an ubiquitous technique in real-time graphics. First introduced in Crysis in 2007, SSAO approximates global illumination using basic scene information captured in normal, depth, and/or position buffers, yielding a decent visual appearance at a fraction of the cost.

Particle Systems

This is a simple particle system demonstrating life of a particle and its motion under forces like gravity, wind etc.

Inverse kinematics

A basic implementation of inverse kinematics using the Cyclic Co-ordinate Descent in which we just solve 1 DOF inverse kinematics problem repeatedly up the chain.

Ray Tracer

This ray tracer assignment was created in C++ and OpenGL.

Various steps involved were -: 1. Write intersection tests for all types of geometric objects in the scene. 2. Properly handle arbitrary scaling, rotation, and translation of geometries. 3. Implement the basic ray tracing algorithm by sending a ray from the eye through all objects in the scene, up to a recursion depth of at least 3. 4. Add direct illumination and shadows by sending rays to point lights. 5. Add specular reflections by sending reflected rays into the scene. 6. Compute colors of the scene.


Volumetric renderer

This is a volumetric renderer i created as project in CIS-560, Computer Graphics class. Here I basically had a voxel grid of 100*100*100 cells all of which  had some density associated to them. Then i basically did a ray march for each pixel and calculated the color value for each pixel corresponding to the grid cells the ray encounters on its way and their respective densities. It was coded in C++.


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s