Mesh normals: per face or per vertex?

Anyone know? I'm trying to generate a complex mesh (from a file). The original files has no normals, not 2-sided, but looks fine in its native editor. In Unity, half the faces are flipped. I'm not calculating normals myself, and calling RecalculateNormals does not help. So I want to try calculating normals, but is it one per face or one per vertex per face?

Normals are per vertex, but vertices can be shared by multiple faces/triangles.

What do you mean by “flipped”? If a face is facing to wrong way, you have to reverse the winding order. Something like “face-normals” actually doesn’t exists. The winding order specifies in which direction the triangle faces.

To reverse the winding order of a triangle just swap 2 vertex indices.

example (C#):

int[] tris = mesh.triangles;
int tmp = tris[triangleindex*3 + 0];
tris[triangleindex*3 + 0] = tris[triangleindex*3 + 1];
tris[triangleindex*3 + 1] = tmp;
mesh.triangles = tris;