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:
- increased texture size
- mipmap bias or
- 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.
- Generate mip 1 from original texture(mip 0) by using box filter
- Apply sharpening filter on mip 1
- Generate mip 2 from the result from Step 2 by using box filter
- Apply sharpening filter on mip 2
So which technique do you use to increase mipmap quality? Or is there any other trick that I'm not aware of?