cocos3.x的shader性能要比2.x的性能低很多是什么原因啊

这个是我2.x的高斯模糊代码


这个是我3.x的高斯模糊代码

讲道理2.x的shader用了可变半径(radius),最大采样直径为100像素。这意味着在最大模糊半径时,需要采样 100x100 = 10000 个像素点,但是我3.x的shader使用了固定半径(RADIUS = 5.0),采样范围是 11x11 = 121 个像素点。采样次数完全不在一个量级为什么性能会低于2.x的时候呢



3.x打开shader和不打开shader时的gpu对比

2赞

标题和正文写的好像不一样啊, 到底谁低呢

写错了 修改了 3.x的要低

把r/miansize.x放上面试试

2.x上gpu是啥样 上图看看 好多少呢

可以用Spector.js看看编译出来的shader实际长啥样,然后发到论坛里大家一起团建一下

2.x cpu在25%的

解决了,还是继续降采样,降rt,改半天,调强度。帧率上来了


找到问题了 直接修改也可以 1.0/miansize 的除法运算从循环中提出,只计算一次,X坐标计算移到内层循环外,避免重复计算。X方向的权重计算也移到内层循环外,直接使用 x,y 构建采样坐标,减少临时变量就可以解决了

mainSize也可以除了以后再传进来,改成乘法,虽然可能影响不大