Unity材质压缩技巧:Android平台优化

一、图片大小问题

Unity打包后的图片大小仅与分辨率和导入设置有关,和原图大小无关。例如,jpg是有损压缩,压缩源文件只会让最终结果变模糊,对打包后的大小没有任何帮助。

二、DXT压缩

1,DXT是PC端常用的压缩算法,质量较低

android unity 材质压缩 unity怎么压缩_图片

 2,压缩算法介绍

android unity 材质压缩 unity怎么压缩_Unity_02

DXT压缩将图片拆分成4*4的小块,每一块取极值的2种颜色,剩下的颜色取插值、共有00,01,10,11四种颜色值。

压缩后单个颜色是16位,是RGB565、

不支持透明通道,原图RGB24,16个格子,需要24*16=384位

压缩后,两个16位颜色+16个插值,16*2+2*16=64位,压缩比例1/6


3,DXT3和DXT5压缩

在DXT1的基础上,支持透明图片,额外使用64位数据来保存透明通道值,压缩比例1/3。

DXT3压缩:每一个像素点使用4位保存alpha值,透明值较为粗糙

DXT5压缩:透明通道也单独取插值,有2个8位极值,每一个像素点使用3位插值,8*2+3*16=64位


4,缺点

细节上会有丢失,例如:

android unity 材质压缩 unity怎么压缩_压缩_03



三、ETC压缩

1,ETC是Android平台通用的压缩格式,质量较低

android unity 材质压缩 unity怎么压缩_Unity_04

ETC:不支持透明通道,图片宽高必须是2的整数次幂

ETC2:是ETC的扩展,支持透明通道,且图片宽高只要是4的倍数即可



2,压缩算法介绍

android unity 材质压缩 unity怎么压缩_压缩_05

也是将图片分成4*4的小块进行压缩,其中每一块会分成两半,用1位表示是横着还是竖着拆分。

取2种颜色,从2半中各取一个,分为individual模式还是 differential模式,用1位表示取色模式。

individual模式:取两个RGB444的颜色,适用于两边颜色差异大的情况

differential模式:取RGB555+RGB333的颜色,其中,第二个块的颜色是偏移值,适用于两边颜色差异不大的情况,精度更高。

android unity 材质压缩 unity怎么压缩_Unity_06

压缩时会生成一个全局的映射表,两个子块各需要3位来确定使用哪一行的数据。

对于每一个像素点,使用2位数据表示使用这一行的哪一个modifier,去除一个偏移值。例如表中(0,0)格子的-8,偏移值就是(-8,-8,-8),在子块颜色的基础上加上偏移值得到当前像素的颜色。

压缩前:16*24=384位

压缩后:1+1+24+3*2+2*16=64位,压缩比例1/6

四、ASTC压缩

1,ASTC是Android和IOS平台下的一种高质量压缩方式,支持Android5.0和iPhone6以上机型

android unity 材质压缩 unity怎么压缩_图片_07

2,压缩算法介绍

也是分块压缩,一块128位,块的大小很灵活,有4*4,6*6,8*8,12*12等多种大小。支持LDR、HDR、2D和3D纹理。每个块也有端点对endpoints,端点对不一定是RGBA的,也可以只用其中部分通道,比如RG通道,这样可以对法线贴图进行更好的压缩。

android unity 材质压缩 unity怎么压缩_Android_08

BISE算法:例如有5个数字,值为0,1,2,正常存储需要2*5=10位。但是实际上只有3^5=243<256种情况,可以使用8位表示这些情况,即使用8位就可以表示5个值为0,1,2的整数。

android unity 材质压缩 unity怎么压缩_android unity 材质压缩_09


ASTC压缩时,各个部分长度不固定。

BlockMode:平面数、权重范围、权重网格的大小

Part:分区数量

ConfigData、MoreConfigData:每个端点对的端点模式

对于块内颜色分布较为复杂的情况,分析块内颜色的分布,并做分区,分别存储其对应的endpoints;对于块内的像素取值时先定位分区,再计算在其在分区内的颜色。

对块内每个像素存储一个插值weight,但是weight的数量可以比像素少。对于规格较大的块,例如12x12,只能存储4x6的权重网格。解码时,权重网格会被双线性放大到块的大小。

3,块大小选择(块越大,压缩质量越差,但是图片越小)

1)法线贴图:尽量选择4*4,避免丢失过多数据

2)细节处的贴图:选择4*4或者6*6,否则会丢失细节

3)一般的贴图:选择6*6或8*8

4)无关紧要,但是尺寸特别大的图:可以考虑8*8,10*10,12*12,不然打包出来太大


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空