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;
};
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");
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);
out vec2 patch_center;
uniform sampler2D flow_tex;
+uniform vec2 out_flow_size;
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: