Simplify blit vertex shader

Also fixes rendering on macOS which for some reason was not doing the
texture co-ordinate mapping correctly in the old shader.
This commit is contained in:
Kovid Goyal 2017-11-24 01:43:50 +05:30
parent da8944b551
commit 452fd71fea
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C

View File

@ -1,30 +1,20 @@
#version GLSL_VERSION
#define vleft -1.0f
#define vtop 1.0f
#define vright 1.0f
#define vbottom -1.0f
#define left -1.0f
#define top 1.0f
#define right 1.0f
#define bottom -1.0f
#define tleft 0.0f
#define ttop 1.0f
#define tright 1.0f
#define tbottom 0.0f
const vec2 viewport_xpos = vec2(vleft, vright);
const vec2 viewport_ypos = vec2(vtop, vbottom);
const vec2 texture_xpos = vec2(tleft, tright);
const vec2 texture_ypos = vec2(ttop, tbottom);
const uvec2 pos_map[] = uvec2[4](
uvec2(1, 0), // right, top
uvec2(1, 1), // right, bottom
uvec2(0, 1), // left, bottom
uvec2(0, 0) // left, top
const vec2 pos_map[] = vec2[4](
vec2(right, top),
vec2(right, bottom),
vec2(left, bottom),
vec2(left, top)
);
out vec2 texcoord;
void main() {
uvec2 pos = pos_map[gl_VertexID];
gl_Position = vec4(viewport_xpos[pos[0]], viewport_ypos[pos[1]], 0, 1);
texcoord = vec2(texture_xpos[pos[0]], texture_ypos[pos[1]]);
vec2 vertex = pos_map[gl_VertexID];
gl_Position = vec4(vertex, 0, 1);
texcoord = (vertex + 1.0) / 2.0;
}