Individual Projects
Shadow Map Techniques and FBO Applications Thesis
Key Features
Four different shadow map techniques demonstrated in my Custom C++ Engine
Hardware Accelerated Standard Shadow Maps
Non-Hardware Accelerated Standard Shadow Maps
Adaptive Sampling Shadow Maps
Variance Shadow Maps
A general explanation of how to render Dynamic shadows in games
Motivation for dynamic shadows and depth perception in games
Analysis of Shadow Map techniques and associated visual artifacts
A study of Anti-Aliasing methods
Demonstration of techniques to mitigate negative Shadow Map artifacts
Performance and memory analysis and trade-offs
Comparison of hardware accelerated methods versus handcrafted solutions
See the slide show to the right for a summary of the project. C++ and shader source code can be provided upon request
Data-Driven Roguelike
Key Features
All game actors, entities, and items created through xml data utilizing flyweight design pattern
Map fog of war and line of sight raycasting
A* Pathfinding with g-cost parameterization
Artificial Intelligence: Goal Oriented Action Planning and traditional FSM all driven by xml data
Custom triggers, events, and interactions exposed through data
RPG like combat system with melee and ranged combat
Inventory system
Level-Up system for players
Custom C++ Engine integrates with Tiled for 2D map editor
C++ / OpenGL
C++ / OpenGL
Custom 3DS Max Importer and Exporter
Key Features
Custom 3DS Max export plugin dll
Custom export binary file format
Supports skeletal animation and vertex animation
Supports multiple materials
Supports exporting of diffuse textures, normal maps, specular color and level, and emissives
Custom C++ Engine supports import of custom binary format
C++ / OpenGL
Interactive Voxel Terrain C++ / OpenGL
Key Features
2D Perlin Noise used to randomly generate terrain
Players can add and remove voxels
Players may place light voxels, which propagate light in all directions
Dynamic lighting that is recalculated whenever blocks are added or removed
World is saved from session to session using Run-Length Encoding (RLE)
World is infinite and is populated by 16x16x128 voxel chunks
Game runs at a smooth framerate while chunks are loaded and unloaded
Procedurally generated trees
View Frustum Culling of chunks
Three camera/physics states: No Clip, Flying, and Walking
WebGL Deferred Renderer
Key Features
Custom 3D Javascript Engine utilizing WebGL 1.0 and GLSL ES 1.0 with additional 2.0 extensions that supports a Deferred Rendering Pipeline
Deferred Renderer implements a three pass approach which renders to a custom Geometry Buffer and Light Buffer
Demo showcases over one hundred randomly moving dynamic point lights with steady performance
Javascript / WebGL
Asynchronous Ant Colony AI C++ / Custom DLL
Key Features
Asynchronous Ant Colony AI built into a DLL that sends and receives data from a main application
Ant colony collects food and attacks other colony ants with the goal of being the last standing
Utilized A* pathfinding to traverse the map
Implemented AI for worker ants, scout ants, soldier ants, and the queen ant
Utilized critical sections to create thread-safe data access
Competed against other classmates and professors
GLSL Custom Shader and FrameBuffer Pipeline C++ / OpenGL
Key Features
Custom GLSL Vertex and Fragment Shaders
Dynamic Lighting calculated and applied in fragment shader
Supports Global Direct Lights, Local Point Lights, Local Ambient Lights, Global Ambient Light, Local Spotlights, and Global Spotlights
Custom FrameBuffer Objects for screen effects
Supports Normal Maps, Emissives, and Specular Color and Level