大佬们有没有计划或者方案在2.4.x上使用astc

:joy:etc2是香,但astc更香,伸手党跪求

5赞

淦!我就知道解决问题的人就必须是提出问题的人。 :joy:
参考了带佬的代码https://github.com/zhefengzhang/support_astc_etc2
以及3.x的代码

cocoscreator修改.zip (98.1 KB)
具体修改列表如下:
astc需要新增/修改的cocoscreator底层:(基于2.4.3版cocoscreator)
1.cocos2dx:
新增:
cocos2d-x/cocos/base/astc.cpp
cocos2d-x/cocos/base/astc.h
修改:
cocos2d-x/cocos/base/CCConfiguration.cpp
cocos2d-x/cocos/base/CCConfiguration.h
cocos2d-x/cocos/base/CCRenderTexture.cpp
cocos2d-x/cocos/platform/CCImage.cpp
cocos2d-x/cocos/platform/CCImage.h
cocos2d-x/cocos/scripting/js-bindings/manual/jsb_opengl_manual.cpp
cocos2d-x/cocos/Android.mk
2.js-engine
修改:
cocos2d/core/asset-manager/parser.js
cocos2d/core/assets/CCTexture2D.js
cocos2d/core/platform/CCMacro.js
cocos2d/renderer/gfx/enums.js
cocos2d/renderer/gfx/texture-2d.js
cocos2d/renderer/gfx/texture-cube.js
3.buildin
修改:
jsb-adapter/buildin/renderer/enums.js
jsb-adapter/buildin/renderer/jsb-gfx.js
jsb-adapter/engine/jsb-fs-utils.js

astc对应json中的纹理格式为7@30~7@43,其中7表示astc,30~40分别表示astc的2D Block Dimensions
TEXTURE_FMT_RGBA_ASTC_4x4 : 30,
TEXTURE_FMT_RGBA_ASTC_5x4 : 31,
TEXTURE_FMT_RGBA_ASTC_5x5 : 32,
TEXTURE_FMT_RGBA_ASTC_6x5 : 33,
TEXTURE_FMT_RGBA_ASTC_6x6 : 34,
TEXTURE_FMT_RGBA_ASTC_8x5 : 35,
TEXTURE_FMT_RGBA_ASTC_8x6 : 36,
TEXTURE_FMT_RGBA_ASTC_8x8 : 37,
TEXTURE_FMT_RGBA_ASTC_10x5 : 38,
TEXTURE_FMT_RGBA_ASTC_10x6 : 39,
TEXTURE_FMT_RGBA_ASTC_10x8 : 40,
TEXTURE_FMT_RGBA_ASTC_10x10 : 41,
TEXTURE_FMT_RGBA_ASTC_12x10 : 42,
TEXTURE_FMT_RGBA_ASTC_12x12 : 43,

android10真机实测有效。
astc文件可以用arm发布的mali软件自行压缩,自带exe命令行。

还要强调一遍:astc真香

12赞

苹果的web不支持。。。

大佬在吗?实测有效!但打出来的纹理是上下倒置的,不知道哪块有问题。。。

arm那个mali的问题,换个他们在github上最新的工具就好了
https://github.com/ARM-software/astc-encoder

基于2.4.x修改,android原生没问题,ios原生就黑块,请问你这边ios是正常的么

貌似支持KHR_texture_compression_astc_hdr的目前有效,仅KHR_texture_compression_astc_ldr的只能显示黑色,不管是不是opengles3.2,不管压缩式是否选择格式为ldr。ios还没试过,不过依稀记得a8以后貌似支持的是KHR_texture_compression_astc_ldr我还在研究 :rofl:悲剧啊。。。我还在研究中。。。

这种需求,官方都一直不实现,真不知道在想什么

什么时候加一个全局的压缩格式设置

研究了几天,可以确定的是,支持KHR_texture_compression_astc_ldr特性的gpu理论上就可以使用astc。
我偷了QA的一堆手机测试,除了oppoA5S(即chp1909)外,基本上支持KHR_texture_compression_astc_ldr的android均支持astc,甚至GPU型号完全相同(PowerVR Rogue GE8320)的vivo(vivo 1904),唯一不同的是openglES的小版本号,chp1909是OpenGL ES 3.2 build 1.9@4971894,vivo 1904是OpenGL ES 3.2 build 1.13@5776728。
我测试cocosCreator3的最新版本自带的astc功能,在chp1909上依旧无法显示,也没报错。。。感觉已经这已经超出我的处理范围了。
u3D没试过,有兴趣的朋友可以试一下。
另外赠送两个网站,用来查询目标手机支持特性(可能要科学上网)
https://opengles.gpuinfo.org
http://specdevice.com

iphone依旧没试过

最后,根据google官方数据显示,2020年全球支持astc的安卓机器比例是77%,同期etc2为87%
https://developer.android.com/guide/app-bundle/asset-delivery/texture-compression?hl=zh-cn
结贴吧 :joy:

4赞

该主题在最后一个回复创建后14天后自动关闭。不再允许新的回复。