don't respect opacity when prerendering tile; we do opacity at composite-time

This commit is contained in:
Konstantin Käfer
2014-05-26 15:38:51 +02:00
parent 6ed5c0ddf3
commit 2d0037b112
2 changed files with 9 additions and 2 deletions

View File

@@ -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);

View File

@@ -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());