How to add texture offset support to this shader

Hi, I am not any way experienced with shaders. I honestly want to avoid the coding part of shaders and only use shader graph, however this one special case cannot be done with shader graph. I’ve used this guide in order to use Unity stencil with a 9 sliced sprite and I’ve gotten the effect that I want, except that I need to be able to scroll the texture being masked within it.

I know that there is something you need to add to the shader based on the results I’ve come up with from searching, however I am in no way experienced enough to know how to implement these. I tried implementing code from this answer Texture offset not working because of shader - Questions & Answers - Unity Discussions and it allowed me to offset the texture but for some reason there was some weird alpha and color glitches with the way it worked which I also do not know how to fix.

Any help would be appreciated.

This is the exact shader I am using

Shader "Stencil Mask/ToBeMasked"
		[PerRendererData] _MainTex ("Sprite Texture", 2D) = "white" {}
		_Color ("Tint", Color) = (1,1,1,1)
		[MaterialToggle] PixelSnap ("Pixel snap", Float) = 0
		_AlphaCutoff("Alpha Cutoff", Range(0.01, 1.0)) = 0.01



		Cull Off
		Lighting Off
		ZWrite Off
		Blend One OneMinusSrcAlpha

				Ref 5
				Comp Always
				Pass Replace
			#pragma vertex vert
			#pragma fragment frag
			#pragma multi_compile _ PIXELSNAP_ON
			#include "UnityCG.cginc"

			struct appdata_t
				float4 vertex   : POSITION;
				float4 color    : COLOR;
				float2 texcoord : TEXCOORD0;

			struct v2f
				float4 vertex   : SV_POSITION;
				fixed4 color    : COLOR;
				half2 texcoord  : TEXCOORD0;

			fixed4 _Color;
			fixed _AlphaCutoff;
			v2f vert(appdata_t IN)
				v2f OUT;
				OUT.vertex = UnityObjectToClipPos(IN.vertex);
				OUT.texcoord = IN.texcoord;
				OUT.color = IN.color * _Color;
				#ifdef PIXELSNAP_ON
				OUT.vertex = UnityPixelSnap (OUT.vertex);

				return OUT;
			sampler2D _MainTex;
			sampler2D _AlphaTex;
			float _AlphaSplitEnabled;

			fixed4 SampleSpriteTexture (float2 uv)
				fixed4 color = tex2D (_MainTex, uv);
				if (_AlphaSplitEnabled)
					color.a = tex2D (_AlphaTex, uv).r;

				return color;
            float4 _MainTex_ST;

			fixed4 frag(v2f IN) : SV_Target
				fixed4 c = SampleSpriteTexture (IN.texcoord) * IN.color;
				c.rgb *= c.a;

        // Discard pixels below cutoff so that stencil is only updated for visible pixels.
				clip(c.a - _AlphaCutoff);

				return c;



Hi, just in case anyone else who sees this and doesn’t know anything about shaders has a similar problem, you can still mask sprites with Stencil that have a default material. (Even with Unity’s 2D experimental lighting!) Just make sure to set the mask interaction mode to something other than none.