summaryrefslogtreecommitdiff
path: root/src/mbgl/renderer
diff options
context:
space:
mode:
Diffstat (limited to 'src/mbgl/renderer')
-rw-r--r--src/mbgl/renderer/layers/render_circle_layer.cpp3
-rw-r--r--src/mbgl/renderer/layers/render_symbol_layer.cpp9
-rw-r--r--src/mbgl/renderer/tile_pyramid.cpp8
-rw-r--r--src/mbgl/renderer/tile_pyramid.hpp4
4 files changed, 14 insertions, 10 deletions
diff --git a/src/mbgl/renderer/layers/render_circle_layer.cpp b/src/mbgl/renderer/layers/render_circle_layer.cpp
index de4e5720bf..a877cb30a1 100644
--- a/src/mbgl/renderer/layers/render_circle_layer.cpp
+++ b/src/mbgl/renderer/layers/render_circle_layer.cpp
@@ -54,6 +54,7 @@ void RenderCircleLayer::render(PaintParameters& parameters, RenderSource*) {
const bool scaleWithMap = evaluated.get<CirclePitchScale>() == CirclePitchScaleType::Map;
const bool pitchWithMap = evaluated.get<CirclePitchAlignment>() == AlignmentType::Map;
+ const float cameraToCenterDistance = parameters.state.getCameraToCenterDistance();
for (const RenderTile& tile : renderTiles) {
auto bucket_ = tile.tile.getBucket<CircleBucket>(*baseImpl);
@@ -79,7 +80,7 @@ void RenderCircleLayer::render(PaintParameters& parameters, RenderSource*) {
tile.id.pixelsToTileUnits(1, parameters.state.getZoom()),
tile.id.pixelsToTileUnits(1, parameters.state.getZoom()) }}
: parameters.pixelsToGLUnits },
- uniforms::u_camera_to_center_distance::Value{ parameters.state.getCameraToCenterDistance() },
+ uniforms::u_camera_to_center_distance::Value{ cameraToCenterDistance },
uniforms::u_pitch_with_map::Value{ pitchWithMap }
},
paintPropertyBinders,
diff --git a/src/mbgl/renderer/layers/render_symbol_layer.cpp b/src/mbgl/renderer/layers/render_symbol_layer.cpp
index 63fcb6cfd5..615df577d2 100644
--- a/src/mbgl/renderer/layers/render_symbol_layer.cpp
+++ b/src/mbgl/renderer/layers/render_symbol_layer.cpp
@@ -232,6 +232,9 @@ void RenderSymbolLayer::render(PaintParameters& parameters, RenderSource*) {
}
}
+ const float cameraToCenterDistance = parameters.state.getCameraToCenterDistance();
+ const float overscaleFactor = tile.tile.id.overscaleFactor();
+
if (bucket.hasCollisionBoxData()) {
static const style::Properties<>::PossiblyEvaluated properties {};
static const CollisionBoxProgram::PaintPropertyBinders paintAttributeData(properties, 0);
@@ -253,7 +256,7 @@ void RenderSymbolLayer::render(PaintParameters& parameters, RenderSource*) {
CollisionBoxProgram::UniformValues {
uniforms::u_matrix::Value{ tile.matrix },
uniforms::u_extrude_scale::Value{ extrudeScale },
- uniforms::u_camera_to_center_distance::Value{ parameters.state.getCameraToCenterDistance() }
+ uniforms::u_camera_to_center_distance::Value{ cameraToCenterDistance }
},
*bucket.collisionBox.vertexBuffer,
*bucket.collisionBox.dynamicVertexBuffer,
@@ -287,8 +290,8 @@ void RenderSymbolLayer::render(PaintParameters& parameters, RenderSource*) {
CollisionCircleProgram::UniformValues {
uniforms::u_matrix::Value{ tile.matrix },
uniforms::u_extrude_scale::Value{ extrudeScale },
- uniforms::u_overscale_factor::Value{ float(tile.tile.id.overscaleFactor()) },
- uniforms::u_camera_to_center_distance::Value{ parameters.state.getCameraToCenterDistance() }
+ uniforms::u_overscale_factor::Value{ overscaleFactor },
+ uniforms::u_camera_to_center_distance::Value{ cameraToCenterDistance }
},
*bucket.collisionCircle.vertexBuffer,
*bucket.collisionCircle.dynamicVertexBuffer,
diff --git a/src/mbgl/renderer/tile_pyramid.cpp b/src/mbgl/renderer/tile_pyramid.cpp
index fd4356ca02..3fcdabd98f 100644
--- a/src/mbgl/renderer/tile_pyramid.cpp
+++ b/src/mbgl/renderer/tile_pyramid.cpp
@@ -240,7 +240,7 @@ void TilePyramid::update(const std::vector<Immutable<style::Layer::Impl>>& layer
}
}
-void TilePyramid::handleWrapJump(float lng) {
+void TilePyramid::handleWrapJump(double lng) {
// On top of the regular z/x/y values, TileIDs have a `wrap` value that specify
// which cppy of the world the tile belongs to. For example, at `lng: 10` you
// might render z/x/y/0 while at `lng: 370` you would render z/x/y/1.
@@ -257,9 +257,9 @@ void TilePyramid::handleWrapJump(float lng) {
//
// This enables us to reuse the tiles at more ideal locations and prevent flickering.
- const float lngDifference = lng - prevLng;
- const float worldDifference = lngDifference / 360;
- const int wrapDelta = ::round(worldDifference);
+ const double lngDifference = lng - prevLng;
+ const double worldDifference = lngDifference / 360;
+ const int16_t wrapDelta = ::round(worldDifference);
prevLng = lng;
if (wrapDelta) {
diff --git a/src/mbgl/renderer/tile_pyramid.hpp b/src/mbgl/renderer/tile_pyramid.hpp
index 4e5f50fd52..c9d14af449 100644
--- a/src/mbgl/renderer/tile_pyramid.hpp
+++ b/src/mbgl/renderer/tile_pyramid.hpp
@@ -49,7 +49,7 @@ public:
std::vector<std::reference_wrapper<RenderTile>> getRenderTiles();
Tile* getTile(const OverscaledTileID&);
- void handleWrapJump(float lng);
+ void handleWrapJump(double lng);
std::unordered_map<std::string, std::vector<Feature>>
queryRenderedFeatures(const ScreenLineString& geometry,
@@ -75,7 +75,7 @@ public:
TileObserver* observer = nullptr;
- float prevLng = 0;
+ double prevLng = 0;
};
} // namespace mbgl