TGA and DDS introduction

I'm a video guy by trade so I'm always thinking about data compression. Trying to get the most out of my textures in Freedom Force is something I'm always striving for. I decided to use my Axe Cop skin to scientifically come to some conclusion.

Methodology:

First, start with an uncompressed 1024x1024 skin and then compress by 5 methods.

  1. Saving with RLE Compression enabled.
  2. Reducing size to 512 TGA and saving with RLE Compression enabled.
  3. Reducing size to 256 TGA and saving with RLE Compression enabled.
  4. Compressing with Nvidia's Texture Tools.
  5. Compressing with ATI's Compressonator.

Then compare file size (objective) and visual clarity (subjective).

Important Notes

Before we move on, an explanation of the tools employed and terms involved. I'm currently using Adobe Photoshop CS4 but their TGA implementation hasn't changed in some time. I've been using Nvidia's Texture Tools for some time now to create DDS files from TGA files. It has been acceptable but I found that ATI has it's own DDS application, Compressonator. It has a graphical interface but neither is particularly user friendly.

The TGA format: TGA, or Targa, can only be compressed in one way Run-length encoding, or RLE. RLE works simply grouping identical colors. You can take advantage of this by filling empty portions of your skins with pure black. If you do not to this, and your skin is filled with detail or noise, then you may get no file size benefit from this tactic. The only other option on the Photoshop save dialogue is "Resolution". This refers to color resolution, not height/width. 16 bit is like GIF compression resulting in a maximum of 256 colors. You may want to use this for small accessory textures. 24 bit is your standard format. 32 bit is for saving alpha channels.

The DDS format: DDS is much more compressed than TGA. It is designed to be loaded easily into your graphics card's memory and to have "mip maps" built in. Mip maps are an array of reduced resolution versions of the image included in the file so when viewed at a distance the difference is minimal. This can result is a noticeably increase in speed.

File Size Results

Folder Sizes

Uncompressed 9.38 MB
1024 TGA 2.93 MB
512 TGA 985 KB
256 TGA 319 KB
Nvidia DDS 2.10 MB
ATI DDS 2.10 MB

Uncompressed our files are nearly 10 MB, so it's good we have all of these tools at our disposal. The reason I'm publishing these results is so no-one will unnecessarily upload a 10 MB skin again. The lowest file sizes are clearly the lower resolution TGA files. This is largely due to extensive use of optimization for RLE compression. Note that RLE compression reduces the 1024 TGA version to less than a third of the uncompressed original. This is unusually effective and proves the usefulness of optimization. The Nvidia and ATI tools arrive at the same size so their visual quality will be the only way to distinguish them.

Note that since the DDS files are only slightly smaller than than 1024 TGA then their is little advantage in regard to storage space to using DDS. The real advantage comes when the game loads the textures into memory. I am sorry if I cannot properly explain why. It may be because the game must uncompress the 2.93 MB TGA to the full 9.38 MB TGA before display. It may be because the game takes time to compress the TGA to DDS anyway. (I don't know if FFV3R does this but many games do.) It may still be that the DDS' mip maps are that effective.

Visual Comparisons

Due to spatial restrictions you may need to click on the images to see the large versions where the differences are more evident.

1024 TGA

This is our gold standard. No lossy compression whatsoever. All others will be compared to this.

512 TGA

This is how may skinners choose to release their skins today. It is noticeably blurrier but there are no artifacts from lossy compression.

This has the added advantage of working in the original Freedom Force if the mesh is compatible.

256 TGA

This is included largely for legacy purposes. The textures in the original Freedom Force were all at this size. Note the original meshes are better designed to take advantage of every pixel. Skinners such as Gryphon used this resolution as their standard as well.

This is incredibly blurry in the character tool but is surprisingly acceptable in-game with standard zoom settings.

Nvidia DDS

Both DDS toolsets create very sharp images, but they suffer from compression artifacts. Thus they must compared to each other on the basis of which creates the least artifacted file.

ATI DDS

In regards to compression artifacts ATI is the winner but only by a hair. Nvidia performs poorly on the fine details of the badge and in the darker parts of the tie.

The level of scrutiny to distinguish this is at the level of nit picking, but if visual clarity is what we want then it is worth it.

Conclusions

I, for one, shall be using ATI’s Compressonator for DDS from now on. If the mesh is compatible with FF1 I will be using 512 TGA with RLE enabled. I realize my scientific rigor could have been more rigorous and there are many more places I could go with this, but unless their is public outcry I doubt I will move on further.