Mipmap
A pre-computed set of progressively lower-resolution versions of a texture, used by GPUs to reduce aliasing and improve rendering performance when textures are viewed at reduced sizes.
A mipmap (from Latin "multum in parvo") is a data structure introduced by Lance Williams in 1983 that stores a texture at multiple resolution levels. Each level is half the dimensions of the previous, continuing down to 1x1.
- Level structure: Level 0 is full resolution (e.g., 1024x1024), level 1 is 512x512, and so on. Total memory overhead is approximately 33% (4/3 of original size)
- LOD selection: The GPU selects the optimal mip level based on screen-space pixel coverage. Distant objects use lower levels, reducing aliasing and bandwidth
- Trilinear filtering: Bilinear interpolation within two adjacent levels, then linear blending between them. Eliminates visible seams at level transitions
- Anisotropic filtering: Non-uniform sampling based on viewing angle for sharper oblique surfaces. Controlled via
GL_MAX_TEXTURE_MAX_ANISOTROPY
Generated with glGenerateMipmap(GL_TEXTURE_2D) in OpenGL or GenerateMips() in DirectX. Unity and Unreal enable mipmaps by default. The trade-off: disabling saves 33% VRAM but introduces shimmer on distant surfaces.