X-Git-Url: https://git.sesse.net/?p=movit;a=blobdiff_plain;f=gamma_expansion_effect.cpp;fp=gamma_expansion_effect.cpp;h=15e0bffb8f03ed0a1bf034c29b9fbbcd6245be38;hp=95437906f4c63134232e7775ba630016b2b6748f;hb=9c12e38b7cd88a77ef297d080b7c41e6bd6326fb;hpb=1ec439c7fb975c09029adaa9090e7f35ce6484b8 diff --git a/gamma_expansion_effect.cpp b/gamma_expansion_effect.cpp index 9543790..15e0bff 100644 --- a/gamma_expansion_effect.cpp +++ b/gamma_expansion_effect.cpp @@ -12,6 +12,13 @@ GammaExpansionEffect::GammaExpansionEffect() : source_curve(GAMMA_LINEAR) { register_int("source_curve", (int *)&source_curve); + register_uniform_float("linear_scale", &uniform_linear_scale); + register_uniform_float("c0", &uniform_c0); + register_uniform_float("c1", &uniform_c1); + register_uniform_float("c2", &uniform_c2); + register_uniform_float("c3", &uniform_c3); + register_uniform_float("c4", &uniform_c4); + register_uniform_float("beta", &uniform_beta); } string GammaExpansionEffect::output_fragment_shader() @@ -80,13 +87,13 @@ void GammaExpansionEffect::set_gl_state(GLuint glsl_program_num, const string &p // // Note that the worst _relative_ error by far is just at the beginning // of the exponential curve, ie., just around β. - set_uniform_float(glsl_program_num, prefix, "linear_scale", 1.0 / 12.92); - set_uniform_float(glsl_program_num, prefix, "c0", 0.001324469581); - set_uniform_float(glsl_program_num, prefix, "c1", 0.02227416690); - set_uniform_float(glsl_program_num, prefix, "c2", 0.5917615253); - set_uniform_float(glsl_program_num, prefix, "c3", 0.4733532353); - set_uniform_float(glsl_program_num, prefix, "c4", -0.08880738120); - set_uniform_float(glsl_program_num, prefix, "beta", 0.04045); + uniform_linear_scale = 1.0 / 12.92; + uniform_c0 = 0.001324469581; + uniform_c1 = 0.02227416690; + uniform_c2 = 0.5917615253; + uniform_c3 = 0.4733532353; + uniform_c4 = -0.08880738120; + uniform_beta = 0.04045; } if (source_curve == GAMMA_REC_709) { // Also includes Rec. 601, and 10-bit Rec. 2020. // Rec. 2020, page 3; ɑ = 1.099, β = 0.018 * 4.5, ɣ = 1/0.45. @@ -97,13 +104,13 @@ void GammaExpansionEffect::set_gl_state(GLuint glsl_program_num, const string &p // Note that Rec. 2020 only gives the other direction, which is why // our beta and gamma are different from the numbers mentioned // (we've inverted the formula). - set_uniform_float(glsl_program_num, prefix, "linear_scale", 1.0 / 4.5); - set_uniform_float(glsl_program_num, prefix, "c0", 0.005137028744); - set_uniform_float(glsl_program_num, prefix, "c1", 0.09802596889); - set_uniform_float(glsl_program_num, prefix, "c2", 0.7255768864); - set_uniform_float(glsl_program_num, prefix, "c3", 0.2135067966); - set_uniform_float(glsl_program_num, prefix, "c4", -0.04225094667); - set_uniform_float(glsl_program_num, prefix, "beta", 0.018 * 4.5); + uniform_linear_scale = 1.0 / 4.5; + uniform_c0 = 0.005137028744; + uniform_c1 = 0.09802596889; + uniform_c2 = 0.7255768864; + uniform_c3 = 0.2135067966; + uniform_c4 = -0.04225094667; + uniform_beta = 0.018 * 4.5; } if (source_curve == GAMMA_REC_2020_12_BIT) { // Rec. 2020, page 3; ɑ = 1.0993, β = 0.0181 * 4.5, ɣ = 1/0.45. @@ -114,13 +121,13 @@ void GammaExpansionEffect::set_gl_state(GLuint glsl_program_num, const string &p // Note that Rec. 2020 only gives the other direction, which is why // our beta and gamma are different from the numbers mentioned // (we've inverted the formula). - set_uniform_float(glsl_program_num, prefix, "linear_scale", 1.0 / 4.5); - set_uniform_float(glsl_program_num, prefix, "c0", 0.005167545928); - set_uniform_float(glsl_program_num, prefix, "c1", 0.09835585809); - set_uniform_float(glsl_program_num, prefix, "c2", 0.7254820139); - set_uniform_float(glsl_program_num, prefix, "c3", 0.2131291155); - set_uniform_float(glsl_program_num, prefix, "c4", -0.04213877222); - set_uniform_float(glsl_program_num, prefix, "beta", 0.0181 * 4.5); + uniform_linear_scale = 1.0 / 4.5; + uniform_c0 = 0.005167545928; + uniform_c1 = 0.09835585809; + uniform_c2 = 0.7254820139; + uniform_c3 = 0.2131291155; + uniform_c4 = -0.04213877222; + uniform_beta = 0.0181 * 4.5; } }