Anisotropic filtering

Last updated
An illustration of texture filtering methods showing a texture with trilinear mipmapping (left) and anisotropic texture filtering Anisotropic filtering en.png
An illustration of texture filtering methods showing a texture with trilinear mipmapping (left) and anisotropic texture filtering

In 3D computer graphics, anisotropic filtering (abbreviated AF) [1] [2] is a method of enhancing the image quality of textures. It only applies on surfaces at oblique viewing angles to the camera and where the projection of the texture (not the polygon or other primitive on which it is rendered) appears to be non-orthogonal. As per its etymology, anisotropic filtering does not filter the same in every direction.

Contents

Like bilinear and trilinear filtering, anisotropic filtering eliminates aliasing effects, [3] [4] but improves on these other techniques by reducing blur and preserving detail at extreme viewing angles.

Primarily due to memory bandwidth constraints[ citation needed ], anisotropic filtering is a relatively intensive process and only became a standard feature of consumer-level graphics cards in the late 1990s. [5] Anisotropic filtering is now common in modern graphics hardware (and video driver software) and is enabled either by users through driver settings or by graphics applications and video games through programming interfaces.

Comparison to isotropic algorithms

An example of anisotropic mipmap image storage: the principal image on the top left is accompanied by filtered, linearly transformed copies of reduced size. MipMap Example STS101 Anisotropic.png
An example of anisotropic mipmap image storage: the principal image on the top left is accompanied by filtered, linearly transformed copies of reduced size.
Isotropic mipmap of the same image MipMap Example STS101.jpg
Isotropic mipmap of the same image

Anisotropic filtering retains the "sharpness" of a texture normally lost by a mipmap texture's attempts to avoid aliasing. Anisotropic filtering can therefore be said to maintain crisp texture detail at all viewing orientations while providing fast anti-aliased texture filtering.

In traditional isotropic mipmapping, downsizing at each level halves the resolution on each axis simultaneously. As a result, when rendering a horizontal plane at an oblique angle to the camera, the minification would provide an insufficient horizontal resolution due to the reduction of image frequency in the vertical axis. That is, when sampling to avoid aliasing on a high-frequency axis, the other texture axes will be similarly downsampled and therefore potentially blurred.

With mipmap anisotropic filtering, a texture of resolution 256px × 256px would not only be downsampled to 128px × 128px, but also to other non-square resolutions, such as 256px × 128px and 32px × 128px. These anisotropically downsampled images can be probed when the texture-mapped image frequency is different for each texture axis. Then, one axis is not blurred due to the screen frequency of another axis, and aliasing is still avoided.

Mipmapping and its associated axis-alignment constraints mean it is suboptimal for true anisotropic filtering and is used here for illustrative purposes only. More general anisotropic filtering methods support anisotropic probes that are not necessarily axis-aligned in texture space, allowing for diagonal anisotropy.

Degree of anisotropy

Different degrees or ratios of anisotropic filtering can be applied during rendering. This degree refers to the maximum ratio of anisotropy supported by the filtering process. For example, 4:1 (pronounced “4-to-1”) anisotropic filtering will continue to sharpen more oblique textures beyond the range sharpened by 2:1. [6]

In practice, this means that in highly oblique texturing situations, a 4:1 filter will be twice as sharp as a 2:1 filter (it will display frequencies double that of the 2:1 filter). However, most of the scene will not require the 4:1 filter; only the more oblique and usually more distant pixels will require the sharper filtering. This means that as the degree of anisotropic filtering continues to double there are diminishing returns in terms of visible quality with fewer and fewer rendered pixels affected, and the results become less obvious to the viewer; only a relatively few highly oblique pixels, mostly on more distant geometry, will display visibly sharper textures in the scene with the higher degree of anisotropic filtering. The performance penalty also diminishes because fewer pixels require the data fetches of greater anisotropy.

Current hardware rendering implementations set an upper bound on this ratio due to the additional hardware complexity and the aforementioned diminishing returns. [7] Applications and users are able to adjust the ratio through driver and software settings up to the threshold.

