Fix bug in latlon spheremapping program.

This commit is contained in:
Kalle Bladin
2016-05-03 16:29:53 -04:00
parent a3221dd5e7
commit c18e05821c
2 changed files with 4 additions and 39 deletions

View File

@@ -68,4 +68,4 @@ vec3 latLonToCartesian(float latitude, float longitude, float radius) {
sin(latitude));
}
#endif
#endif // ELLIPSOID_HGLSL

View File

@@ -36,49 +36,14 @@ out vec4 vs_position;
out vec2 fs_uv;
#include "PowerScaling/powerScaling_vs.hglsl"
vec3 geodeticSurfaceNormal(float latitude, float longitude)
{
float cosLat = cos(latitude);
return vec3(
cosLat * cos(longitude),
cosLat * sin(longitude),
sin(latitude));
}
vec3 geodetic3ToCartesian(
float latitude,
float longitude,
float height,
vec3 radiiSquared)
{
vec3 normal = geodeticSurfaceNormal(latitude, longitude);
vec3 k = radiiSquared * normal;
float gamma = sqrt(dot(k, normal));
vec3 rSurface = k / gamma;
return rSurface + height * normal;
}
vec3 geodetic2ToCartesian(float latitude, float longitude, vec3 radiiSquared)
{
// Position on surface : height = 0
return geodetic3ToCartesian(latitude, longitude, 0, radiiSquared);
}
vec3 latLonToCartesian(float latitude, float longitude, float radius) {
return radius * vec3(
cos(latitude) * cos(longitude),
cos(latitude) * sin(longitude),
sin(latitude));
}
#include <${MODULE_GLOBEBROWSING}/shaders/ellipsoid.hglsl>
vec3 globalInterpolation() {
vec2 lonLatInput;
lonLatInput.y = minLatLon.y + lonLatScalingFactor.y * in_UV.y; // Lat
lonLatInput.x = minLatLon.x + lonLatScalingFactor.x * in_UV.x; // Lon
vec3 positionModelSpace = geodetic2ToCartesian(lonLatInput.y, lonLatInput.x, radiiSquared);// latLonToCartesian(lonLatInput.y, lonLatInput.x, globeRadius);
return positionModelSpace;
PositionNormalPair positionPairModelSpace = geodetic2ToCartesian(lonLatInput.y, lonLatInput.x, radiiSquared);// latLonToCartesian(lonLatInput.y, lonLatInput.x, globeRadius);
return positionPairModelSpace.position;
}
void main()