26 lines
791 B
GLSL
26 lines
791 B
GLSL
layout(constant_id = 0) const int width = 25;
|
|
layout(constant_id = 1) const int height = 25;
|
|
|
|
layout(location = 0) out vec2 outUV;
|
|
layout(location = 1) out flat ivec2 outPixel;
|
|
layout(location = 2) out float outDepth;
|
|
|
|
layout(binding = 1) uniform sampler2D depth_sampler;
|
|
|
|
void main() {
|
|
outUV = vec2((gl_VertexIndex << 1) & 2, gl_VertexIndex & 2);
|
|
|
|
ivec2 pixel = ivec2(gl_InstanceIndex % width, gl_InstanceIndex / width);
|
|
outPixel = pixel;
|
|
|
|
const float depth = texture(depth_sampler, vec2(pixel) / vec2(width, height)).r;
|
|
outDepth = depth;
|
|
|
|
vec2 pos = vec2(outUV * 2.0 + -1.0);
|
|
pos *= 5.0 * depth;
|
|
pos += vec2(pixel.x, pixel.y);
|
|
pos *= 2.0 / vec2(width, height);
|
|
pos += vec2(-1, -1);
|
|
|
|
gl_Position = vec4(pos.x, pos.y, 0.0, 1.0);
|
|
}
|