Difference between revisions of "Mip Mapping"

From polycount
Jump to: navigation, search
(cleanups)
Line 1: Line 1:
<!-- ## page was renamed from Mip Map -->
 
= Mip Map =
 
 
 
 
 
== What is a Mip Map? ==
 
== What is a Mip Map? ==
 
To render a texture more smoothly in a game, it is resized multiple times to make "mips," which are smaller versions of the texture. These smaller versions are swapped or blended with the original texture as the texture recedes in the scene.  
 
To render a texture more smoothly in a game, it is resized multiple times to make "mips," which are smaller versions of the texture. These smaller versions are swapped or blended with the original texture as the texture recedes in the scene.  
Line 11: Line 6:
 
The term ''mip'' is based on the Latin phrase ''multum in parvo'', meaning "much in a small space". See the [http://en.wikipedia.org/wiki/Mipmap Wikipedia Mipmap page].
 
The term ''mip'' is based on the Latin phrase ''multum in parvo'', meaning "much in a small space". See the [http://en.wikipedia.org/wiki/Mipmap Wikipedia Mipmap page].
  
{| border="1" cellpadding="2" cellspacing="0"
+
[[image:nvidia_mipmaps.jpg|frame|left|Mip maps. Image by [http://developer.nvidia.com/ NVIDIA].]]<br clear="all"/>Most game engines will create the mips automatically, if mips don't already exist in the texture file when it's loaded. If you create the mips yourself, you can do some interesting texture tricks, by taking advantage of the fact that the textures are swapped by distance... fogging, sharpening, fading out, etc.  
|-
+
|}
+
 
+
Most game engines will create the mips automatically, if mips don't already exist in the texture file when it's loaded. If you create the mips yourself, you can do some interesting texture tricks, by taking advantage of the fact that the textures are swapped by distance... fogging, sharpening, fading out, etc.  
+
  
 
[http://developer.nvidia.com/object/General_FAQ.html#t1 NVIDIA] says: ''"Whether you're using mipmapping or not, you should never use "nearest" filtering, which causes texture swimming artifacts when textures are minified. Using mipmaps allows you to create accurately minified versions of your textures, so that they look as good as possible in the distance. Mipmapped textures only require 33% more memory than their non-mipmapped counterparts, so it is wise to trade off the small amount of extra memory for the vastly improved image quality. In addition, today's GPUs are optimized to handle mipmaps very efficiently, so the performance impact of using mipmaps is minimal."''
 
[http://developer.nvidia.com/object/General_FAQ.html#t1 NVIDIA] says: ''"Whether you're using mipmapping or not, you should never use "nearest" filtering, which causes texture swimming artifacts when textures are minified. Using mipmaps allows you to create accurately minified versions of your textures, so that they look as good as possible in the distance. Mipmapped textures only require 33% more memory than their non-mipmapped counterparts, so it is wise to trade off the small amount of extra memory for the vastly improved image quality. In addition, today's GPUs are optimized to handle mipmaps very efficiently, so the performance impact of using mipmaps is minimal."''
Line 22: Line 13:
  
 
== Mip Fading ==
 
== Mip Fading ==
[[Image:mip_mountblade-mip-fade-tutorial.jpg|thumb|200px|In this example the original texture has been darkened, then the mips have been tinted with progressively brighter colors as they get smaller, using the [[#Nvidia_DDS_Plugin_for_Photoshop|Nvidia DDS plugin]]. This causes a velvet-like effect for the grass surface.]]
 
 
 
Because of the way texture filtering works, distant polygons (and oblique polygons) usually use the smaller mip levels of a texture. This can be exploited for special effects, by purposefully editing the mip levels.
 
Because of the way texture filtering works, distant polygons (and oblique polygons) usually use the smaller mip levels of a texture. This can be exploited for special effects, by purposefully editing the mip levels.
  
== Nvidia DDS Plugin for Photoshop ==
+
In the following example the original texture has been darkened, then the mips have been tinted with progressively brighter colors as they get smaller, using the [[#Nvidia_DDS_Plugin_for_Photoshop|Nvidia DDS plugin]]. This causes a velvet-like effect for the grass surface.
If you're using the [[Category:TextureFormatRuntime|DDS format]] the [http://developer.nvidia.com/nvidia-texture-tools-adobe-photoshop NVIDIA DDS plugin for Photoshop] the [http://developer.nvidia.com/nvidia-texture-tools-adobe-photoshop NVIDIA DDS plugin for Photoshop] has a great interface for testing mips settings and creating custom mips. However it doesn't work in a 64bit operating system.
+
 
+
=== Sharpening Settings window ===
+
  
{| border="1" cellpadding="2" cellspacing="0"
+
{| border="1"
 +
|[[Image:mip_mountblade-mip-fade-tutorial.jpg|thumb|left|200px]]
 +
|[[Image:mip_mountblade-no-mip-fade_thumb.jpg|thumb|left|200px|Without mip fading.]]
 +
|[[Image:mip_mountblade-yes-mip-fade_thumb.jpg|thumb|left|200px|Mip fading has been added.]]
 
|-
 
|-
 +
|colspan="3"|Mip map fading tutorial and examples. Images by [http://wypierpapier.blogspot.com/ 'Gutekfiutek'].
 
|}
 
|}
  
Each of the numbered boxes at the bottom corresponds to one of the mip levels... "Image" is the top mip level, and they descend from there.  
+
 
 +
== Nvidia DDS Plugin for Photoshop ==
 +
If you're using the [[DDS]] the [http://developer.nvidia.com/nvidia-texture-tools-adobe-photoshop NVIDIA DDS plugin for Photoshop] the [http://developer.nvidia.com/nvidia-texture-tools-adobe-photoshop NVIDIA DDS plugin for Photoshop] has a great interface for testing mips settings and creating custom mips. However it doesn't work in a 64bit operating system.
 +
 
 +
=== Sharpening Settings window ===
 +
[[image:tmp.320.nvidiadds_sharpeningsettings.jpg|frame|left|The Sharpening Settings dialog.  Image by [http://developer.nvidia.com/ NVIDIA].]]<br clear="all"/>Each of the numbered boxes at the bottom corresponds to one of the mip levels... "Image" is the top mip level, and they descend from there.  
  
 
The number of boxes you need to adjust depends on how large your original image is. For example a 256x256 map only has nine mip levels: 256,128,64,32,16,8,4,2, and 1 (1x1). So you would only have to adjust the boxes from Image to 8.
 
The number of boxes you need to adjust depends on how large your original image is. For example a 256x256 map only has nine mip levels: 256,128,64,32,16,8,4,2, and 1 (1x1). So you would only have to adjust the boxes from Image to 8.

Revision as of 18:07, 29 November 2014

What is a Mip Map?

To render a texture more smoothly in a game, it is resized multiple times to make "mips," which are smaller versions of the texture. These smaller versions are swapped or blended with the original texture as the texture recedes in the scene.

Without mips, as unfiltered texture pixels get smaller than screen pixels they shimmer like crazy, because the pixels are quickly switching from one color to another. This is called "nearest neighbor" filtering. Instead games usually use bilinear, trilinear, or anisotropic filtering, for smoother texture rendering.

The term mip is based on the Latin phrase multum in parvo, meaning "much in a small space". See the Wikipedia Mipmap page.

Mip maps. Image by NVIDIA.

Most game engines will create the mips automatically, if mips don't already exist in the texture file when it's loaded. If you create the mips yourself, you can do some interesting texture tricks, by taking advantage of the fact that the textures are swapped by distance... fogging, sharpening, fading out, etc.

NVIDIA says: "Whether you're using mipmapping or not, you should never use "nearest" filtering, which causes texture swimming artifacts when textures are minified. Using mipmaps allows you to create accurately minified versions of your textures, so that they look as good as possible in the distance. Mipmapped textures only require 33% more memory than their non-mipmapped counterparts, so it is wise to trade off the small amount of extra memory for the vastly improved image quality. In addition, today's GPUs are optimized to handle mipmaps very efficiently, so the performance impact of using mipmaps is minimal."

Mip Fading

Because of the way texture filtering works, distant polygons (and oblique polygons) usually use the smaller mip levels of a texture. This can be exploited for special effects, by purposefully editing the mip levels.

In the following example the original texture has been darkened, then the mips have been tinted with progressively brighter colors as they get smaller, using the Nvidia DDS plugin. This causes a velvet-like effect for the grass surface.

Mip mountblade-mip-fade-tutorial.jpg
Without mip fading.
Mip fading has been added.
Mip map fading tutorial and examples. Images by 'Gutekfiutek'.


Nvidia DDS Plugin for Photoshop

If you're using the DDS the NVIDIA DDS plugin for Photoshop the NVIDIA DDS plugin for Photoshop has a great interface for testing mips settings and creating custom mips. However it doesn't work in a 64bit operating system.

Sharpening Settings window

The Sharpening Settings dialog. Image by NVIDIA.

Each of the numbered boxes at the bottom corresponds to one of the mip levels... "Image" is the top mip level, and they descend from there.

The number of boxes you need to adjust depends on how large your original image is. For example a 256x256 map only has nine mip levels: 256,128,64,32,16,8,4,2, and 1 (1x1). So you would only have to adjust the boxes from Image to 8.

It takes some testing to see what works best. Something that helps is the 3D Preview button, just make sure to adjust the Preview Settings first so it doesn't have to make a ton of different compressions each time you change a setting.


Personal tools
Namespaces

Variants
Actions
Navigation
Tools