IntroductionThe NVIDIA NV40 GPU, launched last April, was a stepping stone for NVIDIA. Following their lacklustre showing versus ATI's R3-series products with their own NV3-series parts, the new generation signalled NVIDIA's return to form. The NV4-series improved upon the NV3-series in almost every way, from geometry processing to pixel output and nearly everything in between.
In terms of image quality increased by texture filtering, NV40's texture filter hardware has bilinear texture samplers at its core, performing a four-sample 2x2 box filter (the bilinear sample) per cycle, per sampler. There's a sampler per fragment unit and with 16 of those beasties in a full NV4-series part like NV40 or NV45, there's plenty of opportunity for good image quality.
NVIDIA switched to an angle-adaptive anisotropic filtering mechanism with NV40, versus the fairly ordered version of that filtering in previous products. Texture samplers in NV40 are bound to their containing fragment units, so you can't assign any idle samplers to the filtering task being performed by one of the four fragment quads. Idle quad that's not texturing? Idle texture samplers, sadly. With a usual 16x anisotropic filter taking 256 texel samples per pixel, you can see how without a separate dedicated array of units that can texture, finding ways to limit the performance of a tied-to-shader-hardware configuration is prudent.
So to use aniso to increase IQ, and I'll explain how it does so shortly, NVIDIA and ATI in recent generation hardware have used an angle-adaptive method that only applies certain levels of filtering to certain texels, depending on their alignment with the viewer (you). If the angle of the texels means you only need a lower level of filtering to get good IQ, why waste sampling needlessly for little gain? That's the main ethos behind the method.
G70, NVIDIA's latest GPU, is based on NV40 (well, NV45 really) and added more vertex units, pixel units, a tweaked fragment rasteriser between the two and improved the chip in a general performance sense. However the texture filter hardware is unchanged from NV40 and NV45 (that I can see, and which makes a certain sense when you realise that G70 is a pseudonym for what was first known as NV47). Still the same old bilinear texture samplers, still the same anisotropic filtering algorithm using the same angle selection, so the same old overall image quality and means to get there via filtering.
At one point in recent months, a driver for the GeForce 6-series of products has introduced worse texture filtering. The hard launch of GeForce 7800 GTX and the Release 75 driver, and more recently GeForce 7800 GT, despite larger theoretical filtering rates than the older generation of GeForce 6-series products, also suffers from the same issues.
Join me as I discuss how anisotropic texture filtering works, before moving on to investigating what's up in the current drivers, followed by a look at what NVIDIA has done in a very recent driver build to fix one of their user-selectable quality modes. Finally, I'll round things off with a chat about NVIDIA's filtering choices and what to expect in the future from the major IHVs.