X-Git-Url: https://git.sesse.net/?p=movit;a=blobdiff_plain;f=lift_gamma_gain_effect.cpp;h=2dc827885cb46a8a005427c18a9e247087abd781;hp=5c83854339f0981c52ff3dbe2ee365d75096ad2d;hb=0dc1dfe6444a700ebd2c9f006cba000b90c3a7b0;hpb=a88f299483ffe5068cd2828513078b9103325da8 diff --git a/lift_gamma_gain_effect.cpp b/lift_gamma_gain_effect.cpp index 5c83854..2dc8278 100644 --- a/lift_gamma_gain_effect.cpp +++ b/lift_gamma_gain_effect.cpp @@ -1,13 +1,40 @@ +#define GL_GLEXT_PROTOTYPES 1 + +#include +#include +#include + #include "lift_gamma_gain_effect.h" +#include "util.h" LiftGammaGainEffect::LiftGammaGainEffect() : lift(0.0f, 0.0f, 0.0f), gamma(1.0f, 1.0f, 1.0f), - gain(1.0f, 1.0f, 1.0f), - saturation(1.0f) + gain(1.0f, 1.0f, 1.0f) { register_vec3("lift", (float *)&lift); register_vec3("gamma", (float *)&gamma); register_vec3("gain", (float *)&gain); - register_float("saturation", &saturation); +} + +std::string LiftGammaGainEffect::output_fragment_shader() +{ + return read_file("lift_gamma_gain_effect.frag"); +} + +void LiftGammaGainEffect::set_gl_state(GLuint glsl_program_num, const std::string &prefix, unsigned *sampler_num) +{ + Effect::set_gl_state(glsl_program_num, prefix, sampler_num); + + RGBTriplet gain_pow_inv_gamma( + pow(gain.r, 1.0f / gamma.r), + pow(gain.g, 1.0f / gamma.g), + pow(gain.b, 1.0f / gamma.b)); + set_uniform_vec3(glsl_program_num, prefix, "gain_pow_inv_gamma", (float *)&gain_pow_inv_gamma); + + RGBTriplet inv_gamma_22( + 2.2f / gamma.r, + 2.2f / gamma.g, + 2.2f / gamma.b); + set_uniform_vec3(glsl_program_num, prefix, "inv_gamma_22", (float *)&inv_gamma_22); }