2.2 KiB
2.2 KiB
Specification: Frosted Glass Background Effect
Overview
Implement a high-fidelity "frosted glass" (acrylic) background effect for all GUI panels and popups within the Manual Slop interface. This effect will use a GPU-resident shader to blur the content behind active windows, improving readability and visual depth while preventing background text from clashing with foreground UI elements.
Functional Requirements
- GPU-Accelerated Blur:
- Implement a GLSL fragment shader (e.g., Gaussian or Kawase blur) within the existing
ShaderManagerpipeline. - The shader must sample the current frame buffer background and render a blurred version behind the active window's background.
- Implement a GLSL fragment shader (e.g., Gaussian or Kawase blur) within the existing
- Global Integration:
- The effect must automatically apply to all standard ImGui panels and popups.
- Integrate with
imgui.begin()andimgui.begin_popup()(or via a reusable wrapper helper).
- Real-Time Tuning:
- Add controls to the Live Shader Editor to adjust the following parameters:
- Blur Radius: Control the intensity of the Gaussian blur.
- Tint Intensity: Control the strength of the "frost" overlay color.
- Base Opacity: Control the overall transparency of the frosted layer.
- Add controls to the Live Shader Editor to adjust the following parameters:
- Persistence:
- Save frosted glass parameters to
config.tomlunder thethemeorshadersection.
- Save frosted glass parameters to
Technical Implementation
- Shader Pipeline: Use
PyOpenGLto manage a dedicated background texture/FBO for sampling. - Coordinate Mapping: Ensure the blur shader correctly maps screen coordinates to the region behind the current ImGui window.
- State Integration: Store tuning parameters in
App.shader_uniformsand ensure they are updated every frame.
Acceptance Criteria
- Panels and popups have a distinct, blurred background that clearly separates them from the content behind them.
- Changing the "Blur Radius" slider in the Shader Editor immediately updates the visual frostiness.
- The effect remains stable during window dragging and resizing.
- No significant performance degradation (maintaining target FPS).
Out of Scope
- Implementing different blur types (e.g., motion blur, radial blur).
- Per-panel unique blur settings (initially global only).