創作內容

7 GP

Alpha Mask – 用 JPG 達到 PNG 效果

作者:阿祥│2016-02-24 14:35:31│巴幣:14│人氣:1534
文章已搬家
歡迎到新的部落格中觀看

TED SIE BLOG UNITY X SHADER

Alpha Mask – 用 JPG 達到 PNG 效果
引用網址:https://home.gamer.com.tw/TrackBack.php?sn=3110717
All rights reserved. 版權所有,保留一切權利

相關創作

留言共 3 篇留言

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 效果)
這樣應該比較沒有疑慮XD02-25 01:49
Shark
我也有做把alpha分開一張圖的功能,對漸層多,適合用JPG壓縮的圖可以減少約1/2的大小。
不過我是讀檔時把RGB和A合成,不是做在shader,我的shader有其他用途。

02-25 20:36

Alvin(亞文)
剛發現新版Unity5.x多出了一個叫功能可以將
透明圖片用Sprite Packer合拼成1xETC1(RGB)+1xETC1(ALPHA)
跟你們作的優化差不多...
只可惜的是這功能還處於BUG中,而且有幾個月沒人理了= =
不過還是有希望將來修正的...

02-26 03:12

我要留言提醒:您尚未登入,請先登入再留言

7喜歡★ted10401 可決定是否刪除您的留言,請勿發表違反站規文字。

前一篇:Global Game ... 後一篇:Client Datab...

追蹤私訊切換新版閱覽

作品資料夾

pjfl20180818空氣
真糟糕看更多我要大聲說11小時前


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】