From: Steinar H. Gunderson Date: Tue, 2 Oct 2012 11:59:31 +0000 (+0200) Subject: Move calculation of normalized position for the vignette into the vertex shader. X-Git-Tag: 1.0~426 X-Git-Url: https://git.sesse.net/?p=movit;a=commitdiff_plain;h=2b4a7d868112b4995bf6699f5b3aa68e9ec2b308;hp=9827902a92487b29f00350788aa1e4de1a5ba8ca;ds=sidebyside Move calculation of normalized position for the vignette into the vertex shader. --- diff --git a/vignette_effect.cpp b/vignette_effect.cpp index f1449ae..e140310 100644 --- a/vignette_effect.cpp +++ b/vignette_effect.cpp @@ -17,6 +17,11 @@ VignetteEffect::VignetteEffect() register_float("inner_radius", (float *)&inner_radius); } +std::string VignetteEffect::output_vertex_shader() +{ + return read_file("vignette_effect.vert"); +} + std::string VignetteEffect::output_fragment_shader() { return read_file("vignette_effect.frag"); diff --git a/vignette_effect.frag b/vignette_effect.frag index bc84516..c7e1d61 100644 --- a/vignette_effect.frag +++ b/vignette_effect.frag @@ -1,15 +1,14 @@ // A simple, circular vignette, with a cos² falloff. uniform float PREFIX(inv_radius); -uniform vec2 PREFIX(aspect_correction); +varying vec2 PREFIX(normalized_pos); vec4 FUNCNAME(vec2 tc) { vec4 x = LAST_INPUT(tc); const float pihalf = 0.5 * 3.14159265358979324; - vec2 normalized_pos = (tc - PREFIX(center)) * PREFIX(aspect_correction); - float dist = (length(normalized_pos) - PREFIX(inner_radius)) * PREFIX(inv_radius); + float dist = (length(PREFIX(normalized_pos)) - PREFIX(inner_radius)) * PREFIX(inv_radius); float linear_falloff = clamp(dist, 0.0, 1.0) * pihalf; float falloff = cos(linear_falloff) * cos(linear_falloff); x.rgb *= vec3(falloff); diff --git a/vignette_effect.h b/vignette_effect.h index b8e0f68..1d75f7e 100644 --- a/vignette_effect.h +++ b/vignette_effect.h @@ -6,6 +6,7 @@ class VignetteEffect : public Effect { public: VignetteEffect(); + std::string output_vertex_shader(); std::string output_fragment_shader(); void set_uniforms(GLuint glsl_program_num, const std::string &prefix); diff --git a/vignette_effect.vert b/vignette_effect.vert new file mode 100644 index 0000000..44edeb8 --- /dev/null +++ b/vignette_effect.vert @@ -0,0 +1,9 @@ +uniform vec2 PREFIX(aspect_correction); +varying vec2 PREFIX(normalized_pos); + +vec2 FUNCNAME() +{ + vec2 temp = LAST_INPUT(); + PREFIX(normalized_pos) = (temp - PREFIX(center)) * PREFIX(aspect_correction); + return temp; +}