summaryrefslogtreecommitdiff
path: root/Assets/ThirdParty/AmplifyShaderEditor/Plugins/EditorResources/Previews/Preview_TFHCFlipBookUVAnimation.shader
diff options
context:
space:
mode:
Diffstat (limited to 'Assets/ThirdParty/AmplifyShaderEditor/Plugins/EditorResources/Previews/Preview_TFHCFlipBookUVAnimation.shader')
-rw-r--r--Assets/ThirdParty/AmplifyShaderEditor/Plugins/EditorResources/Previews/Preview_TFHCFlipBookUVAnimation.shader89
1 files changed, 89 insertions, 0 deletions
diff --git a/Assets/ThirdParty/AmplifyShaderEditor/Plugins/EditorResources/Previews/Preview_TFHCFlipBookUVAnimation.shader b/Assets/ThirdParty/AmplifyShaderEditor/Plugins/EditorResources/Previews/Preview_TFHCFlipBookUVAnimation.shader
new file mode 100644
index 00000000..a3778980
--- /dev/null
+++ b/Assets/ThirdParty/AmplifyShaderEditor/Plugins/EditorResources/Previews/Preview_TFHCFlipBookUVAnimation.shader
@@ -0,0 +1,89 @@
+Shader "Hidden/TFHCFlipBookUVAnimation"
+{
+ Properties
+ {
+ _A ("_UV", 2D) = "white" {}
+ _B ("_Columns", 2D) = "white" {}
+ _C ("_Rows", 2D) = "white" {}
+ _D ("_Speed", 2D) = "white" {}
+ _E ("_StartFrame", 2D) = "white" {}
+ _F ("_Speed", 2D) = "white" {}
+ }
+ SubShader
+ {
+ CGINCLUDE
+ #include "UnityCG.cginc"
+ #pragma vertex vert_img
+ #pragma fragment frag
+ sampler2D _A;
+ sampler2D _B;
+ sampler2D _C;
+ sampler2D _D;
+ sampler2D _E;
+ sampler2D _F;
+ float _EditorTime;
+ ENDCG
+
+ //Time port disconnected
+ Pass
+ {
+ CGPROGRAM
+ float4 frag(v2f_img i) : SV_Target
+ {
+ float2 uv = tex2D( _A, i.uv ).rg;
+ float col = tex2D( _B, i.uv ).r;
+ float row = tex2D( _C, i.uv ).r;
+ float spd = tex2D( _D, i.uv ).r;
+ float str = tex2D( _E, i.uv ).r;
+
+ float fbtotaltiles = col * row;
+ float fbcolsoffset = 1.0f / col;
+ float fbrowsoffset = 1.0f / row;
+ float fbspeed = _EditorTime * spd;
+ float2 fbtiling = float2(fbcolsoffset, fbrowsoffset);
+ float fbcurrenttileindex = round( fmod( fbspeed + str, fbtotaltiles) );
+ fbcurrenttileindex += ( fbcurrenttileindex < 0) ? fbtotaltiles : 0;
+ float fblinearindextox = round ( fmod ( fbcurrenttileindex, col ) );
+ float fboffsetx = fblinearindextox * fbcolsoffset;
+ float fblinearindextoy = round( fmod( ( fbcurrenttileindex - fblinearindextox ) / col, row ) );
+ fblinearindextoy = (int)(row-1) - fblinearindextoy;
+ float fboffsety = fblinearindextoy * fbrowsoffset;
+ float2 fboffset = float2(fboffsetx, fboffsety);
+ float2 fbuv = float4( uv, 0.0 , 0.0 ) * fbtiling + fboffset;
+ return float4(fbuv, 0 , 0);
+ }
+ ENDCG
+ }
+
+ //Time port connected
+ Pass
+ {
+ CGPROGRAM
+ float4 frag(v2f_img i) : SV_Target
+ {
+ float2 uv = tex2D( _A, i.uv ).rg;
+ float col = tex2D( _B, i.uv ).r;
+ float row = tex2D( _C, i.uv ).r;
+ float spd = tex2D( _D, i.uv ).r;
+ float str = tex2D( _E, i.uv ).r;
+ float time = tex2D( _F, i.uv ).r;
+ float fbtotaltiles = col * row;
+ float fbcolsoffset = 1.0f / col;
+ float fbrowsoffset = 1.0f / row;
+ float fbspeed = time * spd;
+ float2 fbtiling = float2(fbcolsoffset, fbrowsoffset);
+ float fbcurrenttileindex = round( fmod( fbspeed + str, fbtotaltiles) );
+ fbcurrenttileindex += ( fbcurrenttileindex < 0) ? fbtotaltiles : 0;
+ float fblinearindextox = round ( fmod ( fbcurrenttileindex, col ) );
+ float fboffsetx = fblinearindextox * fbcolsoffset;
+ float fblinearindextoy = round( fmod( ( fbcurrenttileindex - fblinearindextox ) / col, row ) );
+ fblinearindextoy = (int)(row-1) - fblinearindextoy;
+ float fboffsety = fblinearindextoy * fbrowsoffset;
+ float2 fboffset = float2(fboffsetx, fboffsety);
+ float2 fbuv = float4( uv, 0.0 , 0.0 ) * fbtiling + fboffset;
+ return float4(fbuv, 0 , 0);
+ }
+ ENDCG
+ }
+ }
+}