]> git.sesse.net Git - nageru/commitdiff
Fix patch placement. Again.
authorSteinar H. Gunderson <sgunderson@bigfoot.com>
Mon, 6 Aug 2018 18:47:34 +0000 (20:47 +0200)
committerSteinar H. Gunderson <sgunderson@bigfoot.com>
Mon, 6 Aug 2018 18:47:34 +0000 (20:47 +0200)
flow.cpp
motion_search.vert

index 4fa779473a400a3baa5e9c6c1cfd0a26f9c174cc..c09d15ea0281479270d843af0f767c7d633eaaaa 100644 (file)
--- a/flow.cpp
+++ b/flow.cpp
@@ -440,7 +440,7 @@ private:
        GLuint motion_fs_obj;
        GLuint motion_search_program;
 
-       GLuint uniform_inv_image_size, uniform_inv_prev_level_size;
+       GLuint uniform_inv_image_size, uniform_inv_prev_level_size, uniform_out_flow_size;
        GLuint uniform_image1_tex, uniform_grad0_tex, uniform_flow_tex;
 };
 
@@ -452,6 +452,7 @@ MotionSearch::MotionSearch()
 
        uniform_inv_image_size = glGetUniformLocation(motion_search_program, "inv_image_size");
        uniform_inv_prev_level_size = glGetUniformLocation(motion_search_program, "inv_prev_level_size");
+       uniform_out_flow_size = glGetUniformLocation(motion_search_program, "out_flow_size");
        uniform_image1_tex = glGetUniformLocation(motion_search_program, "image1_tex");
        uniform_grad0_tex = glGetUniformLocation(motion_search_program, "grad0_tex");
        uniform_flow_tex = glGetUniformLocation(motion_search_program, "flow_tex");
@@ -467,6 +468,7 @@ void MotionSearch::exec(GLuint tex0_view, GLuint tex1_view, GLuint grad0_tex, GL
 
        glProgramUniform2f(motion_search_program, uniform_inv_image_size, 1.0f / level_width, 1.0f / level_height);
        glProgramUniform2f(motion_search_program, uniform_inv_prev_level_size, 1.0f / prev_level_width, 1.0f / prev_level_height);
+       glProgramUniform2f(motion_search_program, uniform_out_flow_size, width_patches, height_patches);
 
        glViewport(0, 0, width_patches, height_patches);
        fbos.render_to(flow_out_tex);
index 0e782aa8c2fcab55267b9cf67608768bce01f39e..ba21b846d8b98fe0484556351264e68f8479e340 100644 (file)
@@ -5,6 +5,7 @@ out vec2 flow_tc;
 out vec2 patch_center;
 
 uniform sampler2D flow_tex;
+uniform vec2 out_flow_size;
 
 void main()
 {
@@ -23,9 +24,8 @@ void main()
        //
        //   a = 1 / (w - 1)
        //   b = w / 2 (w - 1)
-       vec2 flow_size = textureSize(flow_tex, 0);
-       vec2 a = flow_size / (flow_size - 1);
-       vec2 b = -1.0 / (2 * (flow_size - 1.0));
+       vec2 a = out_flow_size / (out_flow_size - 1);
+       vec2 b = -1.0 / (2 * (out_flow_size - 1.0));
        patch_center = a * position + b;
 
        // The result of glOrtho(0.0, 1.0, 0.0, 1.0, 0.0, 1.0) is: