纹理压缩格式整理(持续更新)

纹理压缩格式整理(持续更新)

为什么用纹理格式?
自GPU诞生以来,开发人员一直试图将更大更好的纹理塞进内存。有时这需要更多的RAM,但更多时候是通过本地支持压缩纹理格式来实现的。纹理压缩的目的是减少数据的大小,同时尽量减少对视觉质量的影响。内存通与CPU共享,因此内存是稀缺资源。受制于移动数据慢,设备存储空间小等因素。传输更小的数据非常重要。除了空间,还有电力的使用。纹理小可以在很多地方节能。包括从存储器读取,解包解压缩或转码步骤,写入内存,以及在渲染过程中读取数据。

Unity支持常见的图像格式导入纹理文件(如JPG、 PNG、PSD、TGA),但3D图形硬件(显卡或移动设备)求纹理用专门的格式进行压缩,这些格式针对快速纹理采样进行了优化,每个平台都有自己不同的专有格式。以下是纹理压缩的格式。

  • Alpha8 (ios)
  • R 8(ios )
  • R 16 bit(ios)
  • RGB 16 bit(ios)
  • RGB 24 bit(ios)
  • RGBA 16 bit(ios)
  • RGBA 32 bit(ios)
  • RGBA Half(ios)
  • RGB9e5 32 bit Shared Exponent Float(ios)
  • RGB Compressed PVRTC 2 bits(ios)
  • RGB Compressed PVRTC 4 bits(ios)
  • RGBA Compressed PVRTC 2 bits(ios)
  • RGBA Compressed PVRTC 4 bits(ios)
  • R Compressed EAC 4 bit(ios)
  • RG Compressed EAC 8 bit(ios)
  • RGB Compressed ETC 4 bits(ios)
  • RGB Compressed ETC2 4 bits(ios)
  • RGBA Compressed ETC2 8 bits(ios)
  • RGB +1-bit Alpha Compressd ETC2 bits(ios)
  • RGB Crunched ETC(ios)
  • RGB Crunched ETC2(ios)
  • RGB(A)Compressed ASTC 4*4 block(ios)
  • RGB(A)Compressed ASTC 5*5 block(ios)
  • RGB(A)Compressed ASTC 6*6 block(ios)
  • RGB(A)Compressed ASTC 8*8 block(ios)
  • RGB(A)Compressed ASTC 10*10 block(ios)
  • RGB(A)Compressed ASTC 12*12 block(ios)

ASTC
英伟达官网链接:https://developer.nvidia.com/astc-texture-compression-for-game-assets
原理:ASTC采用固定的每块128位,每个纹理在这些128位中可以具有不同大小的块。不仅是固定的4*4大小,可以用正方形和非正方形块来达到精确的控制。从8bpp降到1bpp以下。
纹理压缩格式整理(持续更新)