Home > 程序/算法 > DXT++纹理压缩格式(大结局)

DXT++纹理压缩格式(大结局)

November 4th, 2010 Leave a comment Go to comments

续前一篇。后来用LBG算法实现了一个简单的矢量量化…

以上是测试纹理的局部对比,左图为原始dds,右图为压缩后再解压出来的dds,在这个压缩质量下将测试图片的颜色数从原始的2603个减少到了172个,压缩后的color table(对于512的纹理原始尺寸为64k)为28k,selector部分64k只压缩到60k,压缩后文件尺寸为87k,压缩比仍然不高,相对原始dds只减小了1/3左右。

图中可以看到在明暗对比比较大的地方,比如Lenna的头发尚可欺骗人眼,但是在大面积过度色的地方例如脸部和肩膀,就明显能看出颜色数不足。

必须说明Lenna是一张很不好压缩的图片,我测试了另外一些3d游戏里用到的常规纹理,压缩比都要比这高一些,但基本上都不能超过50%,除了那种带有大面积空白或者纯色的纹理。

小结一下,作为无损压缩格式的dxt++(简称dpp),相对于成熟的通用数据压缩格式例如zip,7z,rar等(直接压缩dds文件)没有优势;即使采用有损压缩,也只能和通用压缩格式持平;而且通过牺牲图像质量换取文件尺寸的效果也不明显。所以基本上,我失败了。

当然,我只是花了两三天时间初步尝试了一下,其中一定有不少可以进一步优化调整的,例如矢量量化的效果,selector的不同字长压缩尝试等等,但我怀疑对结果不会有很大的改善。

代码已经上传,有兴趣的可以checkout svn:  http://dxtpp.googlecode.com/svn/trunk/

由于对结果比较失望,也懒得继续优化了。

Categories: 程序/算法 Tags:
  1. April 24th, 2011 at 22:22 | #1

    乐在研究,结果的话……~

 

Spam Protection by WP-SpamFree