formula x = cos(arctan(y/x)) / z
formula y = sin(arctan(y/x)) / z
I’m not 100% sure, but I’m fairly certain that this transform does not result in lines remaining… lines. Even homogenous clip-space still has objects that are linear remaining linear.
If your destination space has triangles who’s interior angles don’t sum to 180 degrees, then we’re talking about a bent triangle. But it’s not possible to scan-convert a bent triangle (not without tessellation, and even that’s just rendering smaller triangles), so I’m not sure how this would work.
I’m using a geosphere for my model, and just sort of figured, that with everything 3d, i found it odd that we were always collapsing things to a w,w rectangle instead of to a point with some type of data reference of a model overlaid over it.
At its core, OpenGL is a triangle rasterizer. That’s all. It’s a very, very fancy one, but it’s still just drawing triangles. These triangles are provided in homogenous coordinates, and they are transformed from a 4D coordinate system back into a linear 3D one by the internal hardware.
Furthermore, even if they could, you’d still need to specify a transform from geodesic space back to a space appropriate for doing depth comparisons, lighting (light direction vectors are no longer straight in geodesic space), and for producing an image. So I don’t see how this would help you.
If you look over light models, you see a lot of use of cube texture maps ect because of this limitation, instead of say, a geodesic.
What light models are you talking about?
Furthermore, how would this change anything? In general, cube maps used in lighting are used to specify the light coming from a specific direction. Cubemaps are used because they are far better than 2D textures for sampling directional values. They have no degeneracies the way all sphere-to-2D mappings do.
Whether you’re rendering a Euclidean triangle, or a triangle-on-a-sphere, you still need to answer the question, “how much light comes from direction X?” And no amount of geodesic rendering is going to make using a 2D texture a good choice for answering that question.