移动端纹理压缩格式

设备资源的限制和制作过程中对表现的无限追求永远是矛盾点,不会随设备的发展而转移。纹理压缩就是这种矛盾的一种解决方式,不同于png、jgp这种硬盘压缩方式而言,DXT,ETC等纹理压缩方式可以在游戏运行中无需CPU解压就被GPU直接采样,可以极大的减少内存和带宽的占用,提升运行效率,对移动游戏而言更是如此。

这篇文章做一些简要概述,详细纹理压缩算法需要查阅更详细文档。

非压缩格式
格式内存消耗 (bytes/pixel)描述
RGBA8888(RGBA32)4bppRGBA通道各占用8位
RGBA4444(RGBA16)2bpp每个像素2字节
RGB888(RGB24)3bpp每个像素3字节,RGB通道各占用8位,无透明通道
RGB565(RGB16)2bpp每个像素2字节,RGB通道各占用5/6/5位,无透明通道
压缩格式
格式压缩比GPU支持描述图片要求
DXTDXT1:0.3/DXT5:0.6Windows\Android(Nvidia Tegra and Intel Bay Trail)分为DXT1-DXT5这五个级别,DXT1 适用于不具有透明度或者仅具有一位Alpha的贴图,DXT3和DX5支持包含4位alpha通道的RGB纹理
ATC RGBA/RGBRGBA:0.25/RGB:0.125Qualcomm -Adreno高通GPU支持格式,支持带有Alpha的RGB纹理压缩。
PVRTC RGBA/RGB2bit:0.125/4bit:0.25PowerVRIOS平台都支持,支持每个像素2位或者4位的纹理,包含或者不包含alpha通道都可以;PVRTC 2-bpp把一个8×4的像素单元组压成一个64位的数据块,压缩效果比较差;PVRTC 4-bpp把一个4×4的像素单元组压成一个64位的数据块。游戏中使用4位压缩更多。尺寸为2的N次幂,并且宽高相同。
ETC1 RGB 4Bit0.125支持Opnegl ES2.0的GPUOpenGL ES2.0版本支持,移动GPU均支持的一个格式,遗憾的是不支持Alpha通道。ETC1把一个4x4的像素单元组压成一个64位的数据块。游戏开发中采用最多的格式,不过麻烦的是需要对Alpha通道进行单独存储,Unity5.4.3版本之后提供了官方支持尺寸为2的N次幂,长宽可不同
ETC2 ARGB/RGB 4bitRGBA:0.25/RGB:0.125支持Opnegl ES3.0的GPUOpenGL ES 3.0以上才支持,补全了ETC1不支持Alpha通道,支持更高质量的压缩。虽然如此,从Android官方数据来看,还有相当大的设备是采用Opengl ES2.0;使用需要谨慎,不过随着设备更新换代,开发时间周期比较长的游戏可以考虑直接使用尺寸为4的倍数

Unity官网对每个平台默认的纹理压缩格式以及使用建议给出了详细描述,需要注意的是:在不同移动GPU平台下选择GPU支持的压缩纹理,就可以在不需要CPU解压的情况下直接被GPU采样,节省CPU内存和带宽,也可以节省存储的体积。如果目标平台不支持设置的压缩格式,纹理将解压为RGBA32或者RGB24,浪费CPU时间和内存

ASTC

从IOS9(A8架构)Apple 手机开始支持ASTC压缩格式 ,如果考虑放弃Apple 6代之前的手机兼容问题了,可以直接使用了。相对于PVRTC2/4而言,ASTC(4X4)的压缩比会增加到0.25,不过显示效果也会好很多,而且不需要把图片设置为方形。

Using ASTC Texture Compression for Game Assets 说明的比较详细,也给出了一些使用上的建议,即针对不同贴图类型给出不同的压缩方案。

ARM的参考资料: ASTC: The Future of Texture Compression

引用

[1]: "常用纹理和纹理压缩格式" http://blog.csdn.net/ynnmnm/article/details/44983545
[2]:"Unity Compressed" https://docs.unity3d.com/Manual/class-TextureImporterOverride.html
[3]: "移动设备的纹理压缩方案" http://gad.qq.com/article/detail/72
[4]: "关于U3D贴图格式压缩" http://blog.sina.com.cn/s/blog_5b6cb9500102vi6i.html
[5]: "各种移动GPU压缩纹理的使用方法" http://www.cnblogs.com/luming1979/archive/2013/02/04/2891421.html
[6] "版本分布情况" https://developer.android.com/about/dashboards/index.html#Screens

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值