根據unityblog的介紹,crunch壓縮能實現更高的壓縮率和更少的壓縮時間。
測試如下:
原圖:astc 12x12:
etc2:
crunched etc2:
由此可見,crunch壓縮率確實非常高啊。
限制:crunched etc要求紋理必須是2的冪次方。
crunched etc2要求紋理必須是4的整數部。
記憶體: crunched紋理占用情況(android和ios)
editor下etc: width*height*4。 比如1024x1024的圖,記憶體占用為4m左右
editor下etc2: 同etc一致
android/ios下etc: width*height*0.5。比如1024x1024的圖,記憶體占用為0.5m左右
android/ios下etc2: width*height。比如1024x1024的圖,記憶體占用為1m左右
2的n次方問題:根據unity的說明,紋理大小應當使用2的冪次方,但實際測試有點奇怪:
在未寬高不是2的冪次方時(如1428x428)時,實際記憶體占用仍是width*height, 與1024x512的圖基本一致,並沒有將放大成2048x512。或許是因為是sprite的原因,也或者是因為裝置的原因(iphone6和麒麟980下測試)。texturetype為sprite時也沒有non power of 2的設定項,只有texture時才存在,不過一般使用texture時都是正方形了(比如模型紋理)。
unity紋理格式選擇
android平台 不帶透明通道優先使用etc1,而帶透明通道的優先使用etc2.如果顯示質量無法達到要求還可以使用rgba16,最後才使用rgba32.總體來說正確使用優先順序是etc1 etc2 rgba16 rgba32.另外針對android平台unity還實現了一套crunched壓縮方式...
Unity 紋理壓縮
紋理顯示到螢幕上,需要cpu和gpu協作完成。cpu對資源進行計算解碼,然後將紋理資料傳輸給gpu。gpu通過cpu的資料,將資料渲染到緩衝區。紋理壓縮減少了資源在cpu中進行解壓縮的過程。紋理壓縮減小了包體大小,減少了資料量級,減輕了頻寬計算的壓力。紋理壓縮時記憶體的使用效率更高。dxt格式是nv...
Unity建立紋理及紋理濾波
unity3d中建立紋理使用的是unity中的texture2d的建構函式。texture2d int width,int height texture2d int width,int height,textureformat format,bool mipmap texture2d int wid...