MATTHIEU DELAERE

GRAPHICS PROGRAMMER

email github twitter linkedIn
Deferred Overlord - C++ Graphics Programming Course

2016 - 2019 • Digital Arts and Entertainment Course

DESCRIPTION:

At the end of the Graphics Programming 2 course we explain the deferred rendering pipeline. This is not a mandatory topic for students due to the limited amount of ECTS for the course. Nonetheless, it is a very interesting topic as they learn:

  • how to work with the stencil buffer.
  • how to write to multiple rendering targets.
  • how to do basic volumetric lighting.
  • how to deal with lighting attentuation for both point- and spotlights.

This class was one of the last updates in the Graphics Programming 2 course, as this course will change due to a curriculum update. The initial framework and base was made by my colleague Thomas Goussaert. I've iterated on the framework, adapted it further for the deferred rendering support, wrote and fixed parts of the shaders and fixed several issues. There are still issues with the framework (scenegraph, optimzation, etc.), but due to the changes this will no longer be applied as this will become deprecated.

Next to this class I've also changed a lot of the content, created in this DirectX 11 Overlord Engine framework, for the other classes in Graphics Programming 2, included but not limited too:

  • general engine optimizations.
  • fix bugs in the Nvidia PhysX support.
  • shadow mapping.
  • post processing extensions.

An entire implementation of the Overlord Engine framework cannot be shared as it is still activly being used in lecturers and assignments.


CODE SNIPPETS:

Below are code snippets of some of the most interesting parts of deferred rendering pipeline.

Deferred Rendering: part of the core of the deferred rendering pipeline. Creates the G-Buffer and makes sure resources are set accordingly.

Fill Pass: HLSL shader performing the fill pass (rendering information to G-Buffer).

Lighting Pass: HLSL shader performing the lighting pass. Using volumetric lighting, performing the lighting calculations and presenting the result to the screen.

Helper Functions: HLSL helper functions used in the Lighting Pass.


CONTRIBUTIONS:

  • Partial clean-up and fixing bugs in the framework
  • Made changes to the framework to further support deferred rendering
  • Refactor, clean-up and fixing shader bugs