Sign in with
Sign up | Sign in

Texture Transparency: Nvidia’s TAAA And AMD’s Adaptive Anti-Aliasing

Anti-Aliasing Analysis, Part 1: Settings And Surprises
By

You might think that MSAA sounds like an ideal balance between performance and image quality. And, for the most part, it does an excellent job. However, there is an aliasing problem the method does not address: texture transparencies.

When it comes to PC games, most of the objects you see and interact with are made of three-dimensional meshes. These meshes are composed of the three-sided polygons we call triangles. The more curved and detailed an object is, the more of those polygons you need in order for it to appear smooth and realistic. Unfortunately, when the game is rendered, every triangle in the scene adds to the workload—each one needs to be processed in order to demonstrate how it is textured, how light reflects off of it, and even how it casts a shadow. In order to keep frame rates high, game developers try to keep the number of polygons per frame within a certain budget. The idea is to stay under a ceiling, providing good-enough visuals, while delivering smooth performance. AMD and Nvidia are trying to help developers raise that bar using tessellation, but that's a conversation for another day.

Problems arise in a scene where there are a large number of small, detailed objects that would require incredibly complex meshes. Imagine the number of polygons required to represent the countless leaves in a forest. How about the detailed wires in a chain-link fence or the blades of grass in an open field? Even with today’s graphics power, these tasks could cripple a PC. The solution is to use texture transparencies.

A transparent texture simulates finely detailed, three-dimensional objects with a two-dimensional picture accompanied by a transparent alpha mask. Let’s use the chain-link fence as an example, an object that many first person-shooters have. Here’s an image that shows the fence texture (transparent areas appearing as a checkerboard), how the scene geometry appears, and how the scene looks in the game:

As you can see, transparent textures do a great job of adding detail to the scene without a lot of added geometry. The problem is that MSAA has no effect on an aliasing problem unless it’s on the edge of a polygon, and a transparent texture has no polygon edges inside of it:

Supersampling will anti-alias transparent textures, but not without the big performance penalty mentioned previously. What we need is a high-performance method to anti-alias these textures.

With the GeForce 7-series cards, Nvidia introduced a feature it called transparency adaptive anti-aliasing, abbreviated as TAAA. Nvidia has two implementations of TAAA, one using a multisampling method (TrMSAA) and one using a supersampling method (TrSSAA).

Recall that MSAA is only performed on pixels that contain the edge of a polygon. With TAAA enabled, pixels that contain an object with a transparent texture are also flagged. Nvidia’s driver settings allow you to choose between anti-aliasing the transparent texture at the same level that MSAA is applied to the rest of the scene, or to supersample the transparent texture with two, four, or eight samples.

We should also mention the limitations of Nvidia’s TAAA. In theory, TrSSAA should work in almost every situation. But our test results show it most often works in DirectX 10 and 11 game engines. TrMSAA, on the other hand, is limited to DirectX 9, and we’ve found that, in practice, it rarely works.

The Radeon counterpart to TAAA is called adaptive anti-aliasing, released shortly after the GeForce 7 with AMD's Radeon X1000-series cards. It works similarly, except that AMD’s implementation is limited to supersampling, with the number of samples tied to the anti-aliasing level of the scene. Like Nvidia’s TrMSAA, AMD’s adaptive anti-aliasing only works with DirectX 9 game engines, and does not often work in practice. AMD let us know that the feature can be used in DirectX 10 and 11 applications if the developer specifically supports it. It lists S.T.A.L.K.E.R.: Clear Sky, S.T.A.L.K.E.R.: Call of Pripyat, and Metro 2033 as games that take advantage of the feature. However, when we tried it in our tests, it didn’t appear to work in Metro 2033.

Transparency Anti-aliasing Image Comparisons

As you can see, transparency anti-aliasing can make a big difference in image quality. Both Nvidia's and AMD’s transparent anti-aliasing techniques do a great job here, although the thickness of the fence does vary between the options.

On a final note, a DirectX 10/11 technique called alpha-to-coverage can apply hardware anti-aliasing to a transparent texture. The screenshots above feature an older game engine to demonstrate transparent textures that show a lot of improvement with TAAA and adaptive anti-aliasing, but a lot of new game titles do a much better job of rendering fences and foliage with fewer aliasing artifacts. Having said that, we find there are usually some instances of aliased textures in even the newest game titles, so transparency anti-aliasing remains a useful and important tool.

