#version 130 uniform sampler2D qt_Texture0; varying vec2 qt_TexCoord0; uniform vec2 scale; uniform float a; uniform int stretch; void main(void) { vec4 color = texture2D(qt_Texture0, qt_TexCoord0); 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.7152f; color *= asinh(l / a) / asinh(1 / a); } break; } color = color*scale.x + scale.y; //float color = pow(c, 0.4545); gl_FragColor = color; }