65 lines
1.8 KiB
GLSL
65 lines
1.8 KiB
GLSL
#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];
|
|
} |