TexGen'ed UVs - how to access in surface shader?

Hi,

If I have a shader with property say:

 _MainTex ("Main Tex", 2D) = "gray" { TexGen ObjectLinear }

And I have a surface shader:

struct Input {
	float2 uv_MainTex : TEXCOORD0;
};

sampler2D _MainTex;

void surf (Input IN, inout SurfaceOutput o) {
	fixed3 col;
	o.Albedo = tex2D(_MainTex,float4(IN.uv_MainTex).rgb;
	o.Alpha = 0.0;
}

Will IN.uv_MainTex have the TexGen’ed UV coordinates? Because for me it seems that it is not the case or I’m doing something wrong. Any help would be very much appreciated!

I’ve just spent the best part of a day figuring this out - I couldn’t find a version of this question with an answer, so I’ll attempt to answer it here: (Sorry this is so late - I’m new to Unity)
I don’t know if you need the TEXCOOD0, so it could be that I’m way off beam here, but you can access the UV coordinates in the surf struct and add an offset to sample MainTex in an alternate location, like this:

 void surf (Input IN, inout SurfaceOutput o) {
        float2 offsetUVs = IN.uv_MainTex;
        offsetUVs.y += _adjustmentAmount;
        _surfaceColour = saturate(tex2D (_MainTex, offsetUVs).rgba * _offsetColour.rgba);
}

The tex2D method takes a sampler2D and a float2 as parameters, so you can make a change to the float2 from the input struct (IN.uv_MainTex) and pass the altered float2 into the tex2D method instead. I hope that works for you.