Real-Time Texture Streaming & Decompression


Introduction

Textures are digitized images drawn onto geometric shapes to add visual detail. In today's computer graphics a tremendous amount of detail is mapped onto geometric shapes during rasterization. Especially uniquely textured environments require huge amounts of texture data. Not only textures with colors are used but also textures specifying surface properties like specular reflection or fine surface details in the form of normal or bump maps. All these textures can consume large amounts of storage space and bandwidth. Fortunately compression can be used to reduce the storage and bandwidth requirements.

There are compressed texture formats like DXT or S3TC that can be decompressed in hardware during rasterization on current graphics cards. However, these formats are optimized for decompression in hardware and as such typically do not result in the best possible compression ratios. Graphics applications may use vast amounts of texture data that is not displayed all at once but streamed from disk as the view point moves or the rendered scene changes. Strong compression may be required to deal with such vast amounts of texture data to keep storage and bandwidth requirements within acceptable limits. As these textures are streamed from disk they have to be decompressed on the fly before they can be used for rendering on current graphics cards.

There are several formats like GIF, PNG and JPEG-LS for lossless compression of images. Lossless (reversible) image compression techniques preserve the information so that exact reconstruction of the image is possible from the compressed data. In other words there is no loss in quality when an image is compressed to one of these formats. However, these compression formats typically also do not result in compression ratios that are high enough to store vast amounts of texture data. In this article several different lossy compression formats and streaming solutions are evaluated for rendering textures from very large texture databases. Furthermore a compression format similar to JPEG and an SIMD optimized threaded pipeline is introduced to achieve high speed streaming of textures.


Download Entire Article [1.53MB PDF]

 

For more complete information about compiler optimizations, see our Optimization Notice.