- x.r = texture1D(PREFIX(expansion_curve_tex), x.r).x;
- x.g = texture1D(PREFIX(expansion_curve_tex), x.g).x;
- x.b = texture1D(PREFIX(expansion_curve_tex), x.b).x;
+ vec3 a = x.rgb * PREFIX(linear_scale);
+
+ // Fourth-order polynomial approximation to pow(). See the .cpp file for details.
+ vec3 b = PREFIX(c0) + (PREFIX(c1) + (PREFIX(c2) + (PREFIX(c3) + PREFIX(c4) * x.rgb) * x.rgb) * x.rgb) * x.rgb;
+
+ vec3 f = vec3(greaterThan(x.rgb, vec3(PREFIX(beta))));
+ x = vec4(mix(a, b, f), x.a);