ChronoPhos - Forward vs Deferred vs Forward+ 2.5D

The Video

The Explanation

This is ChronoPhos, my dissertation project. It was used to compare Forward, Deferred, and Forward+ 2.5D in Sponza, with a scaling number of point lights.

Features:

  • Forward, Deferred and adjustable Forward+ 2.5D
  • Texture caching
  • Reversed Z-buffer
  • GPU-Queried Timing Data

More Info:

This is my dissertation piece, which I used to measure the relative timings of Forward, Deferred and Forward+ 2.5D in Cryotek's Sponza, with a scaling light count. I also used it as a means of additional learning, such as including normal mapping, compute shaders, a reversed depth buffer for accuracy, build events, and manual GPU timing, amongst others.

Forward+ 2.5D is an extension of Forward+ which takes depth tiling into account, based on the use of bit masks to discard geometry. It rivals Clustered Forward+, though the artefact does unfortunately not compare the two due to time scopes - this is a point of further development. In this artefact, tile size, the number of depth tiles, and number of allowed lights per tile is configurable.

The results of the experiments showed that Forward+ 2.5D, on average, was the best of the tested pipeline methods. However, Forward was better at lower light counts due to the baseline cost of both of the other methods. Deferred acted as a mid-point option between the two. Below are the results:

To test and observe Forward+ 2.5D functioning, I also made a debugger which shows the light occupancy of each pixel, based on the maximum allowed number of lights per tile. Green -> red means more lights were accumulated within a pixel, whilst the blue lines show the tiles. Below is what it looks like with 512 lights, with a 16 light maximum:

Feel free to ask me anything more about this project!