這算是Unity優(yōu)化的一個基礎環(huán)節(jié)吧引润,沒有機會真正去接觸告抄,還是要了解下。
圖片格式
- 不同格式的本質區(qū)別在于壓縮算法不一樣愤估,結果圖片大小嫉称,還原度也各不相同。
- 常用圖片格式有Png灵疮,Jpg,Tga壳繁,Psd等震捣。平時主要用Png,Jpg闹炉。
- Jpg是有損壓縮不透明蒿赢,Png是無損壓縮有透明。
簡單紋理格式
- Png等圖片壓縮格式無法直接被GPU解碼渣触,需要先解壓羡棵,便會造成消耗。
- 不論導入的圖片是什么格式嗅钻,Unity都會將其轉換成紋理格式皂冰,便于GPU讀取店展。(應該算解壓成原始格式吧)
- 有RGB16,RGB24秃流,RGBA16赂蕴,RGB32等。
紋理壓縮格式(硬件壓縮格式 Hardware Accellerated Formats)
- 把紋理進一步壓縮(Texture Compression)舶胀,不同于Png的那種壓縮概说,是針對GPU的壓縮格式。
- 不同的GPU能解析的壓縮格式也不同嚣伐,所以可能沒法簡單的只用一種壓縮格式糖赔。并且如果發(fā)現GPU不支持當前壓縮格式,Unity就會將紋理轉換成RGB(A)轩端,首先是解壓過程的消耗放典,其次是內存中會保存兩個紋理。
- IOS所有設備支持PVRTC船万,Android所有設備支持ETC1刻撒,但是ETC1沒有透明通道。
- 有的壓縮格式要求文件的分辨率數值為2的次冪(ETC)耿导,有的還要求紋理是個正方形(PVRTC)声怔。
-
PVRTC4分別有RGB模式,也有RGBA模式舱呻,所以是可以有透明通道的(下面的表格有處錯誤)醋火。
紋理壓縮格式的選擇
高清無壓縮 - RGBA32
- 等同于原圖了,效果最好箱吕,效率最差芥驳。
中清晰中壓縮 - RGBA16+Dithering/RGB16
- RGBA16在遇到漸變的時候表現很差,所以需要做抖動(Dithering)處理茬高。
- RGB16不帶透明通道兆旬。
低清晰高壓縮 - ETC1+Alpha/PVRTC4
- 能直接被GPU使用,占用少怎栽,效率高丽猬。
- ETC1沒有透明通道,需要搭配一張透明貼圖熏瞄。
- ETC和PVRTC都要求像素長寬都為2的次冪脚祟,PVRTC要求像素長寬一致。
總結
- 一般方案:ETC1+Alpha/PVRTC4 和 RGB16/RGBA16 搭配使用强饮。
- 圖片分辨率數值最好為2的次冪(據說就算不是2次冪由桌,最終到GPU中也需要拉伸為2次冪),最好是正方形(用于匹配壓縮格式)。