Silhouette Maps for Improved Texture Magnification

 Slide 47 of 61 [index] [first] [prev] [next]  

Before I show you the demo, let me talk about one last important detail.

Silhouette maps add higher frequency content to the textures, and thus they must be properly filtered when they are minimized or they will alias.

Fortunately, there is already a real-time technique for dealing with texture minimization that works quite well: the mipmap. Because our silhouette map is a texture-based representation, it is compatible with mipmapping.

Thus to eliminate artifacts when our textures are minimized, we do the following: we convert our silhouette map texture into a standard bitmap of the same resolution by computing the area coverage of each of the 4 deformed cells under each texel of the final texture and then compute the color of each texel by the weighting the four deformed cell colors by their respective areas. This gives us a bitmap which has been filtered across the discontinuities and which will look similar to the bitmap generated if you perform standard filtering to downsample a normal texture.

Once you have this bitmap, we can mipmap it as normal. During rendering, we use the graphics hardware to tell us when we need to switch between the mipmap to the silhouette map representation to allow us to seamlessly transition between them. Because the mipmaps have been generated from a bitmap created directly from the silhouette map texture, there is no popping or artifacts during this transition.

Remember that these mipmapped versions will only be used when the ratio of screen-pixels to texture pixels is less than 1 (never when the texture is magnified on the screen), so the blurriness of the mipmap will not be noticeable because multiple texels will map to a single screen pixel and never vice-versa.

As presented at SIGGRAPH/EUROGRAPHICS Graphics Hardware 2004
by Pradeep Sen on August 30, 2004