Unity貼圖壓縮格式設置


一、移動平台GPU

參考文檔:

各種移動GPU壓縮紋理的使用方法 - LuMing - 博客園​www.cnblogs.com圖標

1、Imagination Technologies的PowerVR SGX系列

代表機型:Apple iPhone全系、iPad全系等
2、Imagination Technologies的 PowerVR Rogue系列

3、Qualcomm( 高通)的 Adreno系列

4、ARM的 Mali系列

5、 nVIDIA的Tegra系列

二、常用的紋理格式占用的大小

R8G8B8每個像素占用3個字節,A8R8G8B8每個像素占用 4個字節,可以計算出一張1024*1024大小的RGB 24bits的貼圖在不壓縮的情況下紋理所占用的大小為3M,RGBA 32bits的貼圖在不壓縮的情況下紋理所占用的大小為4M。所以我們需要對紋理進行壓縮。

三、ETC紋理壓縮格式(Ericssontexture compression)

  • ETC(ETC1)

ETC原ETC1格式,是OpenGL ES圖形標准的一部分,被所有的Android設備所支持。

ETC 4bits 壓縮格式每個像素占用0.5字節。常用的壓縮格式RGB Compressed ETC 4bits,一張1024*1024大小的貼圖壓縮后的大小為0.5M,但是ETC並不支持透明通道,早期對於RGBA 32 bits的貼圖紋理通常會選用RGBA16 壓縮,將一張1024*1024大小的貼圖從4M壓縮為2M,或者拆分為兩張RGB貼圖再進行ETC格式的壓縮,從4M壓縮為2張0.5M。

  • ETC2

自從OpenGL ES 3.0發布后,ETC2壓縮格式成為一種標准。 Unity5.2以后,默認的壓縮格式為ETC2,ETC2支持透明通道,對於RGB24 bits的貼圖可以選擇壓縮為RGB Compressed ETC2 4bits,一張1024*1024的貼圖壓縮后的大小為0.5M ;RGBA32 bits的貼圖可以選擇壓縮為RGBA Compressed ETC 8bits,一張1024*1024大小的貼圖壓縮后的大小為1M。

ETC2的限制是Android設備的GPU必須支持 OpenGL ES 3.0,如果GPU不支持OpenGL ES 3.0,會對這種格式的紋理進行解壓縮,占用更多的顯存和內存。

  • 壓縮質量對比

ETC2 4bits的壓縮質量高於ETC 4bits。

RGBA ETC2 8bits的壓縮質量高於拆分兩張RGB ETC 4bits。
帶透明通道的貼圖,使用2張ETC 4bits與2張ETC2 4bits與1張ETC2 8bits對比,ETC2 8bits的壓縮質量高於2張ETC2 4bits高於2張ETC 4bits。

從左到右:兩張ETC1,兩張ETC2,一張ETC2

四、PVRTC 紋理壓縮格式(PowerVR texture compression)

  • PVRTC

支持PVRTC格式的GPU為ImaginationTechnologies的PowerVR SGX系列。也就是所有的蘋果設備可以使用PVRTC壓縮格式。

PVRTC 4bits 格式每個像素占用0.5字節。對於RGB 24 bits的貼圖可以選擇壓縮為RGB Compressed PVRTC 4bits;RGBA 32 bits的貼圖可以選擇壓縮為RGBA Compressed PVRTC 4bits,一張1024*1024大小的貼圖壓縮后的大小為0.5M。可見,帶透明通道的貼圖壓縮質量會很差,可以選擇拆分為兩張RGB貼圖再進行RGB Compressed PVRTC 4bits格式的壓縮。

PVRTC格式要求紋理的長寬相等,且都是2的冪次(POT),在壓縮時會將長寬比非1:1的貼圖壓縮為1:1,一張1024*512大小的貼圖會壓縮為1024*1024大小。

五、ASTC紋理壓縮格式

  • ASTC

參考文檔:

Using ASTC Texture Compression for Game Assets​developer.nvidia.com圖標

ASTC是在OpenGL ES3.0出現后在2012年中產生的一種業界領先的壓縮格式,它的壓縮分塊從4x4到12x12最終可以壓縮到每個像素占用1bit以下,壓縮比例有多種可選。很重要的是支持RGBA,且適用於2的冪次方長寬等比尺寸和無尺寸要求的NPOT(非2的冪次方)紋理。

以ASTC 4x4 block壓縮格式為例,每個像素占用1字節,8bits。一張1024*1024大小的貼圖壓縮后的大小為1M。

六、其他紋理壓縮格式

  • ATITC (ATI texture compression)

支持ATITC格式的GPU為Qualcomm的Adreno系列。

  • DXTC (Directx texture compression)

S3TC(S3 texturecompression)也被稱為DXTC,在PC上廣泛被使用,支持的GPU為NVIDIA Tegra系列。移動設備上使用GPU為nVIDIA的極少。

七、總結

1、安卓設備運行平台要求支持OpenGL ES 3.0的使用ETC2,RGB壓縮為RGB Compressed ETC2 4bits,RGBA壓縮為RGBA Compressed ETC2 8bits。

2、安卓設備運行平台需要兼容OpenGL ES 2.0的使用ETC,RGB壓縮為RGB Compressed ETC 4bits,RGBA壓縮為RGBA 16bits。(壓縮大小不能接受的情況下,壓縮為2張RGB Compressed ETC 4bits)

3、蘋果設備運行平台要求支持OpenGL ES 3.0的使用ASTC,RGB壓縮為RGB CompressedASTC 6x6 block,RGBA壓縮為RGBA Compressed ASTC 4x4 block。對於法線貼圖的壓縮精度較高可以選擇RGB CompressedASTC 5x5 block。

4、 蘋果設備運行平台需要兼容 OpenGLES 2.0的使用 PVRTC,RGB壓縮為PVRTC 4bits,RGBA壓縮為RGBA 16bits。(壓縮大小不能接受的情況下,壓縮為2張RGB Compressed PVRTC 4bits)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM