關於U3D貼圖格式壓縮

各種紋理格式,大家參照下U3D MANUAL裏面的具體描述介紹,這是官方的東西。但我覺得有一部內容是錯的,例如佔用內存大小。

http://docs.unity3d.com/Manual/class-TextureImporter.html

基本知識點:

DXT格式是Nvidia Tegra提供的,ETC是安卓原生支持的,OPNEGL2.0都支持。ETC2只有OPENGL3.0支持,PVRTC是Imagination PowerVR提供的,ATC是Qualcomm Snapdragon提供的。一般來說,IOS只支持PVRTC的壓縮格式。一旦相應的貼圖格式不兼容的時候,U3D會自動將其轉換成RGB(A)格式。最好的兼容是針對GPU進行打包,例如針對小米的都用ATC格式,但一般開發做不到太細化的選擇。所有設備對RGB 16BITS/ARGB 16BITS/RGB A16BITS/RGB 24BITS/ARGB 32BITS等支持都很好,只是這些格式算是非壓縮格式,對內存消耗和渲染消耗非常不友好。

關於壓縮後的在儲存上的大小,假設高清(ARGB32)大小爲1,那麼大概數據如下:

RGB PVRTC 4BITS:0.25

ARGB PVRTC 4BITS:0.25

RGB PVRTC 2BITS:0.13

ARGB PVRTC 2BITS:0.13

RGBA ETC2 4BITS:0.25

RGBA ETC2 8BITS:0.25

RGB + 1-bit ALPHA ETC2 8BITS:0.2

DXT1 :0.3

DXT5 : 0.6

ARGB 16BITS:0.33

RGB 16BITS:0.5

RGB 24BITS:0.85

ARGB 32BITS:1

當然每個都是根據圖片不一樣而不一樣的,以上只是大致數據並非準確數據。

測試方法:單獨爲改爲這樣貼圖格式的文件打成ASSETBUNDLE看大小。

對此抱有比較大疑問的是ARGB 16 和RGB 16,感覺可能這裏U3D的BUNDLE有BUG。

內存中的大小,假設高清(ARGB32)大小爲1,那麼大概數據如下:

RGB PVRTC 2BITS:0.0625

ARGB PVRTC 2BITS:0.0625

RGB PVRTC 4BITS:0.125

ARGB PVRTC 4BITS:0.125

RGBA ETC2 4BITS:0.125

RGBA ETC2 8BITS:0.25

RGB + 1-bit ALPHA ETC2 8BITS:0.125

DXT1 :0.125

DXT5 : 0.25

ARGB 16BITS:0.5

RGB 16BITS:0.5

RGB 24BITS:0.8

ARGB 32BITS:1


建議如下:

一般來說3D遊戲我們壓縮貼圖的時候會把貼圖分爲UI貼圖和場景模型貼圖來考慮,主要是因爲有多重採樣的緣故。3D遊戲一般來說都是受攝像機遠近大小改變而採取不同的採樣大小,假設不設置多重紋理採樣的話,在遠處會有非常多的白色噪點。

2D遊戲的話,所有都不需要勾選多重採樣,具有3D性質的貼圖,我們都需要勾選上GENERATE MIP MAPS,這樣會使貼圖大小增加25%這樣。

正方貼圖與非正方貼圖也要區分。非正方貼圖只有16位的壓縮(相當於真彩色減半),所以最好遊戲中都是正方的貼圖。以下是個人選擇貼圖壓縮格式遵循的一些規則,大家可以參考下,若有問題可以一起交流一下。

正方貼圖:

IOS下:

a.普通不透明:RGB PVRTC 4BITS

b.普通透明:RGBA PVRTC 4BITS

Android下:

a.普通不透明:RGB ETC 4BITS

b.普通透明:

因爲沒有通用最兼容的格式,所以一般情況是用RGBA 16BIT或有針對性的選擇DXT5/ATC8 BITS/ETC2 8BITS。如果有技術支持,可以採用RGB ETC 4BITS加一張ALPHA 8的貼圖來實現透明效果。

非正方貼圖:

一般採用16位壓縮,16位會帶來顏色損失,但如果本來美術就是按16BITS畫的話,就不會損失,日本好些手遊都是按16BITS來畫的。這樣的遊戲一般少漸變豔度高比較容易看出來。

a.不透明貼圖: RGB 16BITS

d.透明貼圖:RGBA 16BITS

高清不壓縮貼圖:

RGBA 32BIT

另外:

對於不重要的貼圖,模糊度低的貼圖,建議不僅要採取像素壓縮,還要直接壓縮其大小。如光照貼圖壓到512或256。如背景原本1024的圖直接壓到256。玩家不注意到就可以了。


Texure Type設置爲Advanced時紋理的格式列表

格式

詳解

Automatic Compressed

壓縮RGB紋理,默認選項,常用的漫反射紋理格式。4/像素(32KB, 256x256)

RGB Compressed DXT1

壓縮的RGB紋理。常用的漫反射紋理格式。4/像素(32KB, 256x256)

RGBA Compressed DXT5

壓縮的RGBA紋理。是漫反射和高光控制紋理的主要格式。1字節/像素(64KB, 256x256)

RGB Compressed ETC 4bits

壓縮的RGB紋理,是Android工程默認的紋理格式,不支持alpha通道。(32KB, 256x256)

RGB Compressed PVRTC 2bits

壓縮的RGB紋理,支持Imagination PowerVR GPU2/像素 (16KB, 256x256)

RGBA Compressed PVRTC 2bits

壓縮的RGBA紋理,支持Imagination PowerVR GPU2/像素 (16KB, 256x256)

RGB Compressed PVRTC 4bits

壓縮的RGB紋理,支持Imagination PowerVR GPU4/像素 (32KB, 256x256)

RGBA Compressed PVRTC 4bits

壓縮的RGBA紋理,支持Imagination PowerVR GPU

4/像素 (32KB, 256x256)

RGB Compressed ATC 4bits

壓縮的RGB紋理,支持Qualcomm Snapdragon,4/像素 (32KB, 256x256)

RGBA Compressed ATC 8bits

壓縮的RGB紋理,支持Qualcomm Snapdragon,8/像素 (64KB, 256x256)

Automatic 16bits

RGB彩色,16位彩色圖最多可以有216次方種顏色(低質量真彩色)

RGB 16bits

65萬色不帶alpha,比壓縮的格式使用更多的內存,適用UI紋理(128KB,256x256)

ARGB 16bits

低質量真彩色,具有16級的紅綠藍和alpha通道(128KB, 256x256)

RGBA 16bits

Automatic Turecolor

最高質量的真彩色,也就是32位的色彩(256x256的紋理大小爲256KB)

RGB 24bits

真彩色不帶alpha通道(192KB, 256x256)

Alpha 8bits

高質量alpha通道,不帶顏色(64KB, 256x256)

ARGB 32bits

真彩色帶alpha通道(256KB, 256x256)

RGBA 32bits


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章