Shader "EffectShader/Niuqu"
|
{
|
Properties
|
{
|
_NoiseTex("NoiseTex", 2D) = "white" {}
|
_X_speed("X_speed", Float) = 0
|
_Y_speed("Y_speed", Float) = 0
|
_NioseMask("NioseMask", 2D) = "white" {}
|
_X_Maskspeed("X_Maskspeed", Float) = 0
|
_Y_Maskspeed("Y_Maskspeed", Float) = 0
|
[Enum(UnityEngine.Rendering.CullMode)]_CullModle("CullModle", Float) = 0
|
_qianduo("qianduo", Float) = 0
|
}
|
|
SubShader
|
{
|
|
|
Tags { "RenderType"="Transparent" "Queue"="Transparent" }
|
LOD 100
|
|
CGINCLUDE
|
#pragma target 3.0
|
ENDCG
|
Blend SrcAlpha OneMinusSrcAlpha
|
Cull [_CullModle]
|
ColorMask RGBA
|
ZWrite Off
|
ZTest LEqual
|
|
|
GrabPass{ }
|
|
Pass
|
{
|
Name "Unlit"
|
|
CGPROGRAM
|
#pragma vertex vert
|
#pragma fragment frag
|
#pragma multi_compile_instancing
|
#include "UnityCG.cginc"
|
#include "UnityShaderVariables.cginc"
|
|
|
struct appdata
|
{
|
float4 vertex : POSITION;
|
float4 color : COLOR;
|
UNITY_VERTEX_INPUT_INSTANCE_ID
|
float4 ase_texcoord : TEXCOORD0;
|
};
|
|
struct v2f
|
{
|
float4 vertex : SV_POSITION;
|
UNITY_VERTEX_INPUT_INSTANCE_ID
|
UNITY_VERTEX_OUTPUT_STEREO
|
float4 ase_texcoord : TEXCOORD0;
|
float4 ase_texcoord1 : TEXCOORD1;
|
float4 ase_color : COLOR;
|
};
|
|
uniform float _CullModle;
|
uniform sampler2D _GrabTexture;
|
uniform sampler2D _NoiseTex;
|
uniform float _X_speed;
|
uniform float _Y_speed;
|
uniform float4 _NoiseTex_ST;
|
uniform float _qianduo;
|
uniform sampler2D _NioseMask;
|
uniform float _X_Maskspeed;
|
uniform float _Y_Maskspeed;
|
uniform float4 _NioseMask_ST;
|
|
v2f vert ( appdata v )
|
{
|
v2f o;
|
UNITY_SETUP_INSTANCE_ID(v);
|
UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
|
UNITY_TRANSFER_INSTANCE_ID(v, o);
|
|
float4 ase_clipPos = UnityObjectToClipPos(v.vertex);
|
float4 screenPos = ComputeGrabScreenPos(ase_clipPos);
|
o.ase_texcoord = screenPos;
|
|
o.ase_texcoord1.xy = v.ase_texcoord.xy;
|
o.ase_color = v.color;
|
|
//setting value to unused interpolator channels and avoid initialization warnings
|
o.ase_texcoord1.zw = 0;
|
float3 vertexValue = float3(0,0,0) ;
|
#if ASE_ABSOLUTE_VERTEX_POS
|
v.vertex.xyz = vertexValue;
|
#else
|
v.vertex.xyz += vertexValue;
|
#endif
|
o.vertex = UnityObjectToClipPos(v.vertex);
|
return o;
|
}
|
|
fixed4 frag (v2f i ) : SV_Target
|
{
|
UNITY_SETUP_INSTANCE_ID(i);
|
fixed4 finalColor;
|
float4 screenPos = i.ase_texcoord;
|
float4 ase_screenPosNorm = screenPos / screenPos.w;
|
ase_screenPosNorm.z = ( UNITY_NEAR_CLIP_VALUE >= 0 ) ? ase_screenPosNorm.z : ase_screenPosNorm.z * 0.5 + 0.5;
|
float2 appendResult43 = (float2(_X_speed , _Y_speed));
|
float2 uv0_NoiseTex = i.ase_texcoord1.xy * _NoiseTex_ST.xy + _NoiseTex_ST.zw;
|
float2 panner38 = ( _Time.y * appendResult43 + uv0_NoiseTex);
|
float2 appendResult48 = (float2(_X_Maskspeed , _Y_Maskspeed));
|
float2 uv0_NioseMask = i.ase_texcoord1.xy * _NioseMask_ST.xy + _NioseMask_ST.zw;
|
float2 panner50 = ( _Time.y * appendResult48 + uv0_NioseMask);
|
float4 tex2DNode32 = tex2D( _NioseMask, panner50 );
|
float4 screenColor25 = tex2D( _GrabTexture, ( ase_screenPosNorm + ( ( ( tex2D( _NoiseTex, panner38 ).r + -0.5 ) * ( _qianduo * i.ase_color.a ) ) * tex2DNode32.r * tex2DNode32.a ) ).xy );
|
float4 appendResult30 = (float4(screenColor25.rgb , 1.0));
|
|
|
finalColor = appendResult30;
|
return finalColor;
|
}
|
ENDCG
|
}
|
}
|
CustomEditor "ASEMaterialInspector"
|
|
|
}
|