Display all 86 comments.
This thread is closed for comments
  • -4 Hide
    atikkur , April 13, 2011 4:19 AM
    PERTAMAX gan. .
  • 8 Hide
    burnley14 , April 13, 2011 4:24 AM
    Awesome article. I am unfortunately not one of the elite few who know all the ins and outs of graphics performance, so this was very enlightening for me.
  • 4 Hide
    dragonsqrrl , April 13, 2011 5:28 AM
    Great article, very informative. I've never really used forced anti-aliasing through the driver, and from what I've read it doesn't really sound like a good idea anyway, given the fact that most modern games provide adequate AA levels through in-game settings (these are usually better optimized as well). Seems like forced driver level AA is pretty hit-or-miss. With a few rare exceptions it just doesn't seem like it's worth the effort.

    ...went to the link for Tom's Geforce3 article. The good old Geforce3, now that takes me back.
  • 8 Hide
    tallguy1618 , April 13, 2011 5:36 AM
    This is definitely one of the better articles I've read
  • 0 Hide
    Anonymous , April 13, 2011 6:37 AM
    what are you talking about?
    we can still force Supersampling
    as of 266.58 on Nvidia cards
  • 1 Hide
    army_ant7 , April 13, 2011 7:00 AM
    Why does it say here, http://www.geforce.com/#/Optimize/Guides/AA-AF-guide (go to the next page of this article), that it internally renders the frame at a resolution 4 times greater? But according to the 2nd page of this article, it says that at x4 AA it only internally renders a frame at a resolution 2 times greater.
  • 3 Hide
    JimmiG , April 13, 2011 7:23 AM
    Great article, but this is really something Nvidia and AMD will have to fix together with game developers...

    The settings I select in the driver control panel should apply without me having to worry about coverage samples, multi samples, DirectX versions or the alignment of the planets. It should just work.

    Similarly, any self-respecting game made in the last 6-8 years should have proper anti-aliasing options in its in-game menu. Not just an On/Off switch, but the full range of AA settings available with the video card being used.
  • -1 Hide
    BulkZerker , April 13, 2011 7:24 AM
    MrBonkBonkwhat are you talking about?we can still force Supersampling as of 266.58 on Nvidia cards



    IF the game lets it! Drivers trying to force AA doens't mean the game will allow it. If the game doesnt' support it your not goting to get tehy type of AA.

    Either way this AA fragmentation is almost as bad as all these custom versions of Driod.
  • 1 Hide
    Assmar , April 13, 2011 7:24 AM
    Maybe I'm wrong, but no Batman or Mass Effect 2 forced AA settings?
  • 2 Hide
    heycarnut , April 13, 2011 7:29 AM
    @army_ant7:

    Nvidia article is wrong, or at the very least semantically sloppy.

    4X samples generally means doubling of resolution for both axes. 4*(x*y)==(2*x)*(2*y).
  • 1 Hide
    army_ant7 , April 13, 2011 7:33 AM
    Quote:
    Nvidia article is wrong, or at the very least semantically sloppy.

    4X samples generally means doubling of resolution for both axes. 4*(x*y)==(2*x)*(2*y).


    Thanks for the reply heycarnut.

    With that it mind, what does 2X sampling multiply the axes by?
  • 0 Hide
    nileshd , April 13, 2011 7:43 AM
    if the game doesn't support anti aliasing, forcing through the driver may or may not work, but the point here is that nvidia drivers still do support supersampling as opposed to that mentioned in the article.
  • 0 Hide
    mattmock , April 13, 2011 9:25 AM
    Nvidia is currently offering a SSAA tool for download. Its a bit primitive and just sets SSAA for all games.
    http://nvidia.custhelp.com/cgi-bin/nvidia.cfg/php/enduser/std_adp.php?p_faqid=2624
  • 0 Hide
    tavix , April 13, 2011 10:48 AM
    Gr8 article. Thanks!
  • 0 Hide
    ghostie , April 13, 2011 11:11 AM
    Thanks for the great article Don.
  • 0 Hide
    rpgplayer , April 13, 2011 11:22 AM
    how about some benchmarks with the games that accepted forced driver settings? that way we can see if the in game setting is biased toward one card company. like left for dead 2, benchmarks of the ingame setting for 2x,4x,8x. then benchmarks of the driver setting 2x MSAA/SSAA, 4x MSAA/SSAA and so on. that way we can see if the game is being biased.
  • 0 Hide
    feeddagoat , April 13, 2011 1:17 PM
    Ive always wondered what was the difference between and what was better between application decided and driver based AA. In far cry 2 using my HD4870 The trees turned into green blobs using driver based AA but in game AA worked perfectly. Since then Ive just left the let the application decide box ticked and ignored Driver based. Can't wait for part 2 to see what gives the best result if it even works. Great work toms!!
  • 2 Hide
    warhammerkid , April 13, 2011 1:20 PM
    Nvidia Inspector (http://blog.orbmu2k.de/tools/nvidia-inspector-tool) is like the Nvidia control panel on steroids. It gives access to many more of the configuration options than the Nvidia control panel, like SSAA, several settings for transparency anti-aliasing, and a whole bunch of other advanced configuration options. I prefer it over nHancer (http://www.nhancer.com/), as I've had better luck with it in the past, but both should work. I'm somewhat surprised, though, that no one at Tom's Hardware actually used it to test out Nvidia SSAA, as I've had quite a lot of success with it.

    assmarMaybe I'm wrong, but no Batman or Mass Effect 2 forced AA settings?

    I used Nvidia Inspector on Mass Effect 1 and Mass Effect 2 to play the game with 2x2 SSAA (2x horizontal and 2x vertical), and it definitely works if you set it to force the game to use those settings. Forcing MSAA in those games didn't seem to work though, or if it did the effect wasn't noticeable enough to be worth it, not surprising considering some of the issues Unreal Engine games have with anti-aliasing. I didn't bother trying this with Batman because the built-in AA for the game looked fine.
  • 0 Hide
    WyomingKnott , April 13, 2011 2:01 PM
    I can see the benefit from AA in the examples, but doesn't it make things look fuzzy? I suppose it's a necessary trade-off for now.
  • 1 Hide
    cleeve , April 13, 2011 2:44 PM
    army_ant7Why does it say here, http://www.geforce.com/#/Optimize/Guides/AA-AF-guide (go to the next page of this article), that it internally renders the frame at a resolution 4 times greater? But according to the 2nd page of this article, it says that at x4 AA it only internally renders a frame at a resolution 2 times greater.


    Depends on how you frame it I guess: when the dimensions are doubled, the area is quadrupled.

    Twice the size is four times the samples: Like a 2"x2" grid contains four square inches, and twice the size is 4"x4" but it contains 16 square inches... four times as much area, but only twice the size when you look at the dimensions.

    army_ant7With that it mind, what does 2X sampling multiply the axes by?


    1.5 times? :p 

    It's probably easier to just think of the number as how many samples per pixel. 2xAA=2 samples per pixel, 4xAA=4 samples per pixel, etc...
Display more comments