diff options
Diffstat (limited to 'Assets/ThirdParty/AmplifyShaderEditor/Plugins/EditorResources/Previews/Preview_TFHCFlipBookUVAnimation.shader')
-rw-r--r-- | Assets/ThirdParty/AmplifyShaderEditor/Plugins/EditorResources/Previews/Preview_TFHCFlipBookUVAnimation.shader | 89 |
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 + } + } +} |