DF on Saboteur's PS3 anti-aliasing
Update: God of War man clues us in.
Update: This morning, Christer Ericson, director of tools and technology at Sony Santa Monica and part of the hugely respected God of War team, got in touch to set us straight on the technical background to the effect seen in The Saboteur. Christer's knowledge on this subject obviously far outstrips our own and he took issue with several points in yesterday's article, which you can still read in full below this update.
Firstly, the definition of MLAA isn't in keeping with the basic outline of the technique as it has been described by some Pandemic staff, and it is almost certainly an extension of the edge-filter plus blur technique seen in several cross-platform titles already. As Christer says, "the qualitative difference comes down to how you edge-detect and how you 'blur'."
The screenshots may not be showing MLAA, and it's almost certainly not a technique as experimental as we thought it was, but it's certainly the case that this is the most impressive form of this type of anti-aliasing we've seen to date in a console game. Certainly, as we alluded to originally, the concept of using an edge-filter/blur combination isn't new, and continues to be refined. This document by Isshiki and Kunieda published in 1999 suggested a similar technique, and, more recently, AMD's Iourcha, Yang and Pomianowski suggested a more advanced version of the same basic idea.
In terms of the effectiveness of luminance for determining edges, Christer also pointed out that the pixels we've highlighted as causing problems for edge-smoothing in The Saboteur aren't a product of red meeting black, but actually brown and red - similar in terms of luminance values and thus more likely to cause that particular artefact.
It's fair to say that in our excitement about the level of image quality displayed in The Saboteur, we were off-beam to be so definitive about MLAA as the technique being used, but it is still a great example of the SPUs being used to do post-processing work more traditionally associated with the GPU and, in this case, producing arguably better results than the more generally accepted MSAA solutions built into the graphics hardware. Thanks to Christer for getting in touch.
Original story: If there's one element of multi-platform development that comes up repeatedly in our Face-Off coverage, it's the implementation of anti-aliasing on current-generation HD consoles.
It's often the case that the Xbox 360 version of a game features edge-smoothing, while the PlayStation 3 counterpart will either leave it off altogether, scale it back, or use an NVIDIA specific technique called "quincunx", which refines edges nicely, but blurs the entire texture in the process.
None of these options are particularly attractive (though quincunx has its place in certain scenarios), and neither is blurring the entire screen, which other people do; the so-called Vaseline effect. However, recent games like Brutal Legend and Overlord II on both console platforms have tried out another technique - seeking out just the edges themselves and blurring them, leaving texture detail intact. It's better than nothing but still not actually that good.
The PS3 rendition of Pandemic's The Saboteur is different though. It's special. It's trying something new that's never been seen before on console, or indeed PC, and its results are terrific. In a best-case scenario you get edge-smoothing that is beyond the effect of 16x multi-sampling anti-aliasing, effectively delivering an effect better than the capabilities of high-end GPUs without crippling performance. Compare and contrast with Xbox 360 hardware, which tops out at 4x MSAA.
Let's kick off with a quick comparison of the effect in play on both versions of the game. It's interesting to point out that both Xbox 360 and PC versions of The Saboteur have no support for anti-aliasing whatsoever. It's just the PS3 owners that get the love, for reasons explained later. While the lack of AA in the Xbox 360 version is a bit disappointing, for the purposes this piece it's a bit of boon as it effectively gives us a "before and after" means of better understanding the PS3 technique.
So how is it done? Well, in the comments section of one US PlayStation Blog post, Pandemic's Tom French talked about "using the SPUs to do a full-screen FSAA filter". The satellite processors within the Cell chip are excellent for extremely fast processing of limited batches of data, making them perfect for the task at hand, which is to process the entire framebuffer seeking out all edges and then blending them.
Posters on the Beyond3D forum soon began to investigate. It's a technique initially put forward by Intel, but best described with examples in this blog post which shows the real potential of the technique, and how it compares with the Brutal Legend method of edge-blurring. There is no real competition here. The so-called morphological anti-aliasing (or MLAA) seen in The Saboteur is leaps and bounds ahead of anything we've seen so far when it works in optimum conditions.
Being experimental, it does have its drawbacks. When edges in-game are one pixel or less than one pixel in thickness, the edge-detection technique doesn't really work. Pandemic also subjects the entire, completed framebuffer to analysis - including the HUD elements - so there is often artefacting on the text overlays. This is probably unavoidable in this game: while the GPU starts to draw the next frame, the SPUs are busy with the AA and for that situation to take place the completed frame will need to be analysed.
Pandemic is keeping mum on the AA technique, though some tidbits have apparently leaked from the developers on the NeoGAF forum. According to these posts, the filter is applied to the luminance of any given scene. It's a really clever way to maintain speed, but on the other hand, some colours - red and black for example - have similar luminance levels, so the filter picks up the majority of edges but misses others. Additionally, in some cases there are some interesting "fuzzing" issues on edges, which without some more illumination from the coders is very difficult to explain. Perhaps it's simply the effect of processing a motion-blurred screen?
Overall then, what we have in The Saboteur on PS3 is very much an experimental technique, and you get the idea that the base visuals suit the technique well. In playing the Xbox 360 version, the level of "teh jaggies" isn't exactly a major issue; the game lacks high-contrast edges, and is pretty soft in general. In this environment, the MLAA technique employed by Pandemic works beautifully and in most cases you really need to look hard for the artefacts. But they are there, and you wonder how well the technique would work on higher contrast games like Battlefield: Bad Company 2, Halo 3 or the almighty Uncharted 2 where the MLAA would really have its work cut out.
In the meantime, what we have is something that's new and genuinely exciting from a technical standpoint. We're seeing PS3 attacking a visual problem using a method that not even the most high-end GPUs are using. You can't help but wonder whether MLAA, in combination with MSAA and a filter to weed out the artefacts, couldn't be hardware-integrated in the next generation consoles.
It'll also be interesting to see whether MLAA returns in other PS3 cross-platform projects before then, because it looks extremely good in action. Chances are it will come down to how computationally expensive the technique actually is on the SPU, and how it can be refined still further, and that's where our knowledge hits a brick wall. If any ex-Pandemic staff want to share more on the MLAA implementation, feel free to get in touch...