• C++: Dynamic / Hierarchical Occlusion Mapping Algorithm

    One of my projects for CS300 (a graphics course at DigiPen) was to implement hierarchical occlusion mapping, a technique that can potentially reduce scene complexity dramatically by using occluders to hide small, detailed objects.

    Process

    1. The objects that are flagged as occluders are rendered in a first pass to a low resolution render target. This generates a mask with depth information.
    2. The graphics card is used to generate mip levels for the mask
    3. Object bounds are projected into that mask’s space and tested for containment within the mask recursively
    4. Objects that were trivially rejected by the mask are compared against the mask depth values to make sure it was an accurate rejection.
    5. All collected visible objects including occluders are passed along to the next rendering stage

    Gallery

    Additional Resources

    More detailed information on this technique can be found here on gamasutra.

  • C++: Ray Tracer

    This ray-tracer was my final project for CS-400 at DigiPen, it renders a variety of solid objects read from a custom file format, rendered with local & global illumination. Optionally it also supports anti-aliasing.

  • C++: Free-Form Deformation

    Free Form Deformation

    Free form deformation of a generated super-ellipse mesh.

    Written in C++ using OpenGL & custom CG per-pixel phong fragment shader.

  • C++: Software 3D Rendering

    Developed software triangle rasterizer with perspective-correct texture sampling, bilinear filtering, 3ds model loader, dynamic shadows.

  • C++: Hauser the Hound

    Hauser the Hound, is a 3-D side scrolling adventure platformer with zany physics puzzle elements. Hauser was my senior game project at DigiPen Institute of Technology. The main goal we hope to accomplish with the game is providing simple and intuitive 2D and 3D gameplay that actually makes you think. Visit the game website.