原创文章如需转载请注明:转载自风宇冲Unity3D教程学院

 
                Blur
Blur模糊其实理解了以后非常简单。核心原理就是 1个点的颜色 并不用该点的颜色,而是用该点周围所有点的均值 (1)确定取点范围, 例如周围3个像素 或者周围10个像素 (2)确定各点权重,这也是高斯模糊的由来,主要颜色分配的比重为正态分布,即高斯分布。
例子1:最简单的模糊 (1)新场景,plane上面放一张贴图 (2)plane上的shader如下
  1. Shader "Custom/ObjectBlur" {
  2. Properties {
  3. _MainTex ("Base (RGB)", 2D) = "white" {}
  4. }
  5. SubShader
  6. {
  7. Tags{"Queue"="Transparent"}
  8. pass
  9. {
  10. CGPROGRAM
  11. #pragma vertex vert
  12. #pragma fragment frag
  13. #include "UnityCG.cginc"
  14. sampler2D _MainTex;
  15. float4 _MainTex_ST;
  16. float uvOffset;
  17. struct v2f {
  18. float4  pos : SV_POSITION;
  19. float2  uv : TEXCOORD0;
  20. } ;
  21. v2f vert (appdata_base v)
  22. {
  23. v2f o;
  24. o.pos = mul(UNITY_MATRIX_MVP,v.vertex);
  25. o.uv =  TRANSFORM_TEX(v.texcoord,_MainTex);
  26. return o;
  27. }
  28. float4 frag (v2f i) : COLOR
  29. {
  30. float4 s1 = tex2D(_MainTex,i.uv + float2(uvOffset,0.00));
  31. float4 s2 = tex2D(_MainTex,i.uv + float2(-uvOffset,0.00));
  32. float4 s3 = tex2D(_MainTex,i.uv + float2(0.00,uvOffset));
  33. float4 s4 = tex2D(_MainTex,i.uv + float2(0.00,-uvOffset));
  34. float4 texCol = tex2D(_MainTex,i.uv);
  35. float4 outp;
  36. float pct=0.2;
  37. outp = texCol* (1- pct*4) + s1* pct + s2* pct+ s3* pct + s4* pct;
  38. return outp;
  39. }
  40. ENDCG
  41. }
  42. }
  43. }

以及BlurManager.cs脚本,如下

  1. using UnityEngine;
  2. using System.Collections;
  3. public class BlurManager : MonoBehaviour {
  4. private float length =3f;
  5. private float showTime = -100;
  6. private float hideTime = -100;
  7. void Update () {
  8. if(showTime >0)
  9. {
  10. showTime -= Time.deltaTime;
  11. Shader.SetGlobalFloat("uvOffset", (showTime/length) * 0.005f);
  12. }
  13. if(hideTime >0)
  14. {
  15. hideTime -= Time.deltaTime;
  16. Shader.SetGlobalFloat("uvOffset", (1- hideTime/length) * 0.005f);
  17. }
  18. }
  19. void OnGUI()
  20. {
  21. if(GUI.Button(new Rect(0,0,100,50),"Show"))
  22. {
  23. showTime = length;
  24. }
  25. if(GUI.Button(new Rect(100,0,100,50),"Hide"))
  26. {
  27. hideTime = length;
  28. }
  29. }
  30. }

运行后,点击show按钮,图会从模糊变清晰,点击hide按钮会从清晰变模糊。 这基本是最简单的模糊了,取本点 和其上下左右的4个偏移点。各点权重均为0.2。uv偏移从0至0.005 效果如下图还不错。
原图
模糊后的效果
参考文章

