My Projects

Volumetric scene rendered with the physically-based C++ renderer

Physically-Based C++ Renderer

C++ / Monte Carlo Rendering

Extended a minimal educational ray tracer into a full physically based renderer.

Acceleration
Binned-SAH BVH with optimized traversal and multithreaded construction.
Shading
Diffuse, dielectric, and microfacet BSDFs; textured materials and HDR environment lighting.
Light transport
Path tracing with next-event estimation, multiple importance sampling (MIS), and Russian roulette.
Volumes
Heterogeneous participating media, delta tracking, HG/DHG phase functions, volumetric path tracing.

SDF-based Interactive Particle Demo

TypeScript

This is an interactive demo using Bezier splines and Signed Distance Field(SDF). Build your F1 car and have fun!

Gnome More Shrooms game logo

Gnome More Shrooms

C++ / CUGL / Mobile Game

A mobile game built with a C++ engine. Just won the Game of the Year Runner-Up award at the 2026 Rookie Awards!

Players plant, grow, and harvest crops, then load them into towers as ammunition against waves of invading mushrooms. They expand the garden, unlock new crops and upgrades, and defend the Orchadium through the final boss wave.

See The Rookies page below for more details.

GPU Fluid Simulation

TypeScript / GLSL / WebGL

Built a GPU-resident SPH fluid simulator and volumetric water renderer for WebGL.

Simulation
Predict-correct SPH with pressure, near-pressure, viscosity, and fixed substeps.
GPU pipeline
Particle state packed into floating-point textures with ping-pong updates and a same-frame density pass.
Neighbor search
3D spatial hashing, parallel bitonic sort, and constant-time cell-range lookup.
Collisions
Mesh-to-SDF voxelization with trilinear distance and gradient sampling.
Rendering
Density-field ray marching with Beer-Lambert absorption, depth occlusion, and reconstructed normals.
Puddle scene rendered with the physically-based Python ray tracer

Physically-Based Python Ray Tracer

Python

Built a physically based ray tracer with Python:

  • Schlick Fresnel
  • Texture mapping
  • BVH acceleration structure
  • NumPy vectorization
  • Tile-based multiprocessing