TR…
TR: We've recently learned that the X800 series, and in fact the 9600 as well, uses an adaptive algorithm for trilinear filtering. We've also seen that it applies fuller filtering to colored mip maps. Why?
Nalasco: We use an algorithm that performs an analysis on texture maps and mip map levels to determine what type of filtering is necessary to produce the ideal image quality while producing the best performance. The idea is that you don't want to do any more work than is necessary to produce the best quality image. This is the heart of any adaptive algorithm. The amount of filtering that you need to do to achieve that will vary depending on the characteristics of the particular texture that you're working on.
To talk about kind of endpoint cases, if you had a texture where all of your mip levels looked exactly the same, there would be no benefit whatsoever to doing trilinear filtering, and pure bilinear would accomplish the exact same effect.
To go to the other case, if you have a very large difference between adjacent mip map levels, such as when you have colored mip maps, then nothing less than trilinear filtering, where you take eight texel samples for all pixels, will deliver the ideal quality image. Now, most of the textures you see in actual games fall somewhere in between those two extremes, and depending on the characteristic of the texture, you can get the ideal image by using something that lies in between using the full number of samples for each pixel and using something less.
TR: From what I've read over the last few days, there are cases where the algorithm reverts to "legacy trilinear." Two examples are the cases of colored mip maps and dynamically generated textures. Can you offer some examples of where legacy trilinear is used, or is this not a correct reading of the way that the algorithm works?
Nalasco: Unfortunately, we can't give specific details about the way that the algorithm works because it's a proprietary software algorithm and we have to protect our intellectual property. There's currently a patent pending on the technology. However, the general idea is that if we can analyze the texture and determine that we can eliminate the visible boundary between adjacent mip map levels using a given number of samples per pixel, then we will implement a filtering technique which seeks to minimize the number of samples that we need to take to achieve that effect.
What that means is that if you look at textures that have a lot of very fine detail, an example would be a texture that has alternating single-texel bands of color, that's an example of a texture that's not a colored mip map but is very difficult to make look good using only bilinear filtering. Another example is if you see textures that have narrow lines, like lines on a road that extend off into the distance, this is another case where just pure bilinear filtering looks very bad, and if you don't do something much closer to using the full eight samples per pixel, you'll see visible artifacts.
Our algorithm will use an adaptive technique to, based on the characteristics of the texture, use the necessary amount of samples per pixel to deliver the ideal image quality. Our testing, at least, has indicated that the texture filtering quality of the X800 series was always the same or better than the Radeon 9800 series, which does not use this adaptive technique.And we encourage anyone else who wishes to do their own testing and their own analysis, and see if they can verify the results. But we're very confident in the quality level that we're able to achieve with this algorithm. And of course, because we're minimizing the amount of work done to achieve that quality level, we can offer the best performance with trilinear filtering and anisotropic filtering.