I'm playing around with my own procedural mesh generator (perhaps for top-down shooter). Because I want to use a texture atlas for roads, river beds etc I've split everything up into discrete triangles. I thought I was recalulating my normals correctly by finding all triangles that share the same vertex position, summing and then averaging their normals and applying that value to the vertex in question. But, for the centre vertex, I seem to get this weird lighting issue that the attached image hopefully shows. The centre vertex normals seem to be wrong and I get this weird "X" effect. The "bad normals 2" image shows the wireframe; 4 tris per quad, laid out in a grid with a heightmap raising each corner of the quad. I know I should be able to use sub meshes etc and apply different materials but I haven't figured out how to make this work with my planned approach to making hills, carving riverbeds, placing roads etc so I've done it this way for now. Any thoughts on what I'm doing wrong? I really want to get my own code working just so I can say I did it, but I'm frustrated at the moment.