From 2d0037b11203a7f7c186ca088dab37938d772f3b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Konstantin=20Ka=CC=88fer?= Date: Mon, 26 May 2014 15:38:51 +0200 Subject: [PATCH] don't respect opacity when prerendering tile; we do opacity at composite-time --- src/renderer/painter_fill.cpp | 10 ++++++++-- src/renderer/painter_prerender.cpp | 1 + 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/renderer/painter_fill.cpp b/src/renderer/painter_fill.cpp index 8d86716aa..6fe4c2cb9 100644 --- a/src/renderer/painter_fill.cpp +++ b/src/renderer/painter_fill.cpp @@ -174,6 +174,12 @@ void Painter::renderFill(FillBucket& bucket, const std::string& layer_name, cons glViewport(0, 0, properties.prerenderSize, properties.prerenderSize); + const FillProperties modifiedProperties = [&]{ + FillProperties modifiedProperties = properties; + modifiedProperties.opacity = 1; + return modifiedProperties; + }(); + // When drawing the fill, we want to draw a 16.66% buffer around too, so we // essentially downscale everyting, and then upscale it later when rendering. @@ -183,9 +189,9 @@ void Painter::renderFill(FillBucket& bucket, const std::string& layer_name, cons matrix::translate(vtxMatrix, vtxMatrix, 0, -4096, 0); pass = Opaque; - renderFill(bucket, properties, id, vtxMatrix); + renderFill(bucket, modifiedProperties, id, vtxMatrix); pass = Translucent; - renderFill(bucket, properties, id, vtxMatrix); + renderFill(bucket, modifiedProperties, id, vtxMatrix); bucket.prerendered->blur(*this, properties.prerenderBlur); diff --git a/src/renderer/painter_prerender.cpp b/src/renderer/painter_prerender.cpp index 7d6abcb35..be78487f3 100644 --- a/src/renderer/painter_prerender.cpp +++ b/src/renderer/painter_prerender.cpp @@ -17,6 +17,7 @@ void Painter::renderPrerenderedTexture(Bucket &bucket, const GenericProperties & glActiveTexture(GL_TEXTURE0); rasterShader->setImage(0); rasterShader->setBuffer(buffer); + rasterShader->setOpacity(properties.opacity); bucket.prerendered->bindTexture(); coveringRasterArray.bind(*rasterShader, tileStencilBuffer, BUFFER_OFFSET(0)); glDrawArrays(GL_TRIANGLES, 0, (GLsizei)tileStencilBuffer.index());