I just tried to find out how much of an advantage VQ compressed textures give over uncompressed textures in VRAM and on disc. Just sharing my findings here, in case anybody else wondered.
What I did:
1. Downloaded a mesh from Dead or Alive 4 of the character Kokoro.
2. Converted the DDS textures to TGA and PNG. PNGs were optimized with optipng. The TGA corresponds to the size of an uncompressed texture in VRAM.
3. Converted to twiddled, mip-mapped, VQ-compressed KMGs with color format ARGB1555, ARGB4444 or RGB565, depending on how much transparency was required. I don't know whether the DDS files contain mipmaps.
4. I also added the size of gzipped KMGs to see how much disc space can be saved here (faster load times and more stuff on disc).
Issue at step 3: the non-RGB565 textures have non-square sizes such as 256x128, so I couldn't compare the size. Does VQ/Twiddling really limit to square textures and not just power of two in each dimension?
Anyway, results I got so far:
Code: Select all
for i in *.kmg; do N=$(basename $i .kmg); file $N.png; du -sh $N.tga $N.png $N.dds $N.kmg $N.kmg.gz;echo ""; done
cloth3.png: PNG image data, 256 x 256, 8-bit/color RGB, non-interlaced
196K cloth3.tga
48K cloth3.png
36K cloth3.dds
24K cloth3.kmg
20K cloth3.kmg.gz
eye.png: PNG image data, 512 x 512, 8-bit/color RGB, non-interlaced
772K eye.tga
144K eye.png
132K eye.dds
88K eye.kmg
48K eye.kmg.gz
face.png: PNG image data, 1024 x 1024, 8-bit/color RGB, non-interlaced
3.1M face.tga
304K face.png
516K face.dds
344K face.kmg
108K face.kmg.gz
gradient.png: PNG image data, 512 x 512, 8-bit/color RGB, non-interlaced
772K gradient.tga
152K gradient.png
du: cannot access ‘gradient.dds’: No such file or directory
88K gradient.kmg
68K gradient.kmg.gz
hands.png: PNG image data, 256 x 256, 8-bit/color RGB, non-interlaced
196K hands.tga
24K hands.png
36K hands.dds
24K hands.kmg
16K hands.kmg.gz
jewel.png: PNG image data, 128 x 128, 8-bit/color RGB, non-interlaced
52K jewel.tga
12K jewel.png
12K jewel.dds
8.0K jewel.kmg
8.0K jewel.kmg.gz
lips.png: PNG image data, 128 x 128, 8-bit/color RGB, non-interlaced
52K lips.tga
16K lips.png
12K lips.dds
8.0K lips.kmg
8.0K lips.kmg.gz
sash.png: PNG image data, 512 x 512, 8-bit/color RGB, non-interlaced
772K sash.tga
216K sash.png
132K sash.dds
88K sash.kmg
56K sash.kmg.gz