]> git.sesse.net Git - movit/blob - white_balance_effect.h
Calculate the RGB-to-XYZ matrix ourselves instead of using a “magic” one from Wikipedia.
[movit] / white_balance_effect.h
1 #ifndef _MOVIT_WHITE_BALANCE_EFFECT_H
2 #define _MOVIT_WHITE_BALANCE_EFFECT_H 1
3
4 // Color correction in LMS color space.
5
6 #include <GL/glew.h>
7 #include <string>
8
9 #include "effect.h"
10
11 class WhiteBalanceEffect : public Effect {
12 public:
13         WhiteBalanceEffect();
14         virtual std::string effect_type_id() const { return "WhiteBalanceEffect"; }
15         virtual AlphaHandling alpha_handling() const { return DONT_CARE_ALPHA_TYPE; }
16         std::string output_fragment_shader();
17
18         void set_gl_state(GLuint glsl_program_num, const std::string &prefix, unsigned *sampler_num);
19
20 private:
21         // The neutral color, in linear sRGB.
22         RGBTriplet neutral_color;
23
24         // Output color temperature (in Kelvins).
25         // Choosing 6500 will lead to no color cast (ie., the neutral color becomes perfectly gray).
26         float output_color_temperature;
27 };
28
29 #endif // !defined(_MOVIT_WHITE_BALANCE_EFFECT_H)