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.