Software

Portfolio


Personal Portfolio Website

Feb 2025 - Present

HTML, CSS

A portfolio website to host my Computer Science and Visual Arts portfolios, with an adaptable layout supporting different screen sizes and orientations. It is written in HTML and CSS, hosted through GitHub pages. The design is inspired by the early 20th century Bauhaus movement.

The source code is available on GitHub.


Pathtracer

March 2025 - June 2025

C++

A CPU pathtracer written in C++, with multiple integrators supporting advanced rendering techniques while maintaining backwards compatibility with older input files.

Features include anti-aliasing, advanced unbiased sampling methods, physically-based shading models, BVH acceleration, and Monte Carlo path tracing.

Show rendering features
    • Core Features: Anti-aliasing, Cosine importance sampling, Analytic direct lighting, Blinn-Phong shading, Monte Carlo pathtracing

    •Advanced Features: BVH Acceleration, GGX shading with BRDF importance sampling, Nearest event estimation, Russian roulette path termination, Fluid simulation, Volumetric rendering

View rendered images...


Fluid Simululation and Volumetric Rendering

June 2025

C++

An integrator for the above pathtracer enabling a smoke simulation with volumetric rendering. It uses a semi-Lagrangian, grid-based method to approximate the Navier-Stokes equations for incompressible fluids. Advanced techniques include a Conjugate Gradient pressure solver, monotonic cubic interpolation, and the Henyey-Greenstein phase function for realistic light scattering.

A detailed writeup is available here with images and animations documenting the process and techniques. The project was recognized by the professor as one of the top 4 open-ended final projects in the course.


x86 Legacy Bootloader

March 2025 - July 2025

Intel x86

A custom MBR bootloader written in x86 assembly that loads a kernel file into memory from disk, sets up a Global Descriptor Table, and switches the CPU into 32-bit protected mode before transferring control. This is part of an ongoing independent study into low-level development using Intel's x86 Software Developer's Manual as a primary reference. Future plans involve developing a minimimal kernel that can run and schedule programs from disk.

Learn more...


Submarine Propeller RPM Sensor

Dec 2024 - Mar 2025

Arduino (C++), CAD

A system to measure and display propeller RPM for UCSD's Human Powered Submarine Club. A Hall effect sensor reads the magnetic field from a rotating cuff around the propeller shaft, sending it to an arduino which calculates the RPM and displays it on the pilot's LCD screen. The sensor is attached via a 3D printed mount, designed to fit within tight space constraints.

A custom scheduler divides CPU resources between the sub's different sensors to ensure accurate RPM readings, preempting with a best estimate when needed.


Blender Scripting - SVG File Generation

Nov 2024

Python Blender API, Processing 4 (java), JSON

Scripts that take data from a 3D model in Blender and generate an SVG image of the model's triangles with numbered vertices. A laser cutter can use the SVG file to cut out and engrave thin triangles that can be assembled into a physical, to-scale sculpture of the original 3D model. I've used it to laser cut 3D models out wood for sculptural projects.

Learn more...


Game Development

Most Recent Project: Oct 2024

Unity, C#, HLSL

I participated the Ludum Dare 56 game jam in October 2024. I made a small game around the theme "Tiny Creatures" over the course of a weekend using Unity game engine.

The game is hosted on itch.io, as are most of my other gamedev projects.
The github repository is available here.
Return to Home Page