X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;ds=sidebyside;f=gamma_expansion_effect.cpp;h=696815ed40273ea9fb8daab2e2a1d29bff30684b;hb=f8e636666b3d36f97b125bc1a0f0f582c5026c7f;hp=5f9423f7c749081f965d57bbb8ba06901381ca08;hpb=b912dbaa253ed1f091fd7201efd366c6f3154257;p=movit diff --git a/gamma_expansion_effect.cpp b/gamma_expansion_effect.cpp index 5f9423f..696815e 100644 --- a/gamma_expansion_effect.cpp +++ b/gamma_expansion_effect.cpp @@ -1,17 +1,18 @@ -#include #include #include "effect_util.h" #include "gamma_expansion_effect.h" #include "util.h" +using namespace std; + GammaExpansionEffect::GammaExpansionEffect() : source_curve(GAMMA_LINEAR) { register_int("source_curve", (int *)&source_curve); } -std::string GammaExpansionEffect::output_fragment_shader() +string GammaExpansionEffect::output_fragment_shader() { if (source_curve == GAMMA_LINEAR) { return read_file("identity.frag"); @@ -24,7 +25,7 @@ std::string GammaExpansionEffect::output_fragment_shader() assert(false); } -void GammaExpansionEffect::set_gl_state(GLuint glsl_program_num, const std::string &prefix, unsigned *sampler_num) +void GammaExpansionEffect::set_gl_state(GLuint glsl_program_num, const string &prefix, unsigned *sampler_num) { Effect::set_gl_state(glsl_program_num, prefix, sampler_num); @@ -74,6 +75,9 @@ void GammaExpansionEffect::set_gl_state(GLuint glsl_program_num, const std::stri // maxerror = 0.000094 // error at beta = 0.000012 // error at 1.0 = 0.000012 + // + // 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);