3Dc
If you recall, S3’s texture compression technology, S3TC, was used with great success in DirectX and OpenGL titles to achieve the look of very high resolution textures without significantly taking up a lot of space in graphics memory, and thus ensuring optimal performance, as the compressed textures didn’t impact memory bandwidth as much as traditional high resolution textures. S3TC was so successful that it was eventually rolled into DirectX.
This was great back in the DX7 days, but with today’s programmable titles, a variety of material properties are now stored in textures (such as the surface of the material’s shininess or roughness), along with the traditional color information S3TC was so good at compressing. Unfortunately, DirectX texture compression is not as effective at compressing these material properties as it is at compressing color data, an alternative was sought by ATI’s engineers – 3Dc, which is designed to handle normal maps, and the situation we just described above: packing multiple pieces of data into a single compressed texture.
3Dc in normal maps
Normal maps are an extension of bump maps. Whereas bump maps were used to add bumpiness to otherwise flat surfaces, normal maps can contain more detailed surface information, allowing them to go much beyond more traditional bump maps.
![ATI's RADEON X800 PRO & X800 XT Platinum Edition [ Serious Sam 2 with 3Dc @ 735 x 515 ] > View Full-Size in another window.](images/08-s.jpg) Serious Sam 2 with 3Dc
|
|
![ATI's RADEON X800 PRO & X800 XT Platinum Edition [ Check out the before and after shots @ 756 x 463 ] > View Full-Size in another window.](images/09-s.jpg) Check out the before and after shots
|
|
Normal maps are becoming increasingly popular in today’s games. Crytek uses normal maps in Far Cry to create realistic characters and objects without resorting to using more polygons, which would negatively impact performance. If you recall ATI’s Ferrari demo from the RADEON 9700 PRO launch, normal maps were used to give the Ferrari F50 more detail.
Unfortunately, DXTC and S3TC are ineffective at compressing normal maps. They introduce blocky artifacts on normal maps and have a hard time dealing with the small edges and detail normal maps are designed to show. As a result, developers have been forced to limit the number of normal maps they use, or rely on lower resolution maps instead.
3Dc solves this problem by providing up to 4:1 compression of normal maps without significantly reducing image quality. ATI’s technique is hardware accelerated, so the performance impact is minimal. The end result is that developers are able to use higher resolution, more detailed normal maps, or use them on multiple objects within a scene rather than just a handful without consuming all the memory on a graphics board or crippling its memory bandwidth (and thus negatively impacting performance).
![ATI's RADEON X800 PRO & X800 XT Platinum Edition [ Another example of 3Dc, this time from Ruby demo @ 716 x 572 ] > View Full-Size in another window.](images/10-s.jpg) Another example of 3Dc, this time from Ruby demo
|
|
In addition, ATI claims its 3Dc technology can be easily implemented into existing titles that already support normal maps. The same compression tools used for DXTC and S3TC can be used for 3Dc with only a few minor modifications. They mention Croteam’s upcoming Serious Sam 2 title as the most recent example. In a matter of days, Croteam had Serious Sam 2 up and running with 3Dc. Already Croteam (Serious Sam 2) Irrational Games (Tribes Vengeance), Firaxis (Pirates), Digital Extremes (DarkSector), Valve (Half-Life 2), Ritual, and Pseudo Interactive have signed on to use 3Dc in their upcoming titles.
And in case you were wondering, 3Dc can be used on older RADEON hardware, but with slightly lesser quality. We’re not sure if ATI plans to roll 3Dc support into existing RADEON 9500 and up cards in a future driver update, it’s possible but ATI may want to leave this trump card for X800 and future mainstream and value products only. ATI is also working on getting 3Dc rolled into future versions of DirectX.