High Quality Elliptical Texture Filtering on GPU

Pavlos Mavridis     Georgios Papaioannou
Department of Informatics, Athens University of Economics & Business

Proceedings of the ACM SIGGRAPH Symposium on Interactive 3D Graphics and Games (I3D) 2011
EWA
Figure 1. Left: Our elliptical filtering implementation using conservative quality settings. Right: Hardware annisotropic filtering (NVIDIA GTX460) using the highest possible quality settings in the drivers.

Abstract

The quality of the available hardware texture filtering, even on state of the art graphics hardware, suffers from several aliasing artifacts, in both spatial and temporal domain. Those artifacts are mostly evident in extreme conditions, such as grazing viewing angles, highly warped texture coordinates, or extreme perspective and become especially annoying when animation is involved.

In this paper we introduce a method to perform high quality texture filtering on GPU, based on the theory behind the Elliptical Weighted Average (EWA) filter. Our method uses the underlying anisotropic filtering hardware of the GPU to construct a filter that closely matches the shape and the properties of the EWA filter, offering vast improvements in the quality of texture mapping while maintaining high performance. Targeting real-time applications, we also introduce a novel spatial and temporal sample distribution scheme that distributes samples in space and time, permitting the human eye to perceive a higher image quality, while using less samples on each frame. Those characteristics make our method practical for use in games and other interactive applications. For cases where quality is more important than speed, like GPU renderers and image manipulation programs, we also present an exact implementation of the EWA filter that smartly uses the underlying bilinear filtering hardware to gain a significant speedup.

OpenGL Demo

Most of the images in the paper were produced with this demo. This version of the demo performs filtering in linear color space, but the images on the paper were produced in sRGB. The color space can be controlled using a define in main.cpp.
DISCLAIMER: This is unoptimized research code. Tested on NVIDIA cards. The source code is released under the MIT license.

Citation

@inproceedings{Mavridis:2011:HQE:1944745.1944749,
 author = {Mavridis, Pavlos and Papaioannou, Georgios},
 title = {High Quality Elliptical Texture Filtering on {GPU}},
 booktitle = {Proceedings of the ACM SIGGRAPH Symposium on Interactive 3D Graphics and Games},
 series = {I3D '11},
 year = {2011},
 isbn = {978-1-4503-0565-5},
 location = {San Francisco, California},
 pages = {23--30},
 numpages = {8},
 acmid = {1944749},
 publisher = {ACM},
 address = {New York, NY, USA},
}