Tile-Based Texture Mapping on Graphics Hardware

Li-Yi Wei

SIGGRAPH/EUROGRAPHICS Conference on Graphics Hardware, 2004.


Texture mapping has been a fundamental feature for commodity graphics hardware. However, a key challenge for texture mapping is how to store and manage large textures on graphics processors. In this paper, we present a tile-based texture mapping algorithm by which we only have to physically store a small set of texture tiles instead of a large texture. Our algorithm generates an arbitrarily large and non-periodic virtual texture map from the small set of stored texture tiles. Because we only have to store a small set of tiles, it minimizes the storage requirement to a small constant, regardless of the size of the virtual texture. In addition, the tiles are generated and packed into a single texture map, so that the hardware filtering of this packed texture map corresponds directly to the filtering of the virtual texture. We implement our algorithm as a fragment program, and demonstrate performance on latest graphics processors.

Available information:

[sketch] [paper] [talk] [video (youtube)] [code]

Notes and Hindsights:

Analysis of mipmap filtering correctness
The filtering quality of our algorithm at lower resolution mipmap levels depends on how the tiles are constructed. Imagine a pathologic case where 2 adjacent tiles are colored red and green with a 1-texel boundary in white. Since the boundary is continuous by definition, this would fit our tiling scheme. However, the filtering is obviously incorrect except at the finest mipmap level. So, the correctness of our mipmap filtering depends on how many layers of texels are continuous at tile borders. Fortunately, if you construct the tiles by quilting 4 diamond-shaped images as described in the original Wang Tiles SIGGRAPH 2003 paper, then the pattern would be sufficiently continuous for our approach.

Another incorrectness of our mipmap filtering is that we cannot build the mipmap all the way to the lowest resolution for the output virtual texture, since the lowest resolution mipmap level is determined by the input packing. This means that below the lowest resolution of the input packing, the mipmap filtering of the output is incorrect.

Both issues are not visible for practical situations, considering that most textures reduce to semi-noisy homogeneous void at lower resolutions. Theoretically, as Hughes Hoppe suggested, only a modification of texture coordinates (as in Purnomo et al) is able to achieve correct mipmapping.

Thanks Hugues Hoppe for pointing this out.