IOS设备上水面倒影shader不显示

  • Creator 版本: 3.7.4
  • 目标平台: IOS设备/ IPHONE6S

用的是商店这个水面倒影shader Cocos Store
在Web和原生Android都显示正常(部分低端机会有马赛克但还能看),在IOS直接黑的,Xcode上也没有报错

商店demo项目打包xcode运行报错

有可能是renderTexture的原因,这个倒影就是用双摄相机的吧,然后renderTexture给shader。检查是不是ios上renderTexture是不是有bug

renderTexture直接使用是没问题的,在项目其他地方作为正常贴图正常显示,但是用了这个水面倒影shader的材质就不显示

把你的effect贴出来看看

再确认确认其他shader在ios使用是否正常


可以先处理一些细节小问题。看起来问题不大,但是谁知道是不是这些兼容导致。
1我记得好像是要求UBO,复杂的数据类型先声明。比如先声明图片,再vec4,vec2,float,不要用vec3。你就用vec4,多传个通道,你不用它就是了。
2。不确定浮点数2.这样的写法在ios的编译中会不会不兼容。毕竟这种东西里没必要去挑战它的兼容性。做好就直接写2.0,不要写2.

effect代码:water-sprite.zip (1.8 KB)
浮点数格式我也试着改了目前看应该不是这个问题

先改第一个试试,一个是声明顺序,一个是causticColor,不要用vec3

目前测试发现shader应该没啥问题,报错是因为causticColor定义类型导致报错。
问题在renderTexture输出画面有点问题,我开了新帖去问,看官方有啥解决方案

你把vec3改成vec4就行了

causticColor: { value: [1.0 , 1.0 , 1.0 , 1.0 ] }
传入的地方,把vec3改成vec4,使用color的时候,只使用causticColor.rgb。就是因为vec3导致内存对齐的问题

原生我没测试过 :stuck_out_tongue_closed_eyes: 3.8.x 应该修复了

报错是因为causticColor定义在ios上有点问题
改成


image
image

黑的是因为USE_COLOR_STEP和USE_ALPHA_STEP计算在IOS上有问题,暂时不知道解决方案先屏蔽不怎么影响效果

camera组件rect偏移问题(3.8.5中已修复),目前项目不方便升级,rect偏移只能先默认0,然后修改camera的y轴手动偏移也能做到

renderTexture的反转问题,ios上无论勾没勾选SAMPLE_FROM_RT输出图像都是正着的,那就全平台都勾选SAMPLE_FROM_RT,然后修改节点的scale.y=-1手动反转也是一样的效果