TouchDesigner GLSL Experiments

A few studies and experiments in using GLSL in a TouchDesigner environment. All major effects are achieved through GLSL, including particle motion.

Reaction Diffusion Visualizer

This project is an visual experiment using the Gray-Scott Reaction Diffusion model. Please read the linked article for a full description of the technique.

The goal of this project was to experiment using frame buffers for iterative simulations and to see how adding a few simple configurable rules to a system can allow for a huge range of outcomes.

Check out a Live Demo or check out the code on Github.


Propuga is an online puzzle game where each puzzle is procedurally generated. This means that rather than designing every playable puzzle, I’ve designed a program that will generate an infinite number of challenging puzzles. I find that puzzle games are a fun quick source of entertainment, but a limited number of puzzle designs tends to result in limited replay value. Ideally, I wanted to create a puzzle game with as much emergent gameplay as possible.

Play it here or check it the code on on Github.

Obscura (Unreal)

Obscura is a 3D, third person, puzzle exploration game in which the player is a shadow being searching for its caster. The character can only walk in the shadows. The way that the player interacts with the world is by changing the position of the sun in the sky, such that shadows are cast at different angles, thus exposing different parts of the terrain and level architecture for traversal.

Check it out on Github.

Angry Beard (Unity VR)

Angry Beard is a VR game designed for the HTC Vive where the player is a wizard defending a lone tower from a hoard of incoming enemies. The player has access to several different types of spells with different properties, each activated by a specific motion gesture tracked on the Vive controllers. Each level of this game has a set number of procedurally generated enemies that are out to get your single tower. These enemies have different strengths and weaknesses, so the player must choose their spells strategically when attacking. Later levels will produce larger hoards and more resilient enemies; mastering the motion controls and spell match-ups is key!

Check it out on Github.

Clustered Forward+ and Deferred Renderer

A WebGL Clustered Forward+ and Deferred Renderer implemented for the University of Pennsylvania's GPU Programming course

Learn more about my implementation in my README on Github.

Live Demo.

GPU Path Tracer

A CUDA Path Tracer implemented for the University of Pennsylvania's GPU Programming course

  • Naive Path Tracing ("BRDF" sampled lambert and perfect specular)
  • Main Feature: BVH (Bounding Volume Hierarchy) Acceleration
  • OBJ loading
  • Stream compaction for terminating rays and free-ing up threads
  • Depth of Field
  • Naive Anti-Aliasing
  • Material Sorting (to avoid divergence)

  • Learn more about my implementation in my README on Github.