3Dc
Normal Mapping
There are several different methods of creating detail in a 3D rendered environment, and the fundamental way of doing it is by increasing the geometry level used. However, the levels of geometry required to create very detailed images, such as the contours on a stone surface, or wrinkles in skin, are far too costly for consumer devices to do as they traditionally don't have the geometry power to do this - even film renderers use alternative techniques for very high levels of detail.
One method for creating the illusion of detail, without the geometry performance, is that of normal mapping. Because consumer renderers have been traditionally much more powerful at the pixel rendering end of the pipeline than at the geometry generation end, normal mapping is catching on much more with developers as it basically uses a texture to generate greater levels of detail, thus burning pixel performance as opposed to geometry.
Traditional rendering utilised some fairly plain geometry and will then texture some detail on to the geometry, however this gives a flat appearance to the rendered output, which isn't necessarily very realistic. However, in conjunction with texturing a "normal map" can be used, which is a special texture map that provides information on how light should effectively bounce off the particular surface being rendered, giving the illusion of much more detail and not looking flat.
Normal maps can be created from tools which take very high polygon detail models or renderings and can then generate a normal map from the geometry detail. In the actual game or application a much, much lower geometry detail model may be used, but then the normal map that was generated from the high detail geometry model can be applied to simulate a level of detail greater than the base polygon model. However, the issue with normal mapping is that to achieve greater levels of detail higher detail normal maps are required, hence larger texture sizes are required - the problem with larger texture sizes is that they both impact on rendering performance and the more you have, the less texture space is available in the graphics board's frame buffer space.
One solution to the issue of the size of normal maps is to compress them, however current DXTC / S3TC compression schemes are block based and due to the nature of normal maps can result in erroneous outputs including loss of detail, especially with specular lighting and reflections. 3Dc is ATI's solution to this problem.