About Me

I am currently working at Dreamworks Animation as a R&D intern in the Rendering department. In the fall of 2017, I will finish my Master of Engineering in Computer Graphics at the University of Pennsylvania. I hope to one day work in film production as a technical director or artist in either animation or live-action VFX.

Procedural Graphics

Mathematics as Art: a collection of digital assets created algorithmically. The projects are written in javascript using WebGL and the Three.js library


Abstracted and colorful environment with interactive and real-time effects, which are created with particles, noise functions, splines, and textures.

Lava Lamp

To visualize the metaballs, the marching cubes algorithm distributes triangles based on the density function of the isosurface in each voxel.


Crowd simulation using personal space denoted with markers. The space colonization algorithm insures only one agent can own a marker per frame.

River Town

Grammar rules subdivide the building and add windows, roofs, and doors. Low frequency perlin noise is used to create the terrain.


A collection of real-time shaders and post-processing effects on a Mario model: MatCap, Iridescent, Toon, Bloom, Vignette.

Wing Generation

Procedural modelling of a bird wing using distribution functions for variation. The position, size, orientation, and color of the feathers are mathematical defined.

GPU Programming

CUDA Flocking

CUDA Path Tracer

CUDA Rasterizer

Monte Carlo Path Tracer

  • Bounding Volume Hierarchy
  • Volumetric Integrator
  • Multi-threaded
  • Importance Sampling
  • Russian Roulette
  • Fresnel Dielectrics and Conductors
  • Torrance-Sparrow Microfacet Model
  • Constructive Solid Geometry

3D Modeling

Modelled in Maya

Royal London Pocket Watch

Rothenburg ob der Tauber - Plönlein

Bauer Vapor Hockey Skates

Young River Otter