Note: Does not contain any code done as part of company projects.

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.



Physics Based Animation

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

Maya plugin that takes in 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.

Volumetric Rendering

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++.