遊戲包體太大,記憶體不足?Unity貼圖壓縮注意這幾點
01 為什麼要做貼圖壓縮?
在Unity下,為降低DC,通常都會做打包圖集處理。我們基本用的一種是TexturePacker,還有就是使用UGUI下,Unity用的設定Packing Tag自帶的圖集打包。那麼,這些圖集到底佔多大記憶體?都有哪些壓縮方式呢?
接下來看一組Texture的預覽(PC platform):
以上RGBA32壓縮格式帶透明通道,記憶體佔用情況:
2048*2048的貼圖佔(2048*2048*4)/1024/1024=16MB
1024*1024的貼圖佔(1024*1024*4)/1024/1024=4MB
以上RGB24壓縮格式帶透明通道,記憶體佔用情況:
1024*1024的貼圖佔(1024*1024*3)/1024/1024=3MB
512*1024的貼圖佔(512*1024*3)/1024/1024=1.5MB
為啥要做貼圖壓縮呢?最基本就是包體與記憶體佔用兩方面。
02 壓縮格式
如上面提到的RGBA32和RGB24。
在編包的時候我們可根據安卓或蘋果平臺去設定相應壓縮格式。
另外各種壓縮格式列表可見:
我們目前專案裡PC下,不帶透明通道的選的RGB24,帶透明通道選的RGBA32。
安卓選用的ETC2_RGBA8壓縮格式,安卓4.3以下系統不支援。一些不帶透明通道如戰鬥大背景圖等選用ETC_RGB4壓縮格式,另外還一些不帶透明通的圖示等選用ETC2_RGB4壓縮格式。
蘋果選用的ASTC_RGBA(6*6),需要注意的是要A8處理器的才支援,iPhone5s、iPad mini2、ipadAir不支援。
03 ASTC裡2D block footprints and bit rates
以上是block4X4-12X12之間的每畫素的bit rate值。選用的Block越大壓縮越大。
04 一些壓縮格式記憶體參考比對
上面ETC_RGB4、ETC2_RGB4壓縮佔記憶體大小一樣,但對於不帶透明通道的貼圖ETC格式畫質較好ETC2畫質中。可解釋我們戰鬥大背景用的ETC壓縮格式,圖示等選用的ETC2。
那麼一張512*512帶透明通道貼圖,它們可怎麼估算?
在蘋果ASTC_RGBA(6*6)格式下約佔多大記憶體?
(512*512*3.56/8)/1024=114KB
(1024*1024*3.56/8)/1024=455.7KB(有偏差,上面展示456.9KB?)
在安卓ETC2_RGBA8壓縮格式下佔多大記憶體?
(512*512*(8/8))/1024=256KB
(1024*1024*(8/8))/1024=1024KB
假如某戰鬥裡的角色按2張1024*1024貼圖,一場3V3戰鬥最多按24個角色算,技能等除外,在蘋果ASTC_RGBA(6*6)格式下佔多大記憶體?
24*2*((1024*1024*3.56/8)/1024/1024)=21.4MB
在安卓ETC2_RGBA8壓縮格式下佔多大記憶體?
24*2*((1024*1024*(8/8))/1024/1024)=48MB
參考資料:
1、維基百科:
https://en.wikipedia.org/wiki/Ericsson_Texture_Compression#ETC2_and_EAC
https://en.wikipedia.org/wiki/Adaptive_Scalable_Texture_Compression
https://zh.wikipedia.org/wiki/Apple_A8
2、簡書——【Unity】貼圖壓縮淺析,作者:黑可樂
https://www.jianshu.com/p/512d068dcddd
作者:vian
來源:騰訊GWB遊戲無界
原地址:https://mp.weixin.qq.com/s/jXLfXqtUHpkZfZ1popwHZA
相關文章
- Redis 記憶體壓縮原理Redis記憶體
- win10遊戲記憶體不足怎麼辦_win10玩遊戲提示記憶體不足處理方法Win10遊戲記憶體
- 【Unity】記憶體最佳化之— —Texture的MaxTextureSize以及Format壓縮格式Unity記憶體ORM
- 伺服器記憶體不足的幾個原因伺服器記憶體
- win10遊戲提示視訊記憶體不足如何處理 win10玩遊戲提示視訊記憶體不足怎麼解決Win10遊戲記憶體
- 遊戲記憶體對比普通記憶體區別 遊戲記憶體和普通記憶體相差大嗎?遊戲記憶體
- Allowed memory size 記憶體不足記憶體
- 虛擬貼圖理論之貼圖壓縮
- 遊戲記憶體測試遊戲記憶體
- Unity Memory Profiler 記憶體分析Unity記憶體
- win10記憶體不足怎麼解決_win10記憶體不足怎麼辦Win10記憶體
- 小遊戲掉幀卡頓啟動慢執行記憶體不足……這些問題有解嗎?遊戲記憶體
- DDR記憶體條掃盲貼 宏旺半導體一文解答記憶體條痛點記憶體
- Mac記憶體空間不足怎麼辦?試試刪除這幾個資料夾!Mac記憶體
- vertica記憶體不足的解決方案記憶體
- [20201110]伺服器記憶體不足.txt伺服器記憶體
- Linux記憶體不足的處理方法Linux記憶體
- pycharm提示記憶體不足怎麼辦PyCharm記憶體
- mongodb記憶體不足怎麼解決?MongoDB記憶體
- w10老顯示記憶體不足怎麼解決 w10記憶體總是顯示記憶體不足處理方法記憶體
- Unity效能分析(三)記憶體分析Unity記憶體
- 【Unity】Addressables下的圖集(SpriteAtlas)記憶體最佳化Unity記憶體
- 影像體積壓縮工具JPEG Jackal更好的壓縮圖片
- APK體積壓縮整理記錄APK
- win10記憶體不足會黑屏嗎_win10電腦記憶體不足黑屏了怎麼辦Win10記憶體
- 記一次 Windows10 記憶體壓縮模組 崩潰分析Windows記憶體
- 電腦加記憶體條之前必須注意這些事項 電腦升級記憶體需要注意什麼?記憶體
- Squeezer for Mac(Mac圖片壓縮軟體)Mac
- 物件記憶體圖物件記憶體
- 虛擬記憶體有什麼用 虛擬記憶體不足怎麼解決記憶體
- 優化移動遊戲效能 | 來自Unity頂級工程師的效能分析、記憶體與程式碼架構小貼士優化遊戲Unity工程師記憶體架構
- webGL 緩解記憶體壓力Web記憶體
- 好玩又不佔記憶體的手遊 記憶體小又能聯機的傳奇遊戲記憶體遊戲
- win10遠端記憶體不足怎麼解決_win10遠端提示記憶體不足如何處理Win10記憶體
- win10 pdf太大如何壓縮_win10壓縮pdf檔案大小的圖文教程Win10
- word文件太大怎麼壓縮到最小 word壓縮檔案大小
- 每日一問:Android 中記憶體洩漏都有哪些注意點?Android記憶體
- Unity記憶體最佳化(來自uwa)Unity記憶體