Adaptive scalable texture compression
Adaptive scalable texture compression (ASTC) is a lossy block-based texture compression algorithm developed by Jørn Nystad et al. of ARM Ltd. and AMD.[1]
Full details of ASTC were first presented publicly at the High Performance Graphics 2012 conference, in a paper by Olson et al. entitled "Adaptive Scalable Texture Compression".[2]
ASTC was adopted as an official extension for both OpenGL and OpenGL ES by the Khronos Group on 6 August 2012.[3]
Hardware support
Vendor/product | Profile | Generation |
---|---|---|
AMD Radeon | ? | |
Apple GPUs | LDR only | A8 through A12[4] |
Full | Since A13[4] | |
Arm Mali | Full | Since Mali-T620/T720/T820[5] |
Imagination PowerVR | Full | Since Series6XT[6] |
Intel GPUs | Full[7] | From Skylake[8] ; Removed in Arc / Gen12.5[9] |
Nvidia Tegra | ? | Since Kepler[10] |
Qualcomm Adreno | LDR only[better source needed] | Since 4xx series[11] |
On Linux, all Gallium 3D drivers have a software fallback since 2018, so ASTC can be used on any AMD Radeon GPU.[12]
Overview
The method of compression is an evolution of Color Cell Compression with features including numerous closely spaced fractional bit rates, multiple color formats, support for high-dynamic-range (HDR) textures, and real 3D texture support.
The stated primary design goal for ASTC is to enable content developers to have better control over the space/quality tradeoff inherent in any lossy compression scheme. With ASTC, the ratio between adjacent bit rates is of the order of 25%, making it less expensive to increase quality for a given texture.
Encoding different assets often requires different color formats. ASTC allows a wide choice of input formats, including luminance-only, luminance-alpha, RGB, RGBA, and modes optimized for surface normals. The designer can thus choose the optimal format without having to support multiple different compression schemes.
The choices of bit rate and color format do not constrain each other, so that it's possible to choose from a large number of combinations.
Despite this flexibility, ASTC achieves better peak signal-to-noise ratios than PVRTC, S3TC, and ETC2 when measured at 2 and 3.56 bits per texel.[2] For HDR textures, it produces results comparable to BC6H at 8 bits per texel.[2]
Supported color formats
Encoding Format | Description |
---|---|
L | Luminance-only |
LA | Luminance with transparency |
L+A | Luminance with uncorrelated transparency |
X+Y | Surface normals |
RGB | Full color |
XY+Z | Surface normals with uncorrelated Z |
RGBA | Full color with transparency |
RGB+A | Full color with uncorrelated transparency |
Each of these may be encoded as low or high dynamic range. The encoder selects color formats independently for each block in the image.
2D block footprints and bit rates
ASTC textures are compressed using a fixed block size of 128 bits, but with a variable block footprint ranging from 4×4 texels up to 12×12 texels. The available bit rates thus range from 8 bits per texel down to 0.89 bits per texel, with fine steps in between.
Block footprint | Bit rate | Increment |
---|---|---|
4×4 | 8.00 | 25% |
5×4 | 6.40 | 25% |
5×5 | 5.12 | 20% |
6×5 | 4.27 | 20% |
6×6 | 3.56 | 14% |
8×5 | 3.20 | 20% |
8×6 | 2.67 | 5% |
10×5 | 2.56 | 20% |
10×6 | 2.13 | 7% |
8×8 | 2.00 | 25% |
10×8 | 1.60 | 25% |
10×10 | 1.28 | 20% |
12×10 | 1.07 | 20% |
12×12 | 0.89 |
In the above table, the "Increment" column shows the additional storage required to store a texture using this bit rate, as compared to the next smallest. Block footprints are presented as width × height.
3D block footprints and bit rates
ASTC 3D textures are compressed using a fixed block size of 128 bits, as for 2D but with a variable block footprint ranging from 3×3×3 texels up to 6×6×6 texels. The available bit rates thus range from 4.74 bits per texel down to 0.59 bits per texel, with fine steps in between.
Block footprint | Bit rate | Increment |
---|---|---|
3×3×3 | 4.74 | 33% |
4×3×3 | 3.56 | 33% |
4×4×3 | 2.67 | 33% |
4×4×4 | 2.00 | 25% |
5×4×4 | 1.60 | 25% |
5×5×4 | 1.28 | 25% |
5×5×5 | 1.02 | 20% |
6×5×5 | 0.85 | 20% |
6×6×5 | 0.71 | 20% |
6×6×6 | 0.59 |
Block footprints are presented as width × height × depth.
See also
References
- ^ "Adaptive Scalable Texture Compression (ASTC) technology developed by ARM® and AMD".
- ^ a b c "Adaptive Scalable Texture Compression" (PDF). HPG 2012. Retrieved 2012-06-27.
- ^ "Khronos Releases ATSC Next-Generation Texture Compression Specification". The Khronos Group Inc. 2012-08-06. Retrieved 2012-08-06.
- ^ a b "Metal Feature Set Tables" (PDF). Apple Inc. 2020-10-21. Retrieved 2021-08-31.
- ^ "Arm Mali GPU Datasheet" (PDF). Arm Limited. 2021. Retrieved 2021-08-31.
- ^ "Imagination's new generation PowerVR Series6XT architecture delivers up to 50% higher performance and advanced power management". Imagination Technologies. 2014-01-06. Retrieved 2021-08-21.
- ^ "Intel Skylake Adds ASTC Texture Compression, Open-Source Support Coming". Phoronix. 2015-05-20. Retrieved 2021-08-31.
- ^ "Graphics API Developer's Guide For 6th Generation Intel® Core™ Processors". Archived from the original on 2017-07-20.
- ^ Michael Larabel (2021-10-07). "Intel Removes ASTC Hardware From Gen12.5+ Graphics". Phoronix. Retrieved 2022-07-10.
- ^ "Vulkan API" (PDF).
- ^ "Qualcomm® Adreno™ OpenGL ES Developer Guide" (PDF). Qualcomm. 2015-05-01. Retrieved 2021-08-31.
- ^ "[Mesa-dev] [PATCH 0/7] ASTC texture compression for all Gallium drivers". Lists.freedesktop.org. Retrieved 2022-09-01.