I was able to fix this issue by coding my own “Calculate Sharp Normals” function. Looks like, existing “Calculate Normals and Tangents” function in the engine matches vertices by their coordinates, not indices; and this is a wrong approach to calculate normals in most cases. Instead, I assigned averages of matching triangles’ normals to each vertex.
Here is the comparison. Base Color input of the material is connected to VertexNormalWS node.
I will continue developing this function to be able to use smoothing groups.
