Textures 101 for modders: DDS, block compression, mipmaps, colour space, and why a mod ends up at 900 MB

Ask why a mod is 900 MB and the answer is almost always textures. Models and physics are megabytes; images are hundreds of them. Understanding how game textures are stored, compressed and scaled is the single most useful technical skill for a mod author who wants files people can actually download and run. Here is the practical version.
DDS and block compression
Games rarely use PNG or JPEG at runtime. They use DDS files holding block-compressed textures, a family of formats the graphics card can read directly without unpacking, so they stay compressed in video memory too. The formats you will meet:
- BC1 (once called DXT1): colour without alpha, or with one-bit alpha. 4 bits per pixel. The smallest; fine for opaque colour maps.
- BC3 (DXT5): colour with full alpha. 8 bits per pixel. Older games use it for anything transparent, and for normal maps with a channel swap.
- BC4: a single channel, 4 bits per pixel. Roughness, metalness, ambient occlusion, masks.
- BC5: two channels, 8 bits per pixel. The right format for normal maps in engines that support it.
- BC7: high-quality colour with or without alpha, 8 bits per pixel. Visibly better than BC1 and BC3 on gradients and fine detail, at BC3’s size.
Which formats a game expects for which kind of map varies; the most reliable guide is to open the game’s own textures for a similar asset and match them.
The arithmetic of size
An uncompressed 4096×4096 image with alpha is 64 MB. As BC7 or BC3 it is 16 MB; as BC1, 8 MB. Mipmaps, the smaller pre-scaled copies the card uses at a distance, add one third on top. And every step down in resolution divides the size by four:
| Resolution | BC7 / BC3 with mipmaps | BC1 with mipmaps |
|---|---|---|
| 4096×4096 | about 21 MB | about 11 MB |
| 2048×2048 | about 5.3 MB | about 2.7 MB |
| 1024×1024 | about 1.3 MB | about 0.7 MB |
A car with twelve 4K maps (body colour, normal, roughness and so on for exterior, interior, wheels and glass) is 200 MB of textures before anything else. The same car at 2K is 50 MB, and at normal viewing distances on a 1080p screen nobody can tell.
Mipmaps are not optional
A texture without mipmaps shimmers and sparkles at a distance and costs more to render, because the card samples the full-size image for a car a hundred metres away. Always generate a full mip chain when you export. Most tools do this by default; check that yours does.
Colour space
Colour maps are usually stored as sRGB; data maps (normals, roughness, metalness, masks) as linear. Getting this wrong makes paint look washed out or too dark, or makes normal maps look subtly wrong under light. Again, the game’s own files show what it expects.
Where the resolution should go
- Body exterior: the largest surface and the one in every screenshot. The best candidate for the highest resolution.
- Interior: visible only from inside. 2K is usually ample, with detail where the driver looks: the dashboard and the wheel.
- Wheels and brakes: small on screen, often repeated four times from one texture. 1K or 2K.
- Underbody, engine internals, hidden parts: low resolution. They are rarely seen and never closely.
- Decals and logos: separate small textures beat painting them into a giant body texture.
Recompression costs quality
Block compression is lossy. Decompressing a BC texture and compressing it again, for example to change its size, adds artefacts each time. Keep your source images (PNG, TGA or your editor’s own format) and export every version from them. If all you have is the DDS, work from it once and keep the result.
Tools
Microsoft’s free texconv command-line tool converts and resizes in bulk; NVIDIA’s free Texture Tools Exporter has a visual preview; Paint.NET saves BC7 directly; GIMP opens and saves DDS. The free tools guide lists the rest, and making a lite version puts all of this into a workflow.
Why it matters beyond file size
Textures live in video memory while a scene is on screen. An 8 GB card fills quickly with a few 4K-everything cars and a detailed map, and the result is stutter, which players blame on your mod. Sensible textures make a mod that downloads faster, loads faster, runs smoother and gets finished more often, and on ModsDrop finished downloads are what uploaders are paid on.



