-#include <math.h>
#include <assert.h>
#include "effect_util.h"
#include "gamma_expansion_effect.h"
#include "util.h"
+using namespace std;
+
+namespace movit {
+
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");
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);
// 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);
set_uniform_float(glsl_program_num, prefix, "beta", 0.0181 * 4.5);
}
}
+
+} // namespace movit