1) Texture Compression

What is texture compression and what is the difference between S3TC and VQTC?`
Texture compression is a pretty simple concept. If you have ever taken a screenshot or made some artwork that you wanted to send by email, you probably converted your image to jpg format so it was smaller and took less time to send. This process is a bit like using texture compression.

Excerpt From the S3 Website:
"S3TC breaks a texture map into 4X4 blocks of texels. For an opaque texture map, each of these texels is represented by two bits in a bitmap, for a total of 32 bits. In addition to the bitmap, each block also has two representative 16 bit colors in RGB565 format associated with it. These two explicitly encoded colors, plus two additional colors that are derived by uniformly interpolating the explicitly encoded colors, form a four-color lookup table. This lookup table is used to determine the actual colors at any texel in the block. The 16 texels are encoded using 64 bits total, or an average of four bits per texel. Simple transparencies (single bit or color keys) are performed by reserving one of the four colors to indicate that the level is transparent and the third color is just the average of the explicitly encoded colors. The order of the two encoded colors determines whether the block is completely opaque or whether it has transparent texels. When the block is determined to be one that has transparent levels, the fourth bit encoding (11) indicates a transparent texel, while the other derived value is just the average of the two encoded color values."

The process is explained by this image. From left to right, you first see the original texture, which is broken up into a 4X4 map. After that you see the lockup table. The colors 00 and 01 are the two fixed ones, number 10 is the average from some colors and number 11 is the transparency info. What happened here? Well the original texture was built up with a about 6 different colors and some transparency layers. After the process with the lockup table, we ended with a texture with only 3 colors (two fixed ones and one average) and 1 transparency. This simple example of what happens in compression. We went from a table with 7 colors to a table with only 4 colors (6+1 and 3+1).

S3TC has a ratio of 6:1, so if you have 5MB of free memory on you video card, you can store 30MB of textures using S3TC. S3 also supports full AGP mode, so if you are using that you could have another 8MB free for textures (actually you could use more, as AGP supports 32, 64, 128 and more). With S3TC this would be 8X6 = 48MB.

You could use this to store a lot of little textures, but when happens when you need big ones, like the 512*512 textures in Q3A? S3 claims that their compression is still efficient in this situation, because the memory bandwidth is a lot smaller when using S3TC, so the game can run faster. Whether or not this is true remains to be seen. We just have to wait until Q3A or Unreal Tournament ships. The Q3A test uses mostly 256*256 textures, some 512*512 and some other sizes, but still image quality is a lot better on the TNT*. For example take a look at this page for comparison. The shots (800*600) are taken on a Creative Labs TNT (with full texture size, 16-bit color and 16-bit textures) and on a Creative Labs Voodoo 2 12MB (2/3 texture size, 16-bit color and 16-bit textures). The distance from player to wall is exactly the same on each shot, but remember that in the last shot the texture is not 512*512. The game still runs good with these settings. On both cards you can get better image quality by setting the TNT to 32-bit color, 32-bit textures, and full texture size and setting the Voodoo on full texture size, 16-bit color, and 16-bit textures. The game won't run well like this though. If you want to see these settings, click here. These textures are full 512*512.

*As I said the image quality from the V2 is not only the texture problem and V3 should look better.