纹理压缩的目的
1,降低内存,特别是移动端应用,内存占用不应过大,否则低端机很容易崩溃
2,降低带宽,手游类应用,在渲染时会有大量贴图传输到GPU,不限制的话不仅会严重影响渲染性能,同时会带来很严重的发热
因此我们需要一种内存占用既小又能被GPU读取的格式——压缩纹理格式。纹理压缩对应的算法是以某种形式的固定速率有损向量量化(lossy vector quantization )将固定大小的像素块编码进固定大小的字节块中。
有损表示对于渲染来说,有损压缩是可以接受的,一般选择压缩格式时需要在纹理质量和文件大小上寻求一个平衡。
固定速率压缩指的是什么呢?因为GPU需要能够高效的随机访问一个像素,这意味着对任意像素,解码速度不该有太大的变化。因此,我们常见的贴图压缩算法都是有损压缩。相反的例如zip则是一种可变速率压缩。
向量量化(Vector quantization, VQ)是一种量化技术,将一组大量的点(向量)分成具有近似相同数量的最接近它们的点的组。每个组用它的质心点表示,因此存在数据误差,适用于有损压缩。放到纹理压缩中来理解,就是例如将4x4块像素的颜色以2个基色来表示。
编码和解码速度。一般来说编码速度慢没关系,因为通常纹理压缩只需要在游戏打包时进行一次,对于用户运行时体验完全没有影响。但解码速度必须足够快,而且基本上不能影响到渲染性能。
压缩比:通常以比特率或每像素的平均比特数(bits per pixel, bpp)表示,常见的为2~8bpp。一般RGB原生纹理的像素指24位,4bpp表示每像素占4位,所以也可以认为4bpp表示压缩比为6:1。
ASTC纹理压缩格式简介
ASTC(Adaptive Scalable Texture Compression),由ARM和AMD联合开发,2012年发布。是一种基于块的有损压缩算法。它的压缩分块从4x4到12x12最终可以压缩每个像素占用1bit以下。
ASTC格式支持RGBA,适用于POT和NPOT纹理。

纹理压缩旨在降低内存占用和带宽,ASTC是一种高效且适应性强的压缩格式,由ARM和AMD联合开发,支持POT和NPOT纹理,尤其在移动端表现出色。iOS从A8处理器开始支持ASTC,而安卓则需要根据设备能力选择合适的压缩格式。纹理压缩避免使用png、jpg等格式,因其不支持GPU的随机像素访问。
最低0.47元/天 解锁文章
94

被折叠的 条评论
为什么被折叠?



