for (int i = 2; i < vptVerticies.Count; i+= 3) { Vector3 first = vptVerticies[i].Position - vptVerticies[i-1].Position; Vector3 second = vptVerticies[i-1].Position - vptVerticies[i-2].Position; Vector3 norm = Vector3.Cross(first, second); norm.Normalize(); VertexPositionNormalTexture n1 = vptVerticies[i]; VertexPositionNormalTexture n2 = vptVerticies[i-1]; VertexPositionNormalTexture n3 = vptVerticies[i-2]; n1.Normal += norm; n2.Normal += norm; n3.Normal += norm; vptVerticies[i] = n1; vptVerticies[i-1] = n2; vptVerticies[i-2] = n3; } for (int i = 0; i < vptVerticies.Count; i ++) { VertexPositionNormalTexture vert = vptVerticies[i]; vert.Normal.Normalize(); vptVerticies[i] = vert; }