K佬-一种水波的效果

可以用一张渐变图和一张噪声图,一个圆形的模型,通过透明测试制作效果。

Shader "Clip/Bo" 
{
	
	Properties 
	{
		_MainTex ("Texture", 2D) = "" {}
		_MainColor("Main Color",Color) = (1,1,1,1)
		_NoiseMap("NoiseMap", 2D) = "" {}
		_Cutout("Cutout", Range(0.0,1.1)) = 0.0
		_Speed("Speed", Vector) = (.34, .85, .92, 1)
	}
	SubShader
	{
		Tags { "RenderType"="Opaque" "DisableBatching"="True"} 
		Pass 
		{
			CGPROGRAM 
			#pragma vertex vert
			#pragma fragment frag
			#include "UnityCG.cginc" 
			struct appdata 
			{
				float4 vertex : POSITION; 
				half2 texcoord0 : TEXCOORD0; 
			};

			struct v2f  
			{
				float4 pos : SV_POSITION;
				float4 uv : TEXCOORD0; 
			};

			sampler2D _MainTex;
			float4 _MainTex_ST;
			float _Cutout;
			float4 _Speed;
			sampler2D _NoiseMap;
			float4 _NoiseMap_ST;
			float4 _MainColor;
			
			//顶点Shader
			v2f vert (appdata v)
			{
				v2f o;
				o.pos = UnityObjectToClipPos(v.vertex);
				o.uv.xy = TRANSFORM_TEX(v.texcoord0, _MainTex);
				o.uv.zw = TRANSFORM_TEX(v.texcoord0, _NoiseMap);
				return o;
			}
			//片元Shader
			half4 frag (v2f i) : SV_Target 
			{
				half gradient = tex2D(_MainTex, i.uv.xy + _Time.y * 0.1f * _Speed.xy).r * (1.0 - i.uv.y);
				half noise = 1.0 - tex2D(_NoiseMap, i.uv.zw + _Time.y * 0.1f * _Speed.zw).r;
				clip(gradient - noise -  _Cutout);
				return _MainColor;
			}
			ENDCG
		}
	}
}



look.gif



Gradient03Repeat.png


NoiseClassic01.png




首页 我的博客
粤ICP备17103704号