The Increasing Complexity of AA

As we mentioned, the first major difficulty with antialiasing is compatibility. Generally the burden is on the game developer to assess the capabilities of the hardware on which it is running and make options available to users based on what is available. Problems arise in that game developers aren't able to look into the future and program for hardware that isn't available. For example, X1000 Series and GeForce 8 Series hardware can run Oblivion with both HDR and AA enabled, but at least GeForce 8 hardware wasn't available when Oblivion launched, so the developers don't test for the capability to antialias floating point surfaces and simply disable the AA option when HDR is enabled.

When games that could benefit from AA on current hardware don't offer the option, we have no choice but to look to the driver for support. Of course, we do have bigger problems on the horizon. Some developers are currently choosing options such as deferred rendering for their games. Current techniques make use of multiple render targets (MRTs) to render objects or effects which are later combined to form a final image. MSAA does not play well with this technique, as one of the basic requirements is knowing what surfaces overlap a single pixel on the screen. Forcing AA on in the driver can cause problems in games where MSAA simply will not work. Current examples of this can be seen in these games:

  • Ghost Recon: Advanced Warfighter
  • Rainbow Six: Vegas
  • S.T.A.L.K.E.R.

With the functionality of driver enabled AA dependent on the game being run, graphics hardware makers are not able to guarantee that the user will get the results he or she desires. This means that the driver setting is more like asking the hardware to enable AA if possible. This uncertainty as to the behavior of the feature can cause problems for end users of both AMD and NVIDIA hardware.

As for NVIDIA specifically, its new CSAA (Coverage Sample Antialiasing) technology adds another layer to the complexity of antialiasing settings in the driver. Now, rather than just selecting a desired level of antialiasing, we need to decide to what degree we want to either enhance or override the application. Enhancing only works when AA is enabled in-game as well, and override won't override games that make use of technology that is incompatible with MSAA. While the features function as they should, even some hardcore gamers out there may not know what they are getting when they enable AA in the control panel.

At AnandTech, we have avoided using driver AA settings as much as possible since the initial release of Far Cry which produced inconsistent results between graphics hardware manufacturers when set through their respective control panels. These specific problems were worked out in later driver and game updates, but we find it more effective to rely on the game developer for consistency between common hardware features. Where there is an in-game setting, we use it. For us, other than disabling vsync, driver settings are a last resort.

It is safe to say that AMD and NVIDIA feel the same way. The only way they currently have to inform their users about the lack of support for AA in specific games is though their release notes. No one wants the end user to have a bad experience through glitchy performance.

One of the best ways to make sure gamers stick with in-game settings is to make sure developers offer clearly defined, well documented, and complete settings for features such as AA. In order to better enable this, NVIDIA has been working with Microsoft to enable CSAA through DirectX. With the in-game option for CSAA, users won't have to wade through the driver options and can directly select the type and degree of AA they want applied to their game.

In DirectX 9 and 10, requesting AA on a surface involves determining the level (number of subsamples) of AA and the quality of AA. Most games just set quality to 0, as hardware previous hardware didn't really do anything with this field. The method developers can use to set CSAA in-game is to set the level of AA to either 4 or 8 and then set the quality to 8 or 16 (2 or 4 in DX9, as quality levels are limited to 7 or less). This functionality is exposed in NVIDIA's 100 series driver.

This has had some unwanted side effects though. In the past it hasn't mattered, but some developers would detect the highest quality setting available and select it when enabling AA in-game. These games when paired with NVIDIA's 100 series driver will inadvertently enable 16x CSAA when 4x AA is selected. Currently the games that exhibit this behavior are:

  • Battlefield 2
  • Battlefield 2142
  • Sin Episodes
  • Half-Life 2
  • Half-Life 2: Lost Coast
  • Dark Messiah of Might and Magic

This is only an issue on Vista for now, but 100 series drivers will be coming to XP soon. It isn't that either NVIDIA or these game developers are doing anything wrong, it's just how things ended up working out. The ability to enable CSAA in games does outweigh these minor issues in our minds though. We hope to see this number rise, but currently there are only two games that support enabling CSAA in-game:

  • Half-Life 2: Episode 1
  • Supreme Commander

So with the 100 series driver, future games will be able to enable all of NVIDIA's AA modes in-game. Setting AA levels in-game is safer than using the hardware makers' driver overrides and more convenient than game specific profiles. Aside from heavily encouraging developers to enable in-game AA settings when possible, NVIDIA is exploring other options to make the gamer aware of the caveats associated with driver settings and encourage the use of override AA as a last resort.

