Unity之ASE实现全屏风沙效果

前言

最近在做一个沙漠环境的2D游戏,里面需要加一个风沙的全屏特效,本来我们是用粒子特效实现的,但是后面发现,粒子数量有点多,性能消耗很大。而且由于是全屏风沙,当粒子特效面积过大,叠层过多时,引起的overdraw的增加,会使cpu压力更大。甚至最后导致我们游戏切换前后台时会卡死。
所以,我们最后打算用shader来实现一个风沙效果,虽然不能完全模拟粒子的效果,但是基本还原90%的风沙效果。

先看效果图:
在这里插入图片描述

实现原理

1.风的实现 原理:使用一个流动的噪波图,实现对云雾图片的UV扰动。
2.沙粒实现 原理:先让颗粒状或者条装的图片在风向上平移,然后使用一个噪波图的R通道对沙粒的平移结果进行踢出,最后在乘个叠加色。

噪波干扰

噪波图的流动原理如下图所示:
在这里插入图片描述

风的属性设置

在这里插入图片描述

沙的属性设置

猜你喜欢

转载自blog.csdn.net/qq563129582/article/details/125526840