Implementation

True anisotropic filtering probes the texture anisotropically on the fly on a per-pixel basis for any orientation of anisotropy.

In graphics hardware, typically when the texture is sampled anisotropically, several probes (texel samples) of the texture around the center point are taken on a sample pattern mapped according to the projected shape of the texture at that pixel. [8] Earlier software methods have used summed-area tables. [9]

Each anisotropic filtering probe is often in itself a filtered mipmap sample, which adds more sampling to the process. Sixteen trilinear anisotropic samples might require 128 samples from the stored texture, as trilinear mipmap filtering needs to take four samples for each of the two mipmaps and then anisotropic sampling (at 16-tap) needs to take sixteen of these trilinear filtered probes.

However, this level of filtering complexity is not required all the time. There are commonly available methods to reduce the amount of work the video rendering hardware must do.[ citation needed ]

The anisotropic filtering method most commonly implemented on graphics hardware is the composition of the filtered pixel values from only one line of mipmap samples. In general, the method of building a texture filter result from multiple probes filling a projected pixel sampling into texture space is referred to as "footprint assembly", even where implementation details vary. [10] [11] [12]

Performance and optimization

The sample count required can make anisotropic filtering extremely bandwidth-intensive. Multiple textures are common; each texture sample could be four bytes or more, so each anisotropic pixel could require 512 bytes from texture memory, although texture compression is commonly used to reduce this.

A video display device can easily contain over two million pixels, and desired application framerates are often upwards of 60 frames per second. As a result, the required texture memory bandwidth may grow to large values. Ranges of hundreds of gigabytes per second of pipeline bandwidth for texture rendering operations is not unusual where anisotropic filtering operations are involved. [13]

Fortunately, several factors mitigate in favor of better performance:

See also

Related Research Articles

In digital signal processing, spatial anti-aliasing is a technique for minimizing the distortion artifacts (aliasing) when representing a high-resolution image at a lower resolution. Anti-aliasing is used in digital photography, computer graphics, digital audio, and many other applications.

<span class="mw-page-title-main">Texture mapping</span> Method of defining surface detail on a computer-generated graphic or 3D model

Texture mapping is a method for mapping a texture on a computer-generated graphic. "Texture" in this context can be high frequency detail, surface texture, or color.

<span class="mw-page-title-main">GeForce 3 series</span> Series of GPUs by Nvidia

The GeForce 3 series (NV20) is the third generation of Nvidia's GeForce line of graphics processing units (GPUs). Introduced in February 2001, it advanced the GeForce architecture by adding programmable pixel and vertex shaders, multisample anti-aliasing and improved the overall efficiency of the rendering process.

In computer graphics, mipmaps or pyramids are pre-calculated, optimized sequences of images, each of which is a progressively lower resolution representation of the previous. The height and width of each image, or level, in the mipmap is a factor of two smaller than the previous level. Mipmaps do not have to be square. They are intended to increase rendering speed and reduce aliasing artifacts. A high-resolution mipmap image is used for high-density samples, such as for objects close to the camera; lower-resolution images are used as the object appears farther away. This is a more efficient way of downscaling a texture than sampling all texels in the original texture that would contribute to a screen pixel; it is faster to take a constant number of samples from the appropriately downfiltered textures. Mipmaps are widely used in 3D computer games, flight simulators, other 3D imaging systems for texture filtering, and 2D and 3D GIS software. Their use is known as mipmapping. The letters MIP in the name are an acronym of the Latin phrase multum in parvo, meaning "much in little".

<span class="mw-page-title-main">RIVA 128</span> Graphics processing unit developed by Nvidia

The RIVA 128, or "NV3", was a consumer graphics processing unit created in 1997 by Nvidia. It was the first to integrate 3D acceleration in addition to traditional 2D and video acceleration. Its name is an acronym for Real-time Interactive Video and Animation accelerator.

<span class="mw-page-title-main">Volume rendering</span> Representing a 3D-modeled object or dataset as a 2D projection

