Unimpressed by Antialiasing

Chalnoth said:
By using more advanced forms of texture filtering, you can significantly improve the texture quality beyond what SSAA alone can achieve.

Well who ever said we should be using SSAA Alone. Look at my post above for some examples where texture filtering won't help much if at all (except for the mipmap boundaries that is).
I'm hoping to enjoy 4x RGSSAA and 16x Aniso + Trilinear on my Radeon 9700.
It should very well be possible at 1024 and perhaps 1280.

GOOD 4x FSAA at 1280 is surely enough for me when it comes to edge AA.

You completely miss the target when you say "one size fits all", I mean why would you only use FSAA and not Aniso? (Unless you have really slow Aniso *nudge nudge, know what I mean, nudge nudge*)
And NV30 is going to have to pack one hell of a improved Aniso if we are going to see it fully replace the effects of SSAA. (Not to mention faster..)

For those who think it's a broing read I'll sum it up:
Why do you assume one would be using SSAA without Aniso?
 
Chalnoth said:
Let texture filtering take care of textures. Let FSAA take care of edges. Attempting to use a "one size fits all" algorithm will always result in lower performance for the resulting image quality.

By using more advanced forms of texture filtering, you can significantly improve the texture quality beyond what SSAA alone can achieve.

By using MSAA, or some form of edge AA, you can achieve far higher edge AA quality for the same performance as SSAA.

Nothing that SSAA can accomplish for textures cannot be accomplished by better texture filtering, and using better texture filtering as opposed to SSAA will always produce higher performance for the image quality (simply because all of the math can be done before a pixel is output...there is no need to take up the extra space in memory).

Pffft!
Wrong!!!!
Anisotrpic texturing is not designed to reduce texture aliasing.
I dont get where you guys get this weird idea, but it is NOT. It is designed to offer better texture CLARITY on angled surfaces. Thats it! Look at how it gets extra samples!
Play a game like Freespace2 - Play it with no AA, and trilinear filtering. Look at the sparkly ships! Play it with Full Aniso on (GF3) and look at the still sparkly ships! Play it on a R8500 with SSAA (4x) and the aliasing is waaay less.
Sorry Chalnoth, but show me a form of currently used texture filtering that is designed to reduce aliasing (other than trilinear), and i'll be happy to change my mind.
Personally, i think that Aniso could easi.l;y increase texture aliasing. More detail showing up means more chances for aliasing - And if the polygon the texture is on crawls 2 pixels to the left, your extra Aniso samples do exactly JACK for aliasing. All IMO.
 
I don't assume that you would use SSAA without aniso, but you're going to shoot yourself in the foot, performance-wise. The only reason that there is any reason to bother with aniso + SSAA is that texture filtering is still limited in visual quality (and I'm talking about current video cards...not even including the R300...since we don't precisely know how its texture filtering will work).

However, given a choice, I can pretty much guarantee you that if you had an R300, and the drivers supported both MSAA and SSAA, you'd almost certainly select MSAA.

Additionally, to believe that the R300 has the power to run at the highest resolutions with 4x SSAA in conjunction with anisotropic in new games is ludicrous, to say the least. We're simply not to that point in performance yet. By the time we are, I'm hopeful that powerful enough forms of texture filtering will be available to make SSAA silly.
 
Althornin said:
Play a game like Freespace2 - Play it with no AA, and trilinear filtering. Look at the sparkly ships! Play it with Full Aniso on (GF3) and look at the still sparkly ships! Play it on a R8500 with SSAA (4x) and the aliasing is waaay less.
Does the game use mipmaps? :)

It seems like a finely tuned LOD with anisotropic filtering should give no texture aliasing. Yes, AF is supposed to improve texture clarity, but it shouldn't improve it so much that you get aliasing. I'll need to do some thinking about this to be sure.
 
Althornin said:
Pffft!
Wrong!!!!
Anisotrpic texturing is not designed to reduce texture aliasing.

Did I say anisotropic filtering?

No.

I said better texture filtering.

Even with the R300 and the NV30, I don't believe we're to the point where SSAA in conjunction with the highest resolutions is possible, so it's probably going to be a mute point even for this next generation. Hopefully better texture filtering algorithms will be in place by the time the next generation rolls round (for example, use a 3x3 grid, or larger, for texture samples instead of a 2x2 grid).
 
