首页 > Unity3D引擎 > Unity研究纹理压缩格式
2022
01-06

Unity研究纹理压缩格式

本文章作者网虫虫原创,如有转载请注明出处。

之前也一直关注纹理压缩,也看过大部分文章,但对包体占用和内存占用比较详细的介绍和对比是比较少的。

于是我用了一下午时间,专门对比了常用的压缩格式。

GooglePlay纹理格式分布

Unity研究纹理压缩格式 - 第1张  | u3d8技术分享

纹理格式介绍

RGBA32

RGBA32占用内存是最大的,一般用于还原原始品质,所以对显卡带宽压力也会比较大。一般不会选择该格式

ETC2

ETC2是OPENGL3.0后支持的,大概2013年后的设备都会支持

RGBA ETC2 Compressed 8bits下

ASTC

英伟达官方介绍:https://developer.nvidia.com/astc-texture-compression-for-game-assets

ASTC在iPhone6(A8芯片)以及之后的设备都支持

Unity对ASTC介绍(2016年之后的安卓手机基本支持)

https://docs.unity3d.com/Manual/class-TextureImporterOverride.html

Unity研究纹理压缩格式 - 第2张  | u3d8技术分享

1024x1024贴图占用内存

Unity研究纹理压缩格式 - 第3张  | u3d8技术分享

不同block之间压缩比

Unity研究纹理压缩格式 - 第4张  | u3d8技术分享

测试

没有专门测试iOS的PVRTC格式,是因为PVRTC强制要求宽高相等,且为2的整次幂。因为PVRTC对大部分纹理尺寸限制过高,不太适用项目的批量设置,而且压缩比对于ASTC来说并没有太多优势。

RGBA(带透明通道图)

测试使用的是SpriteAtlas图集,因为游戏中图集占比一般都是最大的,不过带A通道图,测试结果也是一样的。

所有格式的压缩质量均选择Best的情况下

占用对比

Unity研究纹理压缩格式 - 第5张  | u3d8技术分享

效果对比

Unity研究纹理压缩格式 - 第6张  | u3d8技术分享
从左到右依次:
RGBA Compressed ETC2 8bits
RGBA Crunched ETC2
RGBA 32 bit
RGB(A) Compressed ASTC 4x4 block
RGB(A) Compressed ASTC 8x8 block

大图对比

Unity研究纹理压缩格式 - 第7张  | u3d8技术分享
RGB(A) Compressed ASTC 4x4 block
Unity研究纹理压缩格式 - 第8张  | u3d8技术分享
RGB(A) Compressed ASTC 8x8 block
Unity研究纹理压缩格式 - 第9张  | u3d8技术分享
RGBA Crunched ETC2
Unity研究纹理压缩格式 - 第10张  | u3d8技术分享
RGBA Compressed ETC2 8bits
Unity研究纹理压缩格式 - 第11张  | u3d8技术分享
RGBA 32 bit

效果结果

第一:RGBA 32 bit,这个毋庸置疑,没有压缩肯定效果好

第二:RGB(A) Compressed ASTC 4x4 block,效果比RGBA 32 bit稍微差点,但比另外三个强太多了

第三:RGBA Compressed ETC2 8bits,效果比前两个差点,但也能说得过去

第四:RGBA Crunched ETC2,效果比前一个差的多

第五:RGB(A) Compressed ASTC 8x8 block,效果跟前一个差不多。Crunched ETC2比ASTC 8x8强点,比ASTC 6x6要差的

RGB(不带透明通道)

测试使用的是1080*1920的背景图

所有格式的压缩质量均选择Best的情况下

占用对比

Unity研究纹理压缩格式 - 第12张  | u3d8技术分享

效果对比

Unity研究纹理压缩格式 - 第13张  | u3d8技术分享
从左到右依次:
RGB Compressed ETC2 4bits
RGBA Crunched ETC2
RGB 24 bit
RGB(A) Compressed ASTC 4x4 block
RGB(A) Compressed ASTC 8x8 block

大图太大就不上传了,而且RGB大图仔细看好久也没看出太大差别,可能跟选择的图有关。效果基本可以参照RGBA结果

结论

兼顾内存、质量、兼容性来说可以采用下面策略

Unity研究纹理压缩格式 - 第14张  | u3d8技术分享

优先内存、包体,对质量、兼容性要求不高可以考虑

Unity研究纹理压缩格式 - 第15张  | u3d8技术分享

优先兼容性、包体,对内存、质量要求不高可以考虑

Unity研究纹理压缩格式 - 第16张  | u3d8技术分享

以上大部分为自己实测分析结果,如有出入请联系作者修改。希望对你们能有借鉴作用~

最后编辑:
作者:网虫虫
网虫虫
分享是一种快乐; 分享是一种美德; 分享是一种幸福!

0 0 votes
Article Rating
Subscribe
提醒
guest
0 评论
Inline Feedbacks
View all comments