2016-06-15 18:53:26 +02:00
|
|
|
#version 150
|
2016-06-07 00:57:01 +02:00
|
|
|
|
|
|
|
uniform ivec2 uScreenSize;
|
2016-06-09 00:13:49 +02:00
|
|
|
uniform ivec4 uBounds;
|
2016-06-07 00:57:01 +02:00
|
|
|
|
2016-06-15 18:53:26 +02:00
|
|
|
in uint vIndex;
|
2016-06-07 00:57:01 +02:00
|
|
|
|
2016-06-08 23:05:20 +02:00
|
|
|
out vec2 fPosition;
|
2016-06-07 00:57:01 +02:00
|
|
|
|
|
|
|
void main()
|
|
|
|
{
|
2016-06-09 00:13:49 +02:00
|
|
|
vec2 pos;
|
|
|
|
switch (vIndex) {
|
2016-06-15 18:53:26 +02:00
|
|
|
case 0u:
|
2016-06-09 00:13:49 +02:00
|
|
|
pos = uBounds.xy;
|
|
|
|
break;
|
2016-06-15 18:53:26 +02:00
|
|
|
case 1u:
|
2016-06-09 00:13:49 +02:00
|
|
|
pos = uBounds.zy;
|
|
|
|
break;
|
2016-06-15 18:53:26 +02:00
|
|
|
case 2u:
|
2016-06-09 00:13:49 +02:00
|
|
|
pos = uBounds.xw;
|
|
|
|
break;
|
2016-06-15 18:53:26 +02:00
|
|
|
case 3u:
|
|
|
|
pos = uBounds.zw;
|
|
|
|
break;
|
2016-06-09 00:13:49 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
fPosition = pos;
|
2016-06-07 00:57:01 +02:00
|
|
|
|
|
|
|
// Transform screen coordinates to viewport
|
|
|
|
pos.x = (pos.x * (2.0 / uScreenSize.x)) - 1.0;
|
|
|
|
pos.y = (pos.y * (2.0 / uScreenSize.y)) - 1.0;
|
|
|
|
pos.y *= -1;
|
|
|
|
|
2016-06-08 22:24:39 +02:00
|
|
|
gl_Position = vec4(pos, 0.0, 1.0);
|
2016-06-07 00:57:01 +02:00
|
|
|
}
|