Ray Tracer

Honestly, I had a surprising amount of fun making this program. Not only did we get to make our own framework for it, but all the course material was interesting. Although, what really brough the project together for me was implementing the Quaternion Julia Sets.

After the class I decided to use this project to give myself some experience with distributed computing. The way I set up the architecture for the program allowed me to implement the distrubted processing really quickly.

Video:


Key Features:
  • Intersection algorithms for rays with spheres, boxes, polygons, and ellipsoids
  • Intersection between rays and Quaternion Julia Fractals
  • Phong shading
Screenshots:

Paper: A paper I wrote on intersections between rays and Julia Fractals
World Generator

I made this program for a semester long project in my robotic intelligence class. The idea is that the agents will go around and use fuzzy logic to populate the world with different objects. The demo only has good and evil objects, but with the use of player modelling this system could be expanded to do things like populate the world with the player's favorite type of ammo.

Screenshots:
Bezier Curves

Curves and Surfaces was one of the most interesting, and challenging, math classes that I took while at DigiPen. Part of our final grade was this project where we had to allow the user to click points on the screen and then use those as control points for curves.

Curves Implemented:
  • B-Splines
  • Cubic Splines
  • Bernstein Polynomials
  • de Casteljau's Algorithm
  • Nested Linear Interpolation
Screenshots:
HOM/DEB

This was the final project I had for a class that was about using data structures in graphics programming. HOM stands for heirarchical occlusion map and DEB stands for depth estimation number. Once certain occluders were selected they'd be rendered to a much smaller version of the screen, and that would be used to tell if objects are occluded.

ScreenShots:
BSP Tree

For this project we were given a framework by the teacher that had four objects in it. Our job was to implement a BSP Tree to help speed up rendering. We had to figure out some way to choose a polygon to start with, and then from there create the tree and use it for rendering.

Screenshots:
DigiBoy

The best aspect of working on this project was being able to program on a Game Boy Color using assembly. It was great experience for working on platforms other than PC, and I definitely gained a lot of respect for everyone who ever programmed a GBC game. There are a lot of challenges to it.

Screenshots:
DigiBoy In Space

I made this in the same class that I made the first DigiBoy in. While programming in C was much easier for me than assembly, I still gained some valuable experience about working on different platforms.

Screenshots:
Scanline Rasterizer

If memory serves me correctly this is the third triangle rasterizer I had to write while at DigiPen. This was the basis for every other assignment in the class which included bump mapping, phong shading, and spherical environment mapping.

Hyperbolic Rasterizer

This was the final project for one of the hardest classes I took at DigiPen. For this one we had to implement a triangle rasterizer that used hyperbolic interpolation, texture mapping, and shadows. Once again, the framework was provided bu the teacher but this time we got that cool Mega Man model to work with.

Screenshots: