Correct me if I'm wrong but in my understanding the Nyquist theorem is applicable in case of supersampling/multisampling antialiasing methods. It says that it's enough to have the sampling frequency double of the signal frequency to convey it without distortions. Doubling the image vertically and horizontally in AA gives you the 4x option. Are there any visible improvements possible by going above that?

I'm talking specifically about the kind of "brute-force" AA methods that either render the picture at double resolution or sample it many times, rather than the more sophisticated algos that claim to be 32x and so on.

  • 4
    I'm voting to close this question as off-topic because it is about graphic display options. These are not gaming specific, therefore do not belong here.
    – Frank
    Apr 21 '18 at 17:15
  • Where does it belong then? I tried to search for a fitting section of the site but it's not exactly obvious. There's the computer graphics stackexchange but it's beta and with very few active users. Gaming, on the other hand had already quite a few questions about AA and other options answered.
    – Seedmanc
    Apr 21 '18 at 18:00
  • 2
    That a site is in beta isn't a reason not to use it!
    – Schism
    Apr 21 '18 at 20:13
  • 1
    As a matter of fact, not using a beta site because there's no one there means there will never be anyone there. Either way, though, how graphics works isn't a gaming issue; there might be something there if you narrowed this to a specific game, but it would have to be a gaming issue.
    – Frank
    Apr 22 '18 at 20:04

Well, you have to differentiate between how games are rendered and how, for instance, a photo is taken: in the latter case, the Nyquist theorem claims that if the image taken contains higher frequencies than what the sensor can reliably pick up (i.e., higher than the sensor's Nyquist frequency), then you will get aliasing. That's why you put a low-pass filter in front of the sensor, so that doesn't happen.

Now take a game: you have a virtual 3D environment, and for each "Pixel" of your Framebuffer, you scan the scene underneath that point and calculate the color value(s).

In a case with too high frequencies, such as dense grass or brickwall patterns in the distance, you again, get aliasing - but you can't just put a low-pass filter in front of it. Why? Because you'd have to "blur" all the colors from the 3D scene that are within the area of the scanned pixel, and calculate the average - but for that, you'd need to scan arbitrarily many points, depending on the complexity of the 3D scene underneath that point.

Here is an example:

The red dots are the points where your renderer scans the scene.

Your renderer calculates the color under each red dot, but the surrounding color cannot simply be taken into account.

For the upper left case, that's fine, as the entire texture is green, and you'll get an accurate representation, but for the lower left piece, it'll output green, even though it should be a blue-ish green. So there's the aliasing.

The upper right example would be 2x SSAA (iirc, or 4x? idrk), and as you can see, the result would still be mostly green, as 3 of the red dots happen to be above a green part of the texture. You get more samples, and higher accuracy, but the texture still has much higher frequencies.

The Bottom right is an example of an AA method that uses slightly shifted/irregular patterns to help reduce that effect for textures with regular patterns. I believe TXAA or FXAA use such an approach, but don't quote me on that.

Not the answer you're looking for? Browse other questions tagged or ask your own question.