summaryrefslogtreecommitdiff
path: root/src/mbgl/renderer/painter_symbol.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mbgl/renderer/painter_symbol.cpp')
-rw-r--r--src/mbgl/renderer/painter_symbol.cpp39
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);
}