Add geo line shaders

This commit is contained in:
Dan Paulat 2022-09-24 16:02:15 -05:00
parent bf6b3e3601
commit bee167764a
4 changed files with 60 additions and 1 deletions

39
scwx-qt/gl/geo_line.vert Normal file
View file

@ -0,0 +1,39 @@
#version 330 core
#define DEGREES_MAX 360.0f
#define LATITUDE_MAX 85.051128779806604f
#define LONGITUDE_MAX 180.0f
#define PI 3.1415926535897932384626433f
#define RAD2DEG 57.295779513082320876798156332941f
layout (location = 0) in vec2 aLatLong;
layout (location = 1) in vec2 aXYOffset;
layout (location = 2) in vec2 aTexCoord;
layout (location = 3) in vec4 aModulate;
uniform mat4 uMVPMatrix;
uniform vec2 uMapScreenCoord;
flat out vec2 texCoord;
flat out vec4 modulate;
vec2 latLngToScreenCoordinate(in vec2 latLng)
{
vec2 p;
latLng.x = clamp(latLng.x, -LATITUDE_MAX, LATITUDE_MAX);
p.xy = vec2(LONGITUDE_MAX + latLng.y,
-(LONGITUDE_MAX - RAD2DEG * log(tan(PI / 4 + latLng.x * PI / DEGREES_MAX))));
return p;
}
void main()
{
// Pass the texture coordinate and color modulate to the fragment shader
texCoord = aTexCoord;
modulate = aModulate;
vec2 p = latLngToScreenCoordinate(aLatLong) + aXYOffset - uMapScreenCoord;
// Transform the position to screen coordinates
gl_Position = uMVPMatrix * vec4(p, 0.0f, 1.0f);
}