summaryrefslogtreecommitdiff
path: root/Assets/ThirdParty/XWeaponTrail/Shader/xft_displacement_screen.shader
diff options
context:
space:
mode:
Diffstat (limited to 'Assets/ThirdParty/XWeaponTrail/Shader/xft_displacement_screen.shader')
-rw-r--r--Assets/ThirdParty/XWeaponTrail/Shader/xft_displacement_screen.shader126
1 files changed, 126 insertions, 0 deletions
diff --git a/Assets/ThirdParty/XWeaponTrail/Shader/xft_displacement_screen.shader b/Assets/ThirdParty/XWeaponTrail/Shader/xft_displacement_screen.shader
new file mode 100644
index 00000000..d541f496
--- /dev/null
+++ b/Assets/ThirdParty/XWeaponTrail/Shader/xft_displacement_screen.shader
@@ -0,0 +1,126 @@
+// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
+
+Shader "Xffect/displacement/screen" {
+Properties {
+ _DispMap ("Displacement Map (RG)", 2D) = "white" {}
+ _MaskTex ("Mask (R)", 2D) = "white" {}
+ _DispScrollSpeedX ("Map Scroll Speed X", Float) = 0
+ _DispScrollSpeedY ("Map Scroll Speed Y", Float) = 0
+ _StrengthX ("Displacement Strength X", Float) = 1
+ _StrengthY ("Displacement Strength Y", Float) = -1
+}
+
+Category {
+ Tags { "Queue"="Transparent+99" "RenderType"="Transparent" }
+ Blend SrcAlpha OneMinusSrcAlpha
+ //AlphaTest Greater .01
+ Cull Off Lighting Off ZWrite Off ZTest Always
+
+ BindChannels {
+ Bind "Color", color
+ Bind "Vertex", vertex
+ Bind "TexCoord", texcoord
+ }
+
+ SubShader {
+ GrabPass {
+ Name "BASE"
+ Tags { "LightMode" = "Always" }
+ }
+
+ Pass {
+ Name "BASE"
+ Tags { "LightMode" = "Always" }
+
+CGPROGRAM
+#pragma vertex vert
+#pragma fragment frag
+#pragma fragmentoption ARB_precision_hint_fastest
+#include "UnityCG.cginc"
+
+struct appdata_t {
+ float4 vertex : POSITION;
+ fixed4 color : COLOR;
+ float2 texcoord: TEXCOORD0;
+ float2 param : TEXCOORD1;
+};
+
+struct v2f {
+ float4 vertex : POSITION;
+ fixed4 color : COLOR;
+ float2 uvmain : TEXCOORD0;
+ float2 param : TEXCOORD1;
+ float4 uvgrab : TEXCOORD2;
+};
+
+uniform half _StrengthX;
+uniform half _StrengthY;
+
+uniform float4 _DispMap_ST;
+uniform sampler2D _DispMap;
+uniform sampler2D _MaskTex;
+uniform half _DispScrollSpeedY;
+uniform half _DispScrollSpeedX;
+
+v2f vert (appdata_t v)
+{
+ v2f o;
+ o.vertex = UnityObjectToClipPos(v.vertex);
+ #if UNITY_UV_STARTS_AT_TOP
+ float scale = -1.0;
+ #else
+ float scale = 1.0;
+ #endif
+ o.uvgrab.xy = (float2(o.vertex.x, o.vertex.y*scale) + o.vertex.w) * 0.5;
+ o.uvgrab.zw = o.vertex.zw;
+ o.uvmain = TRANSFORM_TEX( v.texcoord, _DispMap );
+ o.color = v.color;
+ o.param = v.param;
+ return o;
+}
+
+sampler2D _GrabTexture;
+
+half4 frag( v2f i ) : COLOR
+{
+ //scroll displacement map.
+ half2 mapoft = half2(_Time.y*_DispScrollSpeedX, _Time.y*_DispScrollSpeedY);
+
+ //get displacement color
+ half4 offsetColor = tex2D(_DispMap, i.uvmain + mapoft);
+
+ //get offset
+ half oftX = offsetColor.r * _StrengthX * i.param.x;
+ half oftY = offsetColor.g * _StrengthY * i.param.x;
+
+ i.uvgrab.x += oftX;
+ i.uvgrab.y += oftY;
+
+ half4 col = tex2Dproj( _GrabTexture, UNITY_PROJ_COORD(i.uvgrab));
+
+ //intensity is controlled by particle color.
+ col.a = i.color.a;
+
+ //use mask's red channel to determine visibility.
+ fixed4 tint = tex2D( _MaskTex, i.uvmain );
+
+ col.a *= tint.r;
+
+ return col;
+}
+ENDCG
+ }
+}
+
+ // ------------------------------------------------------------------
+ // Fallback for older cards and Unity non-Pro
+
+ SubShader {
+ Blend SrcAlpha OneMinusSrcAlpha
+ Pass {
+ Name "BASE"
+ SetTexture [_MainTex] { combine texture * primary double, texture * primary }
+ }
+ }
+}
+}