I've open sourced a new DXTn mipmapped texture compressor and transcoding library:
http://code.google.com/p/crunch/


It uses the ZLIB license. It's primarily of interest to game developers, or anyone who needs to distribute lots of DXTn compressed texture data but can't afford to compress to DXTn in real-time. (In many games I've worked on, DXTn texture data was the #1 or #2 consumer of optical disc space, making it a big target for alternative storage schemes.) It basically implements a different way of compressing to DXTn. Most DXTn compressors only work at the 4x4 block level, try to optimize for best quality possible, and output raw (fixed block size) DXTn bits. This codec operates at a much higher level, the entire texture (i.e. the entire mip chain).

Note that DXTn's quality isn't that great to begin with, as Charles Bloom points out here http://cbloomrants.blogspot.com/2008...tc-part-2.html, but the various DXTn formats are supported in hardware by practically all PC/console GPU's and by D3D/OpenGL, so it's useful to have a compressed custom texture format that can be quickly transcoded to DXTn. crunch's DXTn compressor outputs an intermediate format (.CRN) that was designed from the beginning to do just that.

It can also create standard .DDS texture files that are much more compressible by a lossless compresor such as LZMA (or Deflate, LZO, etc.), by trading off quality by reducing the # of unique endpoints/selectors output to the resulting .DDS file. (Basically, it's able to trade off rate vs. distortion when compressing to DXTn.)

-Rich