Tile-based deferred shading
tile-based deferred shading deferred shading dice rainware rain engine
I've been absent from this site for a while now, mainly for academic reasons (tons of deadlines, you know the drill).
I have dedicated some small amounts of spare time on my personal projects as well though, and last night I was finally able to complete something which was on my to-do list for quite a while: Tile-based deferred shading
Here's a result image (click to enlarge):
This is a small scene with 1024 quite densely packed active dynamic pointlights using a physically based BRDF with support for a wide range of materials (including pretty accurate rendering of metals).
This frame was rendered in 9,34 ms (107,7 frames/sec) at a resolution of 1280x720 on a mid-range DX11 graphics card with all engine systems enabled and actually doing work (eg. audio, physics, etc.). This was rendered without applying any form of culling on the lights beside the tile-based culling in the compute shader.
Note: Point light intensities and cutoff distances are generated randomly, hence the sharp edges for some lights.
The implementation supports both point and spot lights. Directional lights are rendered in a separate pass.
It still needs some work when it comes to optimization, but I'm already pretty damn satisfied with the results
Got the frame time of the exact same scene down to 7,4ms