Silhouette Maps for Improved Texture Magnification

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

So we have shown we can handle the interpolation of the 1, 2, 3, and 4-corner cases all with the existing bilinear interpolation function available on the hardware.

The implementation of this filtering is a bit tricky, however, because we have a large number of different cases to deal with. For example, several of the 6 cases I showed earlier could be rotated or flipped in many ways. The full discussion of this implementation is given in the paper and we do not have time to discuss it here.

However, I can give you a high-level idea of our implementation. We note that every case uses bilinearly interpolated texture lookups with different input coordinates. Thus, it becomes a problem of getting the fragment program to move the right inputs into the texture lookup based on the particular configuration. To do this, we implement a "multiplexer" with a fragment program that uses the configuration information to perform conditional moves and get the right values into the inputs of the TEX lookup. To simplify the implementation, a truth table and a Karnaugh map were created for all the cases and input combinations to simplify the logic required.

All these details can be found in the paper...

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