feat(effects): overlay-time live-framebuffer blur behind the portfolio modal
The acrylic system only blurred a frozen snapshot of the static app background. Add an overlay-time re-capture so the Manage-portfolio modal blurs the LIVE tab content behind it. - AcrylicMaterial::captureLiveFramebuffer() (GL blit of FB 0 / DX11 CopyResource of the backbuffer + no-backend stub) mirrors captureBackgroundDirect but bypasses the dirtyFrames_ gate so it refreshes every frame the overlay is open, forcing a re-blur. - ImGuiAcrylic::GetLiveCaptureCallback() returns a draw callback for it. - market_tab: the modal inserts that callback (+ ImDrawCallback_ResetRenderState) at the START of its overlay draw list, before the backdrop, so the capture holds the app UI drawn below and the backdrop blurs it. On close, InvalidateCapture() re-captures the background so other glass panels don't keep blurring the stale live capture. - Panel theme-effects are suppressed during the market render while the modal is open (their foreground-draw-list borders draw above all windows and would otherwise bleed over the overlay). Market tab body is rendered again (no longer skipped). - Backdrop draws the acrylic at full strength (fallbackColor.w=1) over an opaque base so the blurred content reads clearly; lighter dim. Design mapped via an Explore investigation of the capture/blur pipeline; compiles on both OpenGL (Linux) and DX11 (Windows cross-build). Needs on-device visual verification. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -236,6 +236,17 @@ ImDrawCallback GetBackgroundCaptureCallback()
|
||||
return BackgroundCaptureCallback;
|
||||
}
|
||||
|
||||
static void LiveCaptureCallback(const ImDrawList*, const ImDrawCmd*)
|
||||
{
|
||||
if (!s_initialized) return;
|
||||
getAcrylicMaterial().captureLiveFramebuffer();
|
||||
}
|
||||
|
||||
ImDrawCallback GetLiveCaptureCallback()
|
||||
{
|
||||
return LiveCaptureCallback;
|
||||
}
|
||||
|
||||
// ============================================================================
|
||||
// Drawing Functions
|
||||
// ============================================================================
|
||||
@@ -657,6 +668,7 @@ void BeginFrame(int, int) {}
|
||||
void CaptureBackground() {}
|
||||
void InvalidateCapture() {}
|
||||
ImDrawCallback GetBackgroundCaptureCallback() { return nullptr; }
|
||||
ImDrawCallback GetLiveCaptureCallback() { return nullptr; }
|
||||
|
||||
void DrawAcrylicRect(ImDrawList* drawList,
|
||||
const ImVec2& pMin, const ImVec2& pMax,
|
||||
|
||||
Reference in New Issue
Block a user