Files

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 ShaderManager pipeline.
    • The shader must sample the current frame buffer background and render a blurred version behind the active window's background.
  • Global Integration:
    • The effect must automatically apply to all standard ImGui panels and popups.
    • Integrate with imgui.begin() and imgui.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.
  • Persistence:
    • Save frosted glass parameters to config.toml under the theme or shader section.

Technical Implementation

  • Shader Pipeline: Use PyOpenGL to 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_uniforms and 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).