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.
[sketch] [paper] [talk] [video (youtube)] [code]
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.