Update: If I understand correctly, DDS texture display and compression should work correctly in all current versions of Blender. If you are still using 2.49, the note below applies.
Original Post:
(Special thanks to VenomSeven for originally informing me about Blender’s DDS support, and to cyborg_ar for first telling VenomSeven. And thanks to whoever put the feature there to begin with. :D)
It’s a lesser known fact in the Blender community, but Blender’s Game Engine supports the industry standard DDS texture format. Dim and I have been doing a bit of reading and testing on the subject, and I thought I would share some of our findings thus far.
What is DDS?
DDS stands for “DirectDraw Surface”. It was originally developed for use with DirectX, but it is also compatible with OpenGL. Though DDS is technically more than a simple image format, it is often used as a lossy image compression format for games.
Why use DDS?
Unlike other image compression formats, DDS files remain compressed in memory. This is especially helpful when you are trying to cram as many textures as possible into a limited amount of video card RAM.
For example, some modern game consoles have only 256 MiB of available video memory. A 16-bit 1024x1024 Targa image would take 2.4 MiB when uncompressed in memory. However, the same image stored in DDS format using DXT1 compression would take only 630 KiB in memory. (Most of that information was taken from the Gamasutra article below.)
Downfalls of DDS
Certain DDS formats are lossy compression methods, which means you will lose detail and color information from your original image. If you do not use the compression carefully, you may lose a good deal of quality. Read the articles below to gain a better understanding of what each compression method does and when it is useful.
How well does it work with Blender?
I use the GIMP DDS plugin to output DDS files, and I’ve found that textures made using no compression don’t seem to work in Blender. However, DXT1, DXT3, and DXT5 textures all appear to work correctly, and these three are the most useful in terms of compression.
Further reading:
http://www.poopinmymouth.com/tutorial/dds_types.html
Ben Mathis explains several compression formats on his website. Some of this is specific to the Photoshop DDS plugin, but several of the methods are also available in the GIMP plugin. A nice introduction with images showing comparison between the different formats.
Riccard Linde explores some of the pitfalls of DXT1 compression and suggests multiple solutions in this well written Gamasutra article. (Sadly, the website uses lossy jpeg compression for the article’s images, so it is difficult to make out the difference between some of the comparisons.)
Tools:
Cross-Platform
GIMP DDS plugin (Ubuntu users: “sudo apt-get install gimp-dds” or install gimp-dds through Synaptic)
Windows
nVidia DDS plugin for Photoshop
Paint.NET DDS plugin
The Compressonator (DDS conversion tool from AMD/ATI)