C++ | Direct3D 11
Omnidirectional Shadow Mapping
An implementation of omnidirectional shadow mapping with a single point light source. The depth cube map is computed in a single pass using Geometry Shaders and Multiple Render Targets (MRT).
Environment Mapping with Geometry Shaders
An implementation of environment mapping. Traditional environment mapping (Direct3D 9 and below) requires each face of a cube map to be rendered in 6 separate passes. This implementation uses Direct3D 11 Geometry Shaders to re-project primitives into multiple render targets (MRT) producing the cube map in a single pass.
Adaptive Level of Detail via Hardware Tessellation
An implementation of DirectX 11 hardware tessellation. A spherical displacement function is used to position generated vertices. Tessellation detail is calculated based on the view’s distance from the object of interest. This adaptive approach keeps the cost of distant objects low, while increasing the detail of closer objects on the fly.
Shadowing
Multi-View Soft Shadows (MVSS)
An implementation of MVSS similar to Louis Bavoil’s in NVIDIA’s SDK11. As described by Louis, this technique “renders contact-hardening shadows by averaging hard shadows from multiple point lights evenly distributed on an area light.”
Percentage Closer Filtering (PCF)
Percentage Closer Filtering (PCF) applied to shadow maps to reduce aliasing. High filtering kernels can soften the shadow edge for an approximation of the penumbra.
Shadow Mapping
An implementation of the basic shadow mapping technique using a single point light source and a 2048 x 2048 depth (shadow) map.
Texturing and Materials
Normal Mapping
An implementation of normal mapping (also known as bump mapping) first presented by Jim Blinn. Notice how flat surfaces can appear to have depth detail without additional geometry when viewed straight on.
Basic Techniques
Phong & Blinn-Phong Shading
An implementation of the Phong Lighting model for specular highlights. Includes the Blinn-Phong variation, as well as normalized versions of each to demonstrate constant total reflectance per surface area.
Light Attenuation & Range
An implementation of light attenuation for point light sources. Models the radiant flux of a light source through a range factor and attenuation function.
GPU Instancing
An implementation of GPU instancing using DirectX 11’s DrawIndexedInstanced(). The column model is exported to Collada from Crytek’s Sponza scene.
Models & Mesh Hierarchy
An implementation of OBJ file format load and parse. Multiple mesh support for hierarchical models as well as per mesh materials. Lit with a single directional light.
Local Illumination
Per pixel (phong) lighting with multiple colored point light sources.