summaryrefslogtreecommitdiff
path: root/shaders/image.frag.glsl
diff options
context:
space:
mode:
Diffstat (limited to 'shaders/image.frag.glsl')
-rw-r--r--shaders/image.frag.glsl6
1 files changed, 6 insertions, 0 deletions
diff --git a/shaders/image.frag.glsl b/shaders/image.frag.glsl
index 2a3c2038..0cc1b2ee 100644
--- a/shaders/image.frag.glsl
+++ b/shaders/image.frag.glsl
@@ -1,6 +1,9 @@
#version 450
layout(set = 2, binding = 0) uniform sampler2D u_image;
+layout(std140, set = 3, binding = 0) uniform UiUniforms {
+ float background_opacity;
+} u_ui;
layout(location = 0) in vec2 v_uv;
layout(location = 1) in vec2 v_panel_uv;
@@ -19,6 +22,9 @@ float cellNoise(uint serial, uint col, uint row) {
void main() {
vec4 source = texture(u_image, v_uv);
+ // Keep source coverage for destination subtraction; the pipeline scales
+ // source alpha by the same opacity through its alpha blend constant.
+ source.rgb *= clamp(u_ui.background_opacity, 0.0, 1.0);
uint effect = v_effect.x & 0x7fffffffu;
bool oldLayer = (v_effect.x & 0x80000000u) != 0u;
float progress = clamp(uintBitsToFloat(v_effect.y), 0.0, 1.0);