Switch the live-blur behind the modal from a per-frame capture (which flickered from per-frame re-blur non-determinism) to capture-once-on-open, re-captured only on resize. - Insert the acrylic live-capture callback into the overlay draw list ONLY for a few frames on open and whenever the viewport size changes; other frames reuse the frozen blurred snapshot (blurCacheValid_), so there's no per-frame capture/re-blur cost. State: s_pf_was_open (reset on close), s_pf_capture_frames, s_pf_capture_w/h. Two fixes from an adversarial review of the timing/pipeline interaction: - Do NOT override the backdrop blurRadius to 40. applyBlur caches one blurred buffer keyed on radius, shared with every glass panel (market cards + the modal preview card, radius ~30). A different radius thrashed that cache every frame and made the backdrop sample the wrong blur, defeating the frozen-blur guarantee. Using the theme card's radius keeps one blur serving all surfaces, frozen. - Skip the blur on the overlay's first frame (allowBlur=false) — the live content isn't captured until that frame's render, so blurring then would show stale/background pixels for one frame; draw the plain opaque scrim instead. Compiles on OpenGL (Linux) + DX11 (Windows). Needs on-device visual verification. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
108 KiB
108 KiB