BC Compression
GPU texture compression formats
Also known as: DXT · Block compression · BCn
Definition
BC (Block Compression) is the family of lossy GPU texture formats — BC1 through BC7 — that decode in hardware at zero runtime cost while using 4-8× less memory than uncompressed textures. BC1 (formerly DXT1) compresses to 4 bits/pixel for RGB; BC5 stores two channels at high quality (ideal for normal maps); BC7 gives near-uncompressed quality at 8 bits/pixel for hero textures. Every modern game ships almost exclusively in BC-compressed textures.
In production
Pick BC7 for hero diffuse/colour textures and quality-sensitive surfaces like character skin; BC5 for normal maps (stores XY, derives Z, avoiding the colour-channel artifacts BC1 introduces on tangent-space normals); BC4 for single-channel masks like roughness or ambient occlusion; BC1 for low-priority background textures where memory is tighter than quality. A common beginner mistake is compressing normal maps with BC1 or BC3, which quantizes the RGB channels together and produces visible banding on smooth curved surfaces. BC6H exists specifically for HDR data — light probes, cubemaps, lightmaps — since standard BC formats can't represent values above 1.0. Unreal Engine 5 exposes these as Texture Compression Settings (Default, Normalmap, Masks, HDR) that map directly to BC7/BC5/BC4/BC6H under the hood, while Unity's Texture Importer lets you override per-platform compression, since mobile GPUs historically didn't support BC, which is why ASTC exists as the mobile equivalent.