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