Rework stretch to use just MTF
This commit is contained in:
+9
-30
@@ -2,43 +2,22 @@
|
||||
|
||||
uniform sampler2D qt_Texture0;
|
||||
varying vec2 qt_TexCoord0;
|
||||
uniform vec2 scale;
|
||||
uniform float a;
|
||||
uniform int stretch;
|
||||
uniform vec3 mtf_param;
|
||||
uniform bool bw;
|
||||
|
||||
vec4 MTF(vec4 x, vec3 m)
|
||||
{
|
||||
x = (x - m.x) / (m.z - m.x);
|
||||
x = clamp(x, vec4(0.0), vec4(1.0));
|
||||
return ((m.y - 1) * x) / ((2 * m.y - 1) * x - m.y);
|
||||
}
|
||||
|
||||
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));
|
||||
color = MTF(color, mtf_param);
|
||||
|
||||
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;
|
||||
|
||||
Reference in New Issue
Block a user