紋理壓縮格式——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%。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM