20130321 - ARB_sample_shading and NVIDIA Inspector SGSSAA


ARB_sample_shading
Direct link to the ARB_sample_shading spec. Base 4xMSAA shades at 1 sample/triangle/pixel. Fragment shader with the "sample" interpolation qualifier at 4xMSAA shades at 4 samples/pixel. This OpenGL extension provides support to vary the frequency of shading in a fragment shader between those two extremes.

4xMSAA + glMinSampleShadingARB(0.0) = 4xMSAA
4xMSAA + glMinSampleShadingARB(0.5) = 4xMSAA + 2xSGSSAA
4xMSAA + glMinSampleShadingARB(1.0) = 4xMSAA + 4xSGSSAA

8xMSAA + glMinSampleShadingARB(0.00) = 8xMSAA
8xMSAA + glMinSampleShadingARB(0.25) = 8xMSAA + 2xSGSSAA
8xMSAA + glMinSampleShadingARB(0.50) = 8xMSAA + 4xSGSSAA
8xMSAA + glMinSampleShadingARB(1.00) = 8xMSAA + 8xSGSSAA

Measured performance in a forward shaded renderer on a Kepler GTX680 at 2560x1600,

13.9 ms/frame : 4xMSAA + 4xSGSSAA
 9.1 ms/frame : 4xMSAA + 2xSGSSAA
 7.7 ms/frame : 4xMSAA (CPU bound almost GPU bound)

Relating Back to the NVIDIA Inspector
DX does not have anything like ARB_sample_shading exposed in the API, so the only current way to leverage this feature with DX games is to use driver overrides via the NVIDIA Inspector. Note these driver overrides will not work with all games. Some example settings,

4xMSAA + 2xSGSSAA
Antialiasing - Setting = 4x [4x Multisampling]
Antialiasing - Transparency Supersampling = 2x Sparse Grid Supersampling

4xMSAA + 4xSGSSAA
Antialiasing - Setting = 4x [4x Multisampling]
Antialiasing - Transparency Supersampling = 4x Sparse Grid Supersampling