Super Human Geneticist

During the end of my career at Cal Poly I took a course titled “Real-time Computer Graphics.” This course consisted of small teams with a quarter long project focused on developing a video game. We had a great team of five students which created a fully playable, single level, interactive video game. My primary role on the team was to focus on the OpenGL rendering engine of the game. As a result I gained extremely valuable experience developing systems and algorithms used in modern video games and graphics engines. A few of the techniques used include a Cell Shading algorithm, a real-time image based edge detection algorithm, projective shadow mapping, and many modern graphics technologies including frame buffer objects. Our team encountered many walls, including a dropped team member, but we managed to work our way over each obstacle. Due to the dedication and enthusiasm of our team we managed to win the “Top Voted Game” for the final ratings of all the games in the class. This project strongly captured my interest resulting in the most valuable experience I have had during my career as a computer science student.

Geneticist particle effects and smooth skinning for character animation.

Projective shadow mapping used in Geneticist.

Geneticist: Screenshot showing some of the terrain and dynamic shadows.


More information and download can be found at the Genetics home page.

Source available on github.

Animated Noise Cloud Shader

This algorithm utilized a 3D Perlin noise function provided from the OpenGL Orange Book. This noise function created a 3D noise texture which can be passed into the GLSL shader. The shader than uses the current execution time of the OpenGL program as an offset for the texture lookup. As a result this creates a very smooth animation as clouds appear to drift, shrink, grow, or even disappear. While this algorithm was very simple it's result created a very visually appealing cloud animation.

Animated noise based cloud shader.


Standard TUIO Interface

During an Operating Systems class at CalPoly I lead a team of three which created a Linux input driver for multi-touch tables.

Outside of class I had a built two separate multi-touch tables using different techniques I learned from the NUI Group forums. One based on the Frustrated Total Internal Reflection (FTIR) technique and the other using Laser Light Plane Illumination (LLP). For a quarter long project we created a Linux input driver which takes input from the touch table and emulates a virtual mouse.


The code is now available on github.

Here is the final paper from the class.

p2p569


For a graduate Distributed Programming class I wrote a peer-to-peer filesharing application. The protocol was defined for the entire class allowing each implementation to discover each other and share files.