微信小游戏shader优化求指点

分享一个渣效率shader,用来画云雾的,我本来以为没啥问题,结果用了微信的云测试才发现,高端机都没问题,但是低端机和一些中端机打开就是个位数帧率。但是看来看去,我也实在是不知道还能咋优化,求指点


代码很简单,就是用perlin噪声几个频率加起来模拟云雾,在shader里类似的调用就行了

我本以为这个shader应该不会慢,但是测试发现这几行调用加上就直接卡废了
测试结果如下(vivo X9):

最开始一两秒是加载界面还好,一进入游戏就不行了,但是CPU内存DC都还好吧

也欢迎实际测试
mmexport1721494747983

  1. random by freq 这个函数,取了4次 pnoise, 我建议做个宏定义,低端机只取前2项或者前一项。效果可能会差,但是直接可以节省一半计算时间。
  2. pnoise函数,如果取的不多的话,这个函数可以预计算好用纹理传进去。一般噪声都可以用纹理,并且你的计算指令太多了,虽然在桌面上取纹理可能也不定比计算快,但是移动平台gpu计算能力有限,可能会好一点。
    这个shader的问题就是整体计算指令太多了。要么牺牲一点精度,去掉一些计算项,要么把核心计算改成纹理试试看。
2赞

建议噪声图+uv扰动

1赞

同意楼上 换噪声图

1赞

感谢各位!之前就没想起来用纹理:joy:我去试试