2.4.11版本spine使用ASTC压缩显示异常

prefab 就是个 json,可以用文本编辑器直接把 premultipliedAlpha 改成 true

嗯,测试用例导出的时候加上预乘应该是正常的。
或者
astcenc.exe -cl in.png out.astc 5x5 -fastest -pp-premultiply
手动再压缩一下,命令行加上这个参数 -pp-premultiply
image

没有预乘的话,组件上别勾预乘不就好了吗

astc 压缩的时候目前没做预乘处理 :sweat_smile:

对啊,所以我说的是 spine 组件上别勾预乘

测试用例勾选或者不勾选都试过了,还是一样的问题

试了下用astcenc.exe -cl in.png out.astc 5x5 -fastest -pp-premultiply是可以的,这里必须跟自己设置的压缩astc块是同样的才行,希望后面的版本能支持下

代码里动态设置的预乘, 后续版本 又如何能获取到解决这个问题?

请问是支持什么呢?为什么一定要用预乘呢?组件上别勾预乘,这不是更简单吗?注意我说的是组件,不是图片。

抱歉压缩纹理不支持动态设置预乘,无法解决

组件上没有勾选预乘,你们可以试试上面的测试案例,同样会出现这个问题
是否能支持下在编译时根据图片设置的premultip Alpha属性压缩astc时是否带上参数-pp-premultiply

抱歉 2.x 不会进行这块的调整了,因为这个参数的支持不可能只对 astc 开启,所有压缩格式都要支持,工作量会比较大。
3.x 因为没有预乘功能,所以不需要这个参数了。
后续我们会重点排查一下这里是否有“非预乘”引起的原因导致效果不佳。目前来看有可能单纯是因为 astc 添加了 alpha 通道后,导致压缩质量不佳导致的。

第一种方式是可以正常显示的,但是显示的spine有点多,没办法全部重新导出,不可用。
第二种方式的意思是在编译完后重新在手动压缩跟astc格式相同名字的png?不知道你说的是不是这个意思

自己手动将 png 转成 astc 后,替换引擎生成的 astc 文件

压缩流程是开源(或可定制)的吗?我这边太多了,手动有点不方便,我这边想评估下能否直接动引擎这块,如果不行,就搞插件了

我这边的思路是编译完成后,把源文件目录assets里的meta文件全部找出来,后缀带.png.meta .jpg.meta的解析出来,把uuid和premultiplyAlpha属性通过map保存起来,然后在检索build后的所有的png、jpg,重新压缩一遍,这里检索出来的png名称都是uuid+MD5+文件格式

就是还是要自己写插件,哎,麻烦,而且我这边还做了压缩,所以还要保证在压缩前执行

没法用自己原来的图片(使用tinyPNG压缩过的),引擎压缩的后的png反而还变大了

也不用保证压缩前执行,编译完后想咋操作就咋操作

为什么我运行都找不到, -pp-premultiply的参数

问题原因已经找到了。正如博主的说的那样。spine导出的时候,勾选预乘是可以解决这些问题的。