Fix #132646: VSE proxy strip incorrectly occludes strips below it

Depending on proxy size and scaling factor, the "does proxy cover
whole screen" code was producing wrong results, due to mismatched
resolutions it was working on: SeqRenderData at that point contains
proxy resolution (reduced), but SEQ_image_transform_final_quad_get
works at full resolution. The produced quad needs to be scaled down
to what the render context is operating at.
This commit is contained in:
Aras Pranckevicius
2025-01-06 20:12:01 +02:00
committed by Aras Pranckevicius
parent a79d95099f
commit ab1fc88f2e

View File

@@ -299,7 +299,11 @@ StripScreenQuad get_strip_screen_quad(const SeqRenderData *context, const Strip
float quad[4][2];
SEQ_image_transform_final_quad_get(scene, seq, quad);
return StripScreenQuad{quad[0] + offset, quad[1] + offset, quad[2] + offset, quad[3] + offset};
const float scale = SEQ_rendersize_to_scale_factor(context->preview_render_size);
return StripScreenQuad{float2(quad[0]) * scale + offset,
float2(quad[1]) * scale + offset,
float2(quad[2]) * scale + offset,
float2(quad[3]) * scale + offset};
}
/* Is quad `a` fully contained (i.e. covered by) quad `b`? For that to happen,