While Unity supports many common image formats as source files for importing your TexturesAn image used when rendering a GameObject, Sprite, or UI element. Textures are often applied to the surface of a mesh to give it visual detail. More info
See in Glossary (such as JPG, PNG, PSD and TGA), these formats are not used during realtime renderingThe process of drawing graphics to the screen (or to a render texture). By default, the main camera in Unity renders its view to the screen. More info
See in Glossary by 3D graphics hardware such as a graphics card or mobile device. 3D graphics hardware requires Textures to be compressed in specialized formats which are optimised for fast Texture sampling. The various different platforms and devices available each have their own different proprietary formats.
By default, the Unity Editor automatically converts Textures to the most appropriate format to match the build target you have selected. Only the converted Textures are included in your build; your source AssetAny media or data that can be used in your game or Project. An asset may come from a file created outside of Unity, such as a 3D model, an audio file or an image. You can also create some asset types in Unity, such as an Animator Controller, an Audio Mixer or a Render Texture. More info
See in Glossary files are left in their original format, in your project’s Assets folder. However, on most platforms there are a number of different supported Texture compression formats to choose from. Unity has certain default formats set up for each platform, but in some situations you may want to override the default and pick a different compression format for some of your Textures (for example, if you are using a Texture as a mask, with only one channel, you might choose to use the BC4 format to save space while preserving quality).
To apply custom settings for each platform, use the Texture Importer to set default options, then use the Platform-specific overrides panel to override those defaults for specific platforms.
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, PS4Sony’s eighth generation video game console. See in Glossary, XBox OneMicrosoft’s eighth generation video game console. See in Glossary |
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 | |
HDRhigh dynamic range See in Glossary |
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 (default subTarget) | 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 | |
iOSApple’s mobile operating system. More info See in Glossary |
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 | |
RGBA | RGBA 32 bit | RGBA 16 bit | RGBA 16 bit | RGBA 16 bit |
The following table shows the Texture compression format options available on each platform, and the resulting compressed file size (based on a 256px-square image). Choosing a Texture compression format is a balance between file size and quality; the higher the quality, the greater the file size. In the description below, see the final file size of a in-game Texture of 256 by 256 pixelsThe 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.
When you use a Texture compression format that is not supported on the target platform, the Textures are decompressed to RGBA 32 and stored in memory alongside the compressed Textures. When this happens, time is lost decompressing Textures, and memory is lost because you are storing them twice. In addition, all platforms have different hardware, and are optimised to work most efficiently with specific compression formats; choosing non-compatible formats can impact your game’s performance. The table below shows supported platforms for each compression format.
Notes on the table below:
RGB is a color model in which red, green and blue are added together in various ways to reproduce a broad array of colors.
RGBA is a version of RGB with an alpha channel, which supports blending and opacity alteration.
Crunch compression is a lossy compression format (meaning that parts of the data are lost during compression) on top of DXT or ETC Texture compression. Textures are decompressed to DXT or ETC on the CPU, and then uploaded to the GPU at run time. Crunch compression helps the Texture use the lowest possible amount of space on disk and for downloads. Crunch Textures can take a long time to compress, but decompression at run time is very fast.
Texture compression format | Description |
Size for a 256x256 pixel Texture |
Platform Support |
---|---|---|---|
RGB Compressed DXT1 | Compressed unsigned normalised integer RGB Texture. | 32KB (4 bits per pixel) | Windows, Linux, macOS, PS4, XBox One, Android (Nvidia Tegra and Intel Bay Trail), WebGL Note: With linear rendering on web browser that doesn’t support sRGB DXT, textures are uncompressed at run time to RGBA32. |
RGB Crunched DXT1 | Similar to RGB Compressed DXT1, but compressed using Crunch compression. See Notes, above, for more on crunch compression. | Variable, depending on the complexity of the content in the texture. | Windows, Linux, macOS, PS4, XBox One, Android (Nvidia Tegra and Intel Bay Trail), WebGL Note: With linear rendering on a web browser that doesn’t support sRGB DXT, textures are uncompressed at run time to RGBA32. |
RGBA Compressed DXT5 | Compressed unsigned normalised integer RGBA Texture. 8 bits per pixel. | 64KB (8 bits per pixel) | Windows, Linux, macOS, PS4, XBox One, Android (Nvidia Tegra and Intel Bay Trail), WebGL Note: With linear rendering on a web browser that doesn’t support sRGB DXT, textures are uncompressed at run time to RGBA32. |
RGBA Crunched DXT5 | Similar to RGBA Compressed DXT5, but compressed using Crunch compression. See Notes, above, for more on crunch compression. | Variable, depending on the complexity of the content in the texture. | Windows, Linux, macOS, PS4, XBox One, Android (Nvidia Tegra and Intel Bay Trail), WebGL Note: With linear rendering on a web browser that doesn’t support sRGB DXT, textures are uncompressed at run time to RGBA32. |
RGB Compressed BC6H | Compressed unsigned float/High Dynamic Range (HDR) RGB Texture. | 64KB (8 bits per pixel) | Windows Direct3D 11: OpenGL 4, Linux. Note: BC6H Textures are uncompressed at run time to RGBA half on the following platform configurations: - macOS with OpenGL - Platforms with Direct3D 10 Shader Model 4 or OpenGL 3 GPUs. |
RGB(A) Compressed BC7 | High-quality compressed unsigned normalised integer RGB or RGBA Texture. | 64KB (8 bits per pixel) | Windows Direct3D 11: OpenGL 4, Linux Note: BC7 Textures are uncompressed at run time to RGBA 32bits on the following platform configurations: - macOS with OpenGL - Platforms with Direct3D 10 Shader Model 4 Platforms with OpenGL 3 GPUs. |
RGB Compressed ETC | Compressed RGB Texture. This is the default texture compression format for textures without an alpha channel for Android projects. | 32KB (4 bits per pixel) | Android, iOS, tvOS. Note: ETC1 is supported by all OpenGL ES 2.0 GPUs. It does not support alpha. |
RGB Crunched ETC | Similar to RGB Compressed ETC, but compressed using Crunch compression. See Notes above for more on crunch compression. | Variable, depending on the complexity of the content in the texture. | Android, iOS, tvOS. |
RGB Compressed ETC2 | Compressed RGB Texture. | 32KB (4 bits per pixel) | Android (OpenGL ES 3.0) Note: On Android platforms that don’t support ETC2, the texture is uncompressed at run time to the format specified by ETC2 fallback in the Build Settings. |
RGBA Compressed ETC2 | Compressed RGBA Texture. This is the default Texture compression format for textures with alpha channel for Android projects. | 64KB (8 bits per pixel) | Android (OpenGL ES 3.0), iOS (OpenGL ES 3.0), tvOS (OpenGL ES 3.0) Note: On iOS and tvOS devices that don’t support ETC2, the texture is uncompressed at run time to RGBA32. On Android platforms that don’t support ETC2, the texture is uncompressed at run time to the format specified by ETC2 fallback in the Build Settings. |
RGBA Crunched ETC2 | Similar to RGBA Compressed ETC2, but compressed using Crunch compression. See Notes above for more on crunch compression. | Variable, depending on the complexity of the content in the texture. | Android (OpenGL ES 3.0), iOS (OpenGL ES 3.0), tvOS (OpenGL ES 3.0) Note: On iOS and tvOS devices that don’t support ETC2, the texture is uncompressed at run time to RGBA32. On Android platforms that don’t support ETC2, the texture is uncompressed at run time to the format specified by ETC2 fallback in the Build Settings. |
RGB Compressed ASTC | Variable block size compressed RGB Texture. | 12x12: 0.89 bits per pixel (7.56KB for a 256x256 Texture) 10x10: 1.28 bits per pixel (10.56KB for a 256x256 Textures) 8x8: 2 bits per pixel (16KB for a 256x256 Texture); 6x6: 3.56 bits per pixel (28.89KB for a 256x256 Texture) 5x5: 5.12 bits per pixel (42.25KB for a 256x256 Texture) 4x4: 8 bits per pixel (64KB for a 256x256 Texture) |
tvOS (all), iOS (A8), Android (PowerVR 6XT, Mali T600 series, Adreno 400 series, Tegra K1). |
RGBA Compressed ASTC | Variable block size compressed RGBA Texture. | 12x12: 0.89 bits per pixel (7744 bytes for a 256x256 Texture) 10x10: 1.28 bits per pixel (10816 bytes for a 256x256 Textures) 8x8: 2 bits per pixel (16KB for a 256x256 Texture); 6x6: 3.56 bits per pixel (29584 bytes for a 256x256 Texture) 5x5: 5.12 bits per pixel (43264 bytes for a 256x256 Texture) 4x4: 8 bits per pixel (64KB for a 256x256 Texture) |
tvOS (all), iOS (A8), Android (PowerVR 6XT, Mali T600 series, Adreno 400 series, Tegra K1). |
RGB Compressed PVRTC 2 bits | High-compression RGB Texture. Low quality, but lower size, resulting in higher performance. | 16KB (2 bits per pixel) | Android (PowerVR), iOS, tvOS. |
RGBA Compressed PVRTC 2 bits | High-compression RGBA Texture. Low quality, but lower size, resulting in higher performance. | 16KB (2 bits per pixel) | Android (PowerVR), iOS, tvOS. |
RGB Compressed PVRTC 4 bits | Compressed RGB Texture. High-quality Textures, particularly on color data, but can take a long time to compress. | 32KB (4 bits per pixel) | Android (PowerVR), iOS, tvOS. |
RGBA Compressed PVRTC 4 bits | Compressed RGB Texture. High-quality Textures, particularly on color data, but can take a long time to compress. | 32KB (4 bits per pixel) | Android (PowerVR), iOS, tvOS. |
RGB Compressed ATCAMD’s texture compression format for handheld devices to save on power, memory and bandwidth See in Glossary |
Compressed RGB Texture. | 32KB (4 bits per pixel) | Android (Qualcomm - Adreno), iOS, tvOS. |
RGBA Compressed ATC | Compressed RGBA Texture. | 64KB (8 bits per pixel) | Android (Qualcomm - Adreno), iOS, tvOS. |
RGB 16 bit | 65 thousand colors with no alpha. Uses more memory than the compressed formats, but could be more suitable for UI(User Interface) Allows a user to interact with your application. More info See in Glossary or crisp Textures without gradients. |
128KB (16 bits per pixel) | All platforms. |
RGB 24 bit | True color, but without alpha. | 192KB (24 bits per pixel) | All platforms |
Alpha 8 | High-quality alpha channel, but without any color. | 64KB (8 bits per pixel) | All platforms. |
RGBA 16 bit | Low-quality true color. This is the default compression for Textures that have an alpha channel. | 128KB (16 bits per pixel) | All platforms. |
RGBA 32 bit | True color with alpha. This is the highest quality compression for Textures that have an alpha channel. | 256KB (32 bits per pixel) | All platforms. |
You can import Textures from DDS files, but only DXT, BC compressed formats, or uncompressed pixel formats are supported.
Unless you’re targeting specific hardware (such as Tegra), ETC2 compression is the most efficient option for Android, offering the best balance of quality and file size (with associated memory size requirements). If you need an alpha channel, you could store it externally and still benefit from a lower Texture file size.
You can use ETC1 for Textures that have an alpha channel, but only if the build is for Android and the Textures are placed on an atlas (by specifying the packing tag). To enable this, tick the Compress using ETC1 checkbox for the Texture. Unity splits the resulting atlas into two Textures, each without an alpha channel, and then combines them in the final parts of the render pipeline.
To store an alpha channel in a Texture, use RGBA16 bit compression, which is supported by all hardware vendors.