此参数控制XYZ方向的强度
遮罩贴图R通道控制影响范围
Shader "VfxVertexTran"
{
Properties
{
[Enum(UnityEngine.Rendering.BlendMode)]_DstBlend("DstBlend",int)=10
_MainTex ("Texture", 2D) = "white" {}
_TranTex ("TranTexture", 2D) = "white" {}
_MaskTex ("MaskTexture", 2D) = "white" {}
_Dir ("Dir",vector) = (1,1,1,1)
_Flowx("Flowx",float)=0
_Flowy("Flowy",float)=0
}
SubShader
{
Tags { "RenderType"="Transparent" "Queue" = "Transparent"}
Pass
{
Cull Off
Tags{"LightMode" = "SRPDefaultUnlit"}
Blend SrcAlpha [_DstBlend]
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
struct appdata
{
float4 vertex : POSITION;
float2 uv : TEXCOORD0;
};
struct v2f
{
float2 uv : TEXCOORD0;
float2 uv1 : TEXCOORD1;
float4 vertex : SV_POSITION;
};
sampler2D _MainTex;
sampler2D _TranTex;
sampler2D _MaskTex;
float4 _MainTex_ST;
float4 _Dir;
float4 _TranTex_ST;
float _Flowx,_Flowy;
v2f vert (appdata v)
{
v2f o;
o.uv=TRANSFORM_TEX(v.uv,_MainTex);
o.uv1=TRANSFORM_TEX(v.uv,_TranTex)+float2(_Flowx,_Flowy)*_Time.y;
fixed3 trancol =tex2Dlod(_TranTex,float4(o.uv1,0,0));
fixed4 maskcol =tex2Dlod(_MaskTex,float4(o.uv,0,0));
trancol.x*=_Dir.x*maskcol.r;
trancol.y*=_Dir.y*maskcol.r;
trancol.z*=_Dir.z*maskcol.r;
o.vertex=UnityObjectToClipPos(v.vertex+trancol);
return o;
}
fixed4 frag (v2f i) : SV_Target
{
fixed4 col =tex2D(_MainTex,i.uv);
return col;
}
ENDCG
}
}
}