Texture memory math - why one 4K texture can cost 85 MB
Indie games rarely run out of triangles first. They run out of video memory, and textures are almost always why. The good news: texture memory is simple arithmetic, so you can budget it before you build.
The formula
Memory = width x height x bytes per pixel x 4/3 (if mipmaps are on)
Mipmaps are the smaller copies of a texture (half size, quarter size, and so on) that the GPU uses for distant surfaces. Together they add about one third to the full-size image.
What an uncompressed 4K texture costs
A 4096 x 4096 texture has 16.8 million pixels. Uncompressed RGBA8 uses 4 bytes per pixel:
- 4096 x 4096 x 4 = 64 MiB
- with mipmaps: about 85 MiB
A typical physically based material has three or four maps (colour, normal, roughness/metal, sometimes height or emission). Four uncompressed 4K maps is about 340 MiB for one material. That's why a scene with a few dozen "4K" assets can blow through an 8 GB card.
Block compression changes everything
GPUs read compressed texture formats directly, without unpacking them in memory:
| Format | Bytes per pixel | 4K with mips | Typical use |
|---|---|---|---|
| RGBA8 (uncompressed) | 4 | ~85 MiB | UI, special cases |
| BC1 / DXT1 | 0.5 | ~11 MiB | Colour without alpha |
| BC7 / BC3 | 1 | ~21 MiB | Colour with alpha, high quality |
| BC5 | 1 | ~21 MiB | Normal maps (two channels) |
| ASTC 6x6 | ~0.44 | ~9.5 MiB | Mobile |
Engines usually compress on import, but check: a texture flagged as "UI" or "uncompressed" by mistake silently costs 4-8 times more.
Do you need 4K at all?
Ask how big the surface is on screen. A prop that never fills more than a quarter of a 1080p screen can't show more than about 1,000 pixels across; a 1K or 2K texture looks identical there. Dropping from 4K to 2K cuts memory by four. Keep 4K for hero assets the camera gets close to.
A budget you can use
- Decide the memory you can spend on textures (for example, half the video memory of your minimum-spec card, leaving the rest for buffers and the frame).
- List your materials and their maps.
- Run them through the calculator at the format and resolution you plan to ship.
- If it doesn't fit, lower resolution on the assets that are never seen close up first, then share textures between props with an atlas.
Our own open-world builds use one consistent set of material textures across thousands of models for exactly this reason: shared textures are counted once.