In scientific visualization and computer graphics, volume rendering is a set of techniques used to display a 2D projection of a 3D discretely sampled data set, typically a 3D scalar field.

In computer graphics, texture filtering or texture smoothing is the method used to determine the texture color for a texture mapped pixel, using the colors of nearby texels.

Trilinear filtering is an extension of the bilinear texture filtering method, which also performs linear interpolation between mipmaps.

Cone tracing and beam tracing are a derivative of the ray tracing algorithm that replaces rays, which have no thickness, with thick rays.

<span class="mw-page-title-main">Xenos (graphics chip)</span> GPU used in the Xbox 360

The Xenos is a custom graphics processing unit (GPU) designed by ATI, used in the Xbox 360 video game console developed and produced for Microsoft. Developed under the codename "C1", it is in many ways related to the R520 architecture and therefore very similar to an ATI Radeon X1800 XT series of PC graphics cards as far as features and performance are concerned. However, the Xenos introduced new design ideas that were later adopted in the TeraScale microarchitecture, such as the unified shader architecture. The package contains two separate dies, the GPU and an eDRAM, featuring a total of 337 million transistors.

<span class="mw-page-title-main">Image scaling</span> Changing the resolution of a digital image

In computer graphics and digital imaging, imagescaling refers to the resizing of a digital image. In video technology, the magnification of digital material is known as upscaling or resolution enhancement.

<span class="mw-page-title-main">Radeon R300 series</span> Series of video cards

The R300 GPU, introduced in August 2002 and developed by ATI Technologies, is its third generation of GPU used in Radeon graphics cards. This GPU features 3D acceleration based upon Direct3D 9.0 and OpenGL 2.0, a major improvement in features and performance compared to the preceding R200 design. R300 was the first fully Direct3D 9-capable consumer graphics chip. The processors also include 2D GUI acceleration, video acceleration, and multiple display outputs.

<span class="mw-page-title-main">RSX Reality Synthesizer</span> GPU for the PlayStation 3

The RSX 'Reality Synthesizer' is a proprietary graphics processing unit (GPU) codeveloped by Nvidia and Sony for the PlayStation 3 game console. It is based on the Nvidia 7800GTX graphics processor and, according to Nvidia, is a G70/G71 hybrid architecture with some modifications. The RSX has separate vertex and pixel shader pipelines. The GPU makes use of 256 MB GDDR3 RAM clocked at 650 MHz with an effective transmission rate of 1.3 GHz and up to 224 MB of the 3.2 GHz XDR main memory via the CPU . Although it carries the majority of the graphics processing, the Cell Broadband Engine, the console's CPU, is also used complementarily for some graphics-related computational loads of the console.

<span class="mw-page-title-main">Supersampling</span> Spatial anti-aliasing method

Supersampling or supersampling anti-aliasing (SSAA) is a spatial anti-aliasing method, i.e. a method used to remove aliasing from images rendered in computer games or other computer programs that generate imagery. Aliasing occurs because unlike real-world objects, which have continuous smooth curves and lines, a computer screen shows the viewer a large number of small squares. These pixels all have the same size, and each one has a single color. A line can only be shown as a collection of pixels, and therefore appears jagged unless it is perfectly horizontal or vertical. The aim of supersampling is to reduce this effect. Color samples are taken at several instances inside the pixel, and an average color value is calculated. This is achieved by rendering the image at a much higher resolution than the one being displayed, then shrinking it to the desired size, using the extra pixels for calculation. The result is a downsampled image with smoother transitions from one line of pixels to another along the edges of objects. The number of samples determines the quality of the output.

<span class="mw-page-title-main">Texture compression</span> Type of data compression

Texture compression is a specialized form of image compression designed for storing texture maps in 3D computer graphics rendering systems. Unlike conventional image compression algorithms, texture compression algorithms are optimized for random access.

The term post-processing is used in the video and film industry for quality-improvement image processing methods used in video playback devices, such as stand-alone DVD-Video players; video playing software; and transcoding software. It is also commonly used in real-time 3D rendering to add additional effects.

