一文带你了解Unity Shader-小飞侠轻功(径向模糊)

前言

我们经常可以看到游戏赛车游戏里面,当向前加速的时候,四周空气模糊,并且气流向四周扩散,有种空气被排开的感觉。

还有就是《天涯明月刀》在做轻功的时候,也是那么一种效果。
没错,那个就是用到了 径向模糊

今天我就做个,小肥猪轻功,先上效果图:

原理其实是这样的:

你看画面,空气是围绕着中间散开的,想到啥图形可以表现这种效果吗,

Bingou,那就是圆。

所以,我们只要定个焦点(或者中心点_FocusPos),然后其他图像上的点,对应算下向量,即:

Dir =FocusPos - CurPos;
(CurPos为当前的点, 对应shader函数frag里面,就是i.uv.xy)

然后沿着这些方向Dir,隔一段距离取几个像素,混合起来,就可以看起来像是有径向模糊的效果了:

到这里就好了吗,不是的,很多网上的文章大概就写到这里,但是其实效果没有那么好,因为焦点上的东西,一定程度上也会被模糊掉了,所以这时候,我们焦点附近的,我们就要少一点模糊。这时候我们我们就要用上我们伟大的step函数了:

OK,判断了是否大于一定距离的,我们就把上面col * isFarAway,就少采样,少模糊了。

对了,对了,如果你追求性能极致,然后当你使用该方法调出效果后,你可以把for循环改掉,直接硬编码会更快哦~

猜你喜欢

转载自blog.csdn.net/bycw666/article/details/123819102
今日推荐