Basic surface shader question ...

So I just started learning surface shaders in Unity. But just can’t seem to figure out this:

Say I have, o.Albedo = tex2D( _MainTex, uv_MainTex)

What if I pass some float2 value other than uv_MainTex of Input struct. For example: o.Albedo = tex2D( _MainTex, (0.2,0.3) )

Shouldn’t that make the whole material of the color at (0.2,0.3) of the texture? In my case the material always gets the color of the (0,0) coordinate of the texture if I pass any other float2 except uv_MainTex . Or am I missing something.

o.Albedo = tex2D( _MainTex, (0.2,0.3) )

this will not change the color it will grab the image at position 20% and 30%
what you want to do is
o.Albedo = tex2D( _MainTex, uv_MainTex) + new float4(a,r,g,b);