The solution to this is generally to point the vertex normals of the grass in the same direction of the landscape under it. That way, they will always be lit consistently with the terrain.
You can do this a bunch of different ways, if you’re using an RVT you can capture the landscape normal and use that as the world-space normal output for the grass, or you can just use 0,0,1 as the worldspace output of the grass but this means the normal is always pointing straight up so you might get undesired results on grass, another option is to just manually point the vertex normals up in your modeling software before exporting.