Game Developer Adoption and Attitudes Towards ASTC Texture Compression
ASTC (Adaptable Scalable Texture Compression) is an exceptionally efficient compression technology, which allows encoding of a wide variety of texture formats at bit-rates of 8 bits per pixel to below 1 bit per pixel. ASTC was contributed by Arm, developed under the cooperative process at Khronos® and is royalty-free when used with Khronos’ OpenGL® ES and Vulkan® APIs. ASTC enables the size of textures used in 3D games and applications to be significantly reduced while being downloaded and stored – saving memory size, access bandwidth and reducing overall application size while retaining high image quality. These benefits are especially valuable on mobile platforms leading to ASTC becoming the most widely used texture compression format for Vulkan and OpenGL ES applications on Android.
In February 2020, Arm made its open source ASTC encoder available under the widely accepted Apache 2.0 license, enabling developers everywhere to easily generate ASTC textures during application development. Meanwhile, Khronos’ glTF™ 3D asset format standard, is adding ASTC support to enable glTF Universal Textures to be decoded into ASTC on the fly on the target system.
With these recent developments we wanted to reach out to the developer community to explore how ASTC is being used, and whether there are remaining barriers to adoption that Khronos and Arm can help address. Consequently, Arm conducted a game developer survey to learn:
- How many game developers are adopting ASTC?
- Are there missing features from the ASTC encoder or format?
- What are developers’ favorite, or least favorite, aspects of ASTC?
Below are some of the key findings.
We got 121 answers from developers targeting a wide variety of platforms and game engines. See the demographics below:
Game engine used
We found that most developers use texture compression throughout development, rather than turning it on just before release:
How often do you use texture compression?
We also asked what makes a texture compression format good to work with in general. Compression size, compression speed and consistency of quality were the top three results.
How many game developers use ASTC and why?
Next, we found that the majority of game developers are using, or have considered using, ASTC - including almost all developers using a custom engine. Developers using off-the-shelf game engines sometimes prefer to use the default texture compression format used in that engine.
Do you use or have you considered using ASTC?
Why DO you use ASTC?
When we asked developers why they chose to use ASTC, the three most popular features were compression size, image quality and widespread hardware support.
Why DON’T you use ASTC?
Next , we wanted to find out what were the main reasons when developers chose NOT to use ASTC. It turns out that the main reason was lack of hardware support - it cuts both ways! We found that for developers focused purely on mobile, ATSC’s widespread hardware support in Android devices with 3D APIs later than OpenGL ES 2.0 was very attractive. However for developers that target desktop and console platforms, lack of widespread ASTC support on those platforms was a barrier to adoption. This is an ecosystem issue that will be helped with glTF’s Universal Textures, which enables developers to encode their textures to be smaller than JPEG images and then easily transcode them to almost any GPU texture format that is available on the destination platform – including ASTC.
There were two other smaller, related areas of concern for developers adopting ASTC: encoder speed and complexity.
If you are using ASTC, which ASTC Encoder are you using?
So, we asked what were the most popular ASTC encoders in use and, of the standalone encoders, we found that Arm’s is the most popular.
For users of the Arm encoder, we have good news! Following these survey results, Arm is working to release an improved ASTC reference encoder in the next few months with improved encoder speed, together with expanded documentation and examples on how to use ASTC. For example, Arm has recently added the ASTC Format Overview, explaining in detail ATSC’s operation and the available configuration options. Additionally, case studies are being published online, with the latest being “H igh quality RGBM texture compression with ASTC”.
Pete Harris, a Technical Product Director at Arm, has produced some benchmark analysis that you can find in his personal GitHub under ASTC compressors compared.
We found that ASTC is widely adopted and used on the Android platform and is providing great compression and image quality for OpenGL ES and Vulkan applications. Lack of ASTC support on PCs and consoles is hindering adoption outside mobile, but content that uses glTF Universal Textures will enable ASTC to be easily and incrementally employed on any platform that decides to take advantage of ASTC’s flexibility and quality. ASTC encoder performance and complexity are being addressed by Arm with an upgraded encoder release and associated documentation.
Stay tuned over the next few months for more information and developments related to ASTC technology!