Other Projects

Shadow Maps with PCF

Shadow Map Image 1

This project features a dynamic spotlight casting real time smoothed shadows (using percentage closer filtering). The model comes from the digipen game "Gigoon," which can be found here. The meteorite, arguably just as cool looking, has some simple bump mapping and a silly timed effect thrown onto it. The texture comes from filterforge.com.

This project requires Shader Model 3.0 (DirectX 9.0c).

Shadow Map Image 2 Shadow Map Image 3

Inference Engine

Inference Engine Image 1

This was an engine built to perform a domain-independent inferencing on a subset of First Order Logic (It only accepts horn clauses). The particular domain here is the common Wumpus World. The driver builds a world, feeds the engine the inference rules, and then provides observations as facts to the engine. The rules were written so that the engine would priorities to possible actions the agent might perform, and return the best course of action. The driver would carry out the action and update the state of the system until done.

Hierarchical Animation with Inverse Kinematics

Animation Image 1

This project features a model (.X file) with skin and bones. All the transformations and animation code is written by myself, using the DirectX API just to draw, and to parse the file. This project demoes a few other technologies, as well:

  • run with -walk: As the model moves along the spline it gradually accelerates/decelarates, with the speed of the animation is tied to the movement speed.
  • run with -ik: Move the ball around with the numpad, press space to have the character walk towards the ball. The model will stretch its hand towards the ball and back, in a simple loop. The IK is performed with the Cyclic Coordinate Dissent method on the quaternions, while the constraints are specified by Euler angles.
Animation Image 2 Animation Image 3

BSP Tree Renderer

BSP Tree Image

Back in the ancient days before Z-Buffers and giant lizards roamed the earth, you had to draw things carefully. This project painstakingly paints a buffalo on a cave wall creates a Binary Space Partitioning Tree dynamically from a given scene, and uses the structure to draw the polygons in distance-descending order from the camera, to get the correct result without depth testing. The algorithm used to determine the partitioning planes for the tree is a greedy algorithm that tries to find a good medium between tree balance and minimizing the number of polygons "split" by any given plane. The framework was provided for this assignment, and is not my own work.

Software Bumpmapping and Texturing

BumpMapped Image

A simple project which performs texturing and bumpmapping in a software scanline renderer, implemented using OpenGL. The framework, texture and height map were all provided for this assignment, and are not my own work.