Filtering Quality - Continued

Thanks to Victor Moya, one of the authors of the ATTILA GPU simulator, we can see using FilterTest (Georg Kolling's original OpenGL version) what 'perfect' angle invariance looks like when doing filtering level selection.

Click for a bigger version

We say 'perfect', since the basic tenets of texture filtering mean that per-pixel output is always going to be an appromixation of reality. However the implementation of texture filtering in ATTILA and shown above in FilterTest, which in this case is elliptical weighted averages (EWA, attributed to Paul Heckbert, now at NVIDIA), shows 'perfection' (within the bounds of the test application of course), but at a very high per-texel cost (certainly too high for real-time on all screen pixels).

Improvements to G80's filtering ability would therefore include better level selection to closer (or fully) match the above, truly discrete sample values when filtering with floating point (a bilinear FP fetch in G80 shares the exponent across the four taps, which is fine for D3D9 and D3D10 but maybe not so for D3D10.1), and of course more performance when doing so. Regardless, for a consumer-focused D3D10-based graphics processor, G80 does very well.

It already has the ability to filter all data types it can sample, and 128-tap bilinear aniso (16x) is arguably enough for consumer applications. In terms of filtering in the sRGB colour space, the filter hardware must translate back to linear space before another transmute back to sRGB if needed when storing the pixel, depending on the API. We're not sure where the hardware does the conversion and whether it's a cheap approximate conversion like ATI C1 performs (the only other consumer hardware we know of that can filter texels in a non-linear colour space), or something a bit more accurate.

G80 compared to previous hardware

Before we move on, a comparison to previous graphics luminaries is quietly prudent, to show just how much the game has moved on in terms of base and max filtering quality. We choose NVIDIA NV30 (base architecture and chip implementation for the GeForce FX series), NVIDIA G71 (the last generation prior to GeForce 8-series), ATI R420 (the base chip implementation for Radeon X8-series products) and ATI R580 (ATI's current high-end part). You'll see the maximum quality available at each chip's respective maximum AF level, selected using each chip's driver control panel.

The order is G80, G71, NV30, R420, R580.

Click for a bigger version

Click for a bigger version

Click for a bigger version

Click for a bigger version

Click for a bigger version

R580's HQ AF mode is pretty good, while R420 and G71's highly angle-dependant modes hopefully mark the last time we'll see such variant filtering on high-end competing offerings from both leading IHVs. And if you could see NV30's out-of-the-box quality, well, let's just say that it's pretty funny (we kid, NV, before you cut us off!).

If it wasn't already clear that G80 is a genuine step up in terms of default filtering quality, then those images should illustrate it quite nicely. FilterTest output is never a 100% guarantee that any filtering level choices are what you'll always get in a game title, for any given surface angle, but as a theoretical maximum illustration it does a good job.

We cover filtering performance in the Performance article, and talk of colour spaces earlier leads us nicely on to the last part of this particular IQ investigation.