ATi's X800 Pulls Off Another Coup in the Graphics Performance War

3Dc Normal Map Compression

Modern graphics cards employ compression techniques in several areas. In some cases, this happens internally on the chip, in others externally through software or the file formats in which the information is stored.

Texture compression (S3TC, DXTC), for example, has been used for some time now to reduce the size of high-res textures. The textures are saved in a compressed format that the graphics chip can read. This compression works very well with textures using RGB or RGBA format without sacrificing a lot of image quality. When applied to two-channel texture formats, however, this compression technique produces artifacts.

Marketing speak alert! 3Dc does not necessarily mean better details! 3Dc only reduces the file size of the normal map through compression, thereby saving memory bandwidth. Game developers can either improve performance by compressing the normal map or make their in-game world more detailed by using a more detailed, high-resolution normal map and then compressing it.

Many modern games such as FarCry, for example, use an enhanced method of bump-mapping, called Normal Mapping. Normal Maps are special textures that contain detailed information of a polygon object. Like bump maps, these normal maps are meant to increase object detail without requiring highly detailed polygon models. The nice part is that the lighting also looks correct from every angle. Take for example the head of a character in a game:

First, the game developer creates a very detailed model of the head using a large number of polygons. Later, the actual in-game character will use a simplified model of the head with much fewer polygons. The difference between these two models can be calculated and then turned into a texture, which incorporates a good portion of the detail that would be lost in the transition between the two models. This normal map can then be applied to the simplified model, making it look almost as detailed as the complex model. Of course, this can never look quite as good as the "real thing," since no geometry data is added through a normal map.

Let's take a tire in a racing game, for example. The first model is very complex and includes lots of detail such as the tread pattern, while the second only consists of a rough circular shape made up of 16 elements. In combination with a normal map, this second model would look very detailed, but you would still be able to make out the approximated circular shape.

There are also some drawbacks when using normal maps. For one, the load on the graphics processor is increased, since using normal maps is basically the same as applying another texture to the pixel. The other drawback is the higher amount of data required. The more details the developer wishes to incorporate, the higher the resolution the normal map has to be - and the more memory bandwidth is needed. Although normal maps can be compressed using DXTC, this usually results in the creation of visible compression artifacts. Just like S3 developed S3TC back when ever larger textures became a problem, ATi has now developed a new compression technique especially for normal maps, called 3Dc. According to ATi, this method can compress normal maps at a ratio of up to 4:1 without great loss of quality.

ATi's 3Dc compression compared to DXTC. Unfortunately, we don't know which compression ratio was used in this example. Also, 3Dc doesn't automatically guarantee better normal maps. Thanks to the compression, however, it does allow for more detailed normal maps of the same file size.

Game developers can either increase the performance of their games, since the same level of detail can now be displayed using less memory bandwidth, or add further detail to them by using compressed normal maps with higher resolution. Adding support for compressed normal maps to games shouldn't pose a major problem either, as the pixel shaders that handle normal mapping would only need to have two instructions added to them to work with compressed normal maps.

3Dc will be implemented in all X800 cards and of course all cards based on the R420 core. Older chips will not be able to use this feature, however. Whether or not 3Dc will be incorporated into DirectX the way S3TC was remains to be seen and is completely up to Microsoft, but it seems to be ATi's goal. At any rate, the company calls its technique an open standard, meaning it can be used by anyone without royalty payments. It seems likely that there will be at least a few games that will support 3Dc, in the same way the original Unreal supported S3TC through an add-on.