gOOpy - 3D Raymarching Scene Editor
ThreeJS, GLSL, React, Node, Express.js, MongoDB
- Created a 3D scene editor with React / Three.js allowing users to create, save, and share their creations.
- Implemented backend with Node and Express, using a NoSQL MongoDB database to store scene and user info.
- Implemented raymarching in GLSL using signed distance functions, allowing for "goopy" shape interactions.
- Calculated surface normals using gradients of the signed distance functions with central differences to implement Blinn-Phong lighting.
- Created an interpreter for the BF language written in C++.
- Improved performance by preprocessing instructions, storing possible instruction jump addresses.
- Tested using the Google Test unit testing library.
- Awarded first place out of 18 teams, judged by video game industry professionals, for a 2D game built in team of 6 in a custom engine using C++ and OpenGL with an Entity Component System.
- Implemented electric player attack with custom electricity shader made by displacing UV coordinates with noise, using RGB texture channels to encode visual information.
- Created shaded sprites using the Blinn-Phong model with normal maps and configurable material properties.
- Implemented smooth camera movement by offsetting position based on velocity and interpolating between frames.
Kerrdit (Reddit Clone)
React, MySQL, Node.js, Express
- Used React with Material-UI to build responsive website similar to Reddit's layout.
- Utilized Express to read/write from a MySQL database to allow posting, voting, and more.
20Q-style Game Editor
Java, Swing
- Developed using a binary tree structure that backtracks when all questions in a branch have been asked.
- Implemented persistence by reading and writing to JSON files.
- Achieved 100% test coverage with JUnit to ensure program quality.
Genetic Algorithm Visualization By Colour
React, Genetic Algorithms
- Developed algorithm and designed interface to visualize how natural selection can affect populations over time.
- Used custom React components as well as libraries to display the state of the population.