diff --git a/include/llmr/shader/plain_shader.hpp b/include/llmr/shader/plain_shader.hpp index d833375eb..bf768f884 100644 --- a/include/llmr/shader/plain_shader.hpp +++ b/include/llmr/shader/plain_shader.hpp @@ -13,15 +13,12 @@ public: void setColor(float r, float g, float b, float a); void setColor(const std::array& color); - void setOpacity(float opacity); private: int32_t a_pos = -1; std::array color = {{}}; int32_t u_color = -1; - float opacity = 0.0f; - float u_opacity = 0.0f; }; } diff --git a/src/renderer/painter.cpp b/src/renderer/painter.cpp index ee6c625cb..18819a6bd 100644 --- a/src/renderer/painter.cpp +++ b/src/renderer/painter.cpp @@ -130,8 +130,13 @@ void Painter::drawClippingMask(const mat4& matrix, uint8_t clip_id) { gl::group group("mask"); plainShader->setMatrix(matrix); - plainShader->setColor(style.computed.background.color); - plainShader->setOpacity(style.computed.background.opacity); + Color background = style.computed.background.color; + background[0] *= style.computed.background.opacity; + background[1] *= style.computed.background.opacity; + background[2] *= style.computed.background.opacity; + background[3] *= style.computed.background.opacity; + + plainShader->setColor(background); glStencilFunc(GL_ALWAYS, clip_id, 0xFF); glDrawArrays(GL_TRIANGLES, 0, (GLsizei)tileStencilBuffer.index()); diff --git a/src/shader/plain.fragment.glsl b/src/shader/plain.fragment.glsl index 0761ea5e6..8df552c17 100644 --- a/src/shader/plain.fragment.glsl +++ b/src/shader/plain.fragment.glsl @@ -1,6 +1,5 @@ uniform vec4 u_color; -uniform float u_opacity; void main() { - gl_FragColor = u_color * u_opacity; + gl_FragColor = u_color; } diff --git a/src/shader/plain_shader.cpp b/src/shader/plain_shader.cpp index c9bb3e59d..ac4b7edeb 100644 --- a/src/shader/plain_shader.cpp +++ b/src/shader/plain_shader.cpp @@ -20,13 +20,11 @@ PlainShader::PlainShader() u_matrix = glGetUniformLocation(program, "u_matrix"); u_color = glGetUniformLocation(program, "u_color"); - u_opacity = glGetUniformLocation(program, "u_opacity"); // fprintf(stderr, "PlainShader:\n"); // fprintf(stderr, " - a_pos: %d\n", a_pos); // fprintf(stderr, " - u_matrix: %d\n", u_matrix); // fprintf(stderr, " - u_color: %d\n", u_color); - // fprintf(stderr, " - u_opacity: %f\n", u_opacity); } void PlainShader::bind(char *offset) { @@ -44,10 +42,3 @@ void PlainShader::setColor(const std::array& new_color) { void PlainShader::setColor(float r, float g, float b, float a) { setColor({{ r, g, b, a }}); } - -void PlainShader::setOpacity(float new_opacity) { - if (opacity != new_opacity) { - glUniform1f(u_opacity, new_opacity); - opacity = new_opacity; - } -} diff --git a/src/shader/shaders_gl.cpp b/src/shader/shaders_gl.cpp index bde4fa65c..5bc95082d 100644 --- a/src/shader/shaders_gl.cpp +++ b/src/shader/shaders_gl.cpp @@ -24,7 +24,7 @@ const shader_source llmr::shaders[SHADER_COUNT] = { }, { "#version 120\nattribute vec2 a_pos;\nuniform mat4 u_matrix;\nvoid main ()\n{\n vec4 tmpvar_1;\n tmpvar_1.zw = vec2(0.0, 1.0);\n tmpvar_1.xy = a_pos;\n gl_Position = (u_matrix * tmpvar_1);\n}\n\n", - "#version 120\nuniform vec4 u_color;\nuniform float u_opacity;\nvoid main ()\n{\n gl_FragColor = (u_color * u_opacity);\n}\n\n", + "#version 120\nuniform vec4 u_color;\nvoid main ()\n{\n gl_FragColor = u_color;\n}\n\n", }, { "#version 120\nattribute vec2 a_pos;\nuniform mat4 u_matrix;\nuniform float u_size;\nvoid main ()\n{\n vec4 tmpvar_1;\n tmpvar_1.zw = vec2(0.0, 1.0);\n tmpvar_1.xy = a_pos;\n gl_Position = (u_matrix * tmpvar_1);\n gl_PointSize = u_size;\n}\n\n", diff --git a/src/shader/shaders_gles2.cpp b/src/shader/shaders_gles2.cpp index e6a174da5..e30b650bd 100644 --- a/src/shader/shaders_gles2.cpp +++ b/src/shader/shaders_gles2.cpp @@ -24,7 +24,7 @@ const shader_source llmr::shaders[SHADER_COUNT] = { }, { "precision highp float;\nattribute vec2 a_pos;\nuniform mat4 u_matrix;\nvoid main ()\n{\n vec4 tmpvar_1;\n tmpvar_1.zw = vec2(0.0, 1.0);\n tmpvar_1.xy = a_pos;\n gl_Position = (u_matrix * tmpvar_1);\n}\n\n", - "precision highp float;\nuniform vec4 u_color;\nuniform float u_opacity;\nvoid main ()\n{\n gl_FragColor = (u_color * u_opacity);\n}\n\n", + "precision highp float;\nuniform vec4 u_color;\nvoid main ()\n{\n gl_FragColor = u_color;\n}\n\n", }, { "precision highp float;\nattribute vec2 a_pos;\nuniform mat4 u_matrix;\nuniform float u_size;\nvoid main ()\n{\n vec4 tmpvar_1;\n tmpvar_1.zw = vec2(0.0, 1.0);\n tmpvar_1.xy = a_pos;\n gl_Position = (u_matrix * tmpvar_1);\n gl_PointSize = u_size;\n}\n\n",