Ok, so we know where the discontinuity boundaries
are located, but now we need to perform the filtering of the
texture samples within the specified regions.
There were two main goals we had in mind when we were
developing our filtering approach. First, the filtering had to be
fast because it was intended for real-time applications. Second,
it had to be able to be able to be implemented on
current graphics hardware.
To make it fast, we decided
to work with a small, local filter kernel that only uses the
color values at the corners of the current cell to reconstruct
the color value.
You see, like in any reconstruction problem we are free to
use an arbitrary number of samples in our reconstruction kernel. By limiting
ourselves to only the samples in the four corners of the cell, we make the
algorithm fast. The results of this approximation are quite reasonable,
as we shall see in the live demonstration in a few minutes.
Likewise, we decided to use bilinear interpolation as the filter
basis because it is fast and maps well to graphics hardware. After
all, it is already
built-in to the hardware for standard texturing!