From 33ba4052b67436b09f1dff21991673f6ea37275e Mon Sep 17 00:00:00 2001 From: Alexander Shalamov Date: Mon, 18 Nov 2019 15:34:16 +0200 Subject: [core] Use linear filtering for icons in text for zoom dependent text-size --- src/mbgl/renderer/layers/render_symbol_layer.cpp | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/mbgl/renderer/layers/render_symbol_layer.cpp b/src/mbgl/renderer/layers/render_symbol_layer.cpp index 77a5813455..17376fd864 100644 --- a/src/mbgl/renderer/layers/render_symbol_layer.cpp +++ b/src/mbgl/renderer/layers/render_symbol_layer.cpp @@ -198,13 +198,6 @@ void drawText(const DrawFn& draw, const gfx::TextureBinding glyphTextureBinding{tile.getGlyphAtlasTexture().getResource(), gfx::TextureFilterType::Linear}; - const bool transformed = values.rotationAlignment == AlignmentType::Map || parameters.state.getPitch() != 0; - const Size& iconTexSize = tile.getIconAtlasTexture().size; - const gfx::TextureBinding iconTextureBinding{tile.getIconAtlasTexture().getResource(), - parameters.state.isChanging() || transformed - ? gfx::TextureFilterType::Linear - : gfx::TextureFilterType::Nearest}; - const auto drawGlyphs = [&](auto& program, const auto& uniforms, const auto& textures, SymbolSDFPart part) { draw(program, uniforms, @@ -218,6 +211,15 @@ void drawText(const DrawFn& draw, }; if (bucket.iconsInText) { + const ZoomEvaluatedSize partiallyEvaluatedTextSize = + bucket.textSizeBinder->evaluateForZoom(parameters.state.getZoom()); + const bool transformed = values.rotationAlignment == AlignmentType::Map || parameters.state.getPitch() != 0; + const Size& iconTexSize = tile.getIconAtlasTexture().size; + const gfx::TextureBinding iconTextureBinding{ + tile.getIconAtlasTexture().getResource(), + parameters.state.isChanging() || transformed || !partiallyEvaluatedTextSize.isZoomConstant + ? gfx::TextureFilterType::Linear + : gfx::TextureFilterType::Nearest}; if (values.hasHalo) { drawGlyphs(parameters.programs.getSymbolLayerPrograms().symbolTextAndIcon, SymbolTextAndIconProgram::layoutUniformValues(bucket.hasVariablePlacement, -- cgit v1.2.1