type
status
date
slug
summary
tags
category
icon
password
在Unity手游开发中,为了减少内存使用和提高加载速度,通常会对图片资源进行压缩。Unity支持多种图片压缩格式,可以根据目标平台在导入纹理时选择相应的压缩格式。

主流压缩格式

  1. ETC (Ericsson Texture Compression):
      • ETC1: 只支持不带Alpha通道的纹理压缩,广泛用于Android设备。
      • ETC2: 是ETC1的升级版,支持带Alpha通道的纹理压缩,也是OpenGL ES 3.0的标准格式。
  1. PVRTC (PowerVR Texture Compression):
      • PVRTC1: 提供4bpp(每像素4位)和2bpp两种压缩比,但要求纹理尺寸是2的幂且宽度和高度相等。
      • PVRTC2: 为PVRTC提供了一些改进,包括对非2的幂尺寸的支持。
  1. ASTC (Adaptive Scalable Texture Compression):
      • ASTC支持一系列不同的压缩比,可以根据需要调整压缩率,同时保持较高的图像质量,支持Alpha通道。
目前(2024年)市面上的游戏基本都是以ASTC为主流了,该格式不仅有较好的图像质量且支持Alpha通道,而且还有不错的压缩比率。

压缩格式对比

下面对同一张图,分别使用ETC、ETC2、PVRTC、ASTC进行测试,来看看实际的内存占用情况。使用的图片尺寸为1024x1024。

RGB-ETC-4Bits 与 RGBA-ETC2-8Bits

可以看到,没Alpha通道的RGB-ETC-4Bits内存占用为0.5M;有Alpha通道的RGBA-ETC2-8Bits内存占用为1M
notion image
notion image

RGB-PVRTC-4Bits 与 RGBA-PVRTC-4Bits

可以看到,不管有没有Alpha通道,PVRTC-4Bits占用都是0.5M
notion image
notion image

RGB-ASTC-5x5 与 RGB-ASTC-6x6

没Alpha通道的情况下,RGB-ASTC-5x5内存占用为0.6M,6x6为456.9K
notion image
notion image

RGBA-ASTC-5x5 与 RGBA-ASTC-6x6

有Alpha通道的情况下,数据跟没Alpha通道是一样的,RGB-ASTC-5x5内存占用为0.6M,6x6为456.9K
notion image
notion image

结论

各种图片压缩格式的内存占用差异明显:
ETC格式在没有Alpha通道的情况下,内存占用较小,而有Alpha通道的ETC2格式内存占用则翻倍。
PVRTC格式无论是否有Alpha通道,内存占用都跟ETC无Alpha通道一样。
ASTC格式的内存占用则根据压缩比例的不同而变化,跟有无Alpha通道无关。其中5x5比ETC略大,6x6则最小,而且图片效果看起来比ETC要优。
算法解惑:前缀和UI 优化要点
Loading...