SparrowRenderer/shaders/reduction.frag.glsl

28 lines
753 B
GLSL

#version 330 core
uniform sampler2DRect minMaxMeanSampler;
uniform int width;
uniform int height;
layout(location = 0)out vec3 outValues;
void main(void) {
vec3 val[3];
ivec2 pos = ivec2(gl_FragCoord.xy)*2;
// fetching 4 texels
outValues = texelFetch(minMaxMeanSampler, pos).xyz;
val[0] = texelFetch(minMaxMeanSampler, pos + ivec2(1, 0)).xyz;
val[1] = texelFetch(minMaxMeanSampler, pos + ivec2(0, 1)).xyz;
val[2] = texelFetch(minMaxMeanSampler, pos + ivec2(1, 1)).xyz;
// computing min, max, and mean for these 4 texels
for(int i=0; i<3; ++i)
{
outValues.x = min(outValues.x, val[i].x);
outValues.y = max(outValues.y, val[i].y);
outValues.z += val[i].z;
}
outValues.z /= 4;
}