iOS etc 压缩格式,使用 Mac 压缩后透明度不对(已解决)

引擎版本:cocos creator 2.2.2
测试平台:IOS
cocos creator模拟器效果:


压缩格式:

实际效果:

1赞

这个 demo 麻烦传一下?

IOS_ETC2.zip (1.2 MB)

附件已经上传

我用IOS etc2 RGBA压缩格式,半透明的图片透明度丢失严重。

pvr也是。。。

测试了下

电脑 preview

ios 压缩后

测试看起来是 alpha 值越低精度损失越大,像这种大面积半透明的图片压缩后看起来才比较明显,这种图片建议就不要压缩了

我们尝试优化了压缩方案,可在 2.4 重新验证

我也遇到这个问题了,请问大佬最后是怎么解决的?

同样这个ETC2格式,PC机打包出来的pkm半透明是好的,MAC机打出来半透明就是有问题!

alpha精度的问题 ,现在有解决方案吗

经过核实,这个是 etc 打包工具自身的问题,我们会尝试绕过去。

问题已解决,这里分享一下。

纹理压缩工具(引擎就是用这个工具进行ETC纹理压缩的):
MaliTexture
https://developer.arm.com/tools-and-software/graphics-and-gaming/mali-texture-compression-tool/downloads
存在于引擎路径:
2.3.3\resources\static\tools\texture-compress\mali\OSX_x86

主要问题:
1.ETC1+alpha alpha精度丢失
2.ETC2 alpha精度丢失

验证结果:
ccc2.3.3
1.mac平台纹理压缩 etc1/etc2存在alpha精度丢失
2.windows平台纹理压缩 etc1/etc2alpha精度丢失不明显

ccc2.4.0
1.mac平台纹理压缩 etc1精度丢失不明显 etc2存在alpha精度丢失
2.windows平台纹理压缩 etc1/etc2精度丢失不明显

原因:
两个平台的工具链存在差异。
为什么2.4.0mac平台 etc1没有问题 呢,正如引擎同学所述,确实在2.4.0针对此问题做了修复,但只是修复了etc1+alpha。具体修复了什么,我这里排查下来应该是,2.4.0在生成etc1+alpha纹理里,取消了-aa选项,不依赖MaliTexture处理alpha通道,由编辑器额外逻辑处理(此处跟引擎同学交流过,没有单独成执行程序,无法同步到旧版本)

所以2.4.0还是没有解决etc2 mac版本纹理压缩精度丢失的问题,2.4.0以下的版本则是Mac纹理压缩ETC1和ETC2都有问题,且无法同步2.4.0对ETC1做的优化。

解决方案:
1.Mac 升级工肯链
2.PC没有问题,不用操作。

MAC的这个问题,早在四年前就在MaliTexture社区有人提出来了,也提供了解决方案,链接如下:
https://community.arm.com/developer/tools-software/graphics/f/discussions/6595/the-alpha-value-is-not-correct-after-compression-by-tct-mac-v4-2

所以根据贴子,我们知道4.3版本MaliTexture带的第三方工具convert是有问题的,那么我们需要做的就是 定制 convert 工具 (说白了就是升级它)
(注意MaliTexuture这里面的convert其实是magick执行程序)

1.下载imagemagick
https://imagemagick.org/script/download.php

建议使用上述安装方式(优势在于会自动安装依赖和设置好环境变量)
2.下载成功 在终端输入 convert -v 或者 magick --help 验证
3.将引擎目录的 resources\static\tools\texture-compress\mali\OSX_x86\convert 文件备份到其它目录,原目录移除(会优先使用自己下载的imagemagick)

大功告成, 用mac电脑进行纹理压缩并打包验证。

9赞

赞!不然还真头大

mark并会 用到

太感谢了,也遇到这个问题,造福人类。

感谢!mark一下

感谢,mark一下