-Increased total number of textures available for rendering
Texture compression technology reduces the amount of memory required to store a given texel, thus in turn reduces the amount of memory required to store an entire texture map. As a result of using texture compression, more textures can be stored in a given amount of texture memory. For example, a typical 3D accelerator storing a 256x256 texture in a 32 bit-per-texel format requires 256 Kbytes of texture memory storage. However, storing that same 256x256 texture in a compressed 4 bit-per-texel format requires only 32 Kbytes of texture memory storage, an effective savings of 224 Kbytes. Or, from a different perspective, the same amount of texture storage required to hold a single 256x256, 32 bit-per-texel texture can hold 8 unique 256x256, 4 bit-per-texel textures. These 8 unique textures can be used to dramatically improve the overall visual quality of a rendered scene.
This table shows the memory requirements for various sizes and color depths of textures without compression. With FXT1™ texture compression, 32-bit images are reduced by a ratio of 8:1 without a perceivable loss in image quality.
-Higher resolution textures for better image quality
With limited on-board memory, first and second generation consumer 3D accelerators were limited to texture maps with a maximum resolution of 256x256 texels. These low-resolution textures look fine when viewed at a distance, but when viewed at a closer range the textures become blurred and lack fine detail. However, utilizing higher resolution textures to improve visual quality can cause texture memory requirements to be too large to be economical. By utilizing texture compression, higher resolution textures can now be utilized to offer significantly improved visual realism in economical amounts of texture memory. Consider our example 256x256, 32 bit-per-texel texture map. The same amount of memory required to store this texture map, 256 Kbytes, can hold a single 4 bit-per-texel texture map at a resolution of 1024x512. Utilizing larger texture maps can significantly enhance the overall visual quality of a rendered scene.
The 256x256 image on the left shows very little detail and looks blurry. The same image on the right at 2048x2048 shows very fine detail including individual rocks and blades of grass, without any of the associate blurriness.
-More textures per polygon for advanced effects
With support for multiple textures per surface in all of the major 3D APIs, content developers are now using two or more textures per surface to increase image quality and create special effects. By using more than one texture per surface, effects like advanced real-time lighting, specular highlights, and bump mapping are possible, without increasing the total triangle count for the scene or overwhelming the available memory bandwidth.
With multiple textures, advanced lighting effects like spotlights and shadows can be created very easily and without using geometrically complex models. Lighting effects using multi-texturing hardware are typically performed by blending a light map (a black and white image that emulates the differences in light intensity) with the base texture of an object. When these two textures are blended, the user sees all the lighting detail without the performance burden caused by alternative techniques which utilize significantly higher geometric models and complex lighting equations.
Texture compression benefits these multi-texturing effects by decreasing the total bandwidth needed to transfer the extra texture data used for the second texture . Additionally, the resultant memory savings which comes from using compressed textures allows the application to use multi-texturing techniques on many more objects in the scene. Consider that a typical 512x512 texture at 32 bits-per-texel would require 1MB of texture storage space. If the 3D scene contained just eight objects with two textures each, current generation cards (with only 16MB of memory) would use up all available bandwidth and storage space with no room left over for mipmaps. With 4-bit-per-texel texture compression, a total of 40 or more objects could be multi-textured, including mip maps, before memory storage is depleted. This allows multi-texturing for entire rooms and all of the objects or characters in a given scene.
On the left, a light map is blended with a texture map to create the effect of a spotlight, without using extra triangles. In the middle, the same image is created by tessellating and adding many triangles to achieve accurate lighting. On the right, an image using only four triangles does a poor job of representing the spotlight effect.
The same images as above, with the mesh removed from the picture.
-Lower bandwidth requirements for better fill-rate performance
Fill-rate is the number of pixels or texels that can be drawn in a given period of time. The higher the fill-rate of a 3D accelerator, the higher frame rates it will produce for a given piece of content. Of course higher frame rates are desirable as they create smooth 3D rendering without the jerkiness associated with lower frame rates. Overall, fill-rate performance is directly affected by the amount of texture memory bandwidth available. In the case of a 32-bit texture, 8 times the amount of texture memory bandwidth is required to render a given texel when compared to a 4-bit texture. This dramatic reduction of required texture memory bandwidth, as a result of utilizing texture compression, results in much higher fill-rates and frame rates, thus creating a much more enjoyable, immersive 3D experience.
This chart shows the relationship between texture bandwidth and fill-rate. Notice the dramatic increase in texture bandwidth needed to achieve a desired fill-rate (4x as much bandwidth is needed when using bilinear filtering!). Without enough available bandwidth, fill rate performance suffers.
Textures have a long way to travel before they are rendered on your screen. FXT1™ reduces their size considerably, thereby reducing bandwidth requirements making the transfer more efficient