Alternative AA methods and their comparison with traditional MSAA*

'free' is obviously bollux or else all games would use this 'free' MSAA :)

from a quick glance ~1/3 have absolutely no AA, someone should get on the phone to bungie etc and tell them AA is free
http://forum.beyond3d.com/showpost.php?p=1113344&postcount=3

The msaa part is free, ie the part that fills in the expanded frame buffer with Z and color data. Tiling isn't free that's true, but for games like MW2 that don't tile, msaa is indeed totally free. Some games aren't compatible with msaa due to their render approach.
 
If a single SPU is fast enough to run it at 60fps, how about Sony adding it as a toggle in System settings in a FW update and use the reserved SPU for it. Sure it'd blur the UI as well, but all those games without AA would gain a lot from it.
Since SPU processing of a screen pretty much requires the data to be in system/normal memory (as opposed to local memory/VRAM, which can only be read slowly by the CELL), it's not something that could just magically happen.

Also "reserved SPU" != "idle SPU". It's a common misconception, but I think it's worth pointing out that this isn't the case.

Cheers,
Dean
 
I meant why didn't Pandemic use the "free MSAA" in the 360, or one of the myriad MSAA solutions that come in PC GPU's? I wouldn't expect them to adapt the SPU AA method to other platforms that don't have SPU's. If they had the time to do a custom AA solution for the PS3, they would have time to enable the built-in AA on the PC/360 GPU's.

Apparently you can do 16xAA on the PC version...
 
I've made a new thread in the algorithms forum for discussing screen space AA here. I think that makes more sense than doing all the discussion here, so that this thread can stay focused on the particular SPU implementation and how it is used in the game.

I actually tested the demo MLAA code from the paper someone linked, on several images from our game and the results were stunning.
We were planning on implementing 2xMSAA, but after seeing the impressive MLAA results, we will probably implement it to at least prototype stage to see the results in motion and to measure performance. We have some ideas how to do this via the GPU. I'm not sure about some of the details but it might just work.
Let's just say I'll be extremely happy if we can avoid dealing with MSAA :)
Just tell me you won't filter the UI please :p
 
You may notice that I've tried not to use "MLAA" for their technique, but rather "screen-space AA". I think the article is much better now that it acknowledges the older work in the area, which surely had more impact on their method than the very recent Intel paper. Anyway, in the broadest sense any screen space "AA" technique comes down to selective blurring. The difference is just in how much effort you go to to obtain (a) good edges and (b) good weights.
 
@Brimstone: SPUs could do something like that, yes, the problem with that was (IIRC) that it's exclusively based on Z-buffer differences, so edges at the same depth (i.e. two connected polygons) would not get any AA at all.

MfA said:
Selective to me implies on/off ... I'd prefer adaptive.
Sure, English is not my native language so I probably didn't chose the ideal word. Adaptive works for me.
 
From what I have readen in neogaf, 360 The saboteur version too use this filter but SPE give more result with this tech (the author at least said that in the reply.)

It could just be doing the "depth/z-based edge blur" that Mercenaries 2 used (also a Pandemic title).
 
