ASTC Texture Compression
|ARB extension||KHR_texture_compression_astc_hdr, KHR_texture_compression_astc_ldr|
Adaptable Scalable Texture Compression (ASTC) is a form of Texture Compression that uses variable block sizes, rather than a single fixed size. ASTC is designed to effectively obsolete all (or at least most) prior compressed formats by providing all of the features of the others plus more, all in one format.
- S3 Texture Compression
- ASTC has better peak signal-to-noise than DXT3/5 at the same block size. But because of ASTC's variable block size, ASTC can also beat DXT1's 4-bits-per-pixel, going as far down as 0.89bpp. At similar bitdepths, ASTC provides better visual quality than DXT1.
- BPTC Texture Compression
- BPTC provides two features: improved image quality for normalized integer formats and floating-point compression. The HDR profile of ASTC covers the latter, and ASTC's compression for the same bitrate is approximately equivalent to BPTC's normalized formats. ASTC also handles
- Red Green Texture Compression
- ASTC provides a single-channel and two-channel version, equivalent to RGTC's formats. What is important with RGTC, and the reason to use it rather than regular S3TC, is that the two channels are uncorrelated with one another. The gradient used for one channel has no relation to the gradient used for the other. So two axes that don't visually correlate will compress better for the same bpp.
- ASTC provides both correlated and uncorrelated two-channel compression.
- One feature of RGTC missing from ASTC (directly at least) is support for signed, normalized integer values. This can be approximated however by biasing the data (pre-compression) by 127 (assuming that you properly removed all -128 values from your data), to make it unsigned. Then, in the shader, multiplying the result sampled from the texture by 2 and subtracting 1 to reconstitute the signed value.
Of course, the downside is that ASTC is not widely available at present. It is available as an OpenGL extension, but it is not core OpenGL functionality.
|This article is a stub. You can help the OpenGL Wiki by expanding it.|
Variable block sizes
OpenGL image formats
The ASTC format defines additional functionality which has not yet been exposed to OpenGL. Specifically, it has the concept of volumetric compression, where the blocks are 3-dimensional blocks rather than two-dimensional blocks.