feat(blur): the brand logo cannot be blurred

The blur is universal, so it would swallow the logo along with everything else. The compositor
now defers every visible brand logo: skipped in both element loops, blitted immediately AFTER
the blur group, before the flash/social/ticker overlays. One logo per scene, so it is cheap.

Preview mirrors it: the staged scene's brand logo is drawn above the blur host (StagedBrandLogo),
so what you see in the editor is what the encoder gets.

Test: a blur covering the logo's area leaves the logo's pixels exactly white while the coloured
background beneath it blends.
This commit is contained in:
2026-11-01 13:32:23 -08:00
parent bb51164f2f
commit 9b337ad91b
5 changed files with 115 additions and 0 deletions
+5
View File
@@ -97,6 +97,11 @@ public partial class MainViewModel
Height = BrandLogoHeight,
};
/// <summary>The staged scene's brand logo, exposed so the preview can draw it ABOVE the universal
/// blur (the compositor blits it after the blur group — the logo is never obscured).</summary>
public Source? StagedBrandLogo =>
StagedScene?.Elements.OfType<Source>().FirstOrDefault(s => s.IsBrandLogo);
/// <summary>Exactly one brand logo per scene, placed directly above the background, carrying
/// the current App Settings image.</summary>
internal void EnsureBrandLogos()