| Three-dimensional (3D) computer graphics |
|---|
| Fundamentals |
| Primary uses |
| Related topics |
Texture compression is a specialized form ofimage compression designed for storingtexture maps in3D computer graphics rendering systems. Unlike conventional image compression algorithms, texture compression algorithms are optimized forrandom access.
Texture compression can be applied to reduce memory usage at runtime. Texture data is often the largest source of memory usage in a mobile application.[citation needed]
In their seminal paper on texture compression,[1] Beers, Agrawala and Chaddha list four features that tend to differentiate texture compression from other image compression techniques. These features are:
Given the above, most texture compression algorithms involve some form of fixed-ratelossyvector quantization of small fixed-size blocks of pixels into small fixed-size blocks of coding bits, sometimes with additional extra pre-processing and post-processing steps.Block Truncation Coding is a very simple example of this family of algorithms.
Because their data access patterns are well-defined, texture decompression may be executed on-the-fly during rendering as part of the overallgraphics pipeline, reducing overall bandwidth and storage needs throughout the graphics system. As well as texture maps, texture compression may also be used to encode other kinds of rendering map, includingbump maps andsurface normal maps. Texture compression may also be used together with other forms of map processing such asMIP maps andanisotropic filtering.
Some examples of practical texture compression systems areS3 Texture Compression (S3TC),PVRTC,Ericsson Texture Compression (ETC) andAdaptive Scalable Texture Compression (ASTC); these may be supported by special function units in modernGraphics processing units.
OpenGL and OpenGL ES, as implemented on many video accelerator cards and mobile GPUs, can support multiple common kinds of texture compression - generally through the use of vendor extensions.
A compressed-texture can be further compressed in what is called "supercompression". Fixed-rate texture compression formats are optimized for random access and are much less efficient compared to image formats such asPNG. By adding further compression, a programmer can reduce the efficiency gap. The extra layer can be decompressed by the CPU so that the GPU receives a normal compressed texture,[3] or in newer methods, decompressed by the GPU itself. Supercompression saves the same amount of VRAM as regular texture compression, but saves more disk space and download size.[4]
Random-Access Neural Compression of Material Textures (Neural Texture Compression) is aNvidia's technology which enables two additional levels of detail (16x moretexels, so four times higher resolution) while maintaining similar storage requirements as traditional texture compression methods.[5]
The key idea is compressing multiple material textures and theirmipmap chains together, and using a smallneural network, that is optimized for each material, to decompress them.[6]