Natural Opinions

An Archive Of My Thoughts

SGSSAA can be better or worse than OGSSAA depending on the game. In some games it can be blurry while OGSSAA isn't, and vice versa. It works on pretty much any graphics engine regardless of API (d3d9/10/11/openGL etc.).  It works by rendering multiple times to several offscreen intermediate buffers, each time it applies an offset to the sample coordinates in a different direction. Then it resolves (blends) the buffers post-processing.  At the present time nobody except nvidia knows for sure if this implementation is hardware or driver (shader) based.

SGSSAA does produce blur in some games just like OGSSAA does in the XxX and xS modes. And once again it has nothing to do with LOD. The xS modes have an auto lod adjustment but that doesn't help you when a game is producing a blurry image due to a conflicting post-processing shader.

The story behind SGSSAA:
Nvidia implemented TRSSAA as an alpha test that supersampled pixels that passed. A bug was present in one of the drivers they released for the new fermi cards that caused the alpha test to always pass and therefore apply SGSSAA to all pixels. They fixed the bug in the next release but many users said that they liked the look of fullscene SGSSAA and complained about its removal.  This caused nvidia to release a tool that allowed the bug to be re-enabled.  Despite the fact that this tool was made by nvidia they do not officially support it, it comes with a nice fat "use at your own risk" warning.  The new fermi cards + new drivers made nhancer no longer compatible (since it never got updated for the 200 series drivers) and since the developer of nhancer has dropped off the face of the planet we can expect it to never be updated.  However in the meantime another developer made a better app that did the same thing, nvidia inspector. He included the SGSSAA hack in it.

Therefore SGSSAA technically comes in two forms, FSSGSSAA (fullscene sparse gride supersampling anti-aliasing, which is SGSSAA applied to the entire scene) or TRSGSSAA (tranparency sparse grid supersampling anti-aliasing, which is SGSSAA applied only to transparent textures).
As far as nvidia inspector and nvcp (nvidia control panel) are concerned they are listed under the following names:
FSSGSSAA is just called SGSSAA
TRSGSSAA is just called TRSSAA or "Transparency Supersampling"

Technically both of them are SGSSAA, but only the fullscene implementation is called SGSSAA.

How to set it up:

Set AA to 4xMSAA. Set Transparency multisampling to off/supersampling. Set Transparency Supersampling to 4xSGSSAA. Set the AA mode to override. Change the AA comp. bit to whatever the correct combination should be for that game. And set negative lod bias to allow. Make sure you hit apply before closing nvidia inspector (in the upper right corner) or it won't work (this is one thing I really liked about nhancer, it auto-saved your profile settings whenever you changed something)!

Please keep in mind that whenever you use SGSSAA you should always match the number of MSAA samples used to the number of SGSSAA samples used. 8xMSAA + 4xSGSSAA will usually have lower quality than 4xMSAA + 4xSGSSAA. This is because SGSSAA gets its sample coordinates from the MSAA samples. So if you have more MSAA samples than SGSSAA samples the SGSSAA samples will not be placed in the ideal locations. Also you cannot have more SGSSAA samples than MSAA samples for the same reason (SGSSAA uses the MSAA sample coordinates).  Even though it uses MSAA sample coordinates using additional coverage samples will reduce the effectiveness of SGSSAA by changing the grid pattern so that the MSAA samples are placed closer to the center of the pixel (which is a less ideal location). This is why I advised 4xMSAA + 4xSGSSAA and not 16xCSAA (4xMSAA + 12 extra coverage samples) + 4xSGSSAA.

LOD Bias
Please read this first if you do not understand what the LOD bias option is for: 

Set negative lod to allow and set the lod bias as follows:
1x2 OGSSAA   (2 samples): -0.5
2x1 OGSSAA   (2 samples): -0.5
2xSGSSAA       (2 samples): -0.5
2x2 OGSSAA   (4 samples): -1.0
4xSGSSAA       (4 samples): -1.0
8xSGSSAA       (8 samples): -1.5
3x3 OGSSAA   (9 samples): -1.58 (or as close as you can get)
4x4 OGSSAA (16 samples): -2.0

The formula for determining the correct lod bias is "y = -0.5 * log, base 2, of (n)" where n is the number of samples and y is the correct lod bias.  Of course since some of you may have forgotten how to use logarithms I went ahead and typed out the correct values for each SSAA mode above.  This function simply means that every time you double the number of samples you subtract another 0.5 from the lod bias.

Please note that despite common belief reducing the LOD bias will not eliminate any blurring issues that you may be having.  Blurring issues with SGSSAA are caused by conflicting post processing shaders used by an application (game) and have nothing to do with the texture mapping process.  Proper SSAA is supposed to IMPROVE texture quality, even without a negative LOD bias, the ability to use a negative LOD bias without any texture shimmering issues is just a nice bonus.  Normally without any form of SSAA 0.0 becomes the most ideal LOD bias in most cases, a lower value will increase shimmering and a higher value will reduce the sharpness of distant textures.  However SSAA helps fight the texture shimmering that a low LOD bias normally causes (you can use a lower LOD bias without experiencing texture shimmering, the values provided above should maintain the same level of shimmering that a LOD bias of 0.0 without SSAA would have).  This allows you to potentially further improve the sharpness of textures, particularly distant textures.  It is quite possible with SSAA + lower LOD bias to achieve much better texture quality in some games than would normally be possible without SSAA.  Please also keep in mind that you should only do this with fullscene SSAA implementations like SGSSAA or OGSSAA.  TRSSAA does not reduce texture shimmering and therefore gives you no reason to lower the LOD bias.  Also keep in mind that this trick will only work with d3d9, d3d8, and openGL applications.

Both ati's RGSSAA and nvidia's HSAA have auto lod bias adjustment built in so when using them do not tweak the lod bias.  However you still need to make sure you allow negative lod.  If you're not using any SSAA set negative lod to clamp.

SGSSAA and OGSSAA work differently. Because of this a set of AA comp. bits that works perfectly with SGSSAA may not work perfectly with OGSSAA or HSAA, and vice versa.