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.
SOME OF ITS KEY FEATURES ARE-:
- 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 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.
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.
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.
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.
This is a simple particle system demonstrating life of a particle and its motion under forces like gravity, wind etc.
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.
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.
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++.