Decouple shading rate & visibility rate from pixels: allow for space for anti-aliasing and coarse pixel shading.
Texel Shading (shading rate reduction):
We show performance improvements in three ways. First, we show some improvement for the “small triangle problem”. Second, we reuse shading results from previous frames. Third, we enable dynamic spatial shading rate choices, for further speedups.
Visibility: updating visibility at the full frame rate.
Shading rate: dynamically varying the spatial shading rate by simply biasing the mipmap level choice, texel shading and temporal shading reuse
Some reason for increased shading cost
- The first is the mapping from pixels to texels
- The second source of shading increase is in the caching system.
Process: deferred decoupled shading
rasterization -> records texel accesses as shading work rather than running a shade per pixel. Shading is performed by a separate compute stage, storing the results in a texture. A final stage collects data from the texture
Object Space Lighting:
Inspired by REYES (render everything your eyes can see)
All objects in game are submitted for shading and rasterization. Queued for process
During submission step, the estimated projected area of the object is calculated. Thus an object requests a certain amount of shading
During shading, system allocates texture space for all objects which require shading. If the total request is more then available shading space, all objects are progressively scaled at shading rate until it fits
Material shading occurs, processing each material layer for each object. Results are accumulated into the master shading texture(s)
MIPS are calculated on master shading texture as appropriate
Rasterization step: each object references the shading part step. No specific need that there is a 1:1 correspondence, but this feature is rarely used.
Our architecture is also the first to support pixel shading at multiple different rates, unrestricted by the tessellation or visibility sampling rates.
automatic shading reuse between triangles in tessellated primitives
- we decouple pixel shading from screen space
- it allows lazy shading and reuse simultaneously at multiple different frequencies
enables a wider use of tessellation and fine geometry, even at very limited power budgets