]> git.sesse.net Git - movit/blob - gamma_expansion_effect.frag
There's no need to #undef PREFIX, since we do the token pasting ourselves.
[movit] / gamma_expansion_effect.frag
1 // Expand gamma curve.
2
3 // Implicit uniforms:
4 // uniform float PREFIX(linear_scale);
5 // uniform float PREFIX(c)[5];
6 // uniform float PREFIX(beta);
7
8 vec4 FUNCNAME(vec2 tc) {
9         vec4 x = INPUT(tc);
10
11         vec3 a = x.rgb * PREFIX(linear_scale);
12
13         // Fourth-order polynomial approximation to pow(). See the .cpp file for details.
14         vec3 b = PREFIX(c[0]) + (PREFIX(c[1]) + (PREFIX(c[2]) + (PREFIX(c[3]) + PREFIX(c[4]) * x.rgb) * x.rgb) * x.rgb) * x.rgb;
15
16         vec3 f = vec3(greaterThan(x.rgb, vec3(PREFIX(beta))));
17         x = vec4(mix(a, b, f), x.a);
18
19         return x;
20 }