Procedural flat shading

If I am understanding you correctly I would create a tileable normal map based off a triangulated mesh like this

.

Granted I would make it more random and less grid like, but this image is just an example. I don’t think tessellation is needed if you use a plane with enough triangles already in it. You would save on performance rather than actively tessellating though the shader. You can still use your height map and noise idea, but just world position offset should suffice.

Also make sure the plane has no smoothing groups and the mesh is set to compute normals.

Thats my opinion anyway,