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.