Choosing the wrong texture compression format is a silent performance killer. Your game ships, players on mobile see blocky artefacts, Android GPUs stall on unsupported formats, and your VRAM budget balloons because you left everything as uncompressed RGBA — all avoidable mistakes once you understand what BC7, ASTC, and ETC2 actually do.
This guide covers how each format works, which engines and platforms support them, and how to configure your import settings in Unity, Unreal Engine 5, and Godot 4.
What texture compression actually does
Uncompressed RGBA textures store 4 bytes per pixel. A 2048 × 2048 texture costs 16 MB of GPU memory. Compressed formats encode blocks of pixels (typically 4×4) into a fixed number of bytes, trading some quality for a 4–8× reduction in GPU memory and bandwidth.
The tradeoff: compressed textures must be decompressed by the GPU's fixed-function hardware decoder. Every GPU has decoders it supports natively; feeding it a format it doesn't know forces a software fallback or a driver-side re-encode — both are catastrophically slow.
![]()
Key metrics to compare
| Format | Block size | Bits per pixel | Quality | Platform |
|--------|-----------|---------------|---------|----------|
| DXT1 (BC1) | 4×4 | 4 bpp | Low | PC/console |
| DXT5 (BC3) | 4×4 | 8 bpp | Medium | PC/console |
| BC7 | 4×4 | 8 bpp | High | PC/console (DX11+) |
| ETC2 | 4×4 | 4–8 bpp | Medium | OpenGL ES 3.0, Android |
| ASTC | 4×4–12×12 | 0.89–8 bpp | Best | ARM Mali, Apple, Vulkan |
BC7: the PC and console standard
BC7 (Block Compression 7) is part of the DirectX 11 compression suite and is the go-to format for PC and current-gen consoles. It uses the same 8 bpp footprint as BC3/DXT5 but achieves significantly better quality, especially on smooth gradients, skin tones, and albedo maps with subtle colour variation.
When to use BC7:
- Albedo / diffuse maps where colour fidelity matters
- Normal maps (use BC5 for two-channel normals instead)
- Any high-quality texture targeting PC/Xbox/PlayStation
Engine settings:
In Unity URP/HDRP, set the texture's *Compression* to *BC7* under the platform-specific overrides for Windows. BC7 is available from Unity 2020 LTS onward.
In Unreal Engine 5, BC7 is the default for most texture types on PC. Check *Texture Editor → Compression Settings* — `TC_BC7` is explicit; `TC_Default` will resolve to BC7 on Windows targets.
In Godot 4, BC7 is used automatically when the *VRAM Compressed* import preset is selected on Windows builds.
```
# Godot 4 import override (force BC7 on PC)
[params]
compress/mode = 2 # VRAM Compressed
compress/high_quality = true # enables BC7 over DXT5
```
ASTC: the mobile-first format
Adaptive Scalable Texture Compression is the most flexible format available. Unlike BC7's fixed 4×4 block, ASTC supports block sizes from 4×4 (8 bpp, highest quality) all the way to 12×12 (0.89 bpp, lowest quality). This lets you dial compression aggressively for secondary assets without switching formats.
ASTC is supported natively on:
- All Apple devices (iPhone 6 and later, all Apple Silicon Macs)
- ARM Mali GPUs (Samsung Galaxy S5 onward)
- Qualcomm Adreno 400-series and later
- All Vulkan-capable GPUs on Android 8.0+
![]()
ASTC block size recommendations:
| Asset type | Block | Effective bpp |
|-----------|-------|---------------|
| Albedo / normal | 4×4 | 8 bpp |
| Roughness / AO | 6×6 | 3.56 bpp |
| Distant LOD albedo | 8×8 | 2 bpp |
| Skybox / background | 12×12 | 0.89 bpp |
In Unity, set *Compression* to *ASTC* under Android/iOS platform overrides. You can control block size per texture with the *Compressor Quality* slider — *Best* maps to 4×4, *Fast* to 12×12.
In Unreal Engine 5, ASTC is enabled via the Android/iOS packaging settings under *Project Settings → Platforms*. The engine ships ASTC variants alongside ETC2 and selects at runtime based on device capability.
In Godot 4, ASTC is the recommended format for Android exports. Set `compress/mode = 3` (VRAM Compressed Mobile) in your import overrides, which defaults to ASTC on capable devices.
ETC2: the baseline Android fallback
ETC2 (Ericsson Texture Compression 2) is mandatory support in OpenGL ES 3.0, making it the lowest common denominator for Android. Every Android device from 2013 onward can decode it in hardware. Quality sits below ASTC — ETC2 struggles with smooth colour gradients and fine detail — but it's your safety net for old device support.
Modern Android pipelines typically ship two texture packs: ASTC for capable devices, ETC2 as the fallback. At runtime the engine selects the appropriate pack.
Unreal Engine 5 handles this automatically when you enable both formats in *Android packaging*. Unity does the same via *Split Application Binary* with per-format APK/AAB support. Godot 4 will fall back to ETC2 automatically if ASTC hardware isn't detected.
ETC2 limitations to know
- No native support for BC-family formats (never feed ETC2 assets to a PC/console build)
- 4-bit alpha is stored separately as ETC2 RGBA; full alpha adds cost
- Normal maps encoded as ETC2 show more artefacts than BC5 or ASTC — consider lower-resolution normals for mobile ETC2 targets
Choosing the right format: a decision checklist
PC / console target:
- Albedo, emission → BC7
- Normal map → BC5 (two-channel RG, best quality)
- Single-channel masks (roughness, AO, metallic) → BC4
- ORM packed texture → BC7 or BC5
iOS target:
- All types → ASTC 4×4 (high quality) or 6×6 (medium)
Android (modern devices, API 26+):
- Preferred → ASTC; fallback → ETC2
- Ship dual-format packs in Unity/UE5/Godot 4
Android (wide device support, API 21+):
- Primary → ETC2; no ASTC assumption
For a ready-made library of pre-optimised GLB game assets that work cleanly with all three formats, browse https://bitsoulhosting.com/marketplace — every model ships with PBR textures sized and named for direct import.
Getting compression right is one of the highest-leverage moves you can make early in production. Set your import presets per platform before you have hundreds of assets, and you'll never have to batch-recompress a project two weeks before ship. Explore optimised, game-ready 3D assets built for these workflows at https://bitsoulhosting.com/marketplace.
---
*This post is part of the Ultimate Guide to Free 3D Game Assets — BitSoul's complete reference for formats, texturing, rigging, optimization, and engine integration.*