1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
| Shader "Unlit/FrameAnimation" { Properties { _MainTex("Texture", 2D) = "white" {} _Rows("Rows",int) = 8 _Columns("Columns",int) = 8 _Speed("Speed",float) = 1.0 } SubShader { Tags { "RenderType"="Trasparent" "Queue" = "Transparent" "IngnoreProjector" = "True" } Pass { ZWrite Off Blend SrcAlpha OneMinusSrcAlpha CGPROGRAM #pragma vertex vert #pragma fragment frag
#include "UnityCG.cginc"
struct v2f { float2 uv : TEXCOORD0; float4 vertex : SV_POSITION; }; sampler2D _MainTex; int _Rows; int _Columns; float _Speed; v2f vert (appdata_base v) { v2f o; o.vertex = UnityObjectToClipPos(v.vertex); o.uv = v.texcoord; return o; }
fixed4 frag (v2f i) : SV_Target { float frameIndex = floor(_Time.y * _Speed) % (_Rows*_Columns); float2 frameUV = float2(frameIndex % _Columns / _Columns , 1 - (floor(frameIndex / _Columns) + 1) / _Rows); float2 size = float2(1.0 / _Columns , 1.0 / _Rows); float2 uv = i.uv * size + frameUV; return tex2D(_MainTex, uv); } ENDCG } } }
|