X-Git-Url: https://git.sesse.net/?p=movit;a=blobdiff_plain;f=lift_gamma_gain_effect.h;h=c93724d8b8fe2ae10150feb4cad8096ebfbce5dc;hp=131957009a37bd35ccc954035f05a85ac03e358f;hb=47b4160062cdaa53b7d49d7f99ce2c686f02cff8;hpb=f99ad333a7acbb6c8c995dbb036484ae8940c490 diff --git a/lift_gamma_gain_effect.h b/lift_gamma_gain_effect.h index 1319570..c93724d 100644 --- a/lift_gamma_gain_effect.h +++ b/lift_gamma_gain_effect.h @@ -1,5 +1,5 @@ -#ifndef _LIFT_GAMMA_GAIN_EFFECT_H -#define _LIFT_GAMMA_GAIN_EFFECT_H 1 +#ifndef _MOVIT_LIFT_GAMMA_GAIN_EFFECT_H +#define _MOVIT_LIFT_GAMMA_GAIN_EFFECT_H 1 // A simple lift/gamma/gain effect, used for color grading. // @@ -16,13 +16,22 @@ // rest of the curve relatively little. Thus, we actually convert to gamma 2.2 // before lift, and then back again afterwards. (Gain and gamma are, // up to constants, commutative with the de-gamma operation.) +// +// Also, gamma is a case where we would not want premultiplied alpha. +// Thus, we have to divide away alpha first, and then re-multiply it back later. + +#include +#include #include "effect.h" +namespace movit { + class LiftGammaGainEffect : public Effect { public: LiftGammaGainEffect(); virtual std::string effect_type_id() const { return "LiftGammaGainEffect"; } + virtual AlphaHandling alpha_handling() const { return INPUT_PREMULTIPLIED_ALPHA_KEEP_BLANK; } std::string output_fragment_shader(); void set_gl_state(GLuint glsl_program_num, const std::string &prefix, unsigned *sampler_num); @@ -31,4 +40,6 @@ private: RGBTriplet lift, gamma, gain; }; -#endif // !defined(_LIFT_GAMMA_GAIN_EFFECT_H) +} // namespace movit + +#endif // !defined(_MOVIT_LIFT_GAMMA_GAIN_EFFECT_H)