ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

纹理压缩格式——ASTC(转)

2022-04-19 17:00:20  阅读:384  来源: 互联网

标签:16 bits 压缩 ASTC 像素 格式 纹理 压缩率


转自:https://blog.csdn.net/chqj_163/article/details/117220903

 

ASTC中ARM研发的一种贴图压缩格式,从iOS9(A8架构)开始支持ASTC压缩格式 ,相对于PVRTC2/4而言,ASTC(4X4)的压缩比会增加到0.25,不过显示效果也会好很多,而且不要求图片长宽相等且为2的幂次方。支持Android OpenGL ES 3.1 和 Vulkan 设备。

支持的GPU:
tvOS (all), iOS (A8), Android (PowerVR 6XT, Mali T600 series, Adreno 400 series, Tegra K1).
如果GPU不支持这种压缩格式,则解压为RGB或者RGBA。会增加cpu解压时间,并占用较多内存。
2016年之后的安卓手机基本支持这种压缩格式
iphone6以及之后的机型支持这种压缩格式

图片压缩核心思想是将大图分为多个颜色块,每个颜色块固定大小为16-bytes,单个颜色块里的颜色像素怎么划分不关心。意思是将图片分成多个颜色块,每个颜色块固定大小为16-bytes,但是每一个16-bytes的颜色块中放多少个像素是可选的,分别为4x4,5x5,6x6,8x8,10x10和12x12,单颜色块中放的像素越多那么压缩率越高,相应的质量也越差。

公式

像素大小 = 16-bytes / 分块宽高 * 8-bit;
压缩率 = 原始像素大小(32-bit) / 像素大小;
图像大小 = 原始图片大小 / 压缩率;

假设一张4MB的1024*1024原始图片:

块宽高像素大小(bits)压缩率压缩后图片大小
4*4 8 4 1MB
5*5 5.12 6.25 655KB
6*6 3.56 8.99 455.62KB
8*8 2 16 256KB
10*10 1.28 25 163KB
12*12 0.89 35.95 113.93KB

图片大小(MB)=长x宽x像素大小(bits)/8/1024/1024

 

 

另一方面也是由于ASTC一个对效果以及压缩率的更好支持

我们以一张512*512的图片为例

在RGB32bit的情况下 他所占用的内存为多少呢 512*512*(32/8)bit = 1M

压缩为ETC2 4 bits后容量为170.7KB,有明显失真,

压缩为ASTC 6x6后容量为154.7KB,无明显失真,

ASTC 6x6的容量小于ETC2 4 bits,压缩质量高于ETC2 4 bits。

压缩为ASTC 8x8后容量与ASTC 6x6相比减小了约44.8%,

压缩为ASTC10x10后容量与ASTC 8x8相比减小了约33.7%。

 

标签:16,bits,压缩,ASTC,像素,格式,纹理,压缩率
来源: https://www.cnblogs.com/xingchong/p/16166123.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有