Over the last two weeks I have been focusing on improving the lighting implementation for the deferred shading render manager. That includes adding support for normal mapping, parallax mapping, and full Blinn-Phong shading. Below is a side-by-side comparison of the unshadowed and the deferred render managers.

rm_unshadowed rm_deferred
rm_unshadowed rm_deferred

I have also included a close up view that better highlights the use of parallax and normal mapping. The parallax effect is particularly noticeable along the edges of the bricks where they appear to ‘pop’ out of the wall. The application of normal mapping can be seen in the subtle changes to lighting across the surface. For instance, the spaces between bricks appear noticeably darker then the flat surface of the bricks.

Close up view of parallax mapping.

One point of interest in the screenshots from the deferred render manager is the row of four images along the bottom of the screenshot. These images are visual representations of the GBuffer used by the deferred shading method. From left to right we have the diffuse color, view-space normals, specular color, and post-projection depth information. This is all of the information needed to compute lighting information for an arbitrary number of light sources.

As of this writing, the deferred render manager only supports point light sources. However, full support for spot lights and directional lights is fast approaching. Once that happens I will begin work on adding support for ambient lighting (implemented as a special type of light source), semi-transparent objects, and portals.