Need to get lighting to work on bending vertex shader...

I used the code here How to make plane look curved? - Unity Answers
to make a curving vertex shader, which is being applied to a row of planes, making a runner type game like subway surfers, and the effect is really good, however, his example is unlit. I have been messing around for hours and have got the shader to finally compile, containing the parts for both the vertex shader and the default diffuse shader, without errors, however, it now just renders as a default shader with no vertex shading being applied… It seems I can only get one or the other… the code is here:

Shader "Custom/CurvedLit"
{
    Properties
    {
		_MainTex ("Base (RGB)", 2D) = "white" {}
		_QOffset ("Offset", Vector) = (0,0,0,0)
		_Dist ("Distance", Float) = 100.0
		_Color ("Main Color", Color) = (1,1,1,1)
    }
    
    SubShader
    {
    	Tags { "RenderType"="Opaque" }
		LOD 200

		CGPROGRAM
		#pragma surface surf Lambert vertex:vert
		#include "UnityCG.cginc"
		

		sampler2D _MainTex;
		fixed4 _Color;
		float4 _QOffset;
		float _Dist;

		struct Input
		{
			float2 uv_MainTex;
		};
		
		struct v2f
		{
		    float4 pos : SV_POSITION;
		    float4 uv : TEXCOORD0;
		};
		
		v2f vert (inout appdata_full v)
		{
		    v2f o;
		    float4 vPos = mul (UNITY_MATRIX_MV, v.vertex);
		    float zOff = vPos.z/_Dist;
		    vPos += _QOffset*zOff*zOff;
		    o.pos = mul (UNITY_MATRIX_P, vPos);
		    o.uv = v.texcoord;
		    return o;
		}
		
		void surf (Input IN, inout SurfaceOutput o)
		{
			fixed4 c = tex2D(_MainTex, IN.uv_MainTex) * _Color;
			o.Albedo = c.rgb;
			o.Alpha = c.a;
		}
		
		
		
	ENDCG
	}
	Fallback "VertexLit"
}

Please help as soon as possible, I just want a curved plane that accepts shadows. The shader can then be applied to all objects, but it needs to work on just planes first! Thanks in advance!

1.) Get rid of Fallback “VertexLit” - you don’t want a fallback when doing shader development - only for production, and that’s probably one of the causes why you are getting confused between the effects you’re seeing.

2.) You need to add the #pragma addshadow directive to add a shadow collector/caster pass (Unity - Manual: Writing Surface Shaders)

3.) I wrote an example of this sort of shader in this blog post from last year (I use a slightly different curvature calculation, but the effect is similar):

Shader "Custom/CurvedWorld" {
    Properties {
        // Diffuse texture
        _MainTex ("Base (RGB)", 2D) = "white" {}
        // Degree of curvature
        _Curvature ("Curvature", Float) = 0.001
    }
    SubShader {
        Tags { "RenderType"="Opaque" }
        LOD 200
        
        CGPROGRAM
        // Surface shader function is called surf, and vertex preprocessor function is called vert
        #pragma surface surf Lambert vertex:vert addshadow
 
        // Access the shaderlab properties
        uniform sampler2D _MainTex;
        uniform float _Curvature;
 
        // Basic input structure to the shader function
        // requires only a single set of UV texture mapping coordinates
        struct Input {
            float2 uv_MainTex;
        };
 
        // This is where the curvature is applied
        void vert( inout appdata_full v)
        {
            // Transform the vertex coordinates from model space into world space
            float4 vv = mul( _Object2World, v.vertex );
 
            // Now adjust the coordinates to be relative to the camera position
            vv.xyz -= _WorldSpaceCameraPos.xyz;
 
            // Reduce the y coordinate (i.e. lower the "height") of each vertex based
            // on the square of the distance from the camera in the z axis, multiplied
            // by the chosen curvature factor
            vv = float4( 0.0f, (vv.z * vv.z) * - _Curvature, 0.0f, 0.0f );
 
            // Now apply the offset back to the vertices in model space
            v.vertex += mul(_World2Object, vv);
        }
 
        // This is just a default surface shader
        void surf (Input IN, inout SurfaceOutput o) {
            half4 c = tex2D (_MainTex, IN.uv_MainTex);
            o.Albedo = c.rgb;
            o.Alpha = c.a;
        }
        ENDCG
    }
}