ARM Unveils Details of ASTC Texture Compression
The details of ARM's Adaptive Scalable Texture Compression (ASTC) technology were launched this week at the High Performance Graphics conference in Paris, France.
In a paper entitled "Adaptive Scalable Texture Compression", Tom Olson describe a fixed-rate, lossy texture compression system that is designed to offer an flexibility and to support a very wide range of use cases, while providing better image quality than most formats in common use today. ARM claims that quality offered by ASTC is universally better than existing texture compression schemes for LDR images, and is comparable to the de facto industry standard for HDR.
The system supports both 2D and 3D textures, at both standard and high dynamic range, at bit rates ranging from eight bits per pixel down to less than one bit per pixel in very fine steps. At any bit rate, texels can have from one to four color components.
The system's flexibility results from a number of features. Color spaces and weights are represented using an encoding scheme that allows flexible allocation of bits between different types of information. The system uses bilinear interpolation to derive color space coordinates for a texel from sparse samples, and uses a procedural partition function to map texels to color spaces.
ARM claims that ASTC offers a number of advantages over existing texture compression schemes. It is flexible, allowing bit rates from 8 bits per pixel (bpp) down to less than 1 bpp. This allows content developers to fine-tune the tradeoff of space against quality. It also supports from 1 to 4 color channels, together with modes for uncorrelated channels for use in mask textures and normal maps. ASTC supports both low dynamic range (LDR) and high dynamic range (HDR) images, both 2D and 3D images and finally, all of these features are interoperable, allowing developers to choose any combination that suits their needs.
According to the paper presented on Wednesday 27 at the High Performance Graphics conference in Paris, France, ASTC, like all current texture compression schemes, divides the image into fixed-size blocks. These blocks cover a fixed-size "footprint" in the texture image, and are encoded using a fixed number of bits. This feature makes it possible to access texels quickly in any order, with a well-bounded cost for that access.
This is in contrast to stream-based, variable-bitrate image formats such as PNG, where the decoding process requires that you have decoded the previous texels in the image. Obviously, this would be a problem if the texels you wish to access are at the bottom right of the texture.
The 2D block footprints in ASTC range from 4x4 texels up to 12x12. By dividing the 128 bits by the number of texels in the footprint, we derive bit rates from 8 bpp (128 bits / 16 texels) down to 0.89 bpp (128 bits / 144 texels).
In the simplest case, the encoder analyses each block in isolation and selects two colors which define the end points of a line in the color space. The approximate colors of texels can then be reconstructed from these color endpoints by interpolating between them. For each texel in the footprint, a weight value is stored, and the weighted average calculated. The weight, mathematically, is a value in the range 0 to 1, but for storage this is quantized to a few bits. Selecting the endpoint colors and the weights to make an optimal match to the texel colors in the original block is the job of the encoder.
Most of the existing formats use similar methods. However, most schemes use a fixed split between the number of bits used to represent the endpoint colors, and the number of bits used to represent the color weights.
Some formats offer different precision at different bit rates, but the number of bits for endpoints and weights is determined globally by the block footprint.
Sean Ellis technical staff in ARM's Media Processing Division, has posted more information online describing the ASTC compression scheme.
The system supports both 2D and 3D textures, at both standard and high dynamic range, at bit rates ranging from eight bits per pixel down to less than one bit per pixel in very fine steps. At any bit rate, texels can have from one to four color components.
The system's flexibility results from a number of features. Color spaces and weights are represented using an encoding scheme that allows flexible allocation of bits between different types of information. The system uses bilinear interpolation to derive color space coordinates for a texel from sparse samples, and uses a procedural partition function to map texels to color spaces.
ARM claims that ASTC offers a number of advantages over existing texture compression schemes. It is flexible, allowing bit rates from 8 bits per pixel (bpp) down to less than 1 bpp. This allows content developers to fine-tune the tradeoff of space against quality. It also supports from 1 to 4 color channels, together with modes for uncorrelated channels for use in mask textures and normal maps. ASTC supports both low dynamic range (LDR) and high dynamic range (HDR) images, both 2D and 3D images and finally, all of these features are interoperable, allowing developers to choose any combination that suits their needs.
According to the paper presented on Wednesday 27 at the High Performance Graphics conference in Paris, France, ASTC, like all current texture compression schemes, divides the image into fixed-size blocks. These blocks cover a fixed-size "footprint" in the texture image, and are encoded using a fixed number of bits. This feature makes it possible to access texels quickly in any order, with a well-bounded cost for that access.
This is in contrast to stream-based, variable-bitrate image formats such as PNG, where the decoding process requires that you have decoded the previous texels in the image. Obviously, this would be a problem if the texels you wish to access are at the bottom right of the texture.
The 2D block footprints in ASTC range from 4x4 texels up to 12x12. By dividing the 128 bits by the number of texels in the footprint, we derive bit rates from 8 bpp (128 bits / 16 texels) down to 0.89 bpp (128 bits / 144 texels).
In the simplest case, the encoder analyses each block in isolation and selects two colors which define the end points of a line in the color space. The approximate colors of texels can then be reconstructed from these color endpoints by interpolating between them. For each texel in the footprint, a weight value is stored, and the weighted average calculated. The weight, mathematically, is a value in the range 0 to 1, but for storage this is quantized to a few bits. Selecting the endpoint colors and the weights to make an optimal match to the texel colors in the original block is the job of the encoder.
Most of the existing formats use similar methods. However, most schemes use a fixed split between the number of bits used to represent the endpoint colors, and the number of bits used to represent the color weights.
Some formats offer different precision at different bit rates, but the number of bits for endpoints and weights is determined globally by the block footprint.
Sean Ellis technical staff in ARM's Media Processing Division, has posted more information online describing the ASTC compression scheme.