Shader

Share a Shader written today, the strings jitter.
It can be amplitude, frequency, starting position, etc. First picture above:
Insert picture description here
The model vertices of this Shader cannot be used very well. I am using Unity's default 3D object, Panel.

Okay, here is the original code:

Shader "Custom/VectorAnim" {
	Properties {
		//流动纹理
		_MainTex ("Main Tex", 2D) = "white" {}
		//影响颜色
		_Color("Color Tint",Color)=(1,1,1,1)
		//幅度
		_Magnitude("Distortion Magnitude" ,Float)=1
		//波动频率
		_Frequency("Distortion Frequency",Float)=1
		//波动起点
		_TextNum("TextNum",Float)=0.5
		//弧形跨度
		_TextNum2("TextNum2",Float)=0.5
	}
	SubShader {	
		//DisableBatching关闭批处理
			Tags{"Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" "DisableBatching"="True"}

			Pass{
				Tags{"LightMode"="ForwardBase"}
				ZWrite off
				Blend SrcAlpha OneMinusSrcAlpha
				Cull off

				CGPROGRAM
				#pragma vertex vert
				#pragma fragment frag

				#include "UnityCG.cginc"

				sampler2D _MainTex;
				float4 _MainTex_ST;
				float4 _Color;
				float _Magnitude;
				float _Frequency;
				float _TextNum;
				float _TextNum2;

				struct a2v{
					float4 vertex:POSITION;
					float4 texcoord:TEXCOORD0;
				};

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

				v2f vert(a2v v){
					v2f o;
					float4 offset= float4(0.0,0.0, 0.0, 0.0);
					//波动更具时间变化 乘以三个分量使的左形成错落感
					offset.y = sin(_Frequency * _Time.y) * _Magnitude * ( sin((v.vertex.x-_TextNum)*_TextNum2));
					o.pos = UnityObjectToClipPos(v.vertex + offset);
					
					o.uv = TRANSFORM_TEX(v.texcoord, _MainTex);
					o.uv +=  float2(0.0, _Time.y);

					return o;
				}

				fixed4 frag(v2f i):SV_Target{
					fixed4 c = tex2D(_MainTex, i.uv);
					c.rgb *= _Color.rgb;
					return c;
				}
				ENDCG
			}
	} 
	FallBack "off"//"Transparent/VertexLit"
}

Guess you like

Origin blog.csdn.net/ww1351646544/article/details/102723919