** OUTDATED :( **

This page is woefully out of date. I created it shortly after graduating from college, and since then I have been working full time as a gameplay programmer. But it is a good snapshot of some of my favorite projects I worked on before officially joining the game development industry. If you'd like to get in touch, I can be reached at jvsola@gmail.com, and my updated resume can be found right here!

Interactive Boxing

Win 2KO

Do you have a plethora of boxing gloves, computers, webcams, TVs, and construction paper? If so, you too could own your very own Virtual Boxing Ring!

This was a project done in a small group for my University's Engineering Openhouse Undergraduate project competition. Using image analysis on webcam input to track the locations of specially colored boxing gloves, it gave players the opportunity to "fight" their friends or family in a two-player networked game.

Of the three programmers on this project, I was primarily responsible for game logic, model animation, camera control, and other various graphics effects such as the skybox and light trails on the gloves.

Our project won first place in Undergraduate research, and was also awarded the ASME Lockmiller Award for Robotics and AI.

Written in C++, and uses OpenGL for the graphics system.

The opening flyby of the ring

The quasi-first person view of player 1

Player 2 getting knocked out (of the ring!)

Team member Vishesh playing at EOH

An overhead view of the setup


Hyperkinetic WinAmp Visualization

An OpenGL visualization plug-in for the popular shareware MP3 player WinAmp.

MadSpin analyzes the song playback and generates swirling patterns of stars, letters, dots, and other images which bounce and sparkle in time to the music.

So far, the two versions of MadSpin have been downloaded a total of more than 750,000 times from the winamp website, have received a staff rating of 5 out of 5 stars, and version 2 was given the title of Featured Plug-in.

The screenshots below really don't do it justice, you have to see it in motion to get the full effect.


Full-featured Raytracer

A fairly advanced ray tracer created for an advanced graphics course.

Currently it supports reflection, refraction, distributed ray tracing effects (depth of field, anti-aliasing), CSG (union, subtraction, and intersection), procedural shading (including Perlin noise), bezier patches, arbitrary quadrics, and photon mapping.

I chose to write this ray tracer in the relatively new C# programming language as both a learning exercise and a test of C#'s speed. It turns out that C# is faster than you'd think it would be, as most of the images below were rendered in less than 5 minutes on a 1.4ghz Athlon. The depth of field image, at 256 samples per pixel, was rendered overnight.

Caustics from a brass cylinder on a Perlin Noise textured plane

The classic Utah Teapot, made from Bezier patches

Multi-sample depth of field and anti-aliasing

A wine glass showing off CSG and refraction

A weird quadric object

Sample Code

BezierObject Definition (C#)

The definition to my Bezier patch object, this handles all methods required to test for and return an intersection of a ray (a 3-dimensional vector) and a set of Bezier patches.