Unity技术之贴图常用的格式

Unity技术之贴图常用的格式

简介

在Unity中纹理是非常重要的一种资源,为了正确使用纹理资源需要针对特定的平台使用不同的纹理格式,本文将简单介绍一下常用的部分纹理的格式设置,希望能借此帮助大家理解各个格式的不同

声明

本文中的内容属于个人总结整理而来,个人水平有限,对于部分细节难免有理解错误及遗漏之处,如果您在阅读过程中有所发现,希望您能指正,同时文章中的部分内容也参考了其它大神的文章,如果文章中的内容侵犯了您的权益,表示非常歉意,请您指出,我将尽快修改。

如果您进行转载,请标明出处。

Unity技术 纹理格式(http://www.liyubin.com/articles/2019/05/13/1557754462593.html)

纹理格式

为了方便查看,本文将以表格的形式展示,对于其中部分内容解释如下:

  1. 本文中并未完全列举全部格式,主要还是以在iOS与android平台上常用的为例
  2. 如果在使用中了机型不支持的格式,GPU将会解压为RGB或者RGBA,不过会增加CPU解压时间,并占用更多的内存
  3. BPP表示像素深度,一个像素的颜色在计算机中由多少个字节表示
  4. 画质的质量用5个星(★★★★★)来表示最好效果,其中空心的星(☆)表示半颗星
  5. 对于表格中第一列中的RGB与RGBA只是用来区别带A通道与不带A通道
  6. 对于统计的压缩率,只是一个粗略值,不代表绝对正确
  7. 对于表格中使用的多个横线(----)表示无限制或者不支持
格式 真彩-TrueColor 16位-RGBA4444/RGB565 Dither16位-RGBA4444/RGB565 PVRTC PVRTC+Alpha8 ASTC6x6 ETC ETC+Alpha8 ETC2
适用平台 iOS & Android iOS & Android iOS & Android iOS iOS iOS & 部分Android Android Android Android
支持要求 ---- ---- ---- ---- ----- iOS要求A8处理器, opengl2.0及以上 opengl2.0及以上 opengl3.0(Android4.3以上)
不支持情况 ---- ---- ---- ----- ---- iOS中iPhone5s,ipadmini2,ipadair有以下不支持, ---- ---- 4.3以下的机型
尺寸要求 ---- ---- ----- 需要为2的N次方的正方形 需要为2的N次方的正方形 ----- 长宽需要为4的整数倍 长宽需要为4的整数倍 长宽需要为4的整数倍
RGB BPP 24位 16位 16位 4位 ---- 3.56 4位 ---- 4位
RGBA BPP 32位 16位 16位 4位 4+8位 ---- ---- 4+8位 8位
RGB512x512 内存 768KB 512KB 512KB 128KB ---- 115.6KB 128KB ---- 128KB
RGBA512x512 内存 1024KB 512KB 512KB 128KB 128KB+256KB 115.6KB ---- 128KB+256KB 256KB
RGB压缩率 100% 68% 68% 16.7% ---- 15.1% 16.6% ---- 16.6%
RGBA压缩率 100% 50% 50% 12.5% 37.5% 11.29% ---- 37.5% 25%
RGB画质 ★★★★★ ★★★★ ★★★★☆ ★★★ ---- ★★★☆ ★★★☆ ---- ★★★☆
RGBA画质 ★★★★★ ★★ ★★★ ★★ ★★★ ★★★ ---- ★★★☆ ★★★
备注 原图不进行任何压缩,相对来说包体与内存占用量均比较大,但是质量会非常好 内存占用相对中等,绝大多数机型均支持,色阶/色差比较明显,对于不带A通道的图来说质量还可以,但是对于带A通道的会影响较大 内存占用中等,绝大多数机型也支持,与16位色对比的话,使用抖动算法,使用噪点代替色阶,不带A通道的基本上效果会好些,但是不适合拉伸和9宫的贴图,对于部分带A通道的贴图,如果效果能接受的话也可适用带A通道的贴图 要求贴图尺寸必须为2的N次方的正方形,对于长方形图不适用,内存占用量小,但是由于压缩会对画质有一定的影响,对于带A通道的影响明显 由于PVRTC对于带A通道的贴图,效果太差,所以对于带A通道的可以将A分离,从而得到RGB+A的两张贴图,其中A通道的可以不压缩 部分机型不支持,内存占用量小,同时对尺寸也不再有限制,此类有多种格式4x4,12x12等,此处以6x6为例,其中4x4效果最好,12x12效果最差 不支持带A通道的贴图,内存占用量小,同时画质较好 由于ETC本身并不支持A通道,所以将带A通道的图拆成RGB+A8通道的两张图,这样对于带A通道的效果会好很多 部分机型不支持,不过对于目前来说,对整体占有率影响不大,不管是带A或者不带的A的质量均可接受

总结:

根据上表的情况,一般在开发过程中,如果想要保证兼容性针对iOS平台,会限定使用PVRTC,对于Android平台会ETC,如果对旧设备不再提供支持,可以限定iOS平台使用ASTC,Android平台使用ETC2

参考资料

你可能感兴趣的:(Tools,Unity)