The Siggraph 09 presentation from Yang @AMD on edge-detect and using shaders for AA (in addition to an MSAA'd buffer) is rather interesting.

Of course, the one factor that may or may not be prohibitive is just the number of edges in a given scene. Any analytical AA algorithm (Quad-A titles here we go!) here will compute as many edges as are needed; instead of needing more bandwidth, more maths.

Nice thing GPUs are growing in math! Could be a reasonable approach due to bandwidth limits.

As per the # of edges, maybe an adaptive time-based approach (similar to how some games go from 1x-4xMSAA per-frame) would be plausible.

It´s definitely a novelty within game development community. It´s really interesting seeing this paradigm shift from the standard MSAA technique.
I remember there was some discussion about the AA used in CE3, I am not sure it was established which technique they used, but I remember these posts by Fran and Barbarian.

Looks like Barbarian is interested. I wonder if that other company will be :D Last time I checked they were really tight in regards to the 33ms render time.

Isn´t it funny (or maybe sad) that the PC hardware development kind of suffocates software innovations as the brute force increase coming each year does not encourage developers to try new ideas. Better just keep doing the same thing, just some more of it.

The invariance of the consoles actually forces develpers to try new ideas, let's hope some of them will ported back to the PC space.

The inverse is all the power on the PC allows testing totally new techniques that are far, far outside the reach of the consoles. Without the PC many of these wouldn't be actively tested. In this sense I find your assessment far too one sided. Seeing the stuff done at Siggraph on PC tech better than consoles (and running in single digit framerates) gives a pretty nice appreciation to what the PC brings to the table.

Just as interestingly this technique has been toyed with in the PC space for a while. If anything console developers have shown to be focused on PRODUCT more so than experimenting (look at all the up-rezed last gen approaches! the very thing you lament) They just don't have the time. If it were so easy why weren't titles shipping with this in 2006? People have been working with the PS3 for about 4 years and finally someone got this into a commercial game.

Things take time. If they didn't console games in 2006 would have been matching games of today (as most of the techniques in todays console games are old hat in the PC world from the launch window).

I actually tested the demo MLAA code from the paper someone linked, on several images from our game and the results were stunning.
We were planning on implementing 2xMSAA, but after seeing the impressive MLAA results, we will probably implement it to at least prototype stage to see the results in motion and to measure performance. We have some ideas how to do this via the GPU. I'm not sure about some of the details but it might just work.
Let's just say I'll be extremely happy if we can avoid dealing with MSAA :)

Keep us posted! This is an exciting development :D

'free' is obviously bollux or else all games would use this 'free' MSAA :)

Others beat me, but yes, MS dumbs down the issue here. The ROPs do single cycle 4xMSAA and the eDRAM provides enough bandwidth to support this with no slow down. The problem of course is tiling--which MS misrepresented as a 2-5% hit. Maybe they weren't expecting todays poly complexity and estimates were based on last gen games; either way it has been an issue. I guess the upside is the MSAA hardware can be used for a number of things other than edge anti-aliasing.

Still would like some examples of how it'd be done on the 360 GPU. Sounds beyond just graphics processing, GPGPU kinda thing. I'm underestimating how much freedom devs have to do things differently on the 360.

what would this mean for msaa & tiling on the 360?

How about using Memexport (streamout?) iirc it has some issues with tiling (or did), but you would be effectively skipping tiling using this AA method.
 
Wow, so it's much more than 2-5%? I always thought THAT figure was awfully high in a closed system. It can't be too much more, can it? Is there someplace I can be directed to read more on real numbers?
 
Wow, so it's much more than 2-5%? I always thought THAT figure was awfully high in a closed system. It can't be too much more, can it? Is there someplace I can be directed to read more on real numbers?

Tiling is going to be variable based on how much geometry crosses where the tile boarder is clipped. I am sure there are developers who have achieved really low penalties for resolving tiles; others have had more issues.
 
The inverse is all the power on the PC allows testing totally new techniques that are far, far outside the reach of the consoles. Without the PC many of these wouldn't be actively tested. In this sense I find your assessment far too one sided. Seeing the stuff done at Siggraph on PC tech better than consoles (and running in single digit framerates) gives a pretty nice appreciation to what the PC brings to the table.

Just as interestingly this technique has been toyed with in the PC space for a while. If anything console developers have shown to be focused on PRODUCT more so than experimenting (look at all the up-rezed last gen approaches! the very thing you lament) They just don't have the time. If it were so easy why weren't titles shipping with this in 2006? People have been working with the PS3 for about 4 years and finally someone got this into a commercial game.

Things take time. If they didn't console games in 2006 would have been matching games of today (as most of the techniques in todays console games are old hat in the PC world from the launch window).

