一个简单的水波浪效果Shader

Shader "Custom/ClickWaterEffect" {
	Properties {
		_MainTex ("MainTex", 2D) = "White" {}
		_F("波长", range(1, 30)) = 10
		_A("幅度值", range(0, 0.1)) = 0.01 //幅度值
		_R("波动半径", range(0, 1)) = 0
		_S("水波速度", range(0, 30)) = 1
	}

	SubShader {
		pass
		{
			CGPROGRAM
			#pragma vertex vert
			#pragma fragment frag
			#include "UnityCG.cginc"

			sampler2D _MainTex;

			float4 _MainTex_ST;
			float _F;
			float _A;
			float _R;
			float _S;

			struct v2f {
				float4 pos:POSITION;
				float2 uv:TEXCOORD0;
			};

			v2f vert(appdata_full v)
			{
				v2f o;
				o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
				//o.uv = v.texcoord.xy * _MainTex_ST.xy + _MainTex_ST.zw;

				o.uv = TRANSFORM_TEX(v.texcoord, _MainTex);

				return o;
			}

			fixed4 frag (v2f IN) : COLOR
			{
				float2 uv = IN.uv;
				float dis = distance(uv, float2(0.5, 0.5));
				float scale = 0;

//				if(dis < _R)
//				{
//					//衰减效果
//					_A *= 1 - dis / _R;
//
//					scale = _A * sin(-dis * 3.14 * _F + _Time.y * _S);
//					uv = uv + uv * scale;
//				}

				//去除IF包装
				_A *= saturate(1 - dis / _R);
				scale = _A * sin(-dis * 3.14 * _F + _Time.y * _S);
				uv = uv + uv * scale;

				//saturate限制某个值在0-1之间
				//fixed4(1, 1, 1, 1) * saturate(scale) * 100 颜色校验
				fixed4 color = tex2D(_MainTex, uv) + fixed4(1, 1, 1, 1) * saturate(scale) * 100;
				return color;
			}
			ENDCG
		}
	}
	//FallBack "Diffuse"
}


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zuig2

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值