feat(modals): fixed modal-backdrop blur, independent of the acrylic slider
The modal backdrop blur was params.blurRadius (96) scaled by the user's global acrylic blur-strength slider (blurRadiusMultiplier), so lowering the slider also weakened every modal's backdrop. Make the modal blur a fixed hardcoded value. Add AcrylicParams::absoluteBlurRadius: when set, applyBlur() uses the radius as-is and skips the multiplier (threaded through both the GL and DX11 blur paths + the no-op stub). DrawFullWindowBlurBackdrop sets it, so the modal backdrop is always a 96px blur regardless of the slider. Panels/other acrylic still scale with the slider as before. Verified: rendering a modal at blur_multiplier 0.1 vs 2.0 now produces an identical backdrop (max pixel diff 1/255) — previously those were ~9.6px vs ~192px of blur. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -743,6 +743,7 @@ inline void DrawFullWindowBlurBackdrop(ImDrawList* dl, const ImVec2& pMin, const
|
||||
// caller — no other radius contends for the shared, radius-keyed blur cache.
|
||||
auto params = GetCurrentAcrylicTheme().card;
|
||||
params.blurRadius = 96.0f; // strong full-window blur (deeper than panels)
|
||||
params.absoluteBlurRadius = true; // fixed modal blur — independent of the user's acrylic slider
|
||||
params.fallbackColor.w = 1.0f; // full-strength blur so the live content reads
|
||||
effects::ImGuiAcrylic::DrawAcrylicRect(dl, pMin, pMax, params, 0.0f);
|
||||
// Dim over the blur so the floating (card-less) modal reads as foreground. On DARK themes the
|
||||
|
||||
Reference in New Issue
Block a user