Index The Driver Enabled AA Question
POST A COMMENT

50 Comments

View All Comments

  • fyord - Sunday, March 18, 2007 - link

    The issue has a larger perspective than what anandtech and nvidia has stated. Having game developers, gpu developers, and other parties second guessing each other is a recipe for disaster. They simply need to have a standard, just like we have the 802.11 standards for wireless. To me, it seems that you would want the control to be in the operating system since the scenario is application dependent. I expect more software providers will begin to use the gpu capabilities, after all that is what the Aero interface that Microsoft created with Vista is all about. I can easily see other applications beyond video games such as Google Earth, Apple Itunes, Adobe Premier, gps navigation software, etc. taking advantage of it. Video is the next killer application and interactivity is what will help drive it. It will enable new gaming features. How about a first person shooter where you put down a sensor to monitor a given area of the map and it shows up as a picture in-picture display just like on tv? Video has been shaping what companies do. For example, just look at what Apple is doing with the iPod and the fact that Nokia is releasing a cell phone that also is a mini camcorder. It why the media companies place a high value on things like YouTube in the stock market. The pc in many ways is the centralized server for the consumer as well as a video/gaming system, a typewriter, and a web browser. Companies talk about digital convergence, but they have not fully achieved it because they have not collaborated on software and firmware interactivity standards because they were simply not aware of it. However, as a designer and a consumer, I applaud companies such as Nvidia and AMD that are coming to realize this potential and actively look for a solution. Reply
  • Trisped - Monday, March 19, 2007 - link

    My thoughts exactly. Get one system where information can be pulled from the drivers as to what options are available and pass it to the game's user interface. Reply
  • Jodiuh - Friday, March 16, 2007 - link

    If "enhance the application" should be used w/ HL2, why doesn't super sampling work unless "override the application" is selected? Or GTR2's 5 levels of AA when using an 8800GTX which has 6? Things like this force us all to either experiment, ie waste more time, or give up entirely.

    Placing the burden on Devs seems like a great way to push them over to the consoles. IMO, driver options should be able to tell whether override, enhance, or app pref need to be applied. All the user should have to do is pick a level, save it to a profile, and forget about it. Unfortunately it doesn't end w/ AA alone, we have:

    Anisotropic Filtering
    Texture and AS Quality
    Transparency Super/Multi sampling
    Gamma AA
    LOD Bias
    Vsync

    to worry about. It can become truly frustrating at times. Then combine all that w/ the piss poor overly sized, scrolling, scattered NV/ATI control panels for more good times. Why is it so tough to have all the settings viewable in one page (for 3d)? No scrolling, no moving cars or NV cubes, just a description of what it can do w/ benefits and possible disadvantages.

    And yes, it sure would be nice to have the option of changing the settings while in game w/ a nice transparent GUI overlay that's SMALL and on the BOTTOM of the screen...kind of like a good TV menu.
    Reply
  • bojaka - Saturday, March 17, 2007 - link

    Surfing via my cell I haven't read all posts. Sorry if I'm re-posting... WWW.NHANCER.COM that's all you GeForce-guys need! Reply
  • Fant - Friday, March 16, 2007 - link

    I think there should just be a graphics settings API that the games develop that hooks into the control panel AA. So whenever you go to an in-game graphics settings, up pops the control panel AA that everyone is used to seeing. The game doesnt need to know anything and everything is maintained in one place. As graphics drivers develop new features, it would be shown in game because the game would just be overlaying the actual control panel graphics settings. Whenever a game does this, it can register with the graphics driver so that a "profile" is automatically created for that game and the settings are remembered. The graphics driver would be remembering the settings for the profile, not the game. But I do agree that all the major settings need to be consolidated into 1 user panel that it easy to control. Reply
  • Gstanfor - Friday, March 16, 2007 - link

    I would like to see an option where the user can force supersampling AA in games such as STALKER, GOTHIC3, GRAW etc that disallow other AA methods if the user has SLI or crossfire. The forced AA would be totally transparent to the game and SLI would provide the required rendering grunt.

    I cannot stand scenes/games that are not AA'd, completely ruins the experience. If I wanted junk like that I'd purchase a console...
    Reply
  • KashGarinn - Friday, March 16, 2007 - link

    For some reason, I've always wondered why AA wasn't just implemented as a shader in games..

    All it's really doing is giving you a more natural blend between contrasting colours, as when you blow up a picture and then shrink it down to it's right resolution, you're not placing the items in the picture more accurately, you're just blending the boundaries between contrasting colourshapes into a more natural blend.

    I don't have the skills myself, so I'm don't know if it's at all possible to let a shader get more detail of a boundary area, or just HDR the edges of things with high contrast (the pixel problem is always a problem between 3d items), but if you can do HDR for extreme light, why not with "normal" light?

    K.
    Reply
  • MadAd - Friday, March 16, 2007 - link

    Profiles/aa
    I think the problem with profiles are that they are presented in one humongous list when few people would own more than 10% of them. More likely 3 to 10 installed games would represent most gamers (just a guess)

    so why not make profiles based on a drive search and put each game on a tab with an active panel, hide away the big list but still allow a manual addition and while giving the full selection on each tab, grey out the higher functions such as unsupported features (or the underlying AA settings declared in this article) but allow forcing, ungreying all options by clicking a NO disclaimer/warning box rather than an OK box for access to the higher options on each tab.

    Coolbits
    No matter how many years I have worked on and around pcs I still dont like messing with the registry, not unless I have to, and coolbits I found worrying because of the lack of a single official point of info, its almost undergound and who knows if the version we happen to find on site X is a) the latest b) compatible with my version of NV control panel c) will conflict with any other version if I find a version I think is newer.
    Reply
  • miahallen - Thursday, March 15, 2007 - link

    To reminisce:
    I love technology, and I read online reviews and editorials religiously (I have read Tom's Hardware Guide since it started back in 1996, I was 16 at the time). I am always interested in the new thing, and I especially find the gaming hardware fascinating. But playing games has always left me wanting.

    I've always wanted to be able to play the latest titles, at the highest possible graphical settings. Back in 1998 I built my first computer (for college ;) yah right), it used a Matrox 2D video card with 4MB of RAM (upgradable to 8MB), plus two Voodoo II 12MB 3D accelerator cards in SLI, plus an mpeg2 decoder card. So I had two VGA pass through cables hanging out of the back of my machine, it was crazy! But it was the envy of all my friends at the LAN parties, and ran games like Quake II and Unreal at 1024x768 with amazing frame rates.

    In 2002 I purchased the very first DX9 graphics card on the market, the Radeon 9700PRO with 128MB of RAM and 8 pixel pipelines. It was incredible, I could play Far Cry at 1600x1200 with decent frame rates, and even some AA and AF.

    Two months ago, I once again took the plunge with the very first DX10 graphics card on the market, the 8800GTX with 768MB of RAM and 128 stream processors, this thing is just amazing by todays standards, and I play Oblivion at 2048x1536 with all the eye candy, and AA + AF + HDR...incredible!


    Gaming with the 8800GTX (or all past graphics cards) is incredible - until it crashes...this has always been the problem for me, I push, and push, and push, until I find the limit. This article has really opened my eyes to part of my problem. I thought AA was implemented in the hardware only, and somehow was blind to the fact that a game has to support it. Especially when HDR showed up, and wouldn't work with AA on nVidia HW. This confirmed my thoughts that this was only a hardware issue. But when Rainbow Six Vegas showed up, and the editors were all saying it didn't support AA, I was thinking, "Duh! Just force it through the control panel." That's what I would've done, and when it didn't work, or the game crashed, I'd spend hours trying to figure out why, but eventually get frustrated, and move on to another game. Thanks Anandtech for educating me!

    I'm very glad that nVidia is actively trying to rectify this situation, and I hope they can help. But, after reading this, I would put 100% of the burden on the game developers, they need to get their collective heads' out of their collective a$$es and properly implement AA (and AF and HDR) within the games. Of course many of them are doing quite well, and I hope they only continue to improve.

    Going forward, I think I will be much more inclined to use in game settings, and only go into the control panel as a last resort. My advice to nVidia would be to hide the settings within the control panel, so they are only available through a hot key combo (shift F10 or something), so that the average user doesn't see or care. But the enthusiast, who knows what to do with these settings will be able to access them. And, I do like profiles, so please don't ditch them. Thanks nVidia!
    Reply
  • brian26 - Thursday, March 15, 2007 - link

    I use the driver panel mostly, mainly because often the ingame option doesnt even do anything. Its like that turbo button on the old 386's. heh Reply

Log in

Don't have an account? Sign up now