In
3D computer graphics3D computer graphics are graphics that use a three-dimensional representation of geometric data that is stored in the computer for the purposes of performing calculations and rendering 2D images...
texture filteringIn computer graphics, texture filtering is the method used to determine the texture color for a texture mapped pixel, using the colors of nearby texels . In short, it blends the texture pixels together by breaking them up into tinier pixels. Another term for texture filtering is called texture...
,
MIP maps (also
mipmaps) are pre-calculated,
optimizedIn computer science, program optimization or software optimization is the process of modifying a software system to make some aspect of it work more efficiently or use fewer resources...
collections of images that accompany a main texture, intended to increase rendering speed and reduce aliasing artifacts. They are widely used in 3D computer games,
flight simulatorA flight simulator is a system that tries to copy, or simulate, the experience of flying an aircraft. It is meant to be as realistic as possible...
s and other 3D imaging systems. The technique is known as
mipmapping. The letters "MIP" in the name are an acronym of the
LatinLatin is an Italic language originally spoken in Latium and Ancient Rome. Through the Roman conquest, Latin spread throughout the Mediterranean and a large part of Europe...
phrase
multum in parvo, meaning "much in a small space".
In
3D computer graphics3D computer graphics are graphics that use a three-dimensional representation of geometric data that is stored in the computer for the purposes of performing calculations and rendering 2D images...
texture filteringIn computer graphics, texture filtering is the method used to determine the texture color for a texture mapped pixel, using the colors of nearby texels . In short, it blends the texture pixels together by breaking them up into tinier pixels. Another term for texture filtering is called texture...
,
MIP maps (also
mipmaps) are pre-calculated,
optimizedIn computer science, program optimization or software optimization is the process of modifying a software system to make some aspect of it work more efficiently or use fewer resources...
collections of images that accompany a main texture, intended to increase rendering speed and reduce aliasing artifacts. They are widely used in 3D computer games,
flight simulatorA flight simulator is a system that tries to copy, or simulate, the experience of flying an aircraft. It is meant to be as realistic as possible...
s and other 3D imaging systems. The technique is known as
mipmapping. The letters "MIP" in the name are an acronym of the
LatinLatin is an Italic language originally spoken in Latium and Ancient Rome. Through the Roman conquest, Latin spread throughout the Mediterranean and a large part of Europe...
phrase
multum in parvo, meaning "much in a small space". They need more space in memory. They also form the basis of
wavelet compressionWavelet compression is a form of data compression well suited for image compression . The goal is to store image data in as little space as possible in a file...
.
How it works
Each bitmap image of the mipmap set is a version of the main texture, but at a certain reduced level of detail. Although the main texture would still be used when the view is sufficient to render it in full detail, the renderer will switch to a suitable mipmap image (or in fact,
interpolateIn the context of computer animation, interpolation refers to the use of piecewise polynomial interpolation to draw images semi-automatically....
between the two nearest, if
trilinear filteringTrilinear filtering is an extension of the bilinear texture filtering method, which also performs linear interpolation between mipmaps.Bilinear filtering has several weaknesses that make it an unattractive choice in many cases: using it on a full-detail texture when scaling to a very small size...
is activated) when the texture is viewed from a distance or at a small size. Rendering speed increases since the number of texture pixels ("
texelsA texel, or texture element is the fundamental unit of texture space, used in computer graphics. Textures are represented by arrays of texels, just as pictures are represented by arrays of pixels....
") being processed can be much lower than with simple textures. Artifacts are reduced since the mipmap images are effectively already
anti-aliasedIn digital signal processing, anti-aliasing is the technique of minimizing the distortion artifacts known as aliasing when representing a high-resolution signal at a lower resolution...
, taking some of the burden off the real-time renderer.
Scaling down and up is made more efficient with mipmaps as well.
If the texture has a basic size of 256 by 256 pixels, then the associated mipmap set may contain a series of 8 images, each one-fourth the total area of the previous one: 128×128 pixels, 64×64, 32×32, 16×16, 8×8, 4×4, 2×2, 1×1 (a single pixel). If, for example, a scene is rendering this texture in a space of 40×40 pixels, then either a scaled up version of the 32×32 (without trilinear interpolation) or an interpolation of the 64×64 and the 32×32 mipmaps (with trilinear interpolation) would be used. The simplest way to generate these textures is by successive averaging, however more sophisticated algorithms (perhaps based on signal processing and Fourier transforms) can also be used.
The increase in storage space required for all of these mipmaps is a third of the original texture, because the sum of the areas
1/4 + 1/16 + 1/64 + 1/256 + · · ·In mathematics, the infinite series 1/4 + 1/16 + 1/64 + 1/256 + · · · is an example of one of the first infinite series to be summed in the history of mathematics; it was used by Archimedes circa 250–200 BC. Its sum is 1/3...
converges to 1/3. In the case of an RGB image with three channels stored as separate planes, the total mipmap can be visualized as fitting neatly into a square area twice as large as the dimensions of the original image on each side. This is the inspiration for the tag "multum in parvo".
In many instances, the filtering should not be uniform in each direction (it should be anisotropic, as opposed to isotropic), and a compromise resolution is used. If a higher resolution is used, the
cache coherenceIn computing, cache coherence refers to the integrity of data stored in local caches of a shared resource. Cache coherence is a special case of memory coherence....
goes down, and the aliasing is increased in one direction, but the image tends to be clearer. If a lower resolution is used, the cache coherence is improved, but the image is overly blurry, to the point where it becomes difficult to identify.
To help with this problem, nonuniform mipmaps (also known as rip-maps) are sometimes used. With a 16×16 base texture map, the rip-map resolutions would be 16×8, 16×4, 16×2, 16×1, 8×16, 8×8, 8×4, 8×2, 8×1, 4×16, 4×8, 4×4, 4×2, 4×1, 2×16, 2×8, 2×4, 2×2, 2×1, 1×16, 1×8, 1×4, 1×2 and 1×1.
The unfortunate problem with this approach is that rip-maps require four times as much
memoryComputer data storage, often called storage or memory, refers to computer components, devices, and recording media that retain digital data used for computing for some interval of time. Computer data storage provides one of the core functions of the modern computer, that of information retention...
as the base texture map, and so rip-maps have been very unpopular. Also for 1×4 and more extreme 4 maps each rotated by 45° would be needed and the real memory requirement is growing more than linearly.
To reduce the memory requirement, and simultaneously give more resolutions to work with,
summed-area tablesA summed area table is an algorithm for quickly and efficiently generating the sum of values in a rectangular subset of a grid...
were conceived. However, this approach tends to exhibit poor
cacheIn computer science, a cache is a collection of data duplicating original values stored elsewhere or computed earlier, where the original data is expensive to fetch or to compute, compared to the cost of reading the cache. In other words, a cache is a temporary storage area where frequently...
behavior. Also, a summed area table needs to have wider types to store the partial sums than the word size used to store the texture. For these reasons, there isn't any hardware that implements summed-area tables today.
A compromise has been reached today, called anisotropic mip-mapping. In the case where an
anisotropic filterIn 3D computer graphics, anisotropic filtering is a method of enhancing the image quality of textures on surfaces that are at oblique viewing angles with respect to the camera where the projection of the texture appears to be non-orthogonal...
is needed, a higher resolution mipmap is used, and several texels are averaged in one direction to get more filtering in that direction. This has a somewhat detrimental effect on the cache, but greatly improves image quality.
Origin
Mipmapping was invented by
Lance WilliamsLance J. Williams is a prominent graphics researcher who made major contributions to texture map prefiltering, shadow rendering algorithms, facial animation, and antialiasing techniques...
in 1983 and is described in his paper
Pyramidal parametrics. From the abstract: "This paper advances a 'pyramidal parametric' prefiltering and sampling geometry which minimizes aliasing effects and assures continuity within and between target images." The "pyramid" can be imagined as the set of mipmaps stacked on top of each other.