<span class="mw-page-title-main">InfiniteReality</span> Graphics subsystem by Silicon Graphics

InfiniteReality refers to a 3D graphics hardware architecture and a family of graphics systems that implemented the aforementioned hardware architecture that was developed and manufactured by Silicon Graphics from 1996 to 2005. The InfiniteReality was positioned as Silicon Graphics' high-end visualization hardware for their MIPS/IRIX platform and was used exclusively in their Onyx family of visualization systems, which are sometimes referred to as "graphics supercomputers" or "visualization supercomputers". The InfiniteReality was marketed to and used by large organizations such as companies and universities that are involved in computer simulation, digital content creation, engineering and research.

<span class="mw-page-title-main">Intel 2700G</span>

Intel 2700G is a low power graphics co-processor for the XScale PXA27x processor, announced on April 12, 2004. It is built on both the PowerVR MBX Lite chip design and on the MVED1 video encoder/decoder technology.

<span class="mw-page-title-main">Xbox technical specifications</span>

The Xbox technical specifications describe the various components of the Xbox video game console.

This is a glossary of terms relating to computer graphics.

References

  1. "What is Anisotropic Filtering? - Technipages". 8 July 2020.
  2. Ewins, Jon P; Waller, Marcus D; White, Martin; Lister, Paul F (April 2000). "Implementing an anisotropic texture filter". Computers & Graphics. 24 (2): 253–267. doi:10.1016/S0097-8493(99)00159-4.
  3. Blinn, James F.; Newell, Martin E. (October 1976). "Texture and reflection in computer generated images". Communications of the ACM. 19 (10): 542–547. doi:10.1145/360349.360353.
  4. Heckbert, Paul S. (November 1986). "Survey of Texture Mapping". IEEE Computer Graphics and Applications. 6 (11): 56–67. doi:10.1109/MCG.1986.276672.
  5. "Radeon Whitepaper" (PDF). ATI Technologies Inc. 2000. p. 23. Retrieved 2017-10-20.
  6. 1 2 3 "Texture antialiasing". ATI's Radeon 9700 Pro graphics card. The Tech Report. 16 September 2002. Retrieved 2017-10-20.
  7. "Anisotropic Filtering". Nvidia Corporation . Retrieved 2017-10-20.
  8. Olano, Marc; Mukherjee, Shrijeet; Dorbie, Angus (2001). "Vertex-based anisotropic texturing". Proceedings of the ACM SIGGRAPH/EUROGRAPHICS workshop on Graphics hardware. pp. 95–98. doi:10.1145/383507.383532. ISBN   1-58113-407-X.
  9. Crow, Franklin C. (1984). "Summed-area tables for texture mapping". Proceedings of the 11th annual conference on Computer graphics and interactive techniques. pp. 207–212. doi:10.1145/800031.808600. ISBN   0-89791-138-5.
  10. Schilling, A.; Knittel, G.; Strasser, W. (May 1996). "Texram: a smart memory for texturing". IEEE Computer Graphics and Applications. 16 (3): 32–41. doi:10.1109/38.491183.
  11. Dachille, F.; Kaufman, A.E. (March 2004). "Footprint area sampled texturing". IEEE Transactions on Visualization and Computer Graphics. 10 (2): 230–240. doi:10.1109/TVCG.2004.1260775. PMID   15384648.
  12. Lensch, Hendrik (2007). "Computer Graphics: Texture Filtering & Sampling Theory" (PDF). Max Planck Institute for Informatics . Retrieved 2017-10-20.
  13. Mei, Xinxin; Chu, Xiaowen (2015-09-08). "Dissecting GPU Memory Hierarchy through Microbenchmarking". arXiv: 1509.02308 [cs.AR]. Accessed 2017-10-20.
  14. Igehy, Homan; Eldridge, Matthew; Proudfoot, Kekoa (1998). "Prefetching in a Texture Cache Architecture". Eurographics/SIGGRAPH Workshop on Graphics Hardware. Stanford University . Retrieved 2017-10-20.