c#

////////////////////////////////////////////
// CameraFilterPack - by VETASOFT 2018 /////
//////////////////////////////////////////// using UnityEngine;
using System.Collections;
[ExecuteInEditMode]
[AddComponentMenu ("Camera Filter Pack/Distortion/ShockWave Manual")]
public class CameraFilterPack_Distortion_ShockWaveManual : MonoBehaviour {
#region Variables
public Shader SCShader;
private float TimeX = 1.0f; private Material SCMaterial;
[Range(-1.5f, 1.5f)]
public float PosX = 0.5f;
[Range(-1.5f, 1.5f)]
public float PosY = 0.5f;
[Range(-0.1f, 2f)]
public float Value = 0.5f;
[Range(0f, 10f)]
public float Size = 1f; #endregion
#region Properties
Material material
{
get
{
if(SCMaterial == null)
{
SCMaterial = new Material(SCShader);
SCMaterial.hideFlags = HideFlags.HideAndDontSave;
}
return SCMaterial;
}
}
#endregion
void Start ()
{ SCShader = Shader.Find("CameraFilterPack/Distortion_ShockWaveManual");
if(!SystemInfo.supportsImageEffects)
{
enabled = false;
return;
}
} void OnRenderImage (RenderTexture sourceTexture, RenderTexture destTexture)
{
if(SCShader != null)
{
TimeX+=Time.deltaTime;
if (TimeX>) TimeX=;
material.SetFloat("_TimeX", TimeX);
material.SetFloat("_Value", PosX);
material.SetFloat("_Value2", PosY);
material.SetFloat("_Value3", Value);
material.SetFloat("_Value4", Size);
material.SetVector("_ScreenResolution",new Vector4(sourceTexture.width,sourceTexture.height,0.0f,0.0f));
Graphics.Blit(sourceTexture, destTexture, material);
}
else
{
Graphics.Blit(sourceTexture, destTexture);
}
}
void Update ()
{ #if UNITY_EDITOR
if (Application.isPlaying!=true)
{
SCShader = Shader.Find("CameraFilterPack/Distortion_ShockWaveManual");
}
#endif
}
void OnDisable ()
{
if(SCMaterial)
{
DestroyImmediate(SCMaterial);
}
}
}

shader

// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'

////////////////////////////////////////////
// CameraFilterPack - by VETASOFT 2018 /////
//////////////////////////////////////////// Shader "CameraFilterPack/Distortion_ShockWaveManual"
{
Properties
{
_MainTex ("Base (RGB)", 2D) = "white" {}
_TimeX ("Time", Range(0.0, 1.0)) = 1.0
_ScreenResolution ("_ScreenResolution", Vector) = (.,.,.,.)
}
SubShader
{
Pass
{
Cull Off ZWrite Off ZTest Always
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma fragmentoption ARB_precision_hint_fastest
#pragma target 3.0
#pragma glsl
#include "UnityCG.cginc"
uniform sampler2D _MainTex;
uniform float _TimeX;
uniform float _Value;//x坐标
uniform float _Value2;//y坐标
uniform float _Value3;//圈的大小
uniform float _Value4;//强度
uniform float4 _ScreenResolution;
struct appdata_t
{
float4 vertex : POSITION;
float4 color : COLOR;
float2 texcoord : TEXCOORD0;
};
struct v2f
{
float2 texcoord : TEXCOORD0;
float4 vertex : SV_POSITION;
float4 color : COLOR;
};
v2f vert(appdata_t IN)
{
v2f OUT;
OUT.vertex = UnityObjectToClipPos(IN.vertex);
OUT.texcoord = IN.texcoord;
OUT.color = IN.color;
return OUT;
}
half4 _MainTex_ST;
float4 frag(v2f i) : COLOR
{
float2 uvst = UnityStereoScreenSpaceUVAdjust(i.texcoord, _MainTex_ST);
float2 uv = uvst.xy;
float Dist = distance(uv, float2(_Value, _Value2));
float Diff = (Dist - _Value3);
float v = (1.0 - pow(abs(Diff * 10.0), 0.8)); float vt = saturate(v * 0.02 * _Value4);
uv.x = uv.x - vt;
uv.y = uv.y - vt; float4 Color = tex2D(_MainTex, uv);
Color.rgb += float3(vt, vt, vt);
return Color;
}
ENDCG
}
}
}

