Alvin(亞文):
剛查了一下資料...
你這方法有好有壞.
首先Unity不是以『圖片原始檔案大小』來計算產生出來的APK檔
而是以『Bitmap』計算
意思如下:
512x512 Size的RGBA 16bits(RGBA4444)(每pixel有16bit資料)
Bitmap大小=512x512x2Byte=512KBytes(因為每Byte有8bit所以16bit=x2)
理論上質素及壓縮不變只取走Alpha通道應該為:
512x512 Size的RGB 12bits(RGB444)(每pixel有12bit資料)(*假設)
Bitmap大小=512x512x1.5Byte=384KBytes
而實際上使用Android ETC1 4bits壓縮卻可以將24bits的資料壓成4bits:
512x512 Size的RGB ETC1 4bits(每pixel只有4bit資料)
Bitmap大小=512x512/2Byte=128KBytes
由此可見如果如樓主所說只是由3xPNG轉成4xJPG的話
理論上3x512KB(1.5MB) vs 4x384KB(1.5MB) 大小上完成沒分別
但實際上得益於ETC1 3x512KB(1.5MB) vs 4x128KB(512KB) 才有明顯的影響
基於這個計算後所得出的結論:
好處:
檔案大小上減少成原來的1/3
壞處:
3張圖片要同樣Size
ETC1壓縮因為每Pixel只有4bit資料會比ARGB16bit質素差一點點
ETC1佔用GPU解壓,增加載入時間,秏電量
Alpha Mask所要用的Shader及Sampling消秏GPU效能
感覺上壞處多於好處...
02-25 00:25
阿祥:
做法當然是有好有壞的,這點無庸置疑,要依照專案的需求去做對應變化
像是在使用這個方法時,在動態傳輸上就會比原本的PNG來的有效率多
02-25 00:35
阿祥:
把文章修改成【Unity】- Alpha Mask(用 JPG 達到 PNG 效果)
這樣應該比較沒有疑慮XD
02-25 01:49