【Simple Shader】UGUI背景模糊

作者: 黒可乐 | 来源:发表于2019-01-09 14:38 被阅读16次

写在前面

好久没有写shader了,最近项目中需要实现一个弹窗背景是模糊的游戏场景。大致效果如下:

效果图

看起来好像比较抽象!?我去找个好看的效果图。

没加模糊 加模糊

原理

首先我们看一下图层结构:

bg是我们的需要模糊的游戏页面,target和message box是我们需要显示先模糊上层的。blurBg是我们的模糊层。

我们想实现这个效果最简单的方法就是让美术出一个透明模糊图即可,把这个图放在我们的模糊层。就完事了。事实好像是这样要简单很多哈...

糟了,转不回来了,我们来说原理....
原理其实很简单,我们需要先把当前屏幕所渲染的画面记录下来,存到一个贴图里,然后对这个图片做模糊。

获取当前屏幕颜色并记录下来,我们使用的是:

GrabPass {}

我们只是需要在subshader中声名一个这个pass块即可。它默认会把当前屏幕渲染画面存在一个叫“_GrabTexture”的贴图中。当然我们也可以自定义名字:

GrabPass{"_BackgroundTexture"}

具体的可以看看官方文档测试代码

我们获得了这张图然后开始做模糊,模糊我们都知道是使用卷积。但是个人认为模糊就是把我们需要模糊的图,像是复制几张相同的图片,然后再把几张图片按照一定的偏移量来摆设。这样就出现了模糊的效果,如果我们把偏移值放大一些,我们就可以看到我们卷积生成的几张图。几乘几的卷积就是几张图。可以看看源码:

具体的代码

这里的模糊算法我使用的是《Unity shader入门精要》里屏幕后处理高斯模糊里的算法。这里有一个优化点,就是我们可以把计算卷积点放在片元函数中。

差不多就这么多了吧~
对了可以关注一下我的公众号哦~


相关文章

  • 【Simple Shader】UGUI背景模糊

    写在前面 好久没有写shader了,最近项目中需要实现一个弹窗背景是模糊的游戏场景。大致效果如下: 看起来好像比较...

  • 【Simple Shader】UGUI自带效果继承

    平时在ugui上添加上了材质后,你再改变图片的颜色就不会改变了,在自己的shader上改变颜色,所有使用这个sha...

  • 【Simple Shader】UGUI的ScrollView边缘

    写在前面 这个是效果是很久很久以前写的,可以看一下git的截图。 真的是拖啊,整整拖了3个月,要不是今天被骂了每天...

  • 【Simple Shader】UGUI圆形边缘羽化

    写在前面,这个是在写ScrollView边缘羽化效果时,发现的一个写法,简单效果如下。 原理 为什么是圆形?我们先...

  • UGUI背景模糊解决方案总结

    一、图形效果处理流程 实现UGUI的背景模糊,其实也就是实现一种后处理效果,牵扯到后处理效果的,基本都需要在OnR...

  • ugui 圆角Shader

    以下代码改自builtin_shaders-5.3.2f1\DefaultResourcesExtra\UI\UI...

  • 基于UGUI的水波倒影按钮

    基于UGUI的shader实现水波倒影http://blog.csdn.net/mobilebbki399/art...

  • shader模糊

    local vertSource = "\n".. "attribute vec4 a_position; \...

  • UGUI字体模糊

    scale with screen时,会有问题主要问题是pixel perfect的问题,当位置不为整数时,显示会...

  • Unity模糊遮罩

    用法 将下面的Shader对应的材质设置到UI中背景图的Material上,可看到该背景图背后的所有物件都被模糊了...

网友评论

    本文标题:【Simple Shader】UGUI背景模糊

    本文链接:https://www.haomeiwen.com/subject/kpawrqtx.html