disable default diffuse shadows on terrain shader

I want to write a very basic toon shader that i can use on a terrain object using unity’s default terrain tools. the general goal is to keep the splatmap functionality but remove all of unity’s default lightmap/shadow/diffuse lighting so i’d be left with an unlit but splatmapped terrain which i could then do some frag and vertex shading on.

The problem i’m having is that i can’t seem to stop the default diffuse lighting from happening. i’m using a modified version of unity’s default nature/terrain/diffuse shader but no mater how much of it i remove, there will always be diffuse lighting. I tried using #pragma params like noshadow, noambient, nolightmap, etc. but none of them have any effect.

CGINCLUDE
        #pragma surface surf Lambert vertex:SplatmapVert  nolightmap noambient noshadow novertexlights nodirlightmap nodynlightmap finalcolor:SplatmapFinalColor finalgbuffer:SplatmapFinalGBuffer
        //#pragma multi_compile_fog
        #include "TerrainSplatmapCommon.cginc"

        void surf(Input IN, inout SurfaceOutput o)
        {
            half4 splat_control;
            half weight;
            fixed4 mixedDiffuse;
			fixed3 mixedNormal = fixed3(1.0f,1.0f,1.0f);
            SplatmapMix(IN, splat_control, weight, mixedDiffuse, mixedNormal);
            o.Albedo = mixedDiffuse.rgb;
            o.Alpha = 0.5f;
        }
    ENDCG

    Category {
        Tags {
            "Queue" = "Geometry-99"
            "RenderType" = "Opaque"
        }
        // TODO: Seems like "#pragma target 3.0 _TERRAIN_NORMAL_MAP" can't fallback correctly on less capable devices?
        // Use two sub-shaders to simulate different features for different targets and still fallback correctly.
        SubShader { // for sm3.0+ targets
            CGPROGRAM
                #pragma target 3.0
                #pragma multi_compile __ _TERRAIN_NORMAL_MAP
            ENDCG
        }
        SubShader { // for sm2.0 targets
            CGPROGRAM
            ENDCG
        }

here i set the alpha to 0.5 to test if some of the code works. the entire terrain becomes darker, but there’s still very ugly default lighting which i would like to remove somehow.

Is there a good way to approach this? should i be writing the shader and splatmap stuff from scratch? is there a way to use just low-level vertex and frag shaders while not having to rewrite splatmaps from scratch?

To remove the self-shadow, I think you want to override the lighting function from Lambert to something simpler. Try this SimpleLambert (still supports local lights):

CGINCLUDE
         #pragma surface surf SimpleLambert vertex:SplatmapVert nolightmap noambient noshadow novertexlights nodirlightmap nodynlightmap finalcolor:SplatmapFinalColor finalgbuffer:SplatmapFinalGBuffer
         //#pragma multi_compile_fog
         #include "TerrainSplatmapCommon.cginc"
        
        half4 LightingSimpleLambert(SurfaceOutput s, half3 lightDir, half atten) {
			half4 color;
			color.rgb = s.Albedo * _LightColor0.rgb * atten;
			color.a = s.Alpha;
			return color;
		}

        void surf(Input IN, inout SurfaceOutput o)
        ...