Texture compression

The chosen texture compression determines:

  • how much space the texture consumes on disk
  • how much memory it occupies on the GPU

Texture and Pixel Formats

In TexturePacker, it is important to distinguish between Texture Format and Pixel Format:

  • Texture Format: Configures the image file container (e.g., .pvr, .ktx, .png). It determines the file structure and extension.

  • Pixel Format: Configures the internal encoding of the pixel data (e.g., ETC2, ASTC, RGBA8888).

In TexturePacker, you first select the Texture Format (the container file type, e.g., KTX), and then the Pixel Format (the specific compression, e.g., ASTC). TexturePacker only displays pixel formats that are compatible with the selected Texture Format.

Hardware vs. Software Compression

The main difference between software and hardware compression lies in where the data is decompressed and how much memory it occupies on the GPU.

Software Compression (e.g., PNG, JPG, WebP)

  • Disk Space: These formats are excellent for reducing file sizes for storage or download.
  • GPU Processing: They cannot be used directly by the GPU. The engine must decompress them into a raw format (like RGBA8888) in system memory before uploading them to the GPU.
  • Memory Usage: Once loaded, they take up the full amount of memory required for an uncompressed texture (e.g., 4 bytes per pixel for RGBA8888).

Hardware Compression (e.g., ASTC, ETC2, PVRTC)

  • Disk Space: These formats often have larger file sizes than highly optimized PNGs or JPEGs.
  • GPU Processing: They are designed to be read directly by the GPU hardware in their compressed state.
  • Memory Usage: They remain compressed in GPU memory, typically using only a fraction of the memory (e.g., 1 byte per pixel or less). This reduces memory pressure and increases rendering performance due to lower bandwidth requirements (the amount of data transferred between memory and the GPU).

Supported Hardware Compressions

The table below provides an overview of the compression ratios and hardware-specific requirements for each format. bpp (bits per pixel) indicates how much memory each pixel requires: lower values mean better compression.

CompressionbppHardware Restrictions / Notes
ASTC0.89 - 8.00Flexible block sizes (4x4 to 12x12). Supported on modern mobile (iOS, Android) and desktop GPUs.
ETC14No alpha channel. Standard for older Android devices.
ETC24 - 8Supports alpha (8 bpp). Standard for OpenGL ES 3.0 compatible devices.
PVRTC I2 - 4Requires power-of-two (POT) textures (e.g., 512x512, 1024x2048), some platforms might require squared textures (details). Standard for iOS devices.
PVRTC II2 - 4Improved quality over PVRTC I. Does not require square or POT textures.
DXT14No alpha or 1-bit transparency. Standard for desktop (DirectX).
DXT58Supports full alpha channel. Standard for desktop (DirectX).
Basis Universal
(ETC1S mode)
0.3 - 1.25Medium quality, fast transcoding to many other formats (ETC1, etc.). Highly compressed on disk.
Basis Universal
(UASTC mode)
4 - 8High quality, fast and simple transcoding to ASTC and BC7. Highly compressed on disk.

Supported Texture Formats

Here's a list of Texture Formats (containers) TexturePacker supports, and the Hardware Compression algorithms (Pixel Formats) they can be compressed to.

Texture FormatFile ExtensionSupported Hardware Compression (Pixel Formats)
PVR.pvrPVRTC I+II, ETC1+2, DXT1+5, ASTC, Basis Universal (ETC1S+UASTC)
KTX.ktxPVRTC I+II, ETC1+2, DXT1+5, ASTC
ZKTX.ktxPVRTC I+II, ETC1+2, DXT1+5, ASTC (file zipped on disk)
KTX2.ktx2PVRTC I+II, ETC1+2, DXT1+5, ASTC, Basis Universal (ETC1S+UASTC)
PKM.pkmETC1, ETC2
DDS.ddsDXT1, DXT5
ASTC.astcASTC
BASIS.basisBasis Universal (ETC1S & UASTC)

Other texture formats (like PNG, JPG, WebP, ...) are also supported by TexturePacker, but they cannot store hardware-compressed textures.

Note: Support for Adobe Texture Format (.atf) was removed in TexturePacker version 6.0.2.