#version 450

// 硬编码的顶点数据 - 4个顶点组成三角形带覆盖整个屏幕
// const vec2 positions[6] = vec2[6](
//     vec2( 1.0,  1.0),  // 右上 - 三角形1
//     vec2(-1.0,  1.0),  // 左上 - 三角形1
//     vec2(-1.0, -1.0),  // 左下 - 三角形1

//     vec2(-1.0, -1.0),  // 左下 - 三角形2  
//     vec2( 1.0, -1.0),  // 右下 - 三角形2
//     vec2( 1.0,  1.0)   // 右上 - 三角形2
// );

const float offset = (640-480)/(480.0);


const vec2 positions[6] = vec2[6](
    vec2( 1.0,  -1.0 -offset),  // 右下
    vec2(1.0,  1.0 + offset),  // 右上 - 三角形1
    vec2(-1.0, 1.0 + offset),  // 左上 - 三角形1

    vec2(-1.0, 1.0 + offset),  // 左上 - 三角形2  
    vec2( -1.0, -1.0-offset),  // 左下 - 三角形2
    vec2( 1.0,  -1.0-offset)   // 右下 - 三角形2
);


//const float offset = (640-480)/(640.0*2); // 假设宽高比为4:3
// const float offset = 0;

// const vec2 positions[6] = vec2[6](
//     vec2( -1.0 - offset,  1.0),  // 右上 -> 左上
//     vec2(-1.0 - offset,  -1.0),  // 左上 - 左下
//     vec2(1.0 + offset, -1.0),  // 左下 - 右下

//     vec2(1.0 + offset, -1.0),  // 左下 - 右下  
//     vec2( 1.0 + offset, 1.0),  // 右下 - 右上
//     vec2( -1.0 - offset,  1.0)   // 右上 - 左上
// );



const vec2 texCoords[6] = vec2[6](
    vec2(1.0, 1.0),  // 右上
    vec2(0.0, 1.0),  // 左上
    vec2(0.0, 0.0),  // 左下
    
    vec2(0.0, 0.0),  // 左下
    vec2(1.0, 0.0),  // 右下
    vec2(1.0, 1.0)   // 右上
);

// 输出变量
layout(location = 0) out vec2 outTexCoord;

void main() {
    // 获取顶点位置
    vec2 position = positions[gl_VertexIndex];
    
    // 设置输出位置（Vulkan使用不同的坐标系）
    gl_Position = vec4(position, 0.0, 1.0);
    
    // 输出纹理坐标
    outTexCoord = texCoords[gl_VertexIndex];
}