I organized this course together with Markus Billeter and Emil Persson in order to bring together all our research into real-time shading with many lights into the one package. This allows us to go into both some background and a lot more detail than previous talks.
The course was presented at SIGGRAPH 2015, in Los Angeles. The slides and notes are also available from the ACM digital library, but they do not represent the final presented version. The final version was, as usual, final a few hours before the course began. Hopefully they will also put up videos of the presentations at some point.
Part 1 – Introduction to Real-Time Shading with Many Lights
slides|pdf In this part I give an overview of past and present methods for real-time shading with many lights. That is traditional forward/deferred shading and tiled and clustered. The focus is on clustered shading because this is the most efficient and versatile technique today, and is what the rest of the course builds on.
Part 2 – Practical Clustered Shading
slides|pdf Emil provides insights into the adaptions and extensions needed to bring clustered shading to production level in Just Cause 3 at Avalanche Studios. He also gives an overview of their new DX12-based technique for computing precise light assignment, which will be published in GPU Pro 7.
Part 3 – Efficient Shadows from Many Lights
slides|pdf I presented techniques to manage virtual shadow maps and efficient culling for many lights as well as an overview of techniques for exploiting static scene elements. The talk is mostly based on our paper from TVCG this year, which describes a solution that can deliver both high quality and high performance by leveraging virtual shadow maps.
Part 4 – Clustered Shading on Mobile Devices
Ah, the demo. Yes, well I’m still working on it. At the moment I’m roughly 100% busy getting over jet lag in the evenings so it will be a while longer. It will mostly be about the algorithms used to produce shadows including the newer adaptions for static scenes. The implementation will use the CPU for most things, and thus, is not extremely fast. However, the goal is to enable people to understand how it works, which I feel is best done when being able to single-step through the code using a decent debugger (I know this might be a bit of a shock to Linux users). Stay tuned…