World Position > DDX and DDY > Cross > Transform (Tangent to World) > Normal input
Then uncheck Tangent Normals in the material
In ye olden days of 3D graphics, flat polygons were shaded from a single point in the center. This was really cheap because the light only had to be calculated once per-poly from a single point. The limitations with this were horrific: shadows could not shade properly because you can’t shade by pixel, only by poly, and the end result would always look jagged. N64 devs preferred Gourard shading at the vertex to get a smoother result. Nowadays normals are computed per-pixel allowing smooth, round surfaces like cylinders and spheres to be rendered properly. Unfortunately, this means every surface must be considered smooth. If you want a sharp, hard edge, the mesh needs to be split along the hard edge, resulting in two vertices at the split.
To make this simple, you can’t actually improve performance with flat polygonal rendering because UE4 calculates normals per-pixel. The DDX/DDY cross method doesn’t work on mobile ES2 because they’re not supported features. You /can/ make every model flat-shaded, but you’d just be increasing your vertex count exponentially, which would seriously tank your performance. I think it might be possible to change the base shader files to shade normals per-poly instead of per-vertex, but I don’t know how well it would work or how exactly to implement this.