溶解效果是一个很基础的效果,本文是对溶解效果的一个简单的总结,作为一个记录以达到技术积累的目的。同时会在GitHub实现一个小例子,来验证理论。
溶解效果
要实现溶解效果,最重要的就是让某些像素显示,某些像素消失,如下图所示。
![fcb6588b637de66a0e956108942f22af.png](https://i-blog.csdnimg.cn/blog_migrate/e6a8b4c53c0306a00e62aad04260b3aa.png)
为了实现这种效果,我们需要标记哪些像素要显示,哪些像素要消失,于是使用一张噪声图来给每一个像素做标记(Mask)。如下图所示,这个噪声图就是在Photoshop里用“云彩”工具生成的。由于噪声图的随机性,使得像素的显示和消失显得非常不规则,也就满足了对不规则溶解效果的需求。
![eb9093ea8288a962c08f77d2db17bbdf.png](https://i-blog.csdnimg.cn/blog_migrate/e4a56e636fc9a39a09555fbdc301a086.png)
在shader中“抠掉”一个像素,可以使用clip函数。在片段着色器中调用clip(x)即可丢弃这个像素,其中x为数字,当x小于0.0,该像素则会被丢弃。
在片段着色器中根据当前uv,采样噪声图,就可以获得一个遮罩值。通常的实现方式为clip(遮罩值 - 阈值),这句代码表示当遮罩值小于阈值时,则当前像素会被丢