Mipmaps
The chain of half-size copies every 3D texture carries; why distant textures shimmer without them, how the GPU picks and blends levels (bilinear, trilinear, anisotropic), mip filtering and sharpening, what mips do to alpha-tested foliage and glossy normal maps, and the settings in Unreal, Unity and Godot.
Mipmaps are a chain of smaller copies of a texture, each half the width and height of the one before. glTF defines a mipmap as "A set of image representations consecutively reduced by the factor of 2 in each dimension" (Khronos Group: glTF 2.0 Specification). When a surface is far away or seen at a steep angle, the GPU reads a smaller copy instead of the full image.
The basic memory arithmetic (a full chain costs a third more) is covered on texture formats, compression and mipmaps. This page covers what mips do to the image, and the settings an artist can change.
#Why distant textures need them
A brick wall seen from 50 m covers a few hundred pixels on screen, but its 2048 × 2048 texture has over four million texels. Without mips, each screen pixel takes one sample from somewhere inside a large patch of texels and ignores the rest. As the camera moves, the sample jumps between dark mortar and light brick, and the wall crawls and flickers. Godot lists two benefits of mips: textures "will not become grainy in the distance", and sampling smaller versions "is faster and requires less memory bandwidth" (Godot documentation: Importing images).
#Filtering: bilinear, trilinear, anisotropic
How the GPU reads the chain is the filter mode. glTF describes the options, including "Linear-mipmap-linear", which blends texels within two mip levels and then between the levels, "sometimes called trilinear interpolation" (Khronos Group: glTF 2.0 Specification). Unity summarises the visible results (Unity Manual: Default texture import settings reference):
- Point: "The texture appears blocky up close."
- Bilinear: "The texture appears blurry up close." Each pixel reads a single mip level, so the switch from one level to the next can show as a line across a floor.
- Trilinear: "Like Bilinear, but the texture also blurs between the different mipmap levels", which hides that switch.
Anisotropic filtering fixes the blur on floors and roads seen at a grazing angle, where a pixel covers a long, thin strip of texels. Unity's Aniso Level "Controls the texture quality when you view the texture at a steep angle" (Unity Manual: Default texture import settings reference). Godot's anisotropic modes improve "texture quality on surfaces that are almost in line with the camera, but [are] slightly slower" (Godot Engine: BaseMaterial3D class reference).
#How mips are made
Each level is normally a filtered downscale of the one above. You can choose the filter, and it changes the look of every distant surface:
- Unity: Mipmap Filtering offers Box, which "Makes mipmap levels smoother", and Kaiser, which "Runs a sharpening algorithm on mipmap levels" (Unity Manual: Default texture import settings reference). Replicate Border stops colours bleeding to the edge of low levels, and Fadeout to Gray fades distant levels towards grey (Unity Manual: Default texture import settings reference).
- Godot: generates mips on import for 3D textures; DDS files can carry their own, which "can be used to achieve effects using custom mipmaps" (Godot documentation: Importing images).
Colour mips must be averaged in linear light. GPU Gems shows the failure with an edge of "two pixels at 1.0 and two at 0.0" (Gritz & d'Eon 2007): average the stored sRGB numbers and the result is too dark. See colour space: sRGB and linear.
#Mipmap problems with alpha and gloss
Alpha-tested foliage thins out. Averaging an alpha channel lowers the share of pixels that pass the cutoff. Ignacio Castaño found that with standard mip generation, "As the trees moved farther away from the camera, the leafs faded out becoming almost transparent" (Ludicon: Computing Alpha Mipmaps). The fix is to scale alpha per level by a factor that "preserves the original alpha test coverage as best as possible" (Ludicon: Computing Alpha Mipmaps). Unity has Preserve Coverage with an Alpha Cutoff (Unity Manual: Default texture import settings reference), and Godot has Preserve Alpha Test Coverage (Godot documentation: Importing images). See opacity, masked and translucent materials.
Glossy normal maps sparkle. Averaged normals get shorter: "The result of averaging or interpolating unit normals is less than unit length" (Toksvig 2004). The bumps vanish from low mips but the material stays glossy, so highlights flicker. See specular aliasing.
#Mip bias
A mip bias shifts which level is chosen. A positive bias picks smaller levels, saving memory and blurring the texture; it is how projects ship lower texture quality settings. Unreal's streamer has a global MipBias "used to prevent the streamer from loading the biggest mips for each texture" (Unreal Engine documentation: Texture Streaming Configuration). Unity's per-texture Mipmap Limit setting follows the Quality settings unless you disable it (Unity Manual: Default texture import settings reference).
#Further reading and watching
Related: texture formats, compression and mipmaps, texture streaming, texel density, virtual texturing.
References
- · glTF 2.0 Specification · Khronos Group (GitHub) · docs · accessed 2026-10-21
- · Importing images (documentation source) · Godot documentation (GitHub) · docs · accessed 2026-10-21
- · Default texture import settings reference · Unity Manual (6000.2) · docs · accessed 2026-10-21
- · BaseMaterial3D class reference (source) · Godot Engine (GitHub) · docs · accessed 2026-10-21
- · Chapter 24. The Importance of Being Linear · GPU Gems 3 (NVIDIA), 2007 · book · accessed 2026-10-21
- · Computing Alpha Mipmaps · Ludicon (blog) · article · accessed 2026-10-21
- · Mipmapping Normal Maps · NVIDIA technical brief, 2004 · paper · accessed 2026-10-21
- · Texture Streaming Configuration · Unreal Engine documentation · docs · accessed 2026-10-21
Pages that link here
- Texture file formats Reference
- Bevels and chamfers Topic
- Bevel shaders Key term
- Impostors and billboards Key term
- Checker maps Key term
- Texel density Topic
- UV packing and padding Topic
- Colour space: sRGB and linear Key term
- Metallic map Key term
- Parallax occlusion mapping Key term
- Texture formats, compression and mipmaps Topic
- Texture streaming Key term
- Opacity, masked and translucent materials Key term
- Specular aliasing Key term
- Trim sheets Topic
- Texture atlases Topic
- Texture arrays Key term
- Shadows and virtual shadow maps Key term
- Virtual texturing Key term
- Texture memory (VRAM) Key term
- Exercise: a trim sheet Exercise
- Essential talks and videos Reference
Last updated 2026-10-22