shader贴图缓存的问题

  • Creator 版本:2.3.2

  • 目标平台: web/模拟器

  • 详细报错信息,包含调用堆栈:

  • 重现方式:

  • 之前哪个版本是正常的 :

  • 手机型号 :

  • 手机浏览器 :

  • 编辑器操作系统 :

  • 编辑器之前是否有其它报错 :

这个是在web中的效果,在模拟器中什么都看不见

合图了?

在真机使用自定义材质能显示?

我在真机使用自定义材质,web能显示,安卓原生就不能了

我们没有用真机,只是在creator里边简单的运行

没有texturepacker的合图,也没有creator自带的自动合图功能,我猜可能是纹理缓存有关。。就像cocos2dx里的TextureCache:getInstance():addImage();

cocos有动态合图,v2.3.2应该是默认开启。
我用v2.3.2试了下,动态合图有效时,uv坐标偏移-.5,编辑器里看上去正常,启动web后图片消失;关闭动态合图后,编辑器和浏览器都正常。
你试着把自动合图关了,看看还会不会出现这个情况
动态合图具体见官方文档https://docs.cocos.com/creator/manual/zh/advanced-topics/dynamic-atlas.html

https://docs.cocos.com/creator/2.2/manual/zh/asset-workflow/sprite.html?h=effect

如果引擎开启了 动态合图 功能,动态合图会自动将合适的贴图在开始场景时动态合并到一张大图上来减少 drawcall。但是将贴图合并到大图中会修改原始贴图的 uv 坐标,如果在自定义 effect 中使用了贴图的 uv 坐标,这时 effect 中的 uv 计算将会出错,需要将贴图的 packable 属性设置为 false 来避免贴图被打包到动态合图中。

我试了一下,是这样的,就算没有去移动uv,用来计算颜色的时候也会出现问题(在web ),编辑器表现和浏览器不同,也是因为这个原因造成的

我试了一下,,是的,这个自动合图对shader的影响好大,