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.cpp27
1 files changed, 12 insertions, 15 deletions
diff --git a/src/mbgl/renderer/painter_symbol.cpp b/src/mbgl/renderer/painter_symbol.cpp
index 6f2d9581eb..4c2847401f 100644
--- a/src/mbgl/renderer/painter_symbol.cpp
+++ b/src/mbgl/renderer/painter_symbol.cpp
@@ -1,6 +1,7 @@
#include <mbgl/renderer/painter.hpp>
#include <mbgl/renderer/paint_parameters.hpp>
#include <mbgl/renderer/symbol_bucket.hpp>
+#include <mbgl/renderer/render_tile.hpp>
#include <mbgl/style/layers/symbol_layer.hpp>
#include <mbgl/style/layers/symbol_layer_impl.hpp>
#include <mbgl/geometry/glyph_atlas.hpp>
@@ -15,8 +16,7 @@ namespace mbgl {
using namespace style;
void Painter::renderSDF(SymbolBucket &bucket,
- const UnwrappedTileID &tileID,
- const mat4 &matrix,
+ const RenderTile& tile,
float sdfFontSize,
std::array<float, 2> texsize,
SDFShader& sdfShader,
@@ -37,7 +37,7 @@ void Painter::renderSDF(SymbolBucket &bucket,
TranslateAnchorType translateAnchor,
float paintSize)
{
- mat4 vtxMatrix = translatedMatrix(matrix, translate, tileID, translateAnchor);
+ mat4 vtxMatrix = translatedMatrix(tile.matrix, translate, tile.id, translateAnchor);
// If layerStyle.size > bucket.info.fontSize then labels may collide
float fontSize = paintSize;
@@ -51,7 +51,7 @@ void Painter::renderSDF(SymbolBucket &bucket,
if (pitchWithMap) {
gammaScale = 1.0 / std::cos(state.getPitch());
- extrudeScale.fill(tileID.pixelsToTileUnits(1, state.getZoom()) * fontScale);
+ extrudeScale.fill(tile.id.pixelsToTileUnits(1, state.getZoom()) * fontScale);
} else {
gammaScale = 1.0;
extrudeScale = {{
@@ -114,8 +114,7 @@ void Painter::renderSDF(SymbolBucket &bucket,
void Painter::renderSymbol(PaintParameters& parameters,
SymbolBucket& bucket,
const SymbolLayer& layer,
- const UnwrappedTileID& tileID,
- const mat4& matrix) {
+ const RenderTile& tile) {
// Abort early.
if (pass == RenderPass::Opaque) {
return;
@@ -167,8 +166,7 @@ void Painter::renderSymbol(PaintParameters& parameters,
if (sdf) {
renderSDF(bucket,
- tileID,
- matrix,
+ tile,
1.0f,
{{ float(activeSpriteAtlas->getWidth()) / 4.0f, float(activeSpriteAtlas->getHeight()) / 4.0f }},
parameters.shaders.sdfIcon,
@@ -188,13 +186,13 @@ void Painter::renderSymbol(PaintParameters& parameters,
layer.impl->iconSize);
} else {
mat4 vtxMatrix =
- translatedMatrix(matrix, paint.iconTranslate, tileID, paint.iconTranslateAnchor);
+ translatedMatrix(tile.matrix, paint.iconTranslate, tile.id, paint.iconTranslateAnchor);
std::array<float, 2> extrudeScale;
const bool alignedWithMap = layout.iconRotationAlignment == AlignmentType::Map;
if (alignedWithMap) {
- extrudeScale.fill(tileID.pixelsToTileUnits(1, state.getZoom()) * fontScale);
+ extrudeScale.fill(tile.id.pixelsToTileUnits(1, state.getZoom()) * fontScale);
} else {
extrudeScale = {{
pixelsToGLUnits[0] * fontScale * state.getAltitude(),
@@ -235,8 +233,7 @@ void Painter::renderSymbol(PaintParameters& parameters,
glyphAtlas->bind(store, config, 0);
renderSDF(bucket,
- tileID,
- matrix,
+ tile,
24.0f,
{{ float(glyphAtlas->width) / 4, float(glyphAtlas->height) / 4 }},
parameters.shaders.sdfGlyph,
@@ -260,11 +257,11 @@ void Painter::renderSymbol(PaintParameters& parameters,
auto& collisionBoxShader = shaders->collisionBox;
config.program = collisionBoxShader.getID();
- collisionBoxShader.u_matrix = matrix;
+ collisionBoxShader.u_matrix = tile.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_scale = std::pow(2, state.getZoom() - tile.id.canonical.z);
collisionBoxShader.u_zoom = state.getZoom() * 10;
- collisionBoxShader.u_maxzoom = (tileID.canonical.z + 1) * 10;
+ collisionBoxShader.u_maxzoom = (tile.id.canonical.z + 1) * 10;
config.lineWidth = 1.0f;
setDepthSublayer(0);