aecd3bdae9de90381454a76242a46a066edef29c
[movit] / vignette_effect.cpp
1 #define GL_GLEXT_PROTOTYPES 1
2
3 #include <math.h>
4 #include <GL/gl.h>
5 #include <GL/glext.h>
6
7 #include "vignette_effect.h"
8 #include "util.h"
9
10 VignetteEffect::VignetteEffect()
11         : center(0.5f, 0.5f),
12           radius(0.3f),
13           inner_radius(0.3f)
14 {
15         register_vec2("center", (float *)&center);
16         register_float("radius", (float *)&radius);
17         register_float("inner_radius", (float *)&inner_radius);
18 }
19
20 std::string VignetteEffect::output_fragment_shader()
21 {
22         return read_file("vignette_effect.glsl");
23 }
24
25 void VignetteEffect::set_uniforms(GLuint glsl_program_num, const std::string &prefix)
26 {
27         Effect::set_uniforms(glsl_program_num, prefix);
28
29         set_uniform_float(glsl_program_num, prefix, "inv_radius", 1.0f / radius);
30
31         Point2D aspect(16.0f / 9.0f, 1.0f);  // FIXME
32         set_uniform_vec2(glsl_program_num, prefix, "aspect_correction", (float *)&aspect);
33 }