Chalnoth said:
However, given a choice, I can pretty much guarantee you that if you had an R300, and the drivers supported both MSAA and SSAA, you'd almost certainly select MSAA.

If I get to choose from 6x MSAA at 120 fps or 4x SSAA at 90 fps I'm pretty certain that I will choose no 2.

4x SSAA is "almost" usable today. Radeon 9700 is a much faster card and ATi said SSAA will be up to 6x faster than on the 8500. (due to the z-buffer compression I suppose amongst other things)
well maybe not at 1280 but surely enough at 1024

I'd drop my res a notch in order to enjoy the benefits of SSAA at the drop of a dime, eight days a week..

and well, I don't have GeForce 7 and Radeon 15000 yet so I don't really care if there's a possiblity that any theoretical implementation of texture filtering will do this or that in the future ;)
 
OpenGL guy said:
Does the game use mipmaps? :)

It seems like a finely tuned LOD with anisotropic filtering should give no texture aliasing. Yes, AF is supposed to improve texture clarity, but it shouldn't improve it so much that you get aliasing. I'll need to do some thinking about this to be sure.

First of all, Freespace 2 doesn't use mip maps, which means that anisotropic will generally help very significantly to improve the aliasing, but cannot come very close to eliminating it.

Regardless, plain bilinear/trilinear filtering cannot eliminate aliasing. If you remember the UT level I made to specifically test texture aliasing, I did attempt to tweak the LOD to eliminate aliasing. It turned out that pretty much no matter the LOD level I selected, I could still detect a slight amount of aliasing. Before designing that level, I had thought that as long as you weren't "missing" any texture pixels, you would get no aliasing. Apparently that is not correct.

It seems apparent that it's due to the fact that the simple linear inerpolation just isn't enough. Perhaps higher color depths in the pixel pipelines will help, but I'm not sure. At the very least, it may be interesting if we see some manufacturers introducing pseudo-random noise into the pipelines to disguise texture filtering. If done properly, it could destroy the patterns of texture aliasing that you see even with an optimal texture LOD set, while at the same time not introducing so much noise that the picture looks distorted.

Anyway, I think there is definitely some more hardware manufacturers can do in the realm of texture filtering to eliminate the need for SSAA for optimal texture quality (and therefore get higher performance for the image quality).
 
Ante P said:
If I get to choose from 6x MSAA at 120 fps or 4x SSAA at 90 fps I'm pretty certain that I will choose no 2.

But the difference is going to be much more significant than that, particularly with anisotropic filtering enabled.
 
There's still a lot of areas that go untouched by texture filtering.
Go stand right in front of a wall and tell me how much your texture filtering helps.
Then turn on SSAA and look at the same wall again...

Look at the skybox, look at objects way back in the distance

I mean what you suggest from my point of view would be a very much more refined method of filtering and above the it has to work on the WHOLE screen
so instead of having Full Scene AA and Texture Filtering you have Edge AA and "Full Scene filtering" (hehe)
probably at a similair performance hit too
so instead of waiting for that texture filtering I'd rather use SSAA and Aniso, two techniques that are availible at decent speed on an upcomming product (hopefully) this fall

well I'm out, soon I'll just start to make even more of an arse of myself ;)
 
Chalnoth-

By using more advanced forms of texture filtering, you can significantly improve the texture quality beyond what SSAA alone can achieve.

What is in your opinion "beyond" may be a complete eyesore to someone else, but as has already been stated, nobody is talking about supersampling "alone."

Nothing that SSAA can accomplish for textures cannot be accomplished by better texture filtering

Replace the word "filtering" with "processing" and you might have some agreement there... really depends how far you want to define "filtering." Some might consider supersampled textures "filtered" when they are simply oversampled/averaged.

SGI uses a hybrid that does yield in-excess of SSAA results in realtime by simply supersampling textures only- post mipmap and post perspective correction. So they use a multisampling (for edge AA), anisotropic filtering and antialiased textures. This is, in effect, very specialized for their hardware but such an approach may not be cost efficient without specific implementation.

