#version 130 uniform sampler2D qt_Texture0; varying vec2 qt_TexCoord0; uniform vec2 scale; uniform float a; uniform int stretch; uniform bool bw; void main(void) { vec4 color = texture2D(qt_Texture0, qt_TexCoord0); if(bw)color = color.rrra; color = color*scale.x + scale.y; color = max(color, vec4(0.0f)); switch(stretch) { case 0: break; case 1: color = sqrt(color); break; case 2: color = pow(color, vec4(a)); break; case 3: color = log(a*color + 1.0) / log(vec4(a+1)); break; case 4: { //float l = color.r*0.2126f + color.g*0.7152f + color.b*0.0722f; float l = (color.r+color.g+color.b)*0.33333; float k = asinh(l*a)/(l*asinh(a)); color *= k; } break; } //color = color*scale.x + scale.y; //float color = pow(c, 0.4545); if(any(lessThan(qt_TexCoord0, vec2(0.0))) || any(greaterThan(qt_TexCoord0, vec2(1.0)))) color = vec4(0.0); gl_FragColor = color; }