Click to expand each section
Computer Graphics Robot Project
A project for my Computer Graphics course that has a "robot" on a grid. The robot can be moved around seamlessly thanks to hierarchical transformations. It supports: translating the base, rotating the base, rotating the first arm up and down, rotating the second arm up and down, and rotating the camera around the scene. These movements are done by first selecting the movement option with a specific character on the keyboard, and then using the arrow keys. It also supports picking, where pieces of the robot can be clicked with the cursor, and it will change to a different color, as well as automatically select the relevant option to be controlled via the arrow keys. Finally, it can shoot projectiles that obey Newton's laws, and upon landing, teleport the robot to that location. It supports multiple active projectiles at the same time. The "interesting" looking lighting and shape of the robot are due to project requirements.
FalconGL
FalconGL is my personal learning project where I developed a CPU-based rasterizer pipeline, featuring every basic step of the OpenGL graphics pipeline: custom vertex specification system, user-specified vertex shading, primitive assembly, clipping, perspective divide, viewport transform, rasterization with barycentric coordinate interpolation, user-specified fragment shader, and anti-aliasing. Pineda’s polygon rasterization algorithm was used to massively optimize the rasterization stage. I am currently working on reducing the unintended overhead caused by implicit C++ operations (copying etc.) and using vector instructions for additional speedup.
TutorBridge
TutorBridge was my software engineering project.
Team Dynamics: I worked in a team of 4, as one of the two backend developers, with the other 2 teammates working on front end. I planned and built our backend system, and designed the APIs. I assisted my other teammate working in the backend with setting up the database. As a team, we abided by the Agile principles; we had weekly standups, sprints, retrospectives, formal reports, etc.
The Project: We designed a website with a working register/login system that allows students to make posts looking for tutors, such that the tutor may see the hourly wage offered, tutoring subjects, and contact information. We plan on adding live chat support through WebSockets. The project is not hosted at the moment, but I have linked the GitHub repo.