RealTimeTextureStreaming&Decompression

还是拯救了quake3的强银J.M.P. van Waveren写的。

http://software.intel.com/file/17248/

 

主要介绍了压缩解压缩的算法,和streaming没有太大关系,这个结合上一个id的virtual tex,可以理解他们为什么研究这个了。

而且这个就和transcode那一步对应的。

 

基本数据一目了然:

  • dxt1----6:1
  • dxt5----4:1
  • jpeg----10:1(rgb)
  • jpeg----7:1(rgba)

所以把数据存成jpeg系列,然后load进来,在解压成dxt的texture,对于virtual texture这种巨耗带宽的技术有着相当大的意义。

 

jpeg的压缩基本算法挺有意思的,首先把rgb转到另一个color space,进而将亮度(luma)和颜色(chroma)分开。

因为人眼对亮度比较敏感,而对于颜色的高频数据不敏感,所以可以滤掉chroma的高频部分,保留低频部分,那么低频部分就是

数据量小多了。

这个和spherical harmonics保存低频光照信息很像。

 

这也是jpeg能在图像质量不错的基础上保持高压缩比的原因。

 

然后是个名词:DCT----Discrete Cosine Transform。

这个用来将一个kernel(比如8*8的block)的颜色数据转到一个frequency map,然后将高频数据去掉。

id siggraph09的文章里面直接就用DCT来代表jpeg这样的贴图压缩了。

 

在后面就是讲有simd指令做高效的解压缩了,这个就不记了,用的时候直接查就好。

 

另外cuda上倒是有解压缩的sample。

 

 

 


原文链接: http://blog.csdn.net/ccanan/article/details/5126541

你可能感兴趣的:(RealTimeTextureStreaming&Decompression)