From 2dbcb6a7d978089b07cedd2269ca3a9c1926c4fe Mon Sep 17 00:00:00 2001 From: Leon Styhre Date: Sun, 28 Feb 2021 12:59:08 +0100 Subject: [PATCH] Fixed an issue where the GLSL shader alpha values would be handled differently depending on the graphics driver. --- resources/shaders/glsl/blur_horizontal.glsl | 4 +++- resources/shaders/glsl/blur_vertical.glsl | 4 +++- resources/shaders/glsl/dim.glsl | 4 +++- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/resources/shaders/glsl/blur_horizontal.glsl b/resources/shaders/glsl/blur_horizontal.glsl index 9baac55a0..4cbd1643a 100644 --- a/resources/shaders/glsl/blur_horizontal.glsl +++ b/resources/shaders/glsl/blur_horizontal.glsl @@ -105,7 +105,9 @@ void main() float sampleWeights4 = 0.024067905; float sampleWeights5 = 0.0021112196; - vec4 color = COMPAT_TEXTURE(Source, texcoord) * sampleWeights1; + // Alpha is handled differently depending on the graphics drivers, so set it explicitly to 1.0. + vec4 color = COMPAT_TEXTURE(Source, texcoord); + color = vec4(color.rgb, 1.0) * sampleWeights1; // unroll the loop color += COMPAT_TEXTURE(Source, texcoord + vec2(sampleOffsets2* HW * PIXEL_SIZE.x, 0.0)) * sampleWeights2; diff --git a/resources/shaders/glsl/blur_vertical.glsl b/resources/shaders/glsl/blur_vertical.glsl index 3348d94f8..2810c244e 100644 --- a/resources/shaders/glsl/blur_vertical.glsl +++ b/resources/shaders/glsl/blur_vertical.glsl @@ -106,7 +106,9 @@ void main() float sampleWeights4 = 0.024067905; float sampleWeights5 = 0.0021112196; - vec4 color = COMPAT_TEXTURE(Source, texcoord) * sampleWeights1; + // Alpha is handled differently depending on the graphics drivers, so set it explicitly to 1.0. + vec4 color = COMPAT_TEXTURE(Source, texcoord); + color = vec4(color.rgb, 1.0) * sampleWeights1; // unroll the loop color += COMPAT_TEXTURE(Source, texcoord + vec2(0.0, sampleOffsets2* VW * PIXEL_SIZE.y)) * sampleWeights2; diff --git a/resources/shaders/glsl/dim.glsl b/resources/shaders/glsl/dim.glsl index d3b5781c4..efcc1651b 100644 --- a/resources/shaders/glsl/dim.glsl +++ b/resources/shaders/glsl/dim.glsl @@ -28,7 +28,9 @@ varying vec2 vTexCoord; void main() { vec4 dimColor = vec4(dimValue, dimValue, dimValue, 1.0); - vec4 color = texture2D(myTexture, vTexCoord) * dimColor; + vec4 color = texture2D(myTexture, vTexCoord); + // Alpha is handled differently depending on the graphics drivers, so set it explicitly to 1.0. + color = vec4(color.rgb, 1.0) * dimColor; gl_FragColor = color; }