unity shader 波动圈的更多相关文章

  1. 【转】《Unity Shader入门精要》冯乐乐著 书中彩图

    为方便个人手机学习时候查阅,从网上转来这些彩图. 如属过当行为,联系本人删除. 勘错表 http://candycat1992.github.io/unity_shaders_book/unity_s ...

  2. Unity Shader入门精要学习笔记 - 第15章 使用噪声

    转载自 冯乐乐的 <Unity Shader 入门精要> 消融效果 消融效果常见于游戏中的角色死亡.地图烧毁等效果.这这些效果中,消融往往从不同的区域开始,并向看似随机的方向扩张,最后整个 ...

  3. Unity Shader入门精要学习笔记 - 第11章 让画面动起来

    转自 冯乐乐的 <Unity Shader入门精要> Unity Shader 中的内置变量 动画效果往往都是把时间添加到一些变量的计算中,以便在时间变化时画面也可以随之变化.Unity ...

  4. Unity Shader入门

    Unity Shader入门 http://www.cnblogs.com/lixiang-share/p/5025662.html http://www.manew.com/blog-30559-1 ...

  5. Unity Shader IDE — Sublime Text2

    使用MonoDevelop写了一段时间的Shader代码,发现效率太低了,所以换用Sublime Text. 安装Sublime Text 1.下载 sublime Text2 官网:http://w ...

  6. 【我的书】Unity Shader的书 — 文件夹(2015.12.21更新)

    写在前面 感谢全部点进来看的朋友.没错.我眼下打算写一本关于Unity Shader的书. 出书的目的有以下几个: 总结我接触Unity Shader以来的历程,给其它人一个借鉴.我非常明确学Shad ...

  7. Unity Shader 知识点总结(一)

    在学习了一段时间的Unity Shader后,打算写一些知识总结,便于今后的查找.如有错误,希望大家指出更改. 本文参照的unity入门精要一书,做一个知识归纳,如有兴趣可以看看其开源的部分,是一本比 ...

  8. Unity Shader 知识点总结(二)

    紧接着上一篇文章的shader入门知识的总结,本文主要总结shader中的纹理贴图.透明度混合.顶点动画.后期特效处理等操作.如果有什么地方有错,请指出更正,谢谢.本文的代码主要来自开源书:unity ...

  9. 【原】Unity Shader VS UDK Material Editor

    UDK 的材质编辑器十分好用,毕竟是所见即所得的.虽然unity也有类似第三方插件,但易用性还是差很多,下面主要是,把一些常见表达式概念对应起来. 1. UDK CameraVector (相机位向量 ...

随机推荐

  1. 19.8.8 flutter 学习之创建第一个可变的Widget

    创建一个很简单的可变的Widget 效果就是点击字的时候会变化 完整代码: class CarPage extends StatefulWidget { @override _CarState cre ...

  2. mybatis 分页插件PageHelper的简单使用

    首先在pom.xml配置文件中增加相关的插件. 插件地址:https://github.com/pagehelper/Mybatis-PageHelper <dependency> < ...

  3. hadoop namenode切换

    hdfs haadmin -transitionToActive --forcemanual nn1 将nn1强制转换为Active hdfs haadmin -transitionToStandby ...

  4. Unity3D资源

    1.ShareSDK 地址:https://github.com/MobClub/New-Unity-For-ShareSDK 文档:产品集成步骤 2.Protobuf https://github. ...

  5. Word2Vec小心得

    今天终于想明白了分层softmax的作用: 哈夫曼树的作用是什么??用平均最小的长度编码!编码是为了解码成信息! 神经概率语言模型:有映射层,隐藏层,输出层,假设隐藏层是300维,输出层是和单词的数量 ...

  6. windows脚本复制文件(将u盘文件复制到固定路径)

    @echo off for /f "tokens=2 delims==" %%a in ('wmic LogicalDisk where "VolumeName='Hel ...

  7. Python天天学_05_模块

    Python_day_05 金角大王: http://www.cnblogs.com/alex3714/articles/5161349.html ------Python是一个优雅的大姐姐 学习方式 ...

  8. UMG里没有"Prefab"怎么办?

    大家知道在Unity里做UI,利用Prefab是少不了的,但是在UE4里如何做呢? 这是实际工作中遇到的问题,我Google关键词“UMG Prefab","UMG resuabl ...

  9. java中 在一个异常处理中什么语句块是可多个的

    MM们 异常处理一般格式:捕获异常:try{//代码块}catch(异常类型,例如:Exception e){//需要抛出的异常,例如:e.printStackTrace();}catch(异常类型) ...

  10. linux 下使用命令查看jvm信息

    java程序员除了编写业务代码之外,特别是项目上线之后,更需要关注的是系统的性能表现,这个时候就需要了解一下jvm的性能表现了,可以借助于java虚拟机自带的一些分析工具,主要有三个常用的命令. 1. ...