type
status
date
slug
summary
tags
category
icon
password
在Unity手游开发中,为了减少内存使用和提高加载速度,通常会对图片资源进行压缩。Unity支持多种图片压缩格式,可以根据目标平台在导入纹理时选择相应的压缩格式。
主流压缩格式
- ETC (Ericsson Texture Compression):
- ETC1: 只支持不带Alpha通道的纹理压缩,广泛用于Android设备。
- ETC2: 是ETC1的升级版,支持带Alpha通道的纹理压缩,也是OpenGL ES 3.0的标准格式。
- PVRTC (PowerVR Texture Compression):
- PVRTC1: 提供4bpp(每像素4位)和2bpp两种压缩比,但要求纹理尺寸是2的幂且宽度和高度相等。
- PVRTC2: 为PVRTC提供了一些改进,包括对非2的幂尺寸的支持。
- 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
RGB-PVRTC-4Bits 与 RGBA-PVRTC-4Bits
可以看到,不管有没有Alpha通道,PVRTC-4Bits占用都是0.5M
RGB-ASTC-5x5 与 RGB-ASTC-6x6
没Alpha通道的情况下,RGB-ASTC-5x5内存占用为0.6M,6x6为456.9K
RGBA-ASTC-5x5 与 RGBA-ASTC-6x6
有Alpha通道的情况下,数据跟没Alpha通道是一样的,RGB-ASTC-5x5内存占用为0.6M,6x6为456.9K
结论
各种图片压缩格式的内存占用差异明显:
ETC格式在没有Alpha通道的情况下,内存占用较小,而有Alpha通道的ETC2格式内存占用则翻倍。
PVRTC格式无论是否有Alpha通道,内存占用都跟ETC无Alpha通道一样。
ASTC格式的内存占用则根据压缩比例的不同而变化,跟有无Alpha通道无关。其中5x5比ETC略大,6x6则最小,而且图片效果看起来比ETC要优。
- 作者:VyronLee
- 链接:https://vyronlee.com/article/7404e948-d1a9-43be-a47b-2a9a214b701d
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。