Unity里的圖片壓縮

這算是Unity優(yōu)化的一個(gè)基礎(chǔ)環(huán)節(jié)吧,沒有機(jī)會(huì)真正去接觸,還是要了解下。

圖片格式

  • 不同格式的本質(zhì)區(qū)別在于壓縮算法不一樣,結(jié)果圖片大小,還原度也各不相同。
  • 常用圖片格式有Png,Jpg,Tga,Psd等。平時(shí)主要用Png,Jpg。
  • Jpg是有損壓縮不透明,Png是無損壓縮有透明。

簡單紋理格式

  • Png等圖片壓縮格式無法直接被GPU解碼,需要先解壓,便會(huì)造成消耗。
  • 不論導(dǎo)入的圖片是什么格式,Unity都會(huì)將其轉(zhuǎn)換成紋理格式,便于GPU讀取。(應(yīng)該算解壓成原始格式吧)
  • 有RGB16,RGB24,RGBA16,RGB32等。

紋理壓縮格式(硬件壓縮格式 Hardware Accellerated Formats)

  • 把紋理進(jìn)一步壓縮(Texture Compression),不同于Png的那種壓縮,是針對(duì)GPU的壓縮格式。
  • 不同的GPU能解析的壓縮格式也不同,所以可能沒法簡單的只用一種壓縮格式。并且如果發(fā)現(xiàn)GPU不支持當(dāng)前壓縮格式,Unity就會(huì)將紋理轉(zhuǎn)換成RGB(A),首先是解壓過程的消耗,其次是內(nèi)存中會(huì)保存兩個(gè)紋理。
  • IOS所有設(shè)備支持PVRTC,Android所有設(shè)備支持ETC1,但是ETC1沒有透明通道。
  • 有的壓縮格式要求文件的分辨率數(shù)值為2的次冪(ETC),有的還要求紋理是個(gè)正方形(PVRTC)。
  • PVRTC4分別有RGB模式,也有RGBA模式,所以是可以有透明通道的(下面的表格有處錯(cuò)誤)。


    幾種紋理格式對(duì)比

紋理壓縮格式的選擇

高清無壓縮 - RGBA32

  • 等同于原圖了,效果最好,效率最差。

中清晰中壓縮 - RGBA16+Dithering/RGB16

  • RGBA16在遇到漸變的時(shí)候表現(xiàn)很差,所以需要做抖動(dòng)(Dithering)處理。
  • RGB16不帶透明通道。

低清晰高壓縮 - ETC1+Alpha/PVRTC4

  • 能直接被GPU使用,占用少,效率高。
  • ETC1沒有透明通道,需要搭配一張透明貼圖。
  • ETC和PVRTC都要求像素長寬都為2的次冪,PVRTC要求像素長寬一致。

總結(jié)

  • 一般方案:ETC1+Alpha/PVRTC4 和 RGB16/RGBA16 搭配使用。
  • 圖片分辨率數(shù)值最好為2的次冪(據(jù)說就算不是2次冪,最終到GPU中也需要拉伸為2次冪),最好是正方形(用于匹配壓縮格式)。

參考

常用紋理和壓縮格式
干貨:Unity游戲開發(fā)圖片紋理壓縮方案
Unity中的一個(gè)簡單的圖形優(yōu)化指導(dǎo)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容