| Anisotropic Texture Filtering
|
There are a variety of features that the GeForce series of graphics card can offer to improve the image quality in the games we play. Using 32-bit color, playing at high resolutions, or enabling antialising are just a few of them. Another lesser known feature that can be enabled is an advanced method of texture filtering referred to as anisotropic filtering.
Of course the price one pays for using varying degrees of anisotropic filtering is decreased performance. However, there are instances when a balance between image quality and performance can be reached. A little experimentation is all that's required.
RivaTuner OpenGL Tweaks
Using the beta 11.01 Detonator drivers to enable anisotropic filtering on the GeForce3 will not work. I recommend using RivaTuner as it allows anisotropic filtering to be enabled under OpenGL and Direct3D.
This exercise will put anisotropic filtering, along with antialiasing, to the test in the following OpenGL based games - Quake 3, Alice, and Counter-Strike.
| Texture Mapping And Filtering
|
Before we get into the meat of the subject matter, let's have a brief and non-technical discussion on textures. Without the use of textures, the graphics in 3D games would look rather bland. In order to allow objects in the game world to appear realistic, the process of using a texture image and mapping it to an object is often used. However, texture mapping is a complex process as a texture is normally based on a flat image and the object to which it's mapped to is three dimensional.
| Wireframe View |
Sphere With Texture |
 |
 |
As a texture is applied to an object using a texture map, a process referred to as texture filtering determines how the elements of a texture (texels) are used to generate pixels in a scene. As textures are filtered, they may be magnified or minified depending on the viewed distance from the object. In these cases, a texture is being mapped to an object that is either larger or smaller than itself which can cause an undesirable appearance.
Using pre-filtered versions of a texture during texture filtering offers better visual quality and saves processing time. The closer the textures aspect ratio is to the projected aspect ratio of the object it's applied to, the more accurate the sampling will be.
For example, a high resolution image can be used as a texture when an object is close to the view. As the object moves farther away, a lower resolution image can take its place. By automatically selecting the texture that's closest to the required scale, the scaling process takes less time and reduces the distortion of the texture. The term mipmap is given to the sequence of scaled images that are used as textures.
The various methods of texture filtering have advantages and disadvantages. Bilinear and trilinear filtering are effective for surfaces that appear at right angles to the viewer. Anisotropic filtering is a technique more suited to texturing angled surfaces, but requires additional processing in the form of texture memory reads.
Bilinear filtering calculates a weighted average of four surrounding texture pixels to produce smoother images. In terms of processing, bilinear filtering requires four texture memory reads per pixel. Trilinear filtering requires eight texture memory reads per pixel and calculates a weighted average of two bilinear filtered mipmap levels. It further improves image quality, mainly in distant objects.
| Bilinear Filtering |
Trilinear Filtering |
 |
 |
Anisotropic means non-uniform shape and is a filtering technique that works on non-uniform, or uneven, shaped areas. In reality, when the viewpoint is such that a surface is seen square on, the surface is elliptical in shape. Anisotropic texture filtering calculates the shape of this ellipse and maps it onto the required texture.
| Trilinear Filtering |
16 Sample Anisotropic |
 |
 |
When used in conjunction with trilinear filtering, anisotropic filtering utilizes an additional average of 8, 16, or 32 texel samples within the ellipse to determine the color to be mapped to the target surface. As the dimensions of the ellipse can have any ratio between its height and width in addition to the angle viewed, the arrangement of the texels to be sampled can only be calculated at runtime.
| 32 Sample Anisotropic |
64 Sample Anisotropic |
 |
 |
Depending on the game, anisotropic filtering results will vary. For example, using 16 sample anisotropic filtering in Alice offered the following enhancements.
| Trilinear Filtering |
16 Sample Anisotropic |
 |
 |
| Anisotropic Performance - Quake 3
|
Now for the test. The following benchmark results are based on maximum quality settings (high quality settings plus high geometry and maximum texture detail) using Quake 3 version 1.17 demo Demo001. Sound and vsync were disabled.
Anisotropic Filtering Performance - No Antialiasing
| Antialiasing With Anisotropic Filtering
|
The next logical step was to measure performance with both anisotropic filtering and antialiasing enabled. This was a time consuming process, but well worth the effort as I was able to determine the settings that Quake 3 was playable with.
Before showing the results, the following images (1024x768 with maximum quality settings) from Alice illustrate the use of 16 sample anisotropic filtering along with the antialiasing settings supported by the GeForce 3.
The main point here is to notice the slight blurring of textures that is evident with Quincunx antialiasing. Note that the frame rate appears in the bottom left corner of the full size image.
| No AA - Trilinear Filtering |
2X AA - 16 Sample Anisotropic |
 |
 |
| QC AA - 16 Sample Anisotropic |
4X AA - 16 Sample Anisotropic |
 |
 |
| Anisotropic and Antialiasing Performance - Quake 3
|
Be prepared for a barrage of benchmarks...
Anisotropic Filtering Performance - 2X Antialiasing
Anisotropic Filtering Performance - Quincunx Antialiasing
Anisotropic Filtering Performance - 4X Antialiasing
After mulling over the benchmark results, I came up with the following settings to use in the playability series of tests.
- Quake 3 - 32 Sample Anisotropic Filtering - 4X Antialiasing - Maximum Quality Settings @ 800x600
- Quake 3 - 32 Sample Anisotropic Filtering - Quincunx Antialiasing - Maximum Quality Settings @ 1024x768
- Counter-Strike - 32 Sample Anisotropic Filtering - Quincunx Antialiasing - Default Settings @ 1280x960
- Counter-Strike - 64 Sample Anisotropic Filtering - 4X Antialiasing - Default Settings @ 1280x960
All work and no play, well, you know how the saying goes. I played Quake 3 with these settings over a period of three days while my son Dave logged in about 25 hours of Counter-Strike. For Quake 3, a local multi-player game was used with 10 bots while Counter-Strike was played on-line. Texture compression was disabled in Quake 3 and high quality sound was enabled. Sound was also enabled in Counter-Strike.
After it was all said and done, these settings provided the best image quality I've ever seen in these games along with great gameplay. I was thrilled with the results as the GeForce 3 rarely dipped below 30 frames per second.
The following screenshots from each test are labeled with the corresponding frame rate. While the images are high quality, they don't capture the quality I witnessed during actual gameplay.
32 Sample Anisotropic Filtering - 4X Antialiasing - 800x600
| Shot 1 - 45 FPS |
Shot 2 - 55 FPS |
 |
 |
| Shot 3 - 45 FPS |
Shot 4 - 51 FPS |
 |
 |
32 Sample Anisotropic Filtering - 4X Antialiasing - 800x600
| Shot 5 - 46 FPS |
Shot 6 - 48 FPS |
 |
 |
| Shot 7 - 50 FPS |
Shot 8 - 41 FPS |
 |
 |
At no time did the frame rate dip below 30 frames per second. The frame rate peaked at 80 frames per second and averaged between 40-50 frames per second. The difference in image quality, compared to no antialaising (even at high resolutions) and trilinear filtering, was clearly obvious.
32 Sample Anisotropic Filtering - Quincunx Antialiasing -1024x768
| Shot 1 - 41 FPS |
Shot 2 - 51 FPS |
 |
 |
| Shot 3 - 40 FPS |
Shot 4 - 51 FPS |
 |
 |
32 Sample Anisotropic Filtering - Quincunx Antialiasing -1024x768
| Shot 5 - 36 FPS |
Shot 6 - 50 FPS |
 |
 |
| Shot 7 - 53 FPS |
Shot 8 - 50 FPS |
 |
 |
At a resolution of 1024x768 and Quincunx antialiasing, the frame rate would drop into the mid to upper 20's during exceptionally heavy fighting. For the most part, the frame rate averaged between 40-50 frames per second with peak frame rates in the mid-60's.
I left gameplay testing in Counter-Strike with my son Dave who is an experienced player. The framerate counter (cl_showfps 1), appears at the top left corner and was enabled was enabled at all times. My job was to manually record the framerate during various gaming sessions.
32 Sample Anisotropic Filtering - Quincunx Antialiasing -1280x960
| Shot 1 - 52 FPS |
Shot 2 - 66 FPS |
 |
 |
| Shot 3 - 63 FPS |
Shot 4 - 49 FPS |
 |
 |
You would think that playing Counter-Strike with these settings would finally tax the GeForce 3. Although we used 16-bit color, which is what most players use, it was quite the opposite. With Quincunx antialiasing, the frame rate was steady ranging from a low of 55 frames per second to a high of 75.
Wanting to bring my system to its knees, I upped the ante and moved to 4X antialiasing and 64 sample anisotropic filtering. Did it work?
64 Sample Anisotropic Filtering - 4X Antialiasing -1280x960
| Shot 1 - 68 FPS |
Shot 2 - 63 FPS |
 |
 |
| Shot 3 - 44 FPS |
Shot 4 - 56 FPS |
 |
 |
64 Sample Anisotropic Filtering - 4X Antialiasing -1280x960
| Shot 5 - 37 FPS |
Shot 6 - 72 FPS |
 |
 |
| Shot 7 - 49 FPS |
Shot 8 - 76 FPS |
 |
 |
Nope. Even at 4X antialiasing with 64 sample anisotropic filtering, gameplay was fluid. Occassional drops in frame rate to the mid-30's were countered with an average frame rate of around 55-60 frames per second.
Note that antialiasing on the GeForce 3 wasn't able to eliminate the effects of aliasing on the rails as is shown in the first screen shot. From what I understand, these objects are comprised of what are referred to as alpha textures.
Based on this exercise, I've come to realize that the GeForce 3 has what it takes for the gamer to take visual quality to the next level. Fortunately, you don't have to wait for the next generation of DirectX 8 compliant games to reap the benefits of the GeForce 3. You can get them today with its excellent texture filtering and antialiasing performance. Combine the two features together, and your in for a visual treat.
Next Page: Multitexturing Performance