What are mipmaps?
Mipmaps are a chain of progressively smaller copies of a texture, each half the width and height of the one before, stored together with the full-size image. The graphics card picks the copy that best matches the size of the surface on screen, which removes shimmering on distant objects and makes sampling cheaper. In GTA V every texture in a .ytd can carry its own mip chain, and the streaming engine relies on it to show a low-resolution version of a texture before, or instead of, the full one.
How a mip chain is built
Starting from the full image, each level halves both dimensions until the image is one pixel, or until the author stops the chain. A 2048 x 2048 texture with a complete chain has twelve levels:
| Level | Size | Share of full-size memory |
|---|---|---|
| 0 | 2048 x 2048 | 100% |
| 1 | 1024 x 1024 | 25% |
| 2 | 512 x 512 | 6.25% |
| 3 | 256 x 256 | About 1.6% |
| 4 to 11 | 128 x 128 down to 1 x 1 | About 0.5% combined |
Because each level is a quarter of the previous one, the whole chain below level 0 adds only about one third to the texture's size. That is a small price for what it buys.
To fix this in an existing resource, the Texture Optimizer shrinks oversized .ytd files in your browser. Open the Texture Optimizer
Why GTA V needs them
- Image quality: without mipmaps, a detailed texture on a distant car is sampled far more coarsely than its pixels, which produces shimmering and moire patterns as the car moves.
- Performance: sampling a small mip level is much kinder to the graphics card's cache than jumping around a huge image.
- Streaming: when memory is tight the engine can keep only the lower levels of a texture loaded. A texture with a proper chain degrades to a blurrier version; one without has no cheaper version to fall back on. This is central to how the streaming budget is managed.
- FiveM's vehicle texture cap: the client setting
str_maxVehicleTextureReslimits the maximum resolution of vehicle textures and defaults to 1024 (FiveM console commands). It works by choosing a smaller mip level, so a default client never shows the 4096 px level of a vehicle texture, and a texture saved without mipmaps cannot be reduced this way.
Mipmaps are to textures what LODs are to models: the same asset stored at several levels of cost.
Mipmaps and file size
The first level is where the weight is. Level 0 holds three quarters of the bytes of a full chain, so removing it turns a 2048 px texture into a 1024 px one and cuts its size to a quarter, and the result is identical to what the game was already showing at medium distance.
This is the basis of mip-drop optimization. Since the smaller levels already exist in the file, a tool can discard the top level and promote the next one without decoding or recompressing any pixels, so no new compression artefacts are introduced. The Texture Optimizer works this way in the browser. Textures that were saved without mipmaps cannot be reduced like this and have to be resized and re-encoded instead.
| DXT5 texture | Level 0 only | With full mip chain |
|---|---|---|
| 4096 x 4096 | 16 MiB | About 21.3 MiB |
| 2048 x 2048 | 4 MiB | About 5.3 MiB |
| 1024 x 1024 | 1 MiB | About 1.3 MiB |
Common problems and fixes
- Texture shimmers or sparkles at distance: it was imported with a single level. Re-import it with mipmap generation switched on in the texture editor.
- Texture looks blurry up close on some clients: the full-resolution level is not being loaded because memory is short. See texture loss and the texture budget.
- Replaced texture looks wrong only when far away: the lower levels still contain the old image. Regenerate the chain after replacing level 0.
- Odd dimensions: mip chains are built by halving, so textures should have power-of-two sizes such as 512, 1024 or 2048.
In OpenIV, the texture editor shows the number of mip levels for every texture in a .ytd, which is the quickest way to see which ones are missing a chain.
Frequently asked questions
Do mipmaps make a .ytd file bigger?
Yes, by about one third compared with storing only the full-size image. In return the game can display and stream the texture efficiently at any distance.
Should I remove mipmaps to make a .ytd smaller?
No. Removing the small levels saves very little and hurts image quality and streaming. To save real space, remove the largest level instead, which quarters the size of the texture.
How many mip levels does a texture have?
A complete chain for a square power-of-two texture has log2 of the size plus one levels: 11 for 1024 px, 12 for 2048 px and 13 for 4096 px. Authors may store fewer.
Tools for this
Related guides
Related terms
Still need the car as a FiveM resource?
Paste a gta5-mods.com vehicle link and get a FiveM-ready resource with the manifest and metas in place. 3 free conversions, no signup.
- 3 conversions free, no account needed
- 2 more free if you leave an email
- After that: $15 once for unlimited conversions and the Pro tools, no subscription