diff options
Diffstat (limited to 'src/mbgl/renderer/painter_symbol.cpp')
-rw-r--r-- | src/mbgl/renderer/painter_symbol.cpp | 39 |
1 files changed, 20 insertions, 19 deletions
diff --git a/src/mbgl/renderer/painter_symbol.cpp b/src/mbgl/renderer/painter_symbol.cpp index b80f289274..4559b02778 100644 --- a/src/mbgl/renderer/painter_symbol.cpp +++ b/src/mbgl/renderer/painter_symbol.cpp @@ -170,7 +170,7 @@ void Painter::renderSymbol(SymbolBucket& bucket, matrix, 1.0f, {{ float(activeSpriteAtlas->getWidth()) / 4.0f, float(activeSpriteAtlas->getHeight()) / 4.0f }}, - isOverdraw() ? *sdfIconOverdrawShader : *sdfIconShader, + isOverdraw() ? *overdrawShader.sdfIcon : *shader.sdfIcon, &SymbolBucket::drawIcons, layout.iconRotationAlignment, // icon-pitch-alignment is not yet implemented @@ -200,26 +200,26 @@ void Painter::renderSymbol(SymbolBucket& bucket, } const bool overdraw = isOverdraw(); - const auto& shaderIcon = overdraw ? iconOverdrawShader : iconShader; + auto& iconShader = overdraw ? *overdrawShader.icon : *shader.icon; - config.program = shaderIcon->getID(); - shaderIcon->u_matrix = vtxMatrix; - shaderIcon->u_extrude_scale = exScale; - shaderIcon->u_texsize = {{ float(activeSpriteAtlas->getWidth()) / 4.0f, float(activeSpriteAtlas->getHeight()) / 4.0f }}; - shaderIcon->u_rotate_with_map = alignedWithMap; - shaderIcon->u_texture = 0; + config.program = iconShader.getID(); + iconShader.u_matrix = vtxMatrix; + iconShader.u_extrude_scale = exScale; + iconShader.u_texsize = {{ float(activeSpriteAtlas->getWidth()) / 4.0f, float(activeSpriteAtlas->getHeight()) / 4.0f }}; + iconShader.u_rotate_with_map = alignedWithMap; + iconShader.u_texture = 0; // adjust min/max zooms for variable font sies float zoomAdjust = std::log(fontSize / layout.iconSize) / std::log(2); - shaderIcon->u_zoom = (state.getZoom() - zoomAdjust) * 10; // current zoom level - shaderIcon->u_opacity = paint.iconOpacity; + iconShader.u_zoom = (state.getZoom() - zoomAdjust) * 10; // current zoom level + iconShader.u_opacity = paint.iconOpacity; config.activeTexture = GL_TEXTURE1; frameHistory.bind(store); - shaderIcon->u_fadetexture = 1; + iconShader.u_fadetexture = 1; setDepthSublayer(0); - bucket.drawIcons(*shaderIcon, store, overdraw); + bucket.drawIcons(iconShader, store, overdraw); } } @@ -239,7 +239,7 @@ void Painter::renderSymbol(SymbolBucket& bucket, matrix, 24.0f, {{ float(glyphAtlas->width) / 4, float(glyphAtlas->height) / 4 }}, - isOverdraw() ? *sdfGlyphOverdrawShader : *sdfGlyphShader, + isOverdraw() ? *overdrawShader.sdfGlyph : *shader.sdfGlyph, &SymbolBucket::drawGlyphs, layout.textRotationAlignment, layout.textPitchAlignment, @@ -258,16 +258,17 @@ void Painter::renderSymbol(SymbolBucket& bucket, config.stencilOp.reset(); config.stencilTest = GL_TRUE; - config.program = collisionBoxShader->getID(); - collisionBoxShader->u_matrix = matrix; + auto& collisionBoxShader = *shader.collisionBox; + config.program = collisionBoxShader.getID(); + collisionBoxShader.u_matrix = matrix; // TODO: This was the overscaled z instead of the canonical z. - collisionBoxShader->u_scale = std::pow(2, state.getZoom() - tileID.canonical.z); - collisionBoxShader->u_zoom = state.getZoom() * 10; - collisionBoxShader->u_maxzoom = (tileID.canonical.z + 1) * 10; + collisionBoxShader.u_scale = std::pow(2, state.getZoom() - tileID.canonical.z); + collisionBoxShader.u_zoom = state.getZoom() * 10; + collisionBoxShader.u_maxzoom = (tileID.canonical.z + 1) * 10; config.lineWidth = 1.0f; setDepthSublayer(0); - bucket.drawCollisionBoxes(*collisionBoxShader, store); + bucket.drawCollisionBoxes(collisionBoxShader, store); } |