找回密码
 立即注册
查看: 432|回复: 0

关于Unity贴图压缩

[复制链接]
发表于 2021-11-27 06:59 | 显示全部楼层 |阅读模式
关键词

优化策略、贴图压缩格式
参考

Using ASTC Texture Compression for Game Assets | NVIDIA Developer
Unity - Manual: Recommended, default, and supported texture compression formats, by platform (unity3d.com)
你所需要了解的几种纹理压缩格式原理 - 知乎 (zhihu.com)
常用方案

  • ETC:有损压缩,可对24-bitRGB进行6倍压缩。不支持Alpha。要求OpenGL ES2.0,并且长宽是4的倍数。不支持A通道贴图。
  • ETC2:提供单通道R11和双通道RG11数据的压缩,支持Alpha。要求OpenGL ES3.0,并且长宽是4的倍数。
  • ASTC:IOS9之后支持ASTC压缩,ASTC在压缩质量和容量上有很大优势,以ASTC 4x4 block压缩格式为例,每个像素占用1字节,8bits。一张1024*1024大小的贴图压缩后的大小为1M。ASTC的Nvidia引文
  • 现阶段安卓也逐步往ASTC上倾斜,但是支持有问题,支持OpenGL ES 3.1和部分支持OpenGL ES 3.0的GPU。Unity官方引文

<hr/>常用计算公式

下图是ASTC在Nvidia引文中的数据:




像素大小(Bits Per Pixel)(可能是这么翻译的-。-)
Bits Per Pixel = 16 bytes/Block Size * 8-bit;
压缩率
压缩率 = 原始像素大小(32-bit)/ Bits Per Pixel;
压缩后图像大小
图像大小 = 原始图片大小 / 压缩率;
各压缩格式的贴图注意事项

PVRTC:平台IOS。要求长宽一致。且为2的幂次方。
ASTC:平台IOS。没有过多限制。优先使用。
ETC:平台安卓。要求长宽为4的倍数。不支持A通道贴图。
ETC2:平台安卓。且为OpenGL ES3.0,要求长宽为4的倍数。

<hr/>建议

UI因为特殊性,有的项目是用无损压缩,有的项目直接上ASTC。
建议在IOS下常规下用ASTC 6X6作为普通diffuse贴图的压缩格式。
ASTC 4X4作为粗糙度/细节纹理的贴图的压缩格式。
ASTC 6X6作为通道贴图的压缩格式。
ASTC 4X4作为NormalMap贴图的压缩格式。
JPEG已经是有损格式了,JPEG原图精度丢失与ASTC/ETC压缩无关
贴图尺寸的话,尽可能是2的幂次方纹理。理由参考

本帖子中包含更多资源

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

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-9-23 03:26 , Processed in 0.065019 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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