using better texture filtering as opposed to SSAA will always produce higher performance for the image quality

Although a bit of a stretch, you are simply making an argument for "brute force" versus an "algorithmic" approach to a problem. But your assertion concerning performance is very short sighted and also very wrong. The performance choice will be strictly governed by the underlying architecture and nothing more.

(simply because all of the math can be done before a pixel is output...there is no need to take up the extra space in memory)

More "algorithmic" vs "brute force." So then by your theory, Z-buffer was a totally wrong design choice at the time as it is the exact same thing (brute force, resource wasting solution for something that can be computationally solved).

Unfortunately, I dont think your standpoints are based on anything other than the way a particular IHV happens to have decided their implementation. It's okay to champion the direction that brand XYZ has chosen, but this doesnt invalidate (even in theory) better architectures that yield better results.
 
There's still no reason for SSAA.

For example, I produced a scenario where just adding noise might reduce aliasing, but you brought up another interesting case.

It's certainly true that basic linear interpolation is definitely not enough in many circumstances. It should be relatively simple to use quadratic interpolation to calculate the color (by taking a 3x3 texture sample grid instead of a 2x2 grid) to improve filtering quality, likely even beyond the quality offered by simple SSAA.
 
Sharkfood said:
Although a bit of a stretch, you are simply making an argument for "brute force" versus an "algorithmic" approach to a problem. But your assertion concerning performance is very short sighted and also very wrong. The performance choice will be strictly governed by the underlying architecture and nothing more.

So? We're talking about the future here anyway, aren't we? Since texture filtering and edge AA are fundamentally different, it is always going to be fundamentally possible to produce superior image quality by processing the two separately. Whether or not this is realized is dependent upon the specific implementation, obviously, but an architecture that does separate the two will result in a higher performance/image quality ratio.

For example, in the example of using supersampling in texture space, and multisampling in pixel space, you could use different sampling patterns optimal for the different sitautions, as well as a different number of samples optimal for the different situations (You could even alter the number of samples on a per-pixel basis for texture filtering, similar to anisotropic, dependent upon the surface being rendered).
 
I'll try this for the third time ;)

"There's still a lot of areas that go untouched by texture filtering."
 
First thing I thought when I saw the title of this thread: "Unimpressed? He's never seen a Voodoo5 in action."

I'm glad someone else mentioned it. I don't know about ATI's method, but NVIDIA's in it's current state leaves something to be desired. (atleast on a GF3) Hopefully the R300 and NV30 will be better.
 
My two cents:

First of all, the main reason I didn't like MSAA on GF4 was because it had nearly the same performance hit as SSAA, but gave you lower quality. The GF4 loses about 70% performance with MSAA, and SSAA should only lose a bit more than 75% performance on identical hardware. However, with the 9700 MSAA is much faster, so we're talking about 6x MSAA at 1600x1200 or 4x SSAA at 1152x864 with about equal, very playable peformance. I'd choose the former anyday. The same situation didn't exist with the GF4, however.
Thus, I think MSAA is very good when done properly (i.e. low performance penalty).

However, SSAA will still have significant advantages, even with ideal texture filtering.

First, you have alpha compare tests. Now, Chalnoth, I have heard you repeatedly say you can just use alpha blending instead. Do you know what grass looks like with alpha blending when you're up close? It's a blurry mess, and doesn't look like grass at all. Run the SS:SE demo - duck and look at the grass. With an alpha test, you have sharp, rounded edges for leaves, like in MOHAA, Operation Flashpoint, the Nature test, and many other games. You get the illusion of very high polygon counts. The only way to avoid the blur is to use a very high res texture, which is totally unreasonable.

Next you have pixel shaders with CMP/CND, which result in the same hard edges. Some papers have suggested the idea of a smooth-step function rather than the discontinuous CMP/CND, but that needs to have a dynamically changing slope according to how big the texture is relative to on screen pixels, or you get that same blur when close. You then wind up with a complex pixel shader that may reduce performance to SSAA levels anyway.

Chalnoth, you were also whining about how the 9700 doesn't have true branching in the pixel shader. Well, if you were using dynamic branching, you'd have aliased edges everywhere with MSAA, except for certain situations. You could program around it, but again it's quite hard.

