自己实现的修改材质颜色的effect出现ios等机型材质花屏

如题,通过对cocos3D中自带builtin-standard.effect的修改,实现的修改材质颜色的HairColor.effect,
但会出现ios等机型中使用该effect的材质花屏,而安卓机型显示正常。
具体现象见附图。


在HairColor.effect中新增rgb转hsv颜色值的函数,以及hsv颜色值转rgb的函数,从而实现在脚本中动态向effect中传入hsv值,修改材质颜色的功能。
具体effect文件见附件。
HairEffect.rar (2.5 KB)

核心部分代码截图

请大佬帮忙看看此问题,是否有解决思路:pray:

看起来颜色空间转换的算法写得还不够向量化,就容易出问题,这块参考很多,比如:
https://stackoverflow.com/questions/15095909/from-rgb-to-hsv-in-opengl-glsl

另外,如果不是每帧都会变化的那种颜色动画,还是建议整个颜色空间变换的过程在 CPU 做,一旦调整完了就没有任何计算了。

和帖主同事,采取stackoverflow中的方法,依然存在图中问题

可以先把全局的精度声明改成 highp 试试:
precision highp float;

如果还不行那就是具体机型的 shader 适配问题了,没有其他好办法,如果的确不能直接在 CPU 做这部分计算的话,就要尝试逐 term 分析,得查到具体是哪一步的计算结果出了问题,然后看有没有绕开的办法