From 2d537df252bce2e8d80237f20d7ee86b963e9bb9 Mon Sep 17 00:00:00 2001 From: Georg Lehmann Date: Sat, 12 Feb 2022 17:24:07 +0100 Subject: [PATCH] rendervulkan: Don't calculate a garbage alpha value. --- src/shaders/cs_composite_blit.comp | 9 +++++---- src/shaders/cs_composite_rcas.comp | 4 +--- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/shaders/cs_composite_blit.comp b/src/shaders/cs_composite_blit.comp index f07fc01..1a83186 100644 --- a/src/shaders/cs_composite_blit.comp +++ b/src/shaders/cs_composite_blit.comp @@ -35,10 +35,10 @@ void main() { return; vec2 uv = vec2(coord); - vec4 outputValue = vec4(0.0f); + vec3 outputValue = vec3(0.0f); if (c_layerCount > 0) - outputValue = sampleLayer(0, uv) * u_opacity[0]; + outputValue = sampleLayer(0, uv).rgb * u_opacity[0]; for (int i = 1; i < c_layerCount; i++) { vec4 layerColor = sampleLayer(i, uv); @@ -49,10 +49,11 @@ void main() { // For the other side of things, we need to multiply by (1.0f - (layerColor.a * opacity)) float opacity = u_opacity[i]; float layerAlpha = opacity * layerColor.a; - outputValue = layerColor * opacity + outputValue * (1.0f - layerAlpha); + outputValue = layerColor.rgb * opacity + outputValue * (1.0f - layerAlpha); } - imageStore(dst, ivec2(coord), linearToSrgb(outputValue)); + outputValue = linearToSrgb(outputValue); + imageStore(dst, ivec2(coord), vec4(outputValue, 0)); // Indicator to quickly tell if we're in the compositing path or not. if (c_compositing_debug) diff --git a/src/shaders/cs_composite_rcas.comp b/src/shaders/cs_composite_rcas.comp index b2db6b6..44afabc 100644 --- a/src/shaders/cs_composite_rcas.comp +++ b/src/shaders/cs_composite_rcas.comp @@ -71,9 +71,7 @@ void rcasComposite(uvec2 pos) outputValue = linearToSrgb(outputValue); } - - float undef; - imageStore(dst, ivec2(pos), vec4(outputValue, undef)); + imageStore(dst, ivec2(pos), vec4(outputValue, 0)); if (c_compositing_debug) compositing_debug(pos);