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/pixelThe smallest unit in a computer image. Pixel size depends on your screen resolution. Pixel lighting is calculated at every screen pixel. More info
See in Glossary.
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 formats reference table for detailed information about all supported formats.
For Apple devices that use the A8 chip (2014) or above, ASTC is the recommended texture 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).
On iOS you can configure the default texture format in the Player SettingsSettings that let you set various player-specific options for the final game built by Unity. More info
See in Glossary. ASTC is preferred, but is not supported on A7 devices (the very first Metal-enabled devices) and will be unpacked at runtime.
For detailed information on all supported formats, refer to the Supported texture formats reference table.
Texture format support on Android is complicated. You might need to build several application versions with different sub-targets.
You can select the default format in Player Settings. Your options are ASTC, ETC2 and ETC (ETC1 for RGB, ETC2 for RGBA). See Texture compression settings for more details on how the different settings interact.
For LDR RGB and RGBA textures, most modern Android GPUs that support OpenGL ES 3.1 or Vulkan also support ASTC 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 OpenGL ES 3.0 support the ETC2 format.
The resulting image quality is quite high, and it supports one- to four-component texture data.
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 utility that packs several sprite textures tightly together within a single texture known as an atlas. More info
See in Glossary. The sprite shaderA program that runs on the GPU. More info
See in Glossary samples both textures and combines them into the final result.
For older Android devices that don’t support the ASTC format, the texture is decompressed into an uncompressed RGBA 32-bit format. This increases memory usage and can slow down the decompression performed on the CPU.
For HDRhigh dynamic range
See in Glossary 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.
If a device doesn’t support ASTC HDR the texture is decompressed at runtime to RGB9e5 or RGBA Half, depending on alpha channel usage.
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.
If you want to distribute your application to Google Play, it’s best practice to use texture compression targeting.
See the Supported texture formats reference table for detailed information about all supported formats.