#version 450 core
// Purpose: Engine presentation vertex shader; draws a screen-space textured rectangle.

uniform vec4 uDstRectNdc;
uniform vec4 uUvRect;

out vec2 vUv;

const vec2 kLocalPos[6] = vec2[](
    vec2(0.0, 0.0),
    vec2(1.0, 0.0),
    vec2(1.0, 1.0),
    vec2(0.0, 0.0),
    vec2(1.0, 1.0),
    vec2(0.0, 1.0)
);

void main()
{
    vec2 p01 = kLocalPos[gl_VertexID];

    vec2 ndc = mix(uDstRectNdc.xy, uDstRectNdc.zw, p01);
    vUv = mix(uUvRect.xy, uUvRect.zw, p01);

    gl_Position = vec4(ndc, 0.0, 1.0);
}
