Geometry Buffer Anti-Aliasing demo

Humus

Crazy coder
Veteran
I have another anti-aliasing technique up on my site. Uses actual geometry like GPAA, but stores info during main scene rendering and resolves with fullscreen pass in the end. Can also anti-alias alpha-tested edges (unlike GPAA). :)

GBAA.jpg


http://www.humus.name/
 
A denser alpha-texture pattern for the fence openings would be better suited to illustrate the alpha-tested AA.
 
Well, you could always throw in this at the top of the pixel shader to try:

Code:
#ifdef ALPHA_TEST
    In.TexCoord *= 4.0f;
#endif

It should be noted though that GBAA is essentially an edge anti-aliasing algorithm, so it will AA the alpha edges, but it's not so much a fix for shader aliasing. So if the alpha-test frequency is too high so that you just get a mess of moire and flickering pixels there is nothing it can do to recover that. However, GBAA makes it a bit softer in this case, so it still looks better, but doesn't really solve it.
 
What would you say is the best way to solve high frequency transparency aliasing?
 
What would you say is the best way to solve high frequency transparency aliasing?
Abandon alpha test, author textures with properly smooth/anti-aliased alpha channels (mip maps included) and embrace order-independent transparency.
 
Thanks guys :)

nAo, what do you mean by abandon alpha test? What would you use instead?
 
If you're using MSAA (and DX10.1 or higher hardware) you can also evaluate the alpha test at subsample frequency.
 
Humus, nice work :) this is something I've been wanting to try out for ages but could never get it quite right.

I am curious what a very dense mesh with lots of small / subpixel triangles would look like.
 
I have updated the demo with better performance and a fix to rare cases of single pixel errors.
 
I am curious what a very dense mesh with lots of small / subpixel triangles would look like.
I replied in the SDAA thread since I believe the two are similar (so perhaps we should continue the discussion there), but in my experience it looks noisy. The underlying aliasing of the distance-to-edge buffer shows up as noise in the final image. It's not awful since it's at most 1-pixel away, but it's definitely noticeable and sometimes perceptually worse than the original aliased image.
 
Back
Top