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:
@@ -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()
|
||||
|
||||
@@ -37,6 +37,7 @@ public partial class MainViewModel
|
||||
// binding that is never re-notified stays collapsed for the rest of the session
|
||||
// (build 1082: the option vanished after the first layout load).
|
||||
OnPropertyChanged(nameof(CanAddBlur));
|
||||
OnPropertyChanged(nameof(StagedBrandLogo));
|
||||
|
||||
SelectedElement = null;
|
||||
if (value != null)
|
||||
|
||||
Reference in New Issue
Block a user