You say:
Nothing that SSAA can accomplish for textures cannot be accomplished by better texture filtering
You are grossly simplifying the situation. Above I have given you situations that are very hard or impossible to anti-alias with MSAA. The only real solution is to use SSAA when you have to, which I think the 9700 does (unless it gets rid of alpha test edges some other way...).
 
I thought anyone who has actually played games on a V5 with AA on + proper LOD setting will know what really AA can do to image quality and how it is better than any other current implementations on consumer cards.
 
Mintmaster said:
My two cents:

First of all, the main reason I didn't like MSAA on GF4 was because it had nearly the same performance hit as SSAA, but gave you lower quality. The GF4 loses about 70% performance with MSAA, and SSAA should only lose a bit more than 75% performance on identical hardware.

I dont think this is true is it? 4xMSAA on the Gf4 take a much less hit than this doesnt it? 4xS may take higher.
 
Randell said:
Mintmaster said:
My two cents:

First of all, the main reason I didn't like MSAA on GF4 was because it had nearly the same performance hit as SSAA, but gave you lower quality. The GF4 loses about 70% performance with MSAA, and SSAA should only lose a bit more than 75% performance on identical hardware.

I dont think this is true is it? 4xMSAA on the Gf4 take a much less hit than this doesnt it? 4xS may take higher.

From the benchmarks I've seen it's rather like 50% .
As for GF4 having better FSAA, well the blurcunx modes are a bit better and the FSAA doesn't seem to blur things THAT much anymore (not that it's a world of difference though) other than that I'd say it's pretty identical. At least at "plain" 2x and 4x.
(Haven't used 4xs on a GF3 so I dunno.)

(Good that reminded me, I should get a GF3 for reference.)
 
Mintmaster said:
First of all, the main reason I didn't like MSAA on GF4 was because it had nearly the same performance hit as SSAA,

Try looking again. The MSAA on the GF4 has a much lower performance hit than SSAA, usually around 50% for 4x FSAA. Additionally, the performance delta is increased when you enable anisotropic filtering.

First, you have alpha compare tests. Now, Chalnoth, I have heard you repeatedly say you can just use alpha blending instead. Do you know what grass looks like with alpha blending when you're up close?

Yes, I have. It looks better than when there is an alpha test, because at the edges of the alpha test, instead of having a relatively smooth (although blurry) border, you will see "rounded" edges of each texture pixel. And using larger textures isn't unreasonable. It's being done.

Next you have pixel shaders with CMP/CND, which result in the same hard edges. Some papers have suggested the idea of a smooth-step function rather than the discontinuous CMP/CND, but that needs to have a dynamically changing slope according to how big the texture is relative to on screen pixels, or you get that same blur when close. You then wind up with a complex pixel shader that may reduce performance to SSAA levels anyway.

If it "reduces performance to SSAA levels anyway" then adding SSAA will make the performance unplayable.

Edit: Sorry, misunderstood the post. No, this won't reduce performance to "SSAA levels anyway." If all the calculation is done within the shader, there is less of a memory bandwidth hit, and no need to couple edge AA with texture AA. Additionally, if only part of the scene would benefit from this filtering, the performance would be significantly higher than with SSAA because only part of the scene would use the additional sampling.

Chalnoth, you were also whining about how the 9700 doesn't have true branching in the pixel shader. Well, if you were using dynamic branching, you'd have aliased edges everywhere with MSAA, except for certain situations. You could program around it, but again it's quite hard.

Again, it's still more efficient to just do it before pixel output. For example, it may be possible (don't know if it is on the NV30 or not) to go ahead and take multiple texture samples, effectively doing super-sampling before outputting the pixel.
 
The whole arguement that AA is merely a gimmick is just flawed. Everything in 3D is a gimmick. Every new feature is designed to improve image quality in a gimmicky way. Without gimmicks, you have no 3D. The better the gimmicks, the better the image. Rendering on higher resolution isn't even a gimmick since it does not improve per-pixel quality.

When CGI meets Real time 3D, Anti-aliasing is going to be a vital part of it, because it deals with the more subtle parts of human perception (spatial/temporal AA) and bumping up the resolution to 1600x1200 just won't cut it.
 
Back
Top