Mipmaps

Smaller prefiltered copies of a texture that the GPU uses at a distance to stop detail from flickering and crawling.

stop textures shimmering far awaysmaller copies of a texturewhy does the floor sparkle when the camera moveswhy does my texture look noisy in the distanceblurry distance texture levelsmip levelsmip mappingmipmapps

See it

Live demo coming soon

What it is

Mipmaps are a prefiltered chain of smaller versions of one texture: half the width and height at each level, down to 1 by 1. When a surface is far away, the GPU samples a level closer to the pixel footprint instead of trying to squeeze hundreds of full-resolution texels into one screen pixel. Trilinear filtering blends between two neighboring levels so the change is gradual. The name comes from multum in parvo, much in little, in Lance Williams's 1983 paper on pyramidal parametrics.

Use them on almost every texture that can shrink on screen, especially ground planes, repeating patterns, and moving cameras. They reduce distance shimmer and often improve texture-cache behavior. A complete mip chain adds about one third to the base texture's memory, a trade that is usually worth the stability.

Gotcha: each level is filtered from neighboring texels. In a texture atlas, colors from the next tile can bleed into a small mip unless every tile has padding and extruded edge pixels. Normal maps also need normal-aware filtering or renormalization, since ordinary color averaging can weaken their vectors.

Ask AI for it

Generate a complete mip chain for every minified WebGL2 texture. After uploading an ordinary 2D texture, call gl.generateMipmap(gl.TEXTURE_2D) and set gl.TEXTURE_MIN_FILTER to gl.LINEAR_MIPMAP_LINEAR. Export KTX2 assets with all mip levels already included, add extruded padding around atlas tiles, and compare a moving ground plane with mipmaps on and off.

You might have meant

texturetexture compressionnormal mapuv mapping uv unwrappingmaterial