Music Genre Classification

Python, Fall 2019
Links:   pdfvideo

This project classifies music genres using more human intuitive feature such as those found in sheet music, including pitch, rhythm, tempo, and instruments. In order to extract relevant patterns in temporal and spatial information from these features, long-short term memory (LSTM) re-current neural networks were used for the classification task. Despite a messy dataset and minimal features, we were able to classify 5 genres with an accuracy of approximately 63%.

Tidal Rescue

Unity C++ OpenVR, Fall 2019
Links:   pdfvideo

Week-long group project building a 3d interactive VR game using Unity. The goal was to make it have an educational awareness component towards the environment and small impacts that can help. Earn points by throwing away trash and healing as many sea animals as possible before running out of air in your bubble.

Underland

Unreal Engine 4, Fall 2019
Links:   pdfvideo

Week-long group project building a 2d game using Unreal Engine 4. Game involves a puzzle-based system where the user must alternate between stages of life to unlock different abilities and defeat the level.

Game Engine

C++ Fall, Spring 2019
Links:   githubvideo

A generalizing game engine with a small cat-searching controller-based desktop game built using it.

Chimera

C++ MEL, Spring 2019
Links:   github

Group project implementing a Maya Authoring Tool for creating 3D Models of Zoomorphic Designs based on Level Sets, Signed Distance Field updates, and Marching Cube interpolations. Responsibilities: research and derivation from the original Zoomorphic paper to a more manageable implementation and most C++ aspects.

Space Invaders / Asteroids

Unity, Spring 2019
Links:   pdfvideo

Remake of Space Invaders / Asteroids mix to learn the ins-and-outs of how Unity works. Includes some additional features such as moving camera and floating bullets.

Gpujs BioCrowds

JavaScript gpujs WebGL2.0, Fall 2018
Links:   githubvideo

Group project implementing BioCrowds using a gpujs pipeline with a WebGL2 visualization. My responsibilities included the initial WebGL2 pipeline, entire backend gpujs pipeline, and render pass manipulations for BioCrowds algorithm.

Vulkan Grass Rendering

Vulkan GLSL Fall 2018
Links:   github

The focus of this project was as an introduction to the Vulkan graphics pipelines while implementing the "Responsive Real-Time Grass Rendering for General 3D Scenes" paper by Klemens Jahrmann and Michael Wimmer.

GPU Rasterizer

CUDA C++ Fall 2018
Links:   github

A CUDA implementation of a simplified rasterized graphics pipeline, similar to the OpenGL pipeline with vertex shading, primitive assembly, rasterization, fragment shading, and a framebuffer.

GPU Pathtracer

CUDA C++ Fall 2018
Links:   github

A CUDA implementation of a Path Tracer with different surface types, Anti Aliasing, Bonne Projection Bokeh Mapping, Motion Blur, Depth of Field, Stream Compaction, Contiguous Material Memory, and First Bounce Caching.

Stream Compaction

CUDA C++, Fall 2018
Links:   github

A CUDA implementation of stream compaction that works on integer arrays of all sizes removing the element zero.

Flocking Boids

CUDA C++, Fall 2018
Links:   github

A CUDA implementation of an artificial life program by Craig Reynolds that defines boids to simulate the flocking movement and orientation of birds in flight.

Smoke Simulation

C++, Spring 2018
Links:   video

An implementation of the Fedkiw et al. 'Visual Simulation of Smoke' paper.

PBD Cloth Simulation

C++ Eigen, Spring 2018
Links:   githubvideo

An implementation of the Position-Based-Dynamics algorithm with stretching, compressing, and bending constraints, an implicit solver, kinematic collisions with a ball and the ground, constrained points, friction, velocity damping for the conservation of linear and angular momentum, and deflected velocity between colliding objects.

Ragdoll Simulation

C++ Bullet, Fall 2017
.

Built a Ragdoll simulation with the Bullet physics library for Dr. Chenfanfu Jiang's “Interfering Forces and Learning Human Utilities" project.

MPM Snow and Jello Simulation

C++ Eigen, Fall 2017
Links:   githubvideo

Group project implementing MPM on an APIC based grid system using Eigen and template backing to allow for easy simulation attribute transferring. My responsibilities included handling proper conversion of the particle to grid and grid to particle transfers and calc of stress factor for force deformations. Final implementation includes snow and jello demos.

Poisson Disk Sampler

C++ OpenGL, Fall 2017
Links:   github

Implemented the Poisson Disk Sampling Algorithm for filling in mesh bodies with an even and random distribution of samples. BVH grid for checking if a sample exists in the given mesh. 3D background grid to speed up nearby searching during the O(n) algorithm.

Point Selection Application

C++ OpenGL, Summer 2017
Links:   video

This desktop application allows the user to select mesh intersection points through text input, actual mesh intersections, and machine learning outputs, which later will be used to train the algorithm to texture real objects viewed from the Oculus.

Monte Carlo Pathtracer

C++ OpenGL, Spring 2017
Links:   video

Implemented a Monte Carlo Pathtracer complete with a Full Lighting Integrator, a BVH acceleration structure, multiple importance sampling, global illumination, focal distance changes, different light source types (point, spot, area), and photon mapping.

Music Visualizer

JavaScript WebGL, Spring 2017
Links:   github

Implemented a music visualizer using distance based noise and buckets corresponding to particular outputs for the creation, positioning, and coloring of the small balls.

Biocrowds

JavaScript WebGL, Spring 2017
Links:   github

Using specified markers and agents, created two scenarios following the BioCrowds crowd simulation algorithm to prevent the agents from colliding with each other using the notion of "personal space."

Implicit Surfaces

JavaScript WebGL, Spring 2017
Links:   github

Isosurfaces created from 3-dimensional metaballs using the marching cubes algorithm.

Shaders

JavaScript WebGL GLSL, Spring 2017
Links:   github

A collection of shading algorithms and post-processing effects: Iridescence, Edge Detection with Sobel Filtering, Vignette, Fish-eye bulge, Inverse, Swap, and Chromatic Aberration.

LSystems

JavaScript WebGL, Spring 2017
Links:   github

Created an LSystem parser that generates interesting looking tree-like plants.

Recursive Raytracer

C++ OpenGL, 2017
.

Implemented a raytracer with multithreading and aliasing. By using ray-object intersection testing, properly calculated pixel coloring including refraction, reflection, and texture mapping.

Noise

JavaScript WebGL, Spring 2017
Links:   github

Using procedural noise based on position and time to create patterns and specific coloring for the shape. Produced three partially randomized outcomes and one completely noise based.

Mini Minecraft

C++ OpenGL, Fall 2016
Links:   video

Group project to develop Minecraft. My responsibilities: procedural generation of caves below ground and that of the dynamic terrain above ground and the implementation of the A* search algorithm for roaming sheep to follow the user.

Mini Maya

C++ OpenGL, Fall 2016
Links:   video

A partial implementation of Maya complete with extruding, smoothing, and inserting of edges and vertices. Allows for loading of different object files and has a shader adjustment for a time-based shading effect.

Image Recognition

Java, Spring 2015
.

A neural network based on photos of alpha-numeric characters with three hidden layers of weights to properly identify the letter found in the photo.

.

Back to top

.