Introducing the FXT1
3dfx's latest push into high image quality gaming
When 3dfx announced their T-buffer technology a month ago, concerned readers immediately thought "Oh no, this is the only thing they've got to battle hardware T&L by Nvidia and S3?" To be honest, a faster Voodoo3 with nothing new but T-Buffer would have been a let-down, especially from a company that introduced innovations such as SLI! But with a thought back to the incredible potential of texture compression, it wasn't a surprise to see that 3dfx was incorporating such a visual (and performance) enhancement technology into their next-generation product.
So how does FXT1 work?
3dfx sees FXT1 as a natural evolution, even from S3TC. Whereas S3TC uses one algorithm on opaque textures, FXT1 will select from 3 optimized algorithms per block (on opaque textures) to determine a 4-bit texel block. The use of four different algorithms (including the extra for translucency) allows FXT1 to choose the highest image quality algorithm for each texel block encoded. The four algorithms are as follows:
CC_Mixed: Similar to S3TC, 4 x 4 texel blocks are represented by two bits per texel. Each block has 2 16-bit colors and 2 derived colors to create a four-color lookup table. Transparent textures are created by making one of the four colors transparent.
CC_HI: Best for spatial resolution, this algorithm uses a 4 x 8 texel block, and is represented by three bits-per pixel. Each block stores 2 15-bit colors, but the scheme creates 5 additional colors for a total of seven. An 8th color is defined as a transparent color. This scheme uses a 3-bit index for an 8 color lookup table.
CC_CHROMA: Best for complex color areas, this algorithm also makes use of a 4x8 texel block (32 texels), represented by 2 bits-per-texel. Four 15-bit colors are used, as compared to CC_HI's 2, and no interpolation is calculated, as the four-color lookup table is defined directly by the four 15-bit samples. CC_CHROMA only supports opaque texels, but is best at representing sharp color shifts and changes.
CC_ALPHA: is described as giving the best control over complex alpha transparencies at four bits-per-texel. A 4 x 8 block is represented by 2 bits-per-pixel for both alpha and translucent textures. 3 20-bit colors are generated, the first two of which are the primary colors in the left 4x4 block, while the second and third colors are used for the right 4 x 4 block. Four interpolated colors are generated between two respective primary colors.
![3dfx FXT1 Texture Compression [ Texture Storage Sizes with FXT1 @ 568 x 131 ] > View Full-Size in another window.](images/chartsize-s.gif) Texture Storage Sizes with FXT1
|
All of these algorithms result in a 4 bit-per-texel storage unit, giving an 8 to 1 size savings over uncompressed images.