4.2.3 ASTC texture compression

ASTC texture compression is an official extension to the OpenGL and OpenGL ES graphics APIs. ASTC can reduce the memory required by your application and reduce the memory bandwidth required by the GPU.

ASTC offers texture compression with high quality, low bitrate and has many control options. It includes the following features:
The following figure shows the ASTC settings window:
Figure 4-16 ASTC settings

There are a number of block size options available in the ASTC settings window. You can choose among these options and select the block size that best fits the assets. The larger block sizes provide higher compression. Select large block sizes for textures that are not shown in great detail, for example, objects far away from camera. Select smaller block sizes for textures that are show more detail, for example those closer to camera.

Note

  • If your device supports ASTC, use it to compress the textures in your 3D content. If your device does not support ASTC, try using ETC2.
  • You must differentiate between textures used in 3D content from textures used in the GUI elements. In some cases it might be best to leave the GUI textures uncompressed to avoid unwanted artifacts.
The following figure shows the block sizes available for different texture compression formats:
Figure 4-17 Texture compression block sizes

Selecting the correct format for ASTC textures

When compressing an ASTC texture, there are a number of options to choose from.

Texture compression algorithms have different channels formats, typically RGB and RGBA. ASTC supports several other formats, but these formats are not exposed within Unity. Each texture is typically used for a different purpose such as, standard texturing, normal mapping, specular, HDR, alpha, and look up textures. All of these texture types require a different compression format to achieve the best possible results.
The following figure shows texture settings:
Figure 4-18 Texture settings

Do not compress all of your textures with one format in Build Settings. Keep texture compression as Don’t Override.
Find your texture within the project hierarchy and bring it up in the Inspector. Unity typically imports your texture as the type Texture. This type only provides limited options for compression. Set the type to Advanced to show a larger choice of options.
The following diagram shows setting for a GUI texture with some transparency. The texture is for a GUI, so sRGB and MipMaps are disabled. To include transparency, you require the alpha channel. To enable this, tick the Alpha Is Transparency box and tick the Override for Android box.
The following figure shows advanced texture settings:
Figure 4-19 Advanced texture settings

There is an option to select a format and block size. RGBA includes the alpha channel and 4x4 is the smallest block size you can select. Set Max texture size to the maximum and set Compression Quality, this setting defines how much time is spent looking for accurate compression.
Selecting specific settings for all of your textures improves the visual quality of your project and avoids unnecessary texture data at compression time.
The following table shows the compression ratio for the available ASTC block sizes in Unity for an RGBA 8 bits per channel texture with a 1024x1024 pixel resolution at 4 MB in size.

Table 4-1 Compression ratios for the ASTC block sizes available in Unity

ASTC block size Size Compression ratio
4x4 1 MB 4.00
5x5 655 KB 6.25
6x6 455 KB 9.00
8x8 256 KB 16.00
10x10 164 KB 24.97
12x12 144 KB 35.93
Non-ConfidentialPDF file icon PDF versionARM 100140_0201_00_en
Copyright © 2014, 2015 ARM. All rights reserved.