From 69c1a1259db22e49fe2735aae021637deffc2935 Mon Sep 17 00:00:00 2001 From: Leon Styhre <leon@leonstyhre.com> Date: Sat, 12 Feb 2022 17:40:25 +0100 Subject: [PATCH] Added opacity support to the BGRA to RGBA shader. --- es-core/src/renderers/Renderer_GL21.cpp | 2 ++ resources/shaders/glsl/bgra_to_rgba.glsl | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/es-core/src/renderers/Renderer_GL21.cpp b/es-core/src/renderers/Renderer_GL21.cpp index 0dbc07221..199edb421 100644 --- a/es-core/src/renderers/Renderer_GL21.cpp +++ b/es-core/src/renderers/Renderer_GL21.cpp @@ -363,6 +363,8 @@ namespace Renderer if (runShader) { runShader->activateShaders(); runShader->setModelViewProjectionMatrix(getProjectionMatrix() * trans); + if (vertices->opacity < 1.0f) + runShader->setOpacity(vertices->opacity); GL_CHECK_ERROR(glDrawArrays(GL_TRIANGLE_STRIP, 0, numVertices)); runShader->deactivateShaders(); } diff --git a/resources/shaders/glsl/bgra_to_rgba.glsl b/resources/shaders/glsl/bgra_to_rgba.glsl index aae41ab9a..618b868bd 100644 --- a/resources/shaders/glsl/bgra_to_rgba.glsl +++ b/resources/shaders/glsl/bgra_to_rgba.glsl @@ -21,13 +21,14 @@ void main(void) #elif defined(FRAGMENT) // Fragment section of code: +uniform float opacity = 1.0; uniform sampler2D myTexture; varying vec2 vTexCoord; void main() { vec4 color = texture2D(myTexture, vTexCoord); - gl_FragColor = vec4(color.bgra); + gl_FragColor = vec4(color.bgr, color.a * opacity); } #endif