(转)【风宇冲】Unity3D教程宝典之Blur
原创文章如需转载请注明:转载自风宇冲Unity3D教程学院
Blur模糊其实理解了以后非常简单。核心原理就是 1个点的颜色 并不用该点的颜色,而是用该点周围所有点的均值 (1)确定取点范围, 例如周围3个像素 或者周围10个像素 (2)确定各点权重,这也是高斯模糊的由来,主要颜色分配的比重为正态分布,即高斯分布。
例子1:最简单的模糊 (1)新场景,plane上面放一张贴图 (2)plane上的shader如下
- Shader "Custom/ObjectBlur" {
- Properties {
- _MainTex ("Base (RGB)", 2D) = "white" {}
- }
- SubShader
- {
- Tags{"Queue"="Transparent"}
- pass
- {
- CGPROGRAM
- #pragma vertex vert
- #pragma fragment frag
- #include "UnityCG.cginc"
- sampler2D _MainTex;
- float4 _MainTex_ST;
- float uvOffset;
- struct v2f {
- float4 pos : SV_POSITION;
- float2 uv : TEXCOORD0;
- } ;
- v2f vert (appdata_base v)
- {
- v2f o;
- o.pos = mul(UNITY_MATRIX_MVP,v.vertex);
- o.uv = TRANSFORM_TEX(v.texcoord,_MainTex);
- return o;
- }
- float4 frag (v2f i) : COLOR
- {
- float4 s1 = tex2D(_MainTex,i.uv + float2(uvOffset,0.00));
- float4 s2 = tex2D(_MainTex,i.uv + float2(-uvOffset,0.00));
- float4 s3 = tex2D(_MainTex,i.uv + float2(0.00,uvOffset));
- float4 s4 = tex2D(_MainTex,i.uv + float2(0.00,-uvOffset));
- float4 texCol = tex2D(_MainTex,i.uv);
- float4 outp;
- float pct=0.2;
- outp = texCol* (1- pct*4) + s1* pct + s2* pct+ s3* pct + s4* pct;
- return outp;
- }
- ENDCG
- }
- }
- }
以及BlurManager.cs脚本,如下
- using UnityEngine;
- using System.Collections;
- public class BlurManager : MonoBehaviour {
- private float length =3f;
- private float showTime = -100;
- private float hideTime = -100;
- void Update () {
- if(showTime >0)
- {
- showTime -= Time.deltaTime;
- Shader.SetGlobalFloat("uvOffset", (showTime/length) * 0.005f);
- }
- if(hideTime >0)
- {
- hideTime -= Time.deltaTime;
- Shader.SetGlobalFloat("uvOffset", (1- hideTime/length) * 0.005f);
- }
- }
- void OnGUI()
- {
- if(GUI.Button(new Rect(0,0,100,50),"Show"))
- {
- showTime = length;
- }
- if(GUI.Button(new Rect(100,0,100,50),"Hide"))
- {
- hideTime = length;
- }
- }
- }
运行后,点击show按钮,图会从模糊变清晰,点击hide按钮会从清晰变模糊。 这基本是最简单的模糊了,取本点 和其上下左右的4个偏移点。各点权重均为0.2。uv偏移从0至0.005 效果如下图还不错。
原图
模糊后的效果
参考文章
(转)【风宇冲】Unity3D教程宝典之Blur的更多相关文章
- (转)【风宇冲】Unity3D教程宝典之AssetBundles:第二讲
原创文章如需转载请注明:转载自风宇冲Unity3D教程学院 AssetBundles第二讲:AssetBundles与脚本 所有Unity的As ...
- (转)【风宇冲】Unity3D教程宝典之AssetBundles:第一讲
自:http://blog.sina.com.cn/s/blog_471132920101gz8z.html 原创文章如需转载请注明:转载自风宇冲Unity3D教程学院 ...
- Unity3D教程宝典之Web服务器篇:(第三讲)PHP的Hello World
转载自风宇冲Unity3D教程学院 引言:PHP是比较简单的编程语言,即使没接触过的也可以现学现用.PHP教程文档PHP100视频教程 Unity接 ...
- Unity3D教程宝典之Web服务器篇:(第二讲)从服务器下载图片
转载自风宇冲Unity3D教程学院 从Web服务器下载图片 上一讲风宇冲介绍了wamp服务器及安装.这回介绍如何从服务器下载内容至 ...
- Unity3D教程宝典之Web服务器篇:(第一讲)服务器的架设
转载自风宇冲Unity3D教程学院 引言:本文主要介绍WAMP服务器的架设. 第一部分WAMP介绍;第二部分WAMP安装及使用. 第一部分WAMP介绍 什 ...
- Unity3D教程宝典之Shader篇
教程目录 基础讲:Shader学习方法基础讲:基础知识特别讲:常见问题解答特别讲:CG函数 第一讲: Shader总篇第二讲: Fixed Function Shader 第三讲: Vertex&am ...
- U3D教程宝典之两步实现超实用的XML存档
两步实现超实用的XML存档 本套存档的优点:易使用,跨平台,防作弊(内容加密 + 防拷贝) 脚本下载地址 使用方法非常简单:把GameDataManager和XmlSaver两个脚本添加至工程后(1) ...
- Unity3D教程:无缝地形场景切换的解决方法
http://www.unitymanual.com/6718.html 当我们开发一个大型项目的时候-会遇到这样的问题(地形场景的切换)这个只是字面意思-并不是重场景1的100 100 100坐标 ...
- unity3d教程运行物理机制
首先,我们将把Hooke定律写Euler方法结合在一起找到新坐标.加速和速度. Hooke定律是F=kx,这里的F是指由水流产生的力(记住,我们将把水体表面模拟为水流),k是指水流的常量.x则是位移. ...
随机推荐
- embOS实时操作系统 - 任务状态
A task may be in one of several states at any given time. When a task is created, it is placed into ...
- [廖雪峰] Git 分支管理(1):创建与合并分支(HEAD、master、dev、指针)
每次提交,Git 都把它们串成一条时间线,这条时间线就是一个分支.截止到目前,只有一条时间线,在 Git 里,这个分支叫主分支,即 master 分支.HEAD 严格来说不是指向提交,而是指向 mas ...
- 玩DNF开启NVIDIA独显的方法
管理员身份运行后,点下红圈圈里的X,打开驱动配置文件,在Profiles里输入DNF,打开配置文件 把do not display this profile in the control panel ...
- 深入System.Web.Caching命名空间 教你Hold住缓存管理
一,System .Web.Caching与缓存工作机制简介 System.Web.Caching是用来管理缓存的命名空间,其父级空间是System.Web,由此可见,缓存通常用于Web网站的开发,包 ...
- WCF中修改接口或方法名称而不影响客户端程序
本篇接着"从Web Service和Remoting Service引出WCF服务"中有关WCF的部分. 运行宿主应用程序. 运行Web客户端中的网页. 输入内容,点击按钮,能获取 ...
- Task Parallel Library02,更进一步
在前一篇中,了解了Task的基本用法 如果一个方法返回Task,Task<T>,如何获取Task的返回值,获取值的过程会阻塞线程吗? static void Main(string[] a ...
- 算法竞赛入门经典+挑战编程+USACO
下面给出的题目共计560道,去掉重复的也有近500题,作为ACMer Training Step1,用1年到1年半年时间完成.打牢基础,厚积薄发. 一.UVaOJ http://uva.onlinej ...
- Weblogic跨域session冲突解决办法
一.现象: 在WebLogic中,有两个不同域A(端口:9000)和B(端口:8000),应用CA在域A中,应用CB在域B中,进行如下操作: 1.先登录应用CA,再登录应用CB,然后,切换回应用CA, ...
- 邪恶力量第一至九季/全集Supernatural迅雷下载
邪恶力量 第一季 Supernatural Season 1 (2005) 本季看点:一部充满吸引力的系列剧,超自然现象题材中的亲情与正义.迪恩(简森·阿克斯 Jensen Ackles 饰)和萨姆( ...
- Java中IO的简单举例
package com.kale.io; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStr ...