How do you calculate the normals for your quads? Just inside the quad or with corresponding neighbours? Your first screen looks like first option.
When you calculate a normal for one heightmap point by all 4 triangles, which use the same point, you should get a smooth shading.
*---* |\ /| | P | |/ \| *---*
First Screen shot the light is wrong at some tile (left corner). I think I have some wrong in the vertex -> so the Normal get wrong. Or maybe there is no Shadow setup, so that tile still get more light ?
Because after Smooth,I still use the same Normal Calculating way ( I use only in side the Quad, multy 2 vector, using neibour call Phong shading ? ) . And most of the quad look right with light.
Now I'm trying to recalculate the light factor by Code (To do a lightMap demo, Try to precalculate the Light mask, so I can apply Light without using 3D for low Spec System). Using vector and Light direction.. But Somehow I cant get the same light with DirectX (Use Normal inside Vertex and enable Light, the LIght now is ...) . Maybe inside DirectX FrameWork they added some thing, not just like in this Tutorial : http://ogldev.atspace.co.uk/www/tutorial18/tutorial18.html