Deferred Rendering with Post Processing (Tech Demo)

This is an ongoing project showcasing deferred rendering using DirectX 10.1 in a simple scene, with additional post processing effects. It currently supporting one directional light and several point lights (any number of point lights can be loaded in, with the demo currently using 100). Point lights are loaded at run time, with the data loaded for each light being: radius, position, rgb colour and light intensity - a random movement direction is then assigned when the individual point light object is created. The layout of the g-buffer is as follows:

  • RT0: view-space depth, specular power, specular intensity, diffuse material look-up index
  • RT1: normal.r, normal.g, normal.b, unused
  • RT2: colour.r, colour.g, colour.b, unused

Features and Techniques

  • Normal mapping
  • Specular mapping
  • Position reconstructed from depth
  • View-space lighting
  • Frustum culling sphere test (on a per object basis)
  • Material system allowing each model to have a specific specular power and diffuse material
  • High Dynamic Range lighting
  • Automatic adapted luminance
  • Bloom (toggle on / off)
  • Depth of Field with near and far out of focus (toggle on / off)
  • "Dirty lens" post processing effect (toggle on / off)
  • Light volume for point lights (scaled unit sphere)
  • Toggle between 100 static or animated point lights and a directional light
  • Tweakable post processing parameters

Screenshots

Click an image to enlarge (opens a new window).

image image image
image image image

Download

Please download the demo here. Controls are included in a text file within the download. Source code available upon request.

Requirements

  • Windows Vista, Windows 7
  • DirectX 10.1 capable graphics card
  • June 2010 or later version of DirectX 10 re-distributable. Download the latest version here.
  • Built using Microsoft Visual C++ 2008 SP1 and requires the latest Microsoft Visual C++ Library Runtimes. The latest runtimes for the x86 platform can be downloaded here.