Real-Time YCoCg-DXT Compression
J.M.P. van Waverenid Software, Inc.Ignacio CastañoNVIDIA Corp.September 14th 2007© 2007, id Software, Inc.Abstract
A high performance texture compression technique is introduced, which exploits theDXT5 format available on today's graphics cards. The compression techniqueprovides a very good middle ground between DXT1 compression and nocompression. Using the DXT5 format, textures consume twice the amount of memory of DXT1-compressed textures (a 4:1 compression ratio instead of 8:1). Inreturn, however, the technique provides a significant gain in quality, and for mostimages, there is almost no noticeable loss in quality. In particular there is aconsistent gain in RGB-PSNR of 6 dB or more for the Kodak Lossless True ColorImage Suite. Furthermore, the technique allows for both real-time texturedecompression during rasterization on current graphics cards, and high quality real-time compression on the CPU and GPU.
Textures are digitized images drawn onto geometric shapes to add visual detail. In today'scomputer graphics a tremendous amount of detail is mapped onto geometric shapes duringrasterization. Not only are textures with colors used, but also textures specifying surface properties(such as specular reflection) or fine surface details (in the form of normal or bump maps). All thesetextures can consume large amounts of system and video memory. Fortunately, compression canbe used to reduce the amount of memory required to store textures. Most of today's graphics cardsallow textures to be stored in a variety of compressed formats that are decompressed in real-timeduring rasterization. One such format, which is supported by most graphics cards, is S3TC -- alsoknown as DXT compression [1,2].
Compressed textures not only require significantly less memory on the graphics card, but alsogenerally render faster than uncompressed textures, due to reduced bandwidth requirements. Somequality may be lost due to the compression. However, the reduced memory footprint allows higherresolution textures to be used such that there can actually be a significant gain in quality.
The DXT1 format [1,2] is designed for real-time decompression in hardware on the graphics card
during rendering. DXT1 is a lossy compression format with a fixed compression ratio of 8:1. DXT1compression is a form of Block Truncation Coding (BTC)  where an image is divided into non-overlapping blocks, and the pixels in each block are quantized to a limited number of values. Thecolor values of pixels in a 4x4 pixel block are approximated with equidistant points on a line throughRGB color space. This line is defined by two end-points, and for each pixel in the 4x4 block a 2-bitindex is stored to one of the equidistant points on the line. The end-points of the line through colorspace are quantized to 16-bit 5:6:5 RGB format and either one or two intermediate points aregenerated through interpolation. The DXT1 format allows a 1-bit alpha channel to be encoded, byswitching to a different mode based on the order of the end points, where only one intermediatepoint is generated and one additonal color is specified, which is black and fully transparent.