A collection of some projects I've worked on
A mobile puzzle game in which the character platforms within a 2D cross section of a 3D world. Players have the ability to swipe and
rotate the cross section in arbitrary angles around the character in real-time, which in turn alters the 2D platforming segment. I
was the project lead of the team of 8 working on it, which included programmers, artists, UI/UX designers, and a composer.
I focused on the graphics work, which involved a deferred pipeline with 8 shader passes in C++ and OpenGL. The pipeline features
3D mesh rendering, 2D cut logic and culling, billboarding, point and ambient lighting, fog shading, animation,
normal mapping,
pixelate/ripple effects, and far more. My code was extremely efficient to allow the game to run in real-time despite the intensive
re-computation of the physics world every rotation frame.
The game won the “Most Innovative” award during the end-of-semester showcase, and due to my graphics work I received the only A+ in the course of 96 students.
Windows Build, Mac Build (coming soon), iOS Testflight Link
Integrated Vulkan ray tracing into an existing rasterization framework to enhance visual quality. Implemented acceleration structures, double buffering, texture/material/environment mapping, area illumination, and anti-aliasing. Completed as a means to foray into the world of low-level graphics APIs, which I found to be very rewarding.
A 2D puzzle-platformer game created by a team of 8 for desktop computers. I focused mainly on the graphics work by creating a custom deferred shading pipeline using LibGDX's OpenGL integration. The pipeline included lighting, normal mapping, parallax, smooth camera movement, and additional shader passes for special effects. Other than graphics work, I worked on level design, code architecture, playtesting, game concepts, and much more.
A simulation capable of running 200,000 particles at over 60fps. Features include 3D collision optimized via spatial subdivision, dynamic particle regeneration, and textures dictating color, mass, and acceleration fields. The user is able to “draw” on the simulation, creating a current in the acceleration field, and is able to move the camera freely. Inspired by Refik Anadol: Unsupervised, this project is meant to deliver an aesthetically pleasing and interactive user experience. This was written using Taichi and was worked on with a group of four.
Source Code (currently only available to members of the Cornell community)
A real time CPU-based path tracer using Embree combined with a rasterizer using OpenGL. Computes illumination from area and environment lights using microfacet materials and Monte Carlo techniques. Uses a deferred pipeline to achieve shadow mapping, SSAO, and a bloom filter with a sun-sky model. A forward pipeline is used to support skeletal animation. The application uses assimp to parse .obj and .glb files, and renders them at interactive rates.
Source Code (currently only available to members of the Cornell community)
A tool for game developers that can predict the rating their game will receive on Steam based on a subset of features of their game. Web scraping was used to obtain the training data, and the subset of features was selected by measuring feature importance on this. This project also utilized SMOTE, sentiment analysis, a GUI, and a collection of machine learning algorithms (of which Random Forest performed best at a 56% precision).
Source Code (currently only available to members of the Cornell community)
An implementation of a CPU-based ray tracer in C++ using SFML to display the image. The user is able to select from several different presets to render in any resolution. The ray tracer uses perspective cameras, ray-sphere and ray-triangle intersection, the Blinn-Phong model, shadows, and mirror reflection.
A procedurally generated landscape visualized using the Marching Cubes algorithm in Unity. Terrain generates using several octaves of simplex noise, with its output modifying the ground’s height. Compute Shader code executes the Marching Cubes algorithm on the terrain and represents it with a mesh object. Additional features include chunking of terrain, proximal generation of chunks around the usable camera, and building/destroying terrain. This was my final project for Computer Graphics that was completed with two peers.
Source Code (currently only available to members of the Cornell community)
A simple website which I coded from scratch in HTML+CSS to showcase myself and interesting things that I've worked on. I bought the domain at Google Domains and hosted it on GitHub.
A prediction of future COVID-19 hospitalizations given a dataset of EU country-level cases by age group and current hospitalizations. The first part of the project predicts whether hospitalizations would increase or decrease a week from each date (with an accuracy of 70%), and the second part predicts how many hospitalizations would occur. Other features include custom training/validation data splitting, preprocessing, and multiple training algorithms. This was my final project for Machine Learning that I worked on with another student. The code was written in Python using sklearn, numpy, pandas, and the report was generated in Jupyter Notebook.
Source Code (currently only available to members of the Cornell community)
A fully playable game of Go that features territory calculation, handicap, variable board sizes, and an ELO ranking system. This was my final project for Data Structures and Functional Programming that I worked on with three others. The code written in OCaml (mainly using its functional features), and it can be run in Ubuntu using a remote SSH.
Source Code (currently only available to members of the Cornell community)
A model done in SketchUp of my fraternity house at Cornell. This was my final project for Intro to CADD.
A playable game of Simon Says on a development board. Rather than pressing colored buttons to match the sequence like in the original Simon Says, the board must be tilted in the corresponding directions (this was done using the built-in accelerometer). The code was written in C in MCUXpresso IDE to be uploaded onto a FRDM-KL25Z board. This was my final project for Embedded Systems that I worked on with another student.
A tool that analyzes the risk (covariance) and reward (expected return) of ETFs. The user is able to plug in any amount of ETFs from what our dataset provides; once selected, a risk vs. reward graph is shown depicting every possible portfolio between the ETFs. From there, the user is able to input a desired risk, and the optimal portfolio at the closest risk is outputted. This project is meant to visually depict the efficient frontier, of which I developed a fast algorithm to determine. This project was completed with two other peers, and was written in C++.
An asteroids-like video game that I coded from scratch the summer after I took Intro to Computing. Features include mouse control, polar/cartesian mathematics, increasing difficulty, and spritework. This was coded in Python using pygame.
A mod I created for Call of Duty: World at War's zombies mode. Created during my freshman year of high school, I consider it to be my first 3D modelling + game design project. It has received over 5000 downloads and multiple YouTube playthroughs.