Unity 贴图压缩方法和对比(摘抄)
综合文库 796 11
实名

通过了实名认证的内容创造者

发布于 2017-3-6 17:02:38

您需要 登录 才可以下载或查看,没有账号?注册

x
本帖最后由 胖纸_DHW 于 2021-1-4 11:51 编辑

在手机平台,贴图必定需要压缩,如果不压缩,没多少手机可以坑得住内存,除非你对贴图的精度需求很高,需要牺牲对低端设备的适配,贴图压缩是一个常用和必要的内存优化手段

以下是常用的一些贴图压缩对比图

20160701163359215.jpg

16514592b20835e862.png


我们在压缩的时候,通常会把贴图分为透明和不透明类型,对于不透明的贴图,则没有通道图,可以直接用RBG16、RGB PVRTC4、ETC来压缩。

对透明的贴图,我们需要分离出两张图,一个是颜色图(包含RGB通道)一个是通道图(定义alpha)

这样分离的原因在于,可以达到更好的压缩质量,而又不至于占用内存太大

比如,颜色图用RGB PVRTC4,通道图也用RGB PVRTC4,这样一张256KB的图可以压缩到64KB

上图列出的是在iOS的平台下的压缩方法,IOS平台的GPU型号统一,所以以上的贴图压缩格式,适合任何IOS平台。对于Android平台下也差不多,只是PVRTC 4换成了ETC,例如:通道图和颜色图都是RGB ETC 压缩。只是不确定所有Android平台都支持RBG16,这个还没做过测试,理论上是都支持的

对于一些精度要求低的贴图,例如场景中的花花草草,甚至可以用RGBA PVRTC2来压缩。比RGBA PVRTC 4还要少一半。

对于UI贴图,优先推荐使用RGB16 + 通道图的压缩方式,因为这对精度上是无损的(就是不会模糊),但会产生色偏。就是一些颜色值发现了变化(PVRTC/ETC这些压缩算法也不能百分百还原颜色值,但不会像RGB16一样发生大片的颜色的丢失)。发送变化的原因在于,RGB16其实就是RGB565,在每个通道的最低3位的信息都被丢弃。所以颜色上会有大面积的偏差,特别是对于渐变类型的纹理,RGB16适合没有渐变或颜色明快的纹理。这个问题可以在前期定美术风格的时候,就考虑进去。但大多数情况下,这些损失是可以接受的,如果不能接受,用PVRTC4来压缩或者原图

总结

  • IOS平台:对于UI,优先使用RGB16+RGB PVRTC4,次选RGB PVRTC4+RGB PVRTC4。

    对于场景,根据精度要求使用RGB PVRTC4+RGB PVRTC4或RGBA PVRTC4,如果精度要求更低,可考虑PVRTC2

  • Android平台:如果想全平台通用,压缩方式没什么可选择的,对于UI和场景,最通用的方式是RGB ETC4+RGB ETC4
  • 压缩质量:仅比较RGB这三个通道的质量,RGBA32 > RBG16 > RGBA16 > RGB PVRTC4/ETC4 > RGB PVRTC2

还没有设置签名!您可以在此展示你的链接,或者个人主页!
使用道具 <
tp999xc  发表于 2017-3-6 18:53:13  
2#
把最重要的都说啦 ~~~~  赞~~
回复 收起回复
使用道具
magicer  发表于 2017-3-7 12:52:37  
3#
我们先定一个能达到的小目标,先赚它一亿元素币
回复 收起回复
使用道具
fozh  发表于 2018-5-20 07:30:02  
4#
不錯的分享
回复 收起回复
使用道具
202990898  发表于 2018-11-8 00:58:16  
5#

元素帖子强,满满正能量!
回复 收起回复
使用道具
不晓九  发表于 2018-11-9 01:27:11  
6#
6
回复 收起回复
使用道具
踏实的咖啡豆  发表于 2018-11-9 05:55:26  
7#
元素帖子强,满满正能量!
回复 收起回复
使用道具
Goatjump  发表于 2018-11-9 09:06:58  
8#
想要成大触,天天上元素
回复 收起回复
使用道具
fatlong  发表于 2018-11-9 10:16:07  
9#
感谢楼主分享。
回复 收起回复
使用道具
Pawnhub  发表于 2018-11-10 03:02:26  
10#
不懂
回复 收起回复
使用道具
无奈的等待  发表于 2018-11-14 09:30:16  
11#
6666666
回复 收起回复
使用道具
醉猫翁  发表于 2018-11-14 10:28:50  
12#

首发必发微元素,荣耀加身装备酷!
回复 收起回复
使用道具
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表