New ASTC Guide Released by Arm
Texture compression is essential when optimizing games, especially for mobile devices. It helps developers lower memory bandwidth and footprint, gain better run-time performance, and reduce the download size of games.
ASTC (Adaptable Scalable Texture Compression) is an efficient texture compression standard for use with the Vulkan® and OpenGL® ES APIs, and is the only format for mobile devices that supports 3D and HDR textures. While reviewing our ASTC survey results, we discovered that one of the factors hindering ASTC adoption is the complexity of understanding and deploying the full power of this flexible technology.
To help overcome this barrier, Arm has released a new comprehensive ASTC Guide to help developers who wish to use ASTC technology to compress textures for 3D games and applications. The new guide contains a detailed ASTC algorithm overview, explains ASTC benefits, provides developers advice for achieving best compression results, and contains information on popular encoding tools -- as well as usage with game engines. Understanding ASTC’s features and encoding options can help developers achieve best quality results when compressing textures from various image formats -- as illustrated in this article.
Game Assets Compression
From the ASTC Guide, developers can learn how to choose appropriate compression settings, such as bitrate, and understand best practices for dealing with normal maps, masks, sRGB, and 3D textures.

Usage with graphics APIs
Integrating ASTC decompression into your engine is straightforward. In the Guide, Developers will find guidance and code snippets for using Khronos® ASTC extensions with OpenGL ES and Vulkan.
Tools
Developers need a texture tooling pipeline with both good output texture quality and fast compression speeds. The Guide covers existing ASTC compression tools, such as Arm ASTC-Encoder, Intel ISPC Texture Compressor, and AMD Compressonator.
Engines
Unity and Unreal Engine allow ASTC to be enabled for games and provide different settings to tune texture compression as required. Useful tips and tricks for developers using these engines are included in the Guide.
Example
Let’s take a look at an example 3D texture that consumes a lot of memory -- often used in simulations that provide a shader with grid structured data (signed distance fields, for example).
Arm has implemented a particle collision simulation in one of the included demos. A vertex shader undertakes physics simulations, with a single 3D texture representing the voxelized environment and being used to check for collisions.
The texture data in this case is huge! Compression becomes necessary to overcome hardware limitations and reduce memory bandwidth to an acceptable level. As ASTC has 3D texture support, it suits these needs perfectly.
Look at how much memory footprint and bandwidth can be saved using ASTC with various block sizes:
|
Texture Size (MB) |
Memory read bandwidth (MB/s) |
---|---|---|
Uncompressed |
82.62 |
752.18 |
ASTC 3x3x3 |
6.12 |
285.78 |
ASTC 4x4x4 |
2.63 |
179.43 |
ASTC 5x5x5 |
1.32 |
167.90 |
And here’s how it affects the texture quality:

Uncompressed |
ASTC 3x3x3 |
ASTC 4x4x4 |
ASTC 5x5x5 |
You can find more information about this demo here.
Check out the ASTC Guide!
For many more details about the ASTC features and benefits discussed here, the ASTC guide can be accessed here. Let us know what you think! Arm is collecting feedback and questions - please comment on this blog with your feedback -- we would love to hear from you!