This was the next mapping I implemented after bilinear and triangular interpolation. It was all downhill from here on. U is calculated from theta of the intermediate cylindrical surface, which is the arctangent of -z and x. V is calculated directly from the y coordinate. In all cases, I compute directly the mapping for each point, rather than rather than finding u and v per vertex and interpolating the point in between.
A shrinkwrap mapping is applied to a cube. The texture is shifted slightly to show off texture positioning on the cube. One normal per face on the cube.
The shrinkwrap is now tiled across the entire face. Notice how the severe distortion across the top of the cube as one slice of the cylinder is smeared inwards. Also, there are hints of aliasing across the same face.
The shrinkwrap mapping is now applied to a tetrahedron. Interpolated normals across the face.
Tiling of the shrinkwrap. Severe distortion near the bottom and top of the tetrahedron.