How to Procedurally Generate Smooth Meshes

This is somewhat related to my tangent smoothing angle question which I now don’t think is what the problem is, so let me elaborate a bit. Basically I am procedurally generating a hex-sphere but it doesn’t look smooth when it has six times the amount of vertices as the unity primitives sphere which looks far smoother. There is a screenshot below. My sphere starts as a cube then every vertex of the cube is normalized then set a specific distance (the radius of the sphere) from the center of it, in order to “spherize” it. My question is how can I get my sphere to look smooth like the unity primitives one?

[21547-comparison.|21547]

EDIT: Okay so one thing I tried was not recalculating normals when I did this and my result was smooth but the lighting was messed up - maybe I should also mention that my sphere is made out of six different planes initially arranged as a cube. The six faces of the sphere seem to be under different lighting conditions. Screenshot below.

The normals for each vertex should be the average of the faces that vertex is a part of. Surface shading comes from the normals of a mesh (which I’m guessing you know), but what you might not know is that, for each triangle, the intensity of shadowing is interpolated from vertex to vertex.

Now you just need to figure out a way a) get the triangles a vertex is part of, b) calculate the normals of those triangles, c) get the average of those normals, and d) set the vertex’s normal to that average.