46 lines
1.2 KiB
GLSL
46 lines
1.2 KiB
GLSL
#version 450 core
|
|
#extension GL_ARB_texture_rectangle: enable
|
|
|
|
|
|
layout(location=0) uniform vec2 half_viewport_size;
|
|
|
|
//layout(location=0) in uvec2 ltrb_index;
|
|
layout(location=0) in vec4 rect_ltrb;
|
|
layout(location=1) in vec4 rect_tex_ltrb;
|
|
layout(location=2) in vec4 rect_color;
|
|
//layout(location=4) in uint index;
|
|
layout(location=3) in float rect_subpixel_shift;
|
|
|
|
|
|
flat out vec2 tex_coords;
|
|
flat out vec4 color;
|
|
flat out float subpixel_shift;
|
|
flat out uint index_out;
|
|
|
|
|
|
void main(){
|
|
uvec2[6] rect_vertices = {
|
|
{0, 1}, //left top
|
|
{0, 3}, //left buttom
|
|
{2, 1}, //right top
|
|
{0, 3}, //Left buttom
|
|
{2, 3}, //right bottom
|
|
{2, 1}, //right top
|
|
};
|
|
//Convert color to pre-multipled alpha
|
|
|
|
uvec2 indexx = rect_vertices[gl_VertexID];
|
|
|
|
color = vec4(rect_color.rgb * rect_color.a, rect_color.a);
|
|
|
|
vec2 pos = vec2( rect_ltrb[indexx.x], rect_ltrb[indexx.y]);
|
|
tex_coords = vec2(rect_tex_ltrb[indexx.x], rect_tex_ltrb[indexx.y]);
|
|
subpixel_shift = rect_subpixel_shift;
|
|
//index_out = index;
|
|
|
|
|
|
vec2 axes_flip = vec2(1, -1); // to flip y axis from bottom up
|
|
vec2 pos_in_ndc = (pos / half_viewport_size - 1.0) * axes_flip;
|
|
gl_Position = vec4(pos_in_ndc, 0, 1);
|
|
}
|