Flat Procedural transition
General Answer: You can use a Mapping Node with a constant ColorRamp to do some shading via global height or via other texture coordinate inputs





(I think that the problem comes from bent polygons, because you moved single vertices from the subdivided plane. Therefore maybe a triangulate modifier could also help.)
turned out it wasnt that, but the height-displacement is done via shader-displacent from a noise map witch also was wrongfully pluged in as color


Specific Answer for uploaded file:
there you used a standard noise map for colorisation, I replaced it with the setup from this answer:  



because of the huge scale of your mesh you have to scale up the object coordinate input in the mapping node, then it works