Android
Default texture compression formats, by platform
Supported texture compression formats, by platform
This page does not contain information about console platforms. For information about console platforms, see the platform-specific documentation.
For an overview of texture compression formats, see
Texture compression formats
. For information about texture import settings and how to set up platform-specific overrides, see
Texture import settings
.
Terminology
This page uses the following terminology:
Bits per pixel (bpp)
is the amount of storage required for a single texture pixel. Textures with a lower bpp value have a smaller size on disk and in memory. A lower bpp value also means that the GPU can store more pixels in its cache, which results in faster texture access.
LDR (Low Dynamic Range) refers to most typical images where colors are conceptually between 0.0 (black) and 1.0 (white) values. The majority of image files (such as PNG and JPG) have low dynamic range.
HDR (High Dynamic Range) refers to special image and texture formats where colors can have a higher range than 0 through 1. Image file formats like .exr or .hdr are often used for HDR image data. At runtime and on the GPU, there are several HDR formats, trading off accuracy, range and memory usage.
RGB
is a color model in which red, green and blue combine to reproduce an array of colors.
RGBA
is a version of
RGB
with an alpha channel, which supports blending and opacity alteration.
Variable bit rate (VBR)
means that bits per pixel is not a fixed value, and depends on the actual content instead. VBR only applies to
Crunch compression
, and only texture size on disk. The size in memory is the same as when using the underlying texture format (for example, RGB Compressed DXT1 for RGB Crunched DXT1).
Desktop
For devices with DirectX 11 or better class GPUs, where support for BC7 and BC6H formats is guaranteed to be available, the recommended choice of compression formats is:
RGB textures - DXT1 at four bits/pixel.
RGBA textures - BC7 (higher quality, slower to compress) or DXT5 (faster to compress), both at eight bits/pixel.
HDR textures - BC6H at eight bits/pixel.
If you need to support DirectX 10 class GPUs on PC (NVIDIA GPUs before 2010, AMD before 2009, Intel before 2012), then DXT5 instead of BC7 would be preferred, since these GPUs do not support BC7 nor BC6H.
See the
Supported texture compression formats reference table
for detailed information about all supported formats.
iOS and tvOS
For Apple devices that use the A8 chip (2014) or above, ATSC is the recommended texture compression format for RGB and RGBA textures. This format allows you to choose between texture quality and size on a granular level: all the way from eight bits/pixel (4x4 block size) down to 0.89 bits/pixel (12x12 block size).
If support for older devices is needed, or you want additional Crunch compression, then Apple devices support ETC/ETC2 formats starting with A7 chip (2013).
For even older devices, PVRTC is the compression format to use.
On iOS, Unity’s default texture compression format is PVRTC, for the broadest possible compatibility. ASTC is preferred, but is not supported on A7 devices (the very first Metal-enabled devices) and will be unpacked at runtime.
See the
Supported texture compression formats reference table
for detailed information about all supported formats.
Android
Texture compression support on Android is complicated, and you might need to build several application versions with different
sub-targets
.
Unless your app targets specific hardware that supports a limited range of texture compression formats, you can choose between several compressed and uncompressed formats, which offer different trade-offs.
For LDR RGB and RGBA textures, most modern Android GPUs support ASTC compression format, including:
Qualcomm GPUs since Adreno 4xx / Snapdragon 415 (2015)
ARM GPUs since Mali T624 (2012)
NVIDIA GPUs since Tegra K1 (2014)
PowerVR GPUs since GX6250 (2014)
If you need support for older devices, or you want additional Crunch compression, then all GPUs that run Vulkan or Metal or OpenGL ES 3.0 support ETC2 format. The resulting image quality is quite high, and it supports one- to four-component texture data. OpenGL ES 2 devices do not support the ETC2 format, so Unity decompresses the texture at runtime to the format
ETC2 fallback
specifies.
For even older devices, usually only ETC format is available. The drawback is that there is no direct alpha channel support. For Sprites, Unity offers an option to use ETC1 compression by splitting a texture into two ETC1 textures: one for RGB, one for alpha. To enable this, enable the Android-specific
Split Alpha Channel
option for the Texture when importing a
Sprite Atlas
. The sprite shader samples both textures and combines them into the final result.
For HDR textures, ASTC HDR is the only compressed format available on Android devices. ASTC HDR requires Vulkan or
GL_KHR_texture_compression_astc_hdr
support. ASTC is the most flexible format.
For devices that don’t support ASTC HDR, all devices running Vulkan, Metal, or OpenGL ES 3.0 support RGB9e5, which is suitable for textures without an alpha channel. If an alpha channel or even wider support is needed, use RGBA Half. This takes twice as much memory as RGB9e5.
See the
Supported texture compression formats reference table
for detailed information about all supported formats.
Default texture compression formats, by platform
The following table shows the default formats used for each platform.
RGBA Compressed ASTC 6x6 block
RGBA Compressed ASTC 4x4 block
RGBA Compressed ASTC 8x8 block
Default
RGBA 32 bit
RGBA 16 bit
RGBA 16 bit
RGBA 16 bit
RGB(A) Compressed ASTC
Compressed RGB or RGBA, size & quality dependent on block size
RGB or RGBA
Low to high
12x12: 0.89, 10x10: 1.28, 8x8: 2, 6x6: 3.56, 5x5: 5.12, 4x4: 8
12x12: 0.11, 10x10: 0.16, 8x8: 0.25, 6x6: 0.45, 5x5: 0.64, 4x4: 1.0
partial (8)
yes (10)
RGBA Compressed ETC2
Compressed RGBA
Medium
partial (9)
RGBA Crunched ETC2
Compressed RGBA, with additional on-disk Crunch compression
Low to medium
Variable
Variable
partial (9)
RGB + 1-bit Alpha Compressed ETC2 4 bits
Compressed RGBA, with alpha values fully opaque or fully transparent
Medium
partial (9)
RGBA Compressed PVRTC 4 bits
Compressed RGBA, texture required to be square
Medium
no (12)
RGBA Compressed PVRTC 2 bits
Compressed RGBA, texture required to be square
no (12)
RGB Compressed ETC2
Compressed RGB
Medium
partial (9)
RGB Compressed ETC
Compressed RGB
RGB Crunched ETC
Compressed RGB, with additional on-disk Crunch compression
Variable
Variable
RGB Compressed PVRTC 4 bits
Compressed RGB, texture required to be square
Medium
no (12)
RGB Compressed PVRTC 2 bits
Compressed RGB, texture required to be square
no (12)
RG Compressed EAC 8 bit
Compressed two channel (RG)
partial (9)
R Compressed EAC 4 bit
Compressed single channel (R)
partial (9)
RGB(A) Compressed ASTC HDR
HDR, compressed RGB or RGBA, size & quality dependent on block size
RGB or RGBA
Low to High
12x12: 0.89, 10x10: 1.28, 8x8: 2, 6x6: 3.56, 5x5: 5.12, 4x4: 8
12x12: 0.11, 10x10: 0.16, 8x8: 0.25, 6x6: 0.45, 5x5: 0.64, 4x4: 1.0
partial (11)
partial (11)
Except on pre-DX11 level GPUs, or macOS when using OpenGL. When not supported, BC6H textures get decompressed to RGBA Half, and BC7 get decompressed to RGBA32 at load time.
With
linear rendering
on web browsers that do not support sRGB DXT, textures are decompressed to RGBA32 at load time.
Except on Android devices with NVIDIA Tegra GPUs; these do support DXT/BC formats.
Except on OpenGL ES 2.0 / WebGL 1.
When on OpenGL ES 2.0 / WebGL 1: requires GL_EXT_texture_rg extension support.
Requires GL_EXT_texture_norm16 or corresponding Vulkan capability on Android.
When on OpenGL ES 2.0 / WebGL 1: requires OES_texture_half_float extension support.
Requires Vulkan or
GL_KHR_texture_compression_astc_ldr
OpenGL ES extension.
Except on OpenGL ES 2.0; there ETC2 textures are decompressed into the format
ETC2 fallback
specifies in the
Android Build Settings
or on the Android tab for the
Platform-specific overrides
.
Except on Apple A7 chip devices (2013).
Android: requires
GL_KHR_texture_compression_astc_hdr
extension. iOS: requires A13 or later chip (2019). When not supported, the texture is decompressed to RGB9E5 format, losing the alpha channel.
Except on Android devices with Imagination PowerVR GPUs; these do support PVRTC formats.
Render Texture