Mipmap Quality

Pope Kim Jun 24, 2013

So mipmaps are often blurry and artists think we are bunch of morons making their awesome artwork so blurry.. :-) You know, most of the time we see lower mips all the time in the game. It depends on camera settings, but I found it's very rare that we see highest mip in most of the games out there.

3 Widely Used Tricks

I know there are 3 widely used ways:

  1. increased texture size
  2. mipmap bias or
  3. use of kaiser filter when generating mip chain.

First way can be only used selectively because it increase the memory footprint. Probably this is more viable with next-gen consoles with way bigger memories.

Second way usually introduces too much aliasing because it only pushes back when the mip starts to change. If there's a way to control the curve when consecutive mips kick in, I would love it more. (I can do all this in HLSL of course)

Third way is something I didn't see any improvement personally. Some people say kaiser filter would make mipmap so much better than box filter. But when I tired it, i didn't really see much improvement.

Less Used But More Effective Trick - Sharpening Filter

And there's another way that is not as widely used, but I found this works really well: apply sharpening. (This is why I contributed a generic convolution filter to Nvidia Texture Tools 2. There were a couple of people requesting this feature, but the maintainer didn't see this feature important, so I had to make it by myself)

The concept is very simple. You just do this for a few top mips while generating the mipchain, hopefully in your texture baker.

  1. Generate mip 1 from original texture(mip 0) by using box filter
  2. Apply sharpening filter on mip 1
  3. Generate mip 2 from the result from Step 2 by using box filter
  4. Apply sharpening filter on mip 2
  5. Repeat….

So which technique do you use to increase mipmap quality? Or is there any other trick that I'm not aware of?