The DirectX texture format .dds supports different compression types. They can be set on export, from example when using the Nvidia Texture Tools, or they can be changed in tools such as OpenIV for GTA IV and V. Block compression formats are used most commonly, they give the best compromise between size and quality. In some cases however, older block compression formats such as DXT (BC1, BC2 and BC3) lose color information, which is especially noticeable with grey colors. Newer formats such as BC7 combine a low file size with very high quality, but may not be supported by older games.
This table compares the most commonly used formats. File size is for a 1024x1024 texture with mipmaps. For .dds files, the complexity of a texture does not affect its size, only the resolution does.
Type |
Quality |
Alpha | File Size |
Use Cases
|
BC1 (DXT1)
|
Block compression, can cause compression artifacts or discoloration
|
None
| 683 KB
|
Textures without an alpha (transparency) channel.
|
BC2 (DXT3)
|
Block compression, can cause compression artifacts or discoloration |
4 Bit Alpha
| 1366 KB
|
Textures with a simple alpha channel without any gradients or smooth transitions. Due to the identical file size, using BC3 is recommended instead.
|
BC3 (DXT5)
|
Block compression, can cause compression artifacts or discoloration |
Interpolated 8 Bit Alpha
| 1366 KB |
Textures with a complex alpha channel that can not be handled by BC1.
|
BC7
|
Modern block compression, supports gradients and greyscale colors, nearly identical to uncompressed textures. Quality and exporting speed can vary depending on the exporting tool used.
|
Interpolated 8 Bit Alpha | 1366 KB |
Requires DirectX 11 or newer. Same use cases as DXT5. If a DXT texture has compression artifacts or discoloration, BC7 can be used instead. (Examples: gradients, greyscale textures, or detailed normal maps)
|
Uncompressed (A8R8GB8, RGBA 8.8.8.8)
|
Uncompressed, no quality reduction.
|
Interpolated 8 Bit Alpha
| 5462 KB
|
Not recommended, use only if BC7 is not an option. Complex or greyscale textures that do not work well with DXT compression. Very large file size, decreasing the texture resolution is recommended to decrease file size, an uncompressed 512x512px texture will have the same file size as a 1024x1024px BC3 or BC7 texture.
|
Often when converting to DDS, choosing any of the DXT formats will cause the discoloration due to the compression of the texture and leave you with a purple or green shade hanging over your texture. This table ranging from RGB 0, 0, 0 to RGB 255, 255, 255 can be used to see exactly what colors would be altered after export to DDS.
As an example, colors such as RGB 31, 31, 31 would result in being RGB 30, 31, 30. The green being a mere one above red and blue results in this green shade. Other examples are the inverse of that, such as RGB 40, 40, 40 which results in RGB 41, 40, 41 after compression. Because the green is lower in this case, the color takes on the purple shade.
Compression algorithms differ for different tools. This comparison was created for the Nvidia Texture Tools Exporter.
The colors that resulted in grayscale RGB colors without any green or purple dominance in the DDS file are marked on the table with green ticks.
Sometimes, the compressed color is slightly different,
an example of this is RGB 2, 2, 2 which results in RGB 3, 3, 3. Regardless of
the rounding, its still equal and can be used but the key is to
use the value before compression which was originally RGB 2, 2, 2, as marked in the table.
Thread
Safe DXT greyscale color palette for Photoshop/Illustrator
This is an Adobe Swatch Exchange file which contains swatches for all greyscale colors which can be safely exported by the NVidia Texture Tools DDS exporter without discoloration/tinting due to DXT compression.
To install, simply open the Swatches panel in either Photoshop or Illustrator, click the menu button in the top right corner of the panel, and select "Load Swatches" or "Open Swatch Library > Other Library" and select the provided file. Use any color in the swatch group for greyscale…