I wrote an algorithm that generates an icosahedron (20 faces, 12 vertices). Next, applying the bisection method to each triangle the necessary number of times, I get the scope of the desired "quality". If you feed this model to a simple shader, then you can see a quality round ball. The problems started when I assigned texture coordinates to each vertex and started sampling.
I told about the sphere so that there were no "why" and "why" questions, and there is a problem even if I wrap the icosahedron in texture, so for simplicity I will return to this figure.
A texture is a rectangle, if the icosahedron is wrapped with this rectangle, then there will be some kind of conditional line between the beginning and the end of the texture rectangle. The line of this joint will pass through some triangles of the icosahedron. I can not understand which texture coordinates to set the vertices of such a triangle. We cannot “shift” the texture coordinates of these vertices to the beginning of the texture or to the end, since other triangles are built on these vertices and everything is fine with them.
I see two solutions.
The first is to change the method of generating the ball so that our vertices on the ball form arcs to which I can bind the interface line of the texture
The second is to split the triangles at the junction line into other triangles so that the vertices are clearly on the junction line, they have the same world coordinates, but different texture coordinates.
Which method is better?


