Jump to content
  • Advertisement
Sign in to follow this  
discman1028

Multisampling - Antialiasing - Anisotropic Filtering

This topic is 4577 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Could someone give a brief synopsis of the connection between the three terms: Multisampling Antialiasing Anisotripic Filtering (given that I know what each one is). For example, I'm confused about terms like "Multisampling Antialiasing"... what other kinds of antialiasing are there? In general, could someone tell me briefly how "multisampling" relates to each of "AA" and "AF"? Thanks!

Share this post


Link to post
Share on other sites
Advertisement
Multisampling (or MSAA), I believe this only applies to the edges of triangles, where the triangle only partially covers a pixel. This pixel is then blended based on a "multisampled" coverage value, where coverage is how much the triangle covers the pixel. Fragment shaders only runs once per pixel.

Anti-aliasing (or FSAA), is the equivalent of rendering a blown-up framebuffer, then downsampling it so that all pixels are blended. The fragment shader is rendered multiple times per final pixel.

Anisotropic Filtering applies to sampling a texture map. The idea is to get an area-based sample of all the texels that are included in a pixel. So if you can picture your texels viewed from a skewed angle, where your pixel is a square projection from the viewpoint, sample each of the skewed texels in proportion to the amount they contribute to the square. (That explanation may seem weird, a picture would explain this very easily).

FSAA is a postprocess, MSAA is a blending function, and AF is a texture sampling function. So you could free mix these. You can originally sample a 2x2 FSAA buffer using MSAA coverage sampling, where a pixel shader look-up does AF to determine its texture contribution.

Share this post


Link to post
Share on other sites
Thanks for that explanation!

So, does FSAA stand for "Full Screen AA"? And that is a synonym for supersampling, I assume?

What does "fullscreen" have to do with the fact that you're supersampling?

[Edited by - discman1028 on April 1, 2006 4:58:09 PM]

Share this post


Link to post
Share on other sites
Quote:
Original post by discman1028
What does "fullscreen" have to do with the fact that you're supersampling?


Well first FSAA stands for *full scene* antialiasing. And the people wanting to know "why" needs to report back to the early days of 3D (some very old people like me remember). You had the voodoo from 3dFX that was capable of an early and unexpensive form of antialiasing which is simply render all your triangles, then blur the edges as a post process (by rerendering only the triangle edges). This was referred as edge antialiasing and even if it was somewhat capable of convincing results if correctly implemented, in reality it sucked.

Full scene antialiasing referred to the opposite method which was doing all multisampling (or supersampling) in one pass (or several pass of accumulations) but independantly of the edges, the unit in FSAA being the pixel rather than the triangle edge. You still need a resolve pass that is applied to the whole surface.

Supersampling and multisampling as defined by current hardware acceleration are commonly used form of FSAA. You could argue that multisampling only affecting the edges and collisions is not "full scene" but this is not the distinction being made so you should still consider MSAA as a form of FSAA.

"Antialiasing" is just a very general term. You can find aliasing in a lot of situations and the mipmapping of textures is there to fight aliasing in textures (that causes moire and scintillation).

Anisotropic filtering is just an improvement of the mipmapping algorithm. Basically if you're texturing an object in perspective, you won't preserve your texture aspect ratio and rotation. In practice you'll have a greater axis and smaller axis. In regular mipmapping you have to choose a LOD (level of detail) to represent the texture in this configuration. Most mipmapping implementation will choose the dimension of the greater axis to find the LOD. Because of that you'll end up with too much blur, the level of detail being not enough on the smaller axis. Of course you could choose the smaller axis dimensions but then you would end up with too much aliasing. Or something in between, where you would have too much blur on one axis and too much scintillation on the other axis at the same time.
Anisotropic filtering is a more expensive approach that takes both greater and smaller axis into account, it chooses the LOD based on the smaller axis dimensions, but then uses the ratio between the smaller and greater axis to take additional samples on the texture to reduce scintillation.

An ideal implementation (only existing in some older cards like Geforce 3/4 unfortunately ) minimizes blur and scintillation in every texture aspect and configuration. But if the ratio is too big (say 8 or 16) on some of the pixels then you end up with a very expensive solution (you may end up taking 8 times more texture samples on some pixels). Also the fact that you push the LOD further compared to regular mipmapping you end up damaging the cache behaviour (taking a higher LOD, means more texels in one zone, more texels means less cache reuse etc..).

LeGreg

Share this post


Link to post
Share on other sites
Multisampling is done by the rasterizer on the sub-pixel level. So the pixel shader is only executed once, but it might have issues that can be corrected with centroid sampling. I think I wrote an article on this on the XGI developer website.

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!