Silhouette Maps for Improved Texture Magnification

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

Silhouette map textures can be used anywhere textures are used. For example, we use them here to modulate a procedural shader. In this example, we want to modulate a shader with the hi-res artwork shown in the upper-left. Naturally, such a design would be difficult to compute procedurally, so a texture is a natural way to encode the design. In addition, the texture must be kept low-res, since the developers typically don't want to waste a lot of texture memory with these textures.

If we turn the artwork into a 64x64 standard texture and magnify the result of the final shader, we would get a result as that shown on the left. Here we are using the texture as an input to the shader and are using its value to decide whether to output black or the result of the procedural computation. We can clearly see the stair-stepped "jaggies" caused by the quantization of the standard texture in the final result.

We might try to be more clever, perhaps by interpolating the texture value first, and then thresholding it to control the shading. This would us the result in the middle image. This is still not exactly what we want. The reason we are unable to recreate the exact sharp edges of the original hi-res artwork is that they are not present in the standard texture representation, so we can only guess what they originally looked like.

Silhouette maps, on the other hand, explicitly store this information. Thus, if we take a look at the result of our silhouette map texture algorithm, we can see that it allows us to better approximate the original artwork. Of course, the silhouette map texture shown here is of the same resolution as the other textures.

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