[client] egl: move rotation into the fragment shader

This commit is contained in:
Geoffrey McRae
2021-01-15 13:13:39 +11:00
parent 72c86d7125
commit cbeae46c0b
3 changed files with 32 additions and 68 deletions

View File

@@ -4,22 +4,40 @@ layout(location = 0) in vec3 vertexPosition_modelspace;
layout(location = 1) in vec2 vertexUV;
uniform vec4 mouse;
uniform lowp int rotate;
out highp vec2 uv;
void main()
{
gl_Position.xyz = vertexPosition_modelspace;
gl_Position.w = 1.0;
vec2 muv = vertexPosition_modelspace.xy;
muv.x += 1.0f;
muv.y -= 1.0f;
muv.x *= mouse.z;
muv.y *= mouse.w;
muv.x += mouse.x;
muv.y -= mouse.y;
gl_Position.x += 1.0f;
gl_Position.y -= 1.0f;
gl_Position.x *= mouse.z;
gl_Position.y *= mouse.w;
gl_Position.x += mouse.x;
gl_Position.y -= mouse.y;
if (rotate == 0) // up
{
gl_Position.xy = muv;
}
else if (rotate == 1) // down
{
gl_Position.x = -muv.x;
gl_Position.y = -muv.y;
}
else if (rotate == 2) // left
{
gl_Position.x = -muv.y;
gl_Position.y = muv.x;
}
else if (rotate == 3) // right
{
gl_Position.x = muv.y;
gl_Position.y = -muv.x;
}
gl_Position.w = 1.0;
uv = vertexUV;
}