← Back to Blog texturing

Texture compression formats for game engines: BC7, ASTC, and ETC2

By BitSoul Team6/19/2026Updated 8/2/20265 min read104 views
Texture compression formats for game engines: BC7, ASTC, and ETC2

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.

What texture compression actually does — illustrated

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: the mobile-first format — illustrated

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

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.*

Tags: texturing pbr optimization unity unreal godot game-assets

Skip the modelling — download it instead

A free BitSoul account gets you 2 game-ready models every month plus 25 AI Engine credits to generate one of your own, no card required. Clean topology, PBR textures, and GLB downloads that drop straight into Unreal, Unity, Godot or Blender — plus OBJ and 3D-printable STL export.

Create a free account → Browse 846 models