Skip to main content

Projects

Click on the projects or jump directly to git repository to learn more about them




Pinned Projects


Meteoros
REPO

Vulkan, C++, GLSL

  A real-time cloudscape renderer in Vulkan.

  It is based on the cloud system 'NUBIS' that was implemented for the Decima Engine by Guerrilla Games for the game 'Horizon Zero Dawn'

Hand Of God
REPO

Unreal Engine 4

  Hand of God is an asymmetric co-op game, where one player is the ‘Runner’ and uses a traditional game controller while the other is a ‘God’ and uses the HTC Vive to reach into the world for an immersive feel.

  The goal is for the 'Runner' to move and stay ahead of the Darkness that swirls around along their dangerous path and for the 'God' to help the runner through this arduous journey. If the Runner cannot move forward fast enough, the darkness envelops them for a grim end.

Monte Carlo Path Tracer
REPO

C++, OpenGL

  Monte Carlo Path tracing is a rendering technique that aims to represent global illumination as accurately as possible with respect to reality. When combined with physically accurate models of surfaces, accurate models light sources, and optically-correct cameras, path tracing can produce still images that are indistinguishable from photographs.

Boids with CUDA
REPO

C/C++, CUDA

  GPU Flocking Simulation written in CUDA

Visualize 1.6 million particles running at 60fps

Tested on: Windows 10, i7-7700HQ @ 2.8GHz 32GB, GTX 1070(laptop GPU) 8074MB

WebGL Clustered Deferred &
Forward Plus Shading
REPO

Javascript, WebGL, GLSL

  Can simulate over 2100 lights at 60 FPS.

  A WebGL implementation of Clustered Deferred and Clustered Forward Shading Techniques.

Interesting Level Generator
REPO

Javescript, WebGL

  A procedural multi-layer dungeon generator that generates levels based on a dynamically generated voronoi like graph after it has been heavily modified by various filters.

  Realistic fog, crumbling pathways, and terrain are added over the basic level layout to give it a unique mysterious foreign world aesthetic.

Rendering of the Miscellaneous


Meteoros
REPO

Vulkan, C++, GLSL

Group Project

  A real-time cloudscape renderer in Vulkan.

  It is based on the cloud system 'NUBIS' that was implemented for the Decima Engine by Guerrilla Games for the game 'Horizon Zero Dawn'

WebGL Clustered Deferred &
Forward Plus Shading
REPO

Javascript, WebGL, GLSL

  Can simulate over 2100 lights at 60 FPS on a Notebook 1070.

  A WebGL implementation of Clustered Deferred and Clustered Forward Shading Techniques.

Vulkan Grass Tesellation
REPO

C++, Vulkan, GLSL

  Can simulate and render over 1 Million blades of grass on a Notebook GTX 1070.

  The project follows Responsive Real-Time Grass Rendering for General 3D Scenes very closely

Path Tracing


CPU Monte Carlo Path Tracer
REPO

C++, OpenGL

  Monte Carlo Path tracing is a rendering technique that aims to represent global illumination as accurately as possible with respect to reality. When combined with physically accurate models of surfaces, accurate models light sources, and optically-correct cameras, path tracing can produce still images that are indistinguishable from photographs.

CUDA Path Tracer
REPO

C++, CUDA

  A simple CUDA Monte Carlo path tracer that runs at about 19 ms/sample.

  Interesting things that were implemented include:   Subsuface Scattering, Stream Compaction, Material Sorting, Intersection Caching

GPU Accelerated Projects


CUDA Rasterizer
REPO

C/C++, CUDA

  GPU Rasterizer written in CUDA that runs at >60 FPS

  Implements tile based rasterization and scanline rasterization along with standard features like depth testing via mutex locks; texture mapping; backface culling; point, line, and triangle rasterization;

Boids with CUDA
REPO

C/C++, CUDA

  GPU Flocking Simulation written in CUDA

Visualize 1.6 million particles running at 60fps

Tested on: Windows 10, i7-7700HQ @ 2.8GHz 32GB, GTX 1070(laptop GPU) 8074MB

FYI, image alt text is required
Stream Compaction
REPO

C/C++, CUDA

  Implementaion of the Stream Compaction technique and a performance analysis of the same.

  Stream compaction is a technique that performs the following: given an array and some condition, creates and returns a new array that contains only those elements from the original array that satisy the condition, while preserving the order of the elements.

Games


Hand Of God
REPO

Unreal Engine 4, HTC Vive

  Hand of God is an asymmetric co-op game, where one player is the ‘Runner’ and uses a traditional game controller while the other is a ‘God’ and uses the HTC Vive to reach into the world for an immersive feel.

  The goal is for the 'Runner' to move and stay ahead of the Darkness that swirls around along their dangerous path and for the 'God' to help the runner through this arduous journey. If the Runner cannot move forward fast enough, the darkness envelops them for a grim end.

Stay Woke
REPO

Unity, C#, HTC Vive

  It’s so fun that you can bear-ly put it down!

  Your dreams are getting weirder every night, but one thing remains constant, the escape. Stay Woke is a fun-filled game in which the player must escape their dream, which begins at the door to their backyard. At the other end lies a cabin, to which the player must reach in order to escape. First, however, they must pass by a dangerous bear that’s sleeping right in between them and the cabin entrance.

Gravity Wells
REPO

Unity, C#

  As an all powerful, old as time being you get bored often. Your newest hobby is trying to catapult ships into moons using black holes. It is the latest fad after space golf failed you.

  Custom physics using RK2 integration

Procedural Graphics


Interesting Level Generator
REPO

Javescript, WebGL

  A procedural multi-layer dungeon generator that generates levels based on a dynamically generated voronoi like graph after it has been heavily modified by various filters.

  Realistic fog, crumbling pathways, and terrain are added over the basic level layout to give it a unique mysterious foreign world aesthetic.

Shaders
REPO

Javascript, WebGL

  A variety of Shaders and Post-Processing Effects

Metaballs
REPO

Javascript, WebGL

  Simulation of 3D Metaballs, which are organic looking n-dimensional objects

Procedural City
REPO

Javascript, WebGL

  A procedural city built using shape grammar; The city is dynamic and changes with every build.

BioCrowds
REPO

Javascript, WebGL

  BioCrowds is a space colonization algorithm for crowd simulation. Agents can travel only over pre-defined viable paths that are littered with markers.

  Agents move in the space by owning a collection of markers in a radius around them. The markers help determine a vector toward the goal while avoiding obstacles.

Maya Plugins


Art Of Collisions (Maya Plugin)
REPO

C++, Maya API, MEL

Group Project

  A real-time simulation of particle-based rigid body dynamics based on the paper "Unified Particle Physics for Real-Time Applications" by Macklin, Muller, Chentanez, and Kim.

Miscellaneous


Mini Minecraft
REPO

C++, OpenGL, GLSL

Group Project

  A tiny game built from scratch in the style of Minecraft.

  Features I Implemented: Efficient Terrain Generation (interleaved VBO's and mesh hull drawing), general material property mapping scheme, weather, clouds, a day and night cycle, animated textures and more.

Mesh Editor

C++, OpenGL

  HalfEdge Mesh Data Structure; Catmull Clark Subdivision; Skeletons and Skinning

Agent Behaviours

C++

  An Implementation of a variety of agent behaviours, both individual and group behaviours.