Silhouette Maps for Improved Texture Magnification

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

Now let's talk about the memory cost of adding these silhouette map textures to an application.

The current implementation which I showed you in the demos uses a float4 texture to store each cell of the silhouette map. That's two floats for the x and y coordinates of the point and a float for each of the two booleans. This is clearly overkill!

One might consider packing the information more tightly, perhaps even into a single byte. If we could pack the x and y coordinates into 3 bits each, and then have two extra bits for the two flags, we would be able to pack each cell into a single byte.

This would mean that we would add only a single byte per texel of the texture, or a 33% addition to a 24-bit texture. Even with our initial approach of adding a float4 to each texel, we add 124 bits, or 516% to the texture. To keep this number in perspective, note that the other option is to increase the texture resolution, but even increasing the texture resolution by only 3x in x and y increases the memory consumption by 900%!

Thus the silhouette map texture approach offers significant memory savings, even in its current implementation.

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