From 9c75a0fcc4d9dba5604a4939de21e943e63f739e Mon Sep 17 00:00:00 2001 From: "Steinar H. Gunderson" Date: Mon, 6 Aug 2018 20:47:34 +0200 Subject: [PATCH] Fix patch placement. Again. --- flow.cpp | 4 +++- motion_search.vert | 6 +++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/flow.cpp b/flow.cpp index 4fa7794..c09d15e 100644 --- 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); diff --git a/motion_search.vert b/motion_search.vert index 0e782aa..ba21b84 100644 --- a/motion_search.vert +++ b/motion_search.vert @@ -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: -- 2.39.2