This section of the preview looks at measuring performance using an advanced form of texture filtering referred to as anisotropic filtering. But first, let's cover some background information. The OpenGL Extension Registry, which is maintained by Silicon Graphics (SGI), is a repository for the documentation of OpenGL extensions. The extension that governs the use of anisotropic filtering is referred to as GL_EXT_texture_filter_anisotropic.
Silicon Graphics Witches Brew Anisotropic
Under version 1.2 of OpenGL, the documentation states that there is no specific methodology for implementing anisotropic filtering which gives NVIDIA the leeway to support the extension as they see fit. Therefore, one should keep in mind that when comparing the quality and performance associated with anisotropic filtering with different graphics cards, implementations of the feature might differ.
Several approaches exist for improving texture sampling by accounting for the anisotropic nature of the pixel filter footprint into texture space. This extension provides a general mechanism for supporting anisotropic texturing filtering schemes without specifying a particular formulation of anisotropic filtering.
We get an idea of why anisotropic filtering is a desirable feature by reading the following excerpt from the specification:
Texture mapping using OpenGL's existing mipmap texture filtering modes assumes that the projection of the pixel filter footprint into texture space is a square (ie, isotropic). In practice however, the footprint may be long and narrow (ie, anisotropic). Consequently, mipmap filtering severely blurs images on surfaces angled obliquely (neither perpendicular nor parallel) away from the viewer.
For help in understanding the above statement, a brief overview of mipmap filtering is provided. Mipmapping is a technique used to improve the accuracy of mapping textures onto the underlying geometry. A mipmap is typically a high quality two-dimensional texture that can be dynamically re-sized and filtered by OpenGL to provide an optimal level of detail (in relationship to the view distance). An alternative method of mipmapping is to create a predefined series of textures with each one decreasing in resolution. In this case, the application controls the selection of the mipmap that provides the best level of detail.
A variety of connotations have been associated with anisotropic filtering which include "non-uniform shape" or "uneven shaped areas" but its definition is to "exhibit properties with different values when measured in different directions." For example, take a look at the two different player views shown in the thumbnails below that were taken from level Q3DM7. In the first position, the player is facing a wall, which contains a torch. In the second position, player movement results in a transformation of the underlying geometry used to render the same wall.
Player Views
Position 1
Position 2
Upon closer inspection, one can see that as a result of the transformation, the texture surface in the angled view is severely blurred as shown in the close-up images below. In this case bilinear and trilinear filtering are ineffective since the textures footprint is now anisotropic. As textures form anisotropic properties, the height to width ratio of the pixels within the textures begin to change.
Close Up Of Player View - Trilinear Filtering
Position 1
Position 2
It's possible that a series of pre-filtered mipmapped textures can be developed that take into account changes in the angle of view. While this approach may be effective, it's time consuming and results in an increase in texture memory. An alternative approach is to rely on an anisotropic filtering algorithm that samples data from existing mipmaps while accounting for their non-symmetrical properties.
Trilinear vs 2X Anisotropic Filtering
Trilinear
2X Anisotropic
For high quality anisotropic filtering to be effective, the filtering algorithm needs to sample textures asymmetrically (not symmetrical) along their arbitrarily oriented axes. With 2X anisotropic filtering enabled, textures exhibit a marked improvement in quality.
2X vs 4X Anisotropic Filtering
2X Anisotropic
4X Anisotropic
Although not as dramatic a change as mvoing from trilinear to 2X anisotropic, 4X anisotropic filtering is able to further enhance texture quality.
4X vs 8X Anisotropic Filtering
4X Anisotropic
8X Anisotropic
The difference between 4X and 8X anisotropic filtering isn't noticeable in this scene due to the degree of the surface angle. If a higher-angled surface had been compared, 8X anisotropic filtering would have been more effective than 4x.
The Detonator driver control panel allows the anisotropic level to be selected under OpenGL and consists of 2X, 4X, and 8X settings. Each of these settings uses an increasing number of texture samples during the texture filtering process. It's important to understand that the affect on performance when using higher levels of anisotropic filtering will vary. As in the above example, there will be surfaces where a 4X level of filtering is sufficient and other surfaces that will require a higher (or lower) degree of filtering.
All results in the following tests are based on the Quake 3 maximum quality setting along with 2X, 4X, and 8X anisotropic filtering. Maximum quality results, which use trilinear filtering, are repeated for comparative purposes. Results at a resolution of 2048x1536 are based on 16-bit color.
Maximum Quality
Resolution
GeForce4 Ti 4600
GeForce3 Ti 500
Percent Change
Trilinear Filtering
1024x768
Avg: 211
Avg: 191
+ 10%
1280x1024
Avg: 178
Avg: 139
+ 28%
1600x1200
Avg: 137
Avg: 102
+ 34%
2048x1536
Avg: 102
Avg: 71
+ 44%
2X Anisotropic Filtering
1024x768
Avg: 174
Avg: 161
+ 8%
1280x1024
Avg: 114
Avg: 109
+ 5%
1600x1200
Avg: 81
Avg: 80
+ 1%
2048x1536
Avg: 52
Avg: 55
- 5%
4X Anisotropic Filtering
1024x768
Avg: 143
Avg: 133
+ 8%
1280x1024
Avg: 90
Avg: 88
+ 2%
1600x1200
Avg: 65
Avg: 65
+ 0%
2048x1536
Avg: 41
Avg: 44
- 7%
8X Anisotropic Filtering
1024x768
Avg: 125
Avg: 117
+ 7%
1280x1024
Avg: 79
Avg: 77
+ 3%
1600x1200
Avg: 56
Avg: 56
+ 0%
2048x1536
Avg: 36
Avg: 38
- 5%
* Results for 2048x1536 are in 16-bit color
One pays a price for using anisotropic filtering on both the GeForce3 and GeForce4. However, textures that exhibit severe anisotropic properties are enhanced as a result of high quality filtering. At a minimum, 2X anisotropic filtering can be used as a default value in the majority of games. Depending on the circumstances, 4X anisotropic filtering is possible and even more desirable since it provides even better quality than 2X. Using 8X anisotropic filtering is probably best used at 1024x768 and lower resolutions.
4X Anisotropic vs Trilinear - % Hit In Performance
Resolution
GeForce4 Ti 4600
GeForce3 Ti 500
Percent Change
Maximum Quality
1024x768
Pct: 48
Pct: 44
- 9%
1280x1024
Pct: 98
Avg: 58
- 69%
1600x1200
Pct: 111
Pct: 57
- 95&
2048x1536
Pct: 149
Pct: 61
- 142%
* Results for 2048x1536 are in 16-bit color
I want to finish off this page by showing the frame rate hit (in percent) associated with enabling 4X anisotropic filtering under maximum quality settings. The results indicate that while the GeForce4 Ti 4600 was providing a 10-40% increase in performance over the GeForce3 Ti 500 with trilinear filtering, none of the additional performance is being put to use for anisotropic filtering. However as we will find out in the next update to this preview, when antialiasing performance is compared, the tables will turn quite dramatically in favor of the GeForce4 Ti 4600.