FAQ News Search Archive Forum IRC nZone Articles Tweaks Technology Files Prices Folding
Need Memory?
Popular Articles
Drivers/FAQ
Associates
 

NVIDIA GeForce4 Ti 4600 Preview
By: Mike Chambers - February 10, 2002

OpenGL Performance - Quake 3 - Anisotropic Filtering

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

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
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
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
Trilinear Filtering 2X Anisotropic Filtering

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
2X Anisotropic Filtering 4X Anisotropic Filtering

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
4X Anisotropic Filtering 8X Anisotropic Filtering

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.

Next Page: OpenGL Antialiasing Performance - Quake 3

Skip To:

 

Last Updated on March 8, 2002

Copyright 1998-2003. All rights reserved.
Reproduction in any form or medium without written permission of the site's owners is prohibited.

Privacy Policy


FastCounter by bCentral

 Visitors Are Online
Powered by Perlonline.com
eVGA.com
Tweakmonster
Graphics Utilities
Add-In Cards
For Developers
Sponsors