性能优化-图片压缩格式的选择(ETC和ASTC)

一个游戏内的内存在很多情况下都会由于图片的压缩格式导致内存的上涨

市场上存在的IOS压缩pvrtc android以前的etc1 etc2 都是为了进行对图片的压缩以提高性能

但是目前的主流都开始转向ASTC压缩格式

一方面是由于IOS与Android同时支撑ASTC格式(astc是12年出现的,都21年了  手机如果还不支持的花,估计也没有是么能力付费了)

另一方面也是由于ASTC一个对效果以及压缩率的更好支持

我们以一张512*512的图片为例

在RGB32bit的情况下  他所占用的内存为多少呢  512*512*(32/8)bit = 1M

压缩为ETC2 4 bits后容量为170.7KB,有明显失真,

压缩为ASTC 6x6后容量为154.7KB,无明显失真,

ASTC 6x6的容量小于ETC2 4 bits,压缩质量高于ETC2 4 bits。

压缩为ASTC 8x8后容量与ASTC 6x6相比减小了约44.8%,

压缩为ASTC10x10后容量与ASTC 8x8相比减小了约33.7%。

这个压缩率在大图的情况下是对内存的优化是极其明显的

<think>好的,用户想了解UnityASTC图片压缩的原理及实现方式。首先,我需要回顾之前提供的引用内容,尤其是引用2、34,它们详细讨论了ASTCUnity中的应用特点。ASTC是ARM开发的纹理压缩格式,支持多种块尺寸,如4x4、5x5等,能灵活平衡质量压缩率。用户可能想知道ASTC如何工作,比如分块处理、编解码过程,以及Unity中的具体实现步骤,比如设置压缩参数平台适配。同时,要比较ASTC与其他格式如ETCPVRTC的优势,比如更高的压缩率更少的尺寸限制。可能还需要提到ASTC在移动设备上的支持情况,比如iOSAndroid的不同版本要求。最后,要确保回答结构清晰,分点说明原理、实现方式优势,并生成相关问题帮助用户深入理解。</think>### UnityASTC图片压缩原理及实现方式 #### 一、ASTC压缩技术原理 1. **分块压缩机制** ASTC采用$N \times N$像素块(如4×4、5×5、8×8等)作为基本压缩单元。每个块独立编码,将颜色信息转换为低精度数值,并通过插值重建图像[^2]。例如,对于4×4块,压缩后数据量仅为原始未压缩数据的$1/8$(从128字节压缩至16字节)。 2. **动态位分配** 通过权重图(Weight Map)端点编码(Endpoint Encoding)动态分配颜色通道的存储位数,优先保留高频细节区域的信息,减少低频区域的存储开销[^1]。 3. **空间自适应性** 支持LDR(低动态范围)HDR(高动态范围)纹理,可处理RGB/RGBA格式,并通过$$ \text{压缩率} = \frac{\text{块尺寸}}{\text{存储位数}} $$公式实现灵活的质量控制[^3]。 #### 二、Unity中的实现方式 1. **平台适配设置** - **iOS**:ASTC支持从A8芯片(iOS9+)开始,Unity中可选择`RGBA ASTC 6x6`等预设,无需纹理尺寸为2的幂次方[^3]。 - **Android**:需设备支持OpenGL ES 3.1或Vulkan,Unity通过`Edit > Project Settings > Player > Other Settings`启用ASTC[^4]。 2. **压缩参数配置** ```csharp // 在Unity Editor中设置纹理压缩格式 TextureImporter.textureCompression = TextureImporterCompression.Compressed; TextureImporter.astcCompressionQuality = TextureCompressionQuality.Best; ``` 支持`ASTC 4x4`(高质量)到`ASTC 12x12`(高压缩率)多档选项,压缩率范围从$0.89\ \text{bpp}$到$0.06\ \text{bpp}$[^2]。 3. **运行时解码优化** Unity通过GPU硬件加速解码ASTC格式,减少CPU负载。例如,Mali GPU的ASTC解码效率比软件解码快$3\times$[^1]。 #### 三、ASTC核心优势 1. **压缩率与质量平衡** 相比ETC2,ASTC 6x6在相同内存占用下,PSNR(峰值信噪比)提升约$5\text{dB}$[^4]。 2. **格式灵活性** 支持非二次幂(NPOT)纹理透明通道,避免ETC2对透明通道的额外存储需求。 3. **跨平台兼容性** 覆盖iOS 9+Android 5.0+主流设备,Unity自动处理格式降级(如不支持ASTC时回退到ETC2)[^2]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值