From: Steinar H. Gunderson Date: Tue, 24 Jul 2018 21:37:16 +0000 (+0200) Subject: Fix the patch out-of-bounds check in motion search (it was all broken). X-Git-Tag: 1.8.0~76^2~180 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=09842dd1b518cafabff6cc3436561c9d7f905727;p=nageru Fix the patch out-of-bounds check in motion search (it was all broken). --- diff --git a/motion_search.frag b/motion_search.frag index d407c0d..a32868b 100644 --- a/motion_search.frag +++ b/motion_search.frag @@ -139,11 +139,12 @@ void main() // Also reject if the patch goes out-of-bounds (the paper does not mention this, // but the code does, and it seems to be critical to avoid really bad behavior // at the edges). + vec2 patch_center = (base * image_size - 0.5f) + patch_size * 0.5f + u; if (length(u - initial_u) > (patch_size * 0.5f) || - u.x < -(patch_size * 0.5f) || - image_size.x - u.x < -(patch_size * 0.5f) || - u.y < -(patch_size * 0.5f) || - image_size.y - u.y < -(patch_size * 0.5f)) { + patch_center.x < -(patch_size * 0.5f) || + image_size.x - patch_center.x < -(patch_size * 0.5f) || + patch_center.y < -(patch_size * 0.5f) || + image_size.y - patch_center.y < -(patch_size * 0.5f)) { u = initial_u; mean_diff = first_mean_diff; }