用AI改引擎,提升多次使用getImageData性能

根据chrome错误提示
参考:https://html.spec.whatwg.org/multipage/canvas.html#concept-canvas-will-read-frequently

texture-cube.ts 文件中,当创建 Canvas2D 上下文时,没有设置 willReadFrequently 属性为 true,导致多次使用 getImageData 时性能较差。

Re: # 重现步骤:新建Hello World工程,使用Chrome版本 144.0.7559.110(正式版本) (64 位)预览发现错误

把错误扔给AI

具体有没有提升性不知道如何验证,反正AI与参考文档https://html.spec.whatwg.org/multipage/canvas.html#concept-canvas-will-read-frequently 说的有效果

详见思考过程:

修复后:

只是随便试试的,也没想到这么顺利。

顺手也提了个PR:https://github.com/cocos/cocos-engine/pull/19141

大家也可以试试各种AI模型没准也能发现并修复问题,虽然这次只改了一行代码 :grinning:

其实还有一波修改,这个我没看懂,也不知道如何验证。

预期效果

  • 内存使用 : 减少 25% 以上
  • 渲染性能 : 提升 20% 以上
  • 加载速度 : 提升 30% 以上
  • 游戏流畅度 : 提升 15% 以上

全当是AI幻觉吧!改是改了跑起来也没看出什么

可惜,现在没有cocos 底层开发人员上论坛了.估计看不到了.
这玩意可能要很久更新到新的引擎里面来.

你可以再仔细问问ai看看 willReadFrequently开启了有什么用 ,对于大部分游戏来说 ,这个选项关掉会比较好,因为开启这个选项会对 fillRect、drawImage这两个方法的性能产生负面影响,而这两个才是游戏引擎中最常用的

我看git,已经合进最新代码里面了.
都懒得测试了.

问了一下A_I
对于大多数H5游戏,如果 不频繁 使用 getImageData() ,建议不使用 willReadFrequently (或设为 false),以获得更好的绘制性能。如果游戏确实需要频繁读取像素数据,则应该启用这个选项。
这是结论

没合并,我是玩AI发现这个错误警告,就是消除这个警告试着玩的。

也没验证它对性能的影响。


然后


只要Remove然后删除sunnySkyBox_reflectionsunnySkyBox_reflection_convolution就不会有

Canvas2D: Multiple readback operations using getImageData are faster with the willReadFrequently attribute set to true. See: HTML Standard

的警告了。

这条PR实际上没必要