(转)【风宇冲】Unity3D教程宝典之Blur的更多相关文章

  1. (转)【风宇冲】Unity3D教程宝典之AssetBundles:第二讲

    原创文章如需转载请注明:转载自风宇冲Unity3D教程学院                             AssetBundles第二讲:AssetBundles与脚本 所有Unity的As ...

  2. (转)【风宇冲】Unity3D教程宝典之AssetBundles:第一讲

    自:http://blog.sina.com.cn/s/blog_471132920101gz8z.html 原创文章如需转载请注明:转载自风宇冲Unity3D教程学院                 ...

  3. Unity3D教程宝典之Web服务器篇:(第三讲)PHP的Hello World

    转载自风宇冲Unity3D教程学院 引言:PHP是比较简单的编程语言,即使没接触过的也可以现学现用.PHP教程文档PHP100视频教程                           Unity接 ...

  4. Unity3D教程宝典之Web服务器篇:(第二讲)从服务器下载图片

    转载自风宇冲Unity3D教程学院                                    从Web服务器下载图片 上一讲风宇冲介绍了wamp服务器及安装.这回介绍如何从服务器下载内容至 ...

  5. Unity3D教程宝典之Web服务器篇:(第一讲)服务器的架设

    转载自风宇冲Unity3D教程学院 引言:本文主要介绍WAMP服务器的架设. 第一部分WAMP介绍;第二部分WAMP安装及使用.                        第一部分WAMP介绍 什 ...

  6. Unity3D教程宝典之Shader篇

    教程目录 基础讲:Shader学习方法基础讲:基础知识特别讲:常见问题解答特别讲:CG函数 第一讲: Shader总篇第二讲: Fixed Function Shader 第三讲: Vertex&am ...

  7. U3D教程宝典之两步实现超实用的XML存档

    两步实现超实用的XML存档 本套存档的优点:易使用,跨平台,防作弊(内容加密 + 防拷贝) 脚本下载地址 使用方法非常简单:把GameDataManager和XmlSaver两个脚本添加至工程后(1) ...

  8. Unity3D教程:无缝地形场景切换的解决方法

    http://www.unitymanual.com/6718.html 当我们开发一个大型项目的时候-会遇到这样的问题(地形场景的切换)这个只是字面意思-并不是重场景1的100  100 100坐标 ...

  9. unity3d教程运行物理机制

    首先,我们将把Hooke定律写Euler方法结合在一起找到新坐标.加速和速度. Hooke定律是F=kx,这里的F是指由水流产生的力(记住,我们将把水体表面模拟为水流),k是指水流的常量.x则是位移. ...

随机推荐

  1. 狗日的系统之家下载的Windows 10 1803/1809系统不干净,捆绑自动安装腾讯关键等软件

    特此记录一下,如果网友看到这篇文章请不要下载它们家的,捆绑软件,并且安装自动设置了账号,这还不是修改,是啥? 我们都知道现在iso文件基本都是网友自行制作的,从微软下载的文件自行制作成iso,也就是现 ...

  2. CentOS 7搭建KVM在线管理面板WebVirtMgr之使用SSH授权登录

    环境:CentOS 7.4 1.创建SSH私钥和ssh配置选项(在安装了WebVirtMgr的系统上): # 切换到nginx用户su - nginx -s /bin/bash # 生产ssh密钥 s ...

  3. .net core下的dotnet全局工具

    .net core 2.1后支持了一个全新的部署和扩展命令,可以自己注册全局命令行. dotnet install tool -g dotnetsaydotnetsay 也可以自己构建自己的命令行,一 ...

  4. kernel logo到开机动画之间闪现黑屏(android 5.X)

    在BootAnimation開始画图之前,会先做一次clear screen的动作,避免出现前面的图干扰到BootAnimation的显示. 通过check main_log先确认播放开机动画是哪个f ...

  5. windows操作系统查看占用端口的进程

    在开发中有时我们需要确定哪个占用了8080端口,在windows命令行窗口下执行: netstat -aon|findstr 命令执行后打印出来的结果如下所示:

  6. libxml2.dylb 罗致<libxml/tree.h> 老是找不到头文件

    libxml2.dylb 导致<libxml/tree.h> 老是找不到头文件 添加了libxml2.dylb的framework ,结果还是引用不了<libxml/tree.h&g ...

  7. 【docker】【Gitlab】gitlab中clone项目时,IP地址是一串数字(内网Gitlab的IP地址不正确)的问题解决

    首次在内网搭建Gitlab环境,在成功后在Gitlab上新建了一个项目. 然而在IDEA上clone项目时发现,项目地址如下: git@0096ce63c43f:root/jump.git 或者这样 ...

  8. 通过xml文件来设置动画

    @android:anim/accelerate_interpolator: 越来越快 @android:anim/decelerate_interpolator:越来越慢 @android:anim ...

  9. 用开源项目FlipImageView实现图片的翻转效果

         开源项目地址:https://github.com/castorflex/FlipImageView 本实例我没做什么改动,就是添加了注释,方便大家阅读.和之前一样,导入library和工程 ...

  10. libstdc++.so.6: version `GLIBCXX_3.4.21' not found

    问题: dotnet: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.18' not found (required by dotnet)dotnet ...