Back to Blog
Basics

What Is Texture Compression? GPU Formats Explained

8 min read

Texture compression stores images in GPU-friendly compressed blocks so textures can stay compressed in video memory while rendering. It reduces VRAM footprint and memory bandwidth pressure, distinguishing GPU-native block formats (ASTC, BCn/DDS, ETC2, PVRTC) from traditional image storage (PNG, JPEG) and container supercompression (KTX2, Basis Universal).

Quick answer

Texture compression is block-based image compression designed specifically for GPU hardware. Textures are encoded into fixed-size texel blocks (typically 4×4) that the GPU can sample directly at runtime, reducing VRAM usage and memory bandwidth pressure. Unlike traditional images that typically reside as uncompressed pixels in VRAM during rendering, GPU formats stay compressed; network download size is further optimized when paired with supercompressed containers like KTX2.

What is Texture Compression?

Texture compression is a specialized form of image compression designed specifically for graphics hardware (GPUs). Unlike general-purpose image formats like JPEG or PNG, texture compression formats are structured into small, fixed-size blocks (typically 4×4 pixels) optimized for real-time random access by GPU texture sampling units.

Traditional image formats (PNG, JPEG, WebP) typically require decompression into uncompressed raster pixel buffers before they can be sampled by GPU shaders, meaning they occupy full uncompressed RGBA memory in VRAM. In contrast, GPU texture compression formats stay compressed inside VRAM, allowing the GPU's hardware texel cache to decompress individual texels on the fly during fragment shading.

It is essential to distinguish the three compression layers: (1) GPU Block Compression (e.g. ASTC, BCn, ETC2) for hardware sampling and VRAM savings; (2) Traditional Image Formats (PNG, JPEG) for desktop and web storage; and (3) Container Supercompression (KTX2 with Basis Universal ETC1S/UASTC or Zstandard) for compact network distribution before GPU decoding or transcoding.

Why Use Texture Compression?

Texture compression provides several critical benefits for real-time 3D graphics applications:

Reduced VRAM Usage

Compressed textures stay compressed in video memory, typically saving 70% to 85% VRAM compared to raw 32-bit RGBA buffers.

Lower Memory Bandwidth

Transferring fewer bytes between VRAM and GPU texture samplers relieves memory bus saturation, helping reduce thermal throttling and power consumption on memory-bandwidth-bound mobile devices.

Higher Rendering Throughput

Better texel cache efficiency and reduced memory bandwidth bottlenecks can improve rendering throughput and frame consistency in texture-heavy scenes.

Higher Texture Density

The substantial VRAM savings allow artists to deploy higher resolution textures or more material variations within the same hardware memory budget.

Common Texture Compression Formats

Different platforms and GPUs support different compression formats. Here are the most widely used ones:

ETC1/ETC2 (Ericsson Texture Compression)

Standard format for Android devices and OpenGL ES. ETC1 supports RGB only, while ETC2 adds alpha channel support and improved quality.

Platform: Android, OpenGL ES 3.0+

ASTC (Adaptive Scalable Texture Compression)

Modern, flexible format supporting multiple block sizes (4x4 to 12x12) and quality levels. Provides excellent quality-to-compression ratio control.

Platform: Modern mobile GPUs, Vulkan, OpenGL ES 3.2+

PVRTC (PowerVR Texture Compression)

Format used primarily on iOS devices with PowerVR GPUs. Known for good compression but can show artifacts on certain content.

Platform: iOS, older Android devices with PowerVR GPUs

DXT/BCn (S3 Texture Compression / Block Compression)

Desktop standard, also known as BCn (Block Compression). DXT1/BC1 through DXT5/BC3 are most common, with BC6H and BC7 providing HDR and higher quality.

Platform: Desktop (Windows, DirectX, OpenGL)

Basis Universal

Transcoding format that can be converted to any native GPU format at runtime. Enables a single compressed file to work across all platforms.

Platform: Cross-platform (transcodes to ETC, ASTC, DXT, etc.)

How Texture Compression Works

Most texture compression algorithms work by dividing the image into small blocks (typically 4x4 pixels) and encoding each block independently. This block-based approach enables random access - the GPU can decompress just the blocks it needs for a particular texture sample.

Within each block, the algorithm typically stores a small palette of colors (usually 2-4 colors) and index values indicating which palette color each pixel should use. More advanced formats like ASTC use sophisticated interpolation schemes to achieve better quality.

Compression Example

A 512x512 RGBA texture at different compression levels:

Uncompressed: 512 × 512 × 4 bytes = 1,048,576 bytes (1 MB)
Compressed (ASTC 6x6): 512 × 512 / (6 × 6) × 16 bytes = 116,508 bytes (~114 KB)
Compression ratio: 9:1 (89% size reduction)

Best Practices

  • Choose the appropriate format for your target platform - use ETC2/ASTC for mobile, BCn for desktop
  • Consider using multiple compression qualities - higher quality for important textures, lower for backgrounds
  • Test different block sizes (for ASTC) to find the best balance between quality and file size
  • Use different formats for different texture types - normal maps often need different settings than color maps
  • Always preview compressed textures in your target application to verify visual quality

Conclusion

Texture compression is an essential tool for modern graphics development, enabling better performance, lower memory usage, and higher quality visuals. Understanding the available formats and their trade-offs helps you make informed decisions for your projects.

Whether you're developing for mobile, desktop, or web platforms, texture compression can significantly improve your application's efficiency and visual fidelity. Our online tools make it easy to experiment with different formats and settings to find the perfect balance for your needs.

Further Reading & References

Consult these official primary specifications and developer resources:

What Is Texture Compression? GPU Formats Explained