48 lines
1.1 KiB
GLSL
48 lines
1.1 KiB
GLSL
#version 330
|
|
|
|
uniform sampler2D qt_Texture0;
|
|
uniform vec3 mtf_param;
|
|
uniform bool bw;
|
|
uniform bool invert;
|
|
uniform bool srgb;
|
|
in vec2 qt_TexCoord0;
|
|
out vec4 color;
|
|
|
|
vec3 Linear2sRGB(vec3 color)
|
|
{
|
|
return mix(12.92 * color.rgb,
|
|
1.055 * pow(color, vec3(1.0 / 2.4)) - 0.055,
|
|
greaterThan(color, vec3(0.0031308)));
|
|
}
|
|
|
|
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);
|
|
}
|
|
|
|
vec3 checker()
|
|
{
|
|
vec2 pattern = fract(gl_FragCoord.xy * 0.0625) - 0.5;
|
|
return vec3(step(pattern.x * pattern.y, 0.0) * 0.25 + 0.25);
|
|
}
|
|
|
|
void main(void)
|
|
{
|
|
color = texture(qt_Texture0, qt_TexCoord0);
|
|
if(bw)color = color.rrra;
|
|
color = MTF(color, mtf_param);
|
|
|
|
if(invert)color.rgb = vec3(1.0) - color.rgb;
|
|
|
|
color.rgb = mix(checker(), color.rgb, color.a);
|
|
|
|
if(srgb)color.rgb = Linear2sRGB(color.rgb);
|
|
|
|
if(any(lessThan(qt_TexCoord0, vec2(0.0))) || any(greaterThan(qt_TexCoord0, vec2(1.0))))
|
|
color = vec4(0.0, 0.0, 0.0, 1.0);
|
|
|
|
color.a = 1.0;
|
|
}
|