Could you make a few comments and/or suggestions on the use of .DDS textures for models and terrain images? I understand that jpegs are very memory hungry as the processor must uncompress each one during rendering. DDS is a special format used by graphics cards and does not require additional manipulation by the graphics card and thus saves considerable memory.
Comments
As you hint at in your post, the DDS format is basically a memory dump of the texture as it would be stored in GPU memory. I would point out that a JPEG is no more memory hungry than a DDS, it's just that the file size of a JPEG is no indicator of how much memory it will use once loaded. Below I offer some recommendations to consider when creating your DDS textures.
DDS offers a texture compression technique known as block compression. This allows a texture to be stored and read by the GPU in a compressed state. The compression ratio is a constant dictated by the compression algorithm, and there are variants to the compression algorithm that have different compression ratios (which you would choose based on the intended use of the texture). For example, suppose we have a texture that is 1024 x 1024 pixels at 32 bits (or 4 bytes) per pixel. In an uncompressed state this will use up 1024*1024*4=4194304 bytes or approximately 4MB of memory. The most aggressive block compression algorithm available offers an 8:1 compression ratio making it possible to store the same texture using just 512KB of memory. And I repeat, the GPU is capable of reading the texture in this state. There is of course some loss of information as a result, but the difference is imperceptible in most circumstances. It is recommended to always use block compression of some kind, except where the texture is to be used as a user-interface element or contains text.
DDS is able to store the whole mipmap chain for the texture. A mipmap chain is a series of successively smaller textures generated from the original texture that are used by the GPU to improve both the performance of texture reads and the visual appearance of the texture during rendering. It does come at the cost of increased memory usage, but the cost is worth the performance and visual improvements. When loading a texture, Mycosm will automatically generate mipmap chains for textures that don't have them, and this takes time. It is recommended that mipmaps be generated when the DDS is created as not only does it save time when loading the texture, it also means better algorithms can be used to generate the mipmap chain that will further improve the appearance of the texture during rendering.
To actually create DDS textures, we use the NVIDIA DDS plug-in for Adobe Photoshop. The default settings should match these recommendations but if not, just make sure the drop-list at the top shows something like "DXT1", and the "Generate MIP maps" button is selected.
I hope that helps. If there's anything that needs clarification or you wish to know more, please ask further.