4 #include "effect_util.h"
5 #include "vignette_effect.h"
8 VignetteEffect::VignetteEffect()
10 aspect_correction(1.0f, 1.0f),
14 register_vec2("center", (float *)¢er);
15 register_float("radius", (float *)&radius);
16 register_float("inner_radius", (float *)&inner_radius);
19 std::string VignetteEffect::output_fragment_shader()
21 return read_file("vignette_effect.frag");
24 void VignetteEffect::inform_input_size(unsigned input_num, unsigned width, unsigned height) {
25 assert(input_num == 0);
26 if (width >= height) {
27 aspect_correction = Point2D(float(width) / float(height), 1.0f);
29 aspect_correction = Point2D(1.0f, float(height) / float(width));
33 void VignetteEffect::set_gl_state(GLuint glsl_program_num, const std::string &prefix, unsigned *sampler_num)
35 Effect::set_gl_state(glsl_program_num, prefix, sampler_num);
37 set_uniform_float(glsl_program_num, prefix, "pihalf_div_radius", 0.5 * M_PI / radius);
38 set_uniform_vec2(glsl_program_num, prefix, "aspect_correction", (float *)&aspect_correction);
40 Point2D flipped_center(center.x, 1.0f - center.y);
41 set_uniform_vec2(glsl_program_num, prefix, "flipped_center", (float *)&flipped_center);