3Dc is a compressed texture file format for normal maps by AMD (formerly ATI). It is a two-component compression format where only X and Y are stored, so it only supports tangent-space normal maps. Each channel uses the same compression technique as DXT5 alpha. 3Dc is also known as ATI2N and in DirectX 10 it's known as BC5.
- ATI_Compress - a texture compression library that handles 3Dc.
- NVIDIA Texture Tools - a texture compression library that handles 3Dc.
- Wikipedia 3Dc page - more information about 3Dc.
- Block Compression: BC5 - documentation from the Microsoft Developer Network (MSDN).
- Real-Time Normal Map DXT Compression (PDF) - a whitepaper from id software & Nvidia; section 3.3 describes 3Dc.
Notes from an ATI presentation at the Russian Game Developers Conference' 2004:
Maps of normals produce beautiful images but they almost double the texture volume. Maps of normals which do not cause artifacts must be stored in textures of 8 bits per channels at least (RGB8), or better of 16 bits (!G16R16), like in all ATI's demos. In order to make the texture volume smaller the company carried out some experiments with DXTn formats (lossy compression called S3TC in OpenGL) and found out that the DXT5 was the most optimal: in this format each of two coordinates (x, y) is stored in its channel: color and alpha. In this format the memory size required is 4 times lower (32 bits against 8 bits)! As the further extension, ATI will support a new format in its new chips. It's based on the DXTC and previously named ATI2N. It differs from DXT5 in compression of only a color component (out of three) using the method identical for the alpha channel compression. The new format will tremendously increase the precision of compressed texture storage compared to the DXT5, with the size being the same.