Unity Shader-小肥猪轻功(径向模糊)

发表于2020-07-22
评论0 5.8k浏览

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

 

还有就是《天涯明月刀》在做轻功的时候,也是那么一种效果。

 

没错,那个就是用到了径向模糊

 

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

FG3dU3CQZDOaTJySgFZM.png

 

原理其实是这样的:

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

Bingou,那就是圆。

myOBT8RBL9fdoKLp5GH5.png

 

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

 

Dir =FocusPos - CurPos;   

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

 

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

 

Hq1i2xkwrZ4dz5BRshIH.png

 

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

 

cA6feGwZ5bZn8mVXZOHs.png

 

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

 

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

 

 

 

--End--

  • 允许他人重新传播作品,但他人重新传播时必须在所使用作品的正文开头的显著位置,注明用户的姓名、来源及其采用的知识共享协议,并与该作品在磨坊上的原发地址建立链接
  • 可对作品重新编排、修改、节选或者以作品为基础进行创作和发布
  • 可将作品进行商业性使用

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引

标签: