At least in GoW3 it seemed to do some wonders with sharp shadow edges.Unlike MSAA, a screenspace solution can help with not only edge aliasing but also, shader/tone mapping and texture aliasing.
In still image it's pretty much a 2xSSAA as the sample location is shifted as well.This is going to sound like a noob question but is 2x temporal AA comparable to 2xMSAA when it is on?
I don't think current MLAA implementations could handle the rotated sample grid of 2xMSAA. Going straight to 2x2OGMSAA as a base is probably too much of a step up right now. And it's not just the expense of the MSAA rendering, but processing 4 times the amount of data in the MLAA block as well.What I would love to see is MLAA with subpixel information.
I'm not implying smaller than pixel edges, but edges with information about their location like in silhuette shadow maps.I don't think current MLAA implementations could handle the rotated sample grid of 2xMSAA. Going straight to 2x2OGMSAA as a base is probably too much of a step up right now. And it's not just the expense of the MSAA rendering, but processing 4 times the amount of data in the MLAA block as well.
MLAA is applied over screenshots from those games since we only need the final image when working based on luminance. Maybe for the example of MW2 numbers are a little high, but the Xbox version is not build with a proper Dev Kit, just public XNA environment, so we think performance improvements could be achieved with better tools.
PS: I'm co-author of this work
Great stuff!A co author posted a comment on the remedy forum. They tested the algorithm in XNA.
Interesting and the screenshot with MLAA looks very clean. Perfomance seems reasonable on 360 GPU and childs play for the 9800GTX which is 2006 year tech (8800GTX/Ultra<->9800GTX+).
The technique is an evolution of the work "Morphological Antialiasing", which is designed for the CPU and unable to run in real time. The method presented here departs from the same underlying idea, but was developed to run in a GPU, resulting in a completely different, extremely optimized, implementation. We shift the paradigm to use texture structures instead of lists, which in turn allows to handle all pattern types in a symmetric way, thus avoiding the need to decompose them into simpler ones, as done in previous approaches. In addition, pre-computation of certain values into textures allows for an even faster implementation.
The algorithm detects borders (either using color or depth information) and then finds specific patterns in these. Anti-aliasing is achieved by blending pixels in the borders intelligently, according to the type of pattern they belong to and their position within the pattern. Pre-computed textures and extensive use of hardware bilinear interpolation to smartly fetch multiple values in a single query are some of the key factors for keeping processing times at a minimum.
What is the penalty for context switching in a GPU, since you're going from traditional rendering to GPU compute to apply this process in real time?