Unity在移动端纹理压缩格式选择
转载自:https://mp.weixin.qq.com/s/DnjBUqK5MtJyqucHxOL57Q
Unity几种ETC纹理压缩格式:
RGB ETC1 4 bit :4 bits/pixel,对RGB压缩比6:1,不支持Alpha,绝大部分安卓设备都支持。
RGB ETC2 4 bit :4 bits/pixel,对RGB压缩比6:1。不支持Alpha,ETC2兼容ETC1,压缩质量可能更高,但对于色度变化大的块误差也更大,需要在OpenGL ES 3.0和OpenGL 4.3以上版本。
RGBA ETC2 8bit :8 bits/pixel,对RGBA压缩比4:1。支持完全的透明通道,版本要求同上。
RGB +1bit Alpha ETC2 4bit :4 bits/pixel。支持1bit的Alpha通道,也就是只支持镂空图,图片只有透明和不透明部分,没有中间的透明度。
EAC:核心原理与ETC相同,但它只用于单通道或双通道数据,OpenGL ES 3.0和OpenGL 4.3后的设备大部分支持,但由于安卓平台五花八门的兼容性,一般不建议用单双通道贴图。
ASTC(Adaptive Scalable Texture Compression),由ARM和AMD联合开发,2012年发布,是较新的一种压缩格式,唯一一个不受专利权影响的压缩格式。ASTC在压缩率、图像质量、种类上都挺不错的,也正在逐步代替前三种,最大的缺点可能就是兼容性还不够完善和解码时间较长,但以现在移动端的发展趋势来看,GPU计算能力越来越难成为瓶颈,因此非常有希望在以后能成为统一的压缩格式。
总结
安卓:用ETC2没有什么问题;至于ASTC在Android 5.0/OpenGL ES 3.1后支持,市场大部分机型都支持(98.5%),可以考虑选择,但毕竟是安卓,要做好处理兼容性的心里准备。
IOS:在iPhone6以上(包含)都支持ASTC,6以下可以选择PVRTC2。