Fullscreen Triangle

No setup. No vertex data.

gl.drawArrays(gl.TRIANGLES, 0, 3)
// shader.vert
void main()
{
    vec2 uv = vec2((gl_VertexID << 1) & 2, gl_VertexID & 2);
    gl_Position = vec4(uv * 2.0 + -1.0, 0.0, 1.0);
}
// shader.frag
uniform vec2 viewport_size;
void main()
{
    // ex. viewport_size = vec2(1920, 1080)
    vec2 uv = gl_FragCoord.xy / viewport_size;
}