Yes, it was a bit one sided, the PC sure provides a space for innovations as being the most wide spread platform. It is also the platform most used by the Phd students et al doing graphics research all around the world so no wonder people have "toyed" with the MLAA technique in the PC space.
Anyway there is a saying "necessity is the mother of innovation" and I think that is the reason that this technique was applied on a console game first.

And who said it was easy? I sure didn´t. I think it is great that the HD consoles still provide a lot of room for innovations and improvements. I remember all the hate the 360 and the PS3 got when they were introduced because they relied on lean multicores instead of one or two fat cores with good single thread performance (not to mention the heterogenous cores of the PS3). As the years go by developers get the grip of them and are able to tap them of probably more performance than if the same die space had been used for good singlethread performance. I personally think its a good thing as it prolong the life of the consoles, but others may disagree. From the third party developers view it would obviously be most convenient if all consoles looked the same, but I do also think they appreciate if the consoles have long life cycles that make investments in new techniques and engines more worthwhile.
 
With thanks to Barbarian for sharing his compilation of the Intel code, I'm happy to present some "before and after" shots. To ensure an accurate result, all shots processed were full 24-bit RGB dumps/lossless BMPs.

Battlefield: Bad Company 2 (PS3)
Um... wow? Interesting to note that there is some loss of detail in the textures, but the overall effect is lovely. Tempted to dump out the entire vid I have of this into an image sequence, process, then turn back into a video :)

Shot 1: Before After
Shot 2: Before After
Shot 3: Before After
Shot 4: Before After
Shot 5: Before After
Shot 6: Before After

Bayonetta (Xbox 360)
Effect isn't quite so impactful here on Bayonetta but despite the huge level of detail, it still looks pretty good though loss of detail in textures is significant.

Shot 1: Before After
Shot 2: Before After

Pro Evolution Soccer 2010 (PS3)
Cut-scenes in the PS3 version have no anti-aliasing and plenty of edges to process.

Shot 1: Before After
Shot 2: Before After

Red Faction: Guerrilla (PS3)
Similar to Bad Company 2, lots of flat-ish colour and very apparent edges make for a pretty impressive transformation.

Shot 1: Before After
Shot 2: Before After
Shot 3: Before After
Shot 4: Before After

Uncharted: Drake's Fortune (PS3)
Already has 2xMSAA of course, but I picked out a couple of stills that I thought might benefit from the technique, and indeed they do - the first one at least.

Shot 1: Before After
Shot 2: Before After
 
Last edited by a moderator:
Saboteur 360 compared with Intel-processed image and PS3 equivalent shot:

Shot 1: 360/ Intel-Processed/ PS3
Shot 2: 360/ Intel-Processed/ PS3
Shot 3: 360/ Intel-Processed/ PS3
Shot 4: 360/ Intel-Processed/ PS3
Shot 5: 360/ Intel-Processed/ PS3
Shot 6: 360/ Intel-Processed/ PS3
Shot 7: 360/ Intel-Processed/ PS3

I'd say the luminance-based approach works pretty well bearing in mind it's runtime versus what I assume is a proof of concept bit of source. Interesting artefacts on Shot 7 though on the red edge of the silver car. Also note the artefacting on the HUD text in shot 4 on both processed 360 and the PS3 shot.
 
I'd say the luminance-based approach works pretty well bearing in mind it's runtime versus what I assume is a proof of concept bit of source. Interesting artefacts on Shot 7 though on the red edge of the silver car. Also note the artefacting on the HUD text in shot 4 on both processed 360 and the PS3 shot.

With the Intel you have also process on all the screen so in the shot 7 this give a better result than the PS3. So it's some "limit" of this technic but due to real time a very good tech! ;)
The luminance blur edge with a MSAA*2(or combine with blur edge) should probably give very good result.
D.A 360 use blur edge and MSAA*2 and this work very well. ;)
 
Back
Top