This page contains the following information:
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.
This page uses the following terminology:
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.
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 iOSApple’s mobile operating system. More info
See in Glossary, 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.
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 SpritesA 2D graphic objects. If you are used to working in 3D, Sprites are essentially just standard textures but there are special techniques for combining and managing sprite textures for efficiency and convenience during development. More info
See in Glossary, 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 AtlasA texture that is composed of several smaller textures. Also referred to as a texture atlas, image sprite, sprite sheet or packed texture. More info
See in Glossary. The sprite shaderA small script that contains the mathematical calculations and algorithms for calculating the Color of each pixel rendered, based on the lighting input and the Material configuration. More info
See in Glossary 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.
The following table shows the default formats used for each platform.
Platform | Color model | None | Normal quality (default) | High quality | Low quality (higher performance) |
---|---|---|---|---|---|
Windows, Linux, macOS | RGB | RGB 24 bit | RGB Compressed DXT1 | RGB(A) Compressed BC7 | RGB Compressed DXT1 |
RGBA | RGBA 32 bit | RGBA Compressed DXT5 | RGB(A) Compressed BC7 | RGBA Compressed DXT5 | |
HDR | RGBA Half | RGB Compressed BC6H | RGB Compressed BC6H | RGB Compressed BC6H | |
WebGLA JavaScript API that renders 2D and 3D graphics in a web browser. The Unity WebGL build option allows Unity to publish content as JavaScript programs which use HTML5 technologies and the WebGL rendering API to run Unity content in a web browser. More info See in Glossary |
RGB | RGB 24 bit | RGB Compressed DXT1 | RGB Compressed DXT1 | RGB Compressed DXT1 |
RGBA | RGBA 32 bit | RGBA Compressed DXT5 | RGBA Compressed DXT5 | RGBA Compressed DXT5 | |
Android (only when Don’t override is enabled in the build settings) | RGB | RGB 24 bit | RGB Compressed ETC | RGB Compressed ETC | RGB Compressed ETC |
RGBA | RGBA 32 bit | RGBA Compressed ETC2 | RGBA Compressed ETC2 | RGBA Compressed ETC2 | |
iOS | RGB | RGB 24 bit | RGB Compressed PVRTC 4 bits | RGB Compressed PVRTC 4 bits | RGB Compressed PVRTC 2 bits |
RGBA | RGBA 32 bit | RGBA Compressed PVRTC 4 bits | RGBA Compressed PVRTC 4 bits | RGBA Compressed PVRTC 2 bits | |
tvOS | RGB | RGB 24 bit | RGB Compressed ASTC 6x6 block | RGB Compressed ASTC 4x4 block | RGB Compressed ASTC 8x8 block |
RGBA | RGBA 32 bit | RGBA Compressed ASTC 6x6 block | RGBA Compressed ASTC 4x4 block | RGBA Compressed ASTC 8x8 block | |
Default | RGBA | RGBA 32 bit | RGBA 16 bit | RGBA 16 bit | RGBA 16 bit |
The table below shows each compression format available in Unity, and the platforms that support it.
Texture compression format | Description | Channels | Quality | Bits per pixel | Size of 1024x1024 texture, in MB | Windows | Mac | Linux | Android | iOS & tvOS | WebGL |
---|---|---|---|---|---|---|---|---|---|---|---|
RGB(A) Compressed BC7 | Compressed RGB or RGBA | RGB or RGBA | High | 8 | 1 | yes (1) | yes (1) | yes | no | no | no |
RGBA Compressed DXT5 | Compressed RGBA (also known as BC3) | RGBA | Medium | 8 | 1 | yes | yes | yes | no (3) | no | partial (2) |
RGBA Crunched DXT5 | Compressed RGBA, with additional on-disk Crunch compression | RGBA | Low to medium | Variable | Variable | yes | yes | yes | no (3) | no | partial (2) |
RGBA 64 bit | Uncompressed RGBA, very high precision | RGBA | Very high | 64 | 8 | yes | yes | yes | partial (6) | yes | no |
RGBA 32 bit | Uncompressed RGBA | RGBA | High | 32 | 4 | yes | yes | yes | yes | yes | yes |
RGBA 16 bit | Quantized RGBA | RGBA | Medium | 16 | 2 | yes | yes | yes | yes | yes | yes |
RGB Compressed DXT1 | Compressed RGB (also known as BC1) | RGB | Medium | 4 | 0.5 | yes | yes | yes | no (3) | no | partial (2) |
RGB Crunched DXT1 | Compressed RGB, with additional on-disk Crunch compression | RGB | Low to medium | Variable | Variable | yes | yes | yes | no (3) | no | partial (2) |
RGB 48 bit | Uncompressed RGB, very high precision. Converted to RGBA 64 bit for the GPU | RGB | Very high | 48 disk, 64 GPU | 6 disk, 8 GPU | yes | yes | yes | partial (6) | yes | no |
RGB 24 bit | Uncompressed RGB. Converted to RGBA 32 bit for the GPU | RGB | High | 24 disk, 32 GPU | 3 disk, 4 GPU | yes | yes | yes | yes | yes | yes |
RGB 16 bit | Quantized RGB | RGB | Medium | 16 | 2 | yes | yes | yes | yes | yes | yes |
RG Compressed BC5 | Compressed two channel (RG) | RG | High | 8 | 1 | yes | yes | yes | no | no | no |
RG 32 bit | Uncompressed two channel (RG), very high precision | RG | Very high | 32 | 4 | yes | yes | yes | partial (6) | yes | no |
R Compressed BC4 | Compressed single channel (R) | R | High | 4 | 0.5 | yes | yes | yes | no | no | no |
R 8 | Uncompressed single channel (R) | R | High | 8 | 1 | yes | yes | yes | partial (5) | yes | partial (5) |
R 16 bit | Uncompressed single channel (R), very high precision | R | Very high | 16 | 2 | yes | yes | yes | partial (6) | partial (6) | no |
Alpha 8 | Uncompressed single channel (A) | A | High | 8 | 1 | yes | yes | yes | yes | yes | yes |
RGBA Half | HDR, half-precision (FP16) RGBA, –64k to +64k range | RGBA | High | 64 | 8 | yes | yes | yes | partial (7) | yes | partial (7) |
RGB Compressed BC6H | HDR, compressed RGB, 0 to +64k range | RGB | High | 8 | 1 | yes (1) | yes (1) | yes | no | no | no |
RGB9e5 32 Bit Shared Exponent Float | HDR, quantized RGB, 0 to +64k range | RGB | Medium | 32 | 4 | yes | yes | yes | partial (4) | yes | partial (4) |
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 | no | no | no | partial (8) | yes (10) | no |
RGBA Compressed ETC2 | Compressed RGBA | RGBA | Medium | 8 | 1 | no | no | no | partial (9) | yes | no |
RGBA Crunched ETC2 | Compressed RGBA, with additional on-disk Crunch compression | RGBA | Low to medium | Variable | Variable | no | no | no | partial (9) | yes | no |
RGB + 1-bit Alpha Compressed ETC2 4 bits | Compressed RGBA, with alpha values fully opaque or fully transparent | RGBA | Medium | 4 | 0.5 | no | no | no | partial (9) | yes | no |
RGBA Compressed PVRTC 4 bits | Compressed RGBA, texture required to be square | RGBA | Medium | 4 | 0.5 | no | no | no | no (12) | yes | no |
RGBA Compressed PVRTC 2 bits | Compressed RGBA, texture required to be square | RGBA | Low | 2 | 0.25 | no | no | no | no (12) | yes | no |
RGB Compressed ETC2 | Compressed RGB | RGB | Medium | 4 | 0.5 | no | no | no | partial (9) | yes | no |
RGB Compressed ETC | Compressed RGB | RGB | Low | 4 | 0.5 | no | no | no | yes | yes | no |
RGB Crunched ETC | Compressed RGB, with additional on-disk Crunch compression | RGB | Low | Variable | Variable | no | no | no | yes | yes | no |
RGB Compressed PVRTC 4 bits | Compressed RGB, texture required to be square | RGB | Medium | 4 | 0.5 | no | no | no | no (12) | yes | no |
RGB Compressed PVRTC 2 bits | Compressed RGB, texture required to be square | RGB | Low | 2 | 0.25 | no | no | no | no (12) | yes | no |
RG Compressed EAC 8 bit | Compressed two channel (RG) | RG | High | 8 | 1 | no | no | no | partial (9) | yes | no |
R Compressed EAC 4 bit | Compressed single channel (R) | R | High | 4 | 0.5 | no | no | no | partial (9) | yes | no |
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 | no | no | no | partial (11) | partial (11) | no |
Notes: