20111026 - Sharpness vs Temporal Aliasing

This will come as a shock to most people, but for a given resolution, CG movie quality graphics is not obtainable without a loss of sharpness compared to our current game graphics practices.

Should be Obvious
There is a direct trade off between sharpness and temporal aliasing. This should be clear, if not, here is an example image. Best to blur your vision, or back away from the display when looking at these so the energy conservation is more obvious.

Images are in gamma 2.2 space, they don't display fully correctly on an sRGB display. The animation loop goes between {0, 0.25, 0.5, 0.75, 1.0, 0.75, 0.5, 0.25} pixel offsets (very low frame-rate). Left column is resolved by a non-linear filter in gamma 2.2 space. Right column is resolved by a linear filter. Row are from top to bottom {box, 1/4 pixel radius gaussian, 1/2 pixel radius gaussian, 1 pixel radius gaussian} respectively.

The non-linear resolve is technically incorrect, as it isn't energy conserving. This is possible to see in the non-moving spatial resolve, it gets darker as the resolve radius increases. The linear resolve looks thicker as the resolve radius increases, but the energy of the image is conserved.

Under motion, the box resolve flickers as the text moves between pixels. The perceptual sharpenss of the moving text in box resolve will also flicker temporally. This flickering is more obvious with a correct energy conserving resolve (the right side). As the resolve radius increases, the temporal flickering reduces.

CG Movie vs Game Graphics, the Double Standard
"The anti-aliased image does not look as sharp!"
Of course, because if the anti-aliased image does not filter out pixel sized data then some amount of temporal aliasing will remain in a moving picture.

Temporal aliasing is not acceptable for CG in movies, as viewers would complain that their eyes are bleeding. However for game graphics for anything with side-by-side comparisons, some percentage of people will complain of a lack of sharpness if any anti-aliasing technique removes the temporal aliasing.

GPU Hardware AA
For edges and MSAA, a 1 pixel box filter (the default resolve operation) will never filter out all temporal aliasing. The filter needs to be larger than one pixel. Even for single textured un-shaded surfaces with one sample, the default texture filtering can also leave temporal aliasing.

Another Visual Example
Rage with MSAA and virtual 6x6 OGSSAA (I resized an image grabbed from a Neogaf thread). This first image shows no filter before down-sampling via decimation. Limit in terms of sharpness and most aliased. Images are upsampled via 2x2 pixel blocks per source pixel.

This second image uses a non-linear box filter down-sample (simiar to defaul box MSAA resolve) which would show temporal aliasing, and is already quite a bit less "sharp".

Now with an output pixel radius linear gaussian resolve (large enough filter to remove temporal aliasing).