diff options
Diffstat (limited to 'shaders/overlay.frag.glsl')
| -rw-r--r-- | shaders/overlay.frag.glsl | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/shaders/overlay.frag.glsl b/shaders/overlay.frag.glsl index 86c0188b..b5ac8d5a 100644 --- a/shaders/overlay.frag.glsl +++ b/shaders/overlay.frag.glsl @@ -1,9 +1,17 @@ #version 450 +layout(std140, set = 3, binding = 0) uniform UiUniforms { + float background_opacity; +} u_ui; + layout(location = 0) in vec4 v_color; layout(location = 0) out vec4 o_col; void main() { - o_col = v_color; + // Preserve shape coverage for destination subtraction. The pipeline uses + // the matching opacity blend constant for source alpha, so graphics laid + // over a background with the same opacity do not accumulate opaque seams. + // Text/cursor draw groups bind opacity 1 instead. + o_col = vec4(v_color.rgb * clamp(u_ui.background_opacity, 0.0, 1.0), v_color.a); } |
