summaryrefslogtreecommitdiff
path: root/src/mbgl/renderer/layers
diff options
context:
space:
mode:
Diffstat (limited to 'src/mbgl/renderer/layers')
-rw-r--r--src/mbgl/renderer/layers/render_background_layer.cpp54
-rw-r--r--src/mbgl/renderer/layers/render_background_layer.hpp2
-rw-r--r--src/mbgl/renderer/layers/render_circle_layer.cpp27
-rw-r--r--src/mbgl/renderer/layers/render_circle_layer.hpp2
-rw-r--r--src/mbgl/renderer/layers/render_custom_layer.cpp15
-rw-r--r--src/mbgl/renderer/layers/render_custom_layer.hpp2
-rw-r--r--src/mbgl/renderer/layers/render_fill_extrusion_layer.cpp71
-rw-r--r--src/mbgl/renderer/layers/render_fill_extrusion_layer.hpp2
-rw-r--r--src/mbgl/renderer/layers/render_fill_layer.cpp49
-rw-r--r--src/mbgl/renderer/layers/render_fill_layer.hpp2
-rw-r--r--src/mbgl/renderer/layers/render_line_layer.cpp45
-rw-r--r--src/mbgl/renderer/layers/render_line_layer.hpp2
-rw-r--r--src/mbgl/renderer/layers/render_raster_layer.cpp28
-rw-r--r--src/mbgl/renderer/layers/render_raster_layer.hpp2
-rw-r--r--src/mbgl/renderer/layers/render_symbol_layer.cpp68
-rw-r--r--src/mbgl/renderer/layers/render_symbol_layer.hpp2
16 files changed, 186 insertions, 187 deletions
diff --git a/src/mbgl/renderer/layers/render_background_layer.cpp b/src/mbgl/renderer/layers/render_background_layer.cpp
index cbf8d2f074..9fddba3f74 100644
--- a/src/mbgl/renderer/layers/render_background_layer.cpp
+++ b/src/mbgl/renderer/layers/render_background_layer.cpp
@@ -1,9 +1,9 @@
#include <mbgl/renderer/layers/render_background_layer.hpp>
#include <mbgl/style/layers/background_layer_impl.hpp>
#include <mbgl/renderer/bucket.hpp>
-#include <mbgl/renderer/painter.hpp>
#include <mbgl/renderer/paint_parameters.hpp>
#include <mbgl/renderer/image_manager.hpp>
+#include <mbgl/renderer/render_static_data.hpp>
#include <mbgl/programs/programs.hpp>
#include <mbgl/programs/fill_program.hpp>
#include <mbgl/util/tile_cover.hpp>
@@ -42,7 +42,7 @@ bool RenderBackgroundLayer::hasTransition() const {
return unevaluated.hasTransition();
}
-void RenderBackgroundLayer::render(Painter& painter, PaintParameters& parameters, RenderSource*) {
+void RenderBackgroundLayer::render(PaintParameters& parameters, RenderSource*) {
// Note that for bottommost layers without a pattern, the background color is drawn with
// glClear rather than this method.
@@ -54,58 +54,58 @@ void RenderBackgroundLayer::render(Painter& painter, PaintParameters& parameters
const FillProgram::PaintPropertyBinders paintAttibuteData(properties, 0);
if (!evaluated.get<BackgroundPattern>().to.empty()) {
- optional<ImagePosition> imagePosA = painter.imageManager->getPattern(evaluated.get<BackgroundPattern>().from);
- optional<ImagePosition> imagePosB = painter.imageManager->getPattern(evaluated.get<BackgroundPattern>().to);
+ optional<ImagePosition> imagePosA = parameters.imageManager.getPattern(evaluated.get<BackgroundPattern>().from);
+ optional<ImagePosition> imagePosB = parameters.imageManager.getPattern(evaluated.get<BackgroundPattern>().to);
if (!imagePosA || !imagePosB)
return;
- painter.imageManager->bind(painter.context, 0);
+ parameters.imageManager.bind(parameters.context, 0);
- for (const auto& tileID : util::tileCover(painter.state, painter.state.getIntegerZoom())) {
+ for (const auto& tileID : util::tileCover(parameters.state, parameters.state.getIntegerZoom())) {
parameters.programs.fillPattern.get(properties).draw(
- painter.context,
+ parameters.context,
gl::Triangles(),
- painter.depthModeForSublayer(0, gl::DepthMode::ReadOnly),
+ parameters.depthModeForSublayer(0, gl::DepthMode::ReadOnly),
gl::StencilMode::disabled(),
- painter.colorModeForRenderPass(),
+ parameters.colorModeForRenderPass(),
FillPatternUniforms::values(
- painter.matrixForTile(tileID),
- painter.context.viewport.getCurrentValue().size,
- painter.imageManager->getPixelSize(),
+ parameters.matrixForTile(tileID),
+ parameters.context.viewport.getCurrentValue().size,
+ parameters.imageManager.getPixelSize(),
*imagePosA,
*imagePosB,
evaluated.get<BackgroundPattern>(),
tileID,
- painter.state
+ parameters.state
),
- painter.tileVertexBuffer,
- painter.quadTriangleIndexBuffer,
- painter.tileTriangleSegments,
+ parameters.staticData.tileVertexBuffer,
+ parameters.staticData.quadTriangleIndexBuffer,
+ parameters.staticData.tileTriangleSegments,
paintAttibuteData,
properties,
- painter.state.getZoom(),
+ parameters.state.getZoom(),
getID()
);
}
} else {
- for (const auto& tileID : util::tileCover(painter.state, painter.state.getIntegerZoom())) {
+ for (const auto& tileID : util::tileCover(parameters.state, parameters.state.getIntegerZoom())) {
parameters.programs.fill.get(properties).draw(
- painter.context,
+ parameters.context,
gl::Triangles(),
- painter.depthModeForSublayer(0, gl::DepthMode::ReadOnly),
+ parameters.depthModeForSublayer(0, gl::DepthMode::ReadOnly),
gl::StencilMode::disabled(),
- painter.colorModeForRenderPass(),
+ parameters.colorModeForRenderPass(),
FillProgram::UniformValues {
- uniforms::u_matrix::Value{ painter.matrixForTile(tileID) },
- uniforms::u_world::Value{ painter.context.viewport.getCurrentValue().size },
+ uniforms::u_matrix::Value{ parameters.matrixForTile(tileID) },
+ uniforms::u_world::Value{ parameters.context.viewport.getCurrentValue().size },
},
- painter.tileVertexBuffer,
- painter.quadTriangleIndexBuffer,
- painter.tileTriangleSegments,
+ parameters.staticData.tileVertexBuffer,
+ parameters.staticData.quadTriangleIndexBuffer,
+ parameters.staticData.tileTriangleSegments,
paintAttibuteData,
properties,
- painter.state.getZoom(),
+ parameters.state.getZoom(),
getID()
);
}
diff --git a/src/mbgl/renderer/layers/render_background_layer.hpp b/src/mbgl/renderer/layers/render_background_layer.hpp
index a7b15ab178..a619670ee4 100644
--- a/src/mbgl/renderer/layers/render_background_layer.hpp
+++ b/src/mbgl/renderer/layers/render_background_layer.hpp
@@ -14,7 +14,7 @@ public:
void transition(const TransitionParameters&) override;
void evaluate(const PropertyEvaluationParameters&) override;
bool hasTransition() const override;
- void render(Painter&, PaintParameters&, RenderSource*) override;
+ void render(PaintParameters&, RenderSource*) override;
std::unique_ptr<Bucket> createBucket(const BucketParameters&, const std::vector<const RenderLayer*>&) const override;
diff --git a/src/mbgl/renderer/layers/render_circle_layer.cpp b/src/mbgl/renderer/layers/render_circle_layer.cpp
index 22e515e603..e7b022f3ee 100644
--- a/src/mbgl/renderer/layers/render_circle_layer.cpp
+++ b/src/mbgl/renderer/layers/render_circle_layer.cpp
@@ -1,6 +1,5 @@
#include <mbgl/renderer/layers/render_circle_layer.hpp>
#include <mbgl/renderer/buckets/circle_bucket.hpp>
-#include <mbgl/renderer/painter.hpp>
#include <mbgl/renderer/render_tile.hpp>
#include <mbgl/renderer/paint_parameters.hpp>
#include <mbgl/programs/programs.hpp>
@@ -48,8 +47,8 @@ bool RenderCircleLayer::hasTransition() const {
return unevaluated.hasTransition();
}
-void RenderCircleLayer::render(Painter& painter, PaintParameters& parameters, RenderSource*) {
- if (painter.pass == RenderPass::Opaque) {
+void RenderCircleLayer::render(PaintParameters& parameters, RenderSource*) {
+ if (parameters.pass == RenderPass::Opaque) {
return;
}
@@ -61,26 +60,26 @@ void RenderCircleLayer::render(Painter& painter, PaintParameters& parameters, Re
CircleBucket& bucket = *reinterpret_cast<CircleBucket*>(tile.tile.getBucket(*baseImpl));
parameters.programs.circle.get(evaluated).draw(
- painter.context,
+ parameters.context,
gl::Triangles(),
- painter.depthModeForSublayer(0, gl::DepthMode::ReadOnly),
- painter.frame.mapMode == MapMode::Still
- ? painter.stencilModeForClipping(tile.clip)
+ parameters.depthModeForSublayer(0, gl::DepthMode::ReadOnly),
+ parameters.mapMode == MapMode::Still
+ ? parameters.stencilModeForClipping(tile.clip)
: gl::StencilMode::disabled(),
- painter.colorModeForRenderPass(),
+ parameters.colorModeForRenderPass(),
CircleProgram::UniformValues {
uniforms::u_matrix::Value{
tile.translatedMatrix(evaluated.get<CircleTranslate>(),
evaluated.get<CircleTranslateAnchor>(),
- painter.state)
+ parameters.state)
},
uniforms::u_scale_with_map::Value{ scaleWithMap },
uniforms::u_extrude_scale::Value{ pitchWithMap
? std::array<float, 2> {{
- tile.id.pixelsToTileUnits(1, painter.state.getZoom()),
- tile.id.pixelsToTileUnits(1, painter.state.getZoom()) }}
- : painter.pixelsToGLUnits },
- uniforms::u_camera_to_center_distance::Value{ painter.state.getCameraToCenterDistance() },
+ 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_pitch_with_map::Value{ pitchWithMap }
},
*bucket.vertexBuffer,
@@ -88,7 +87,7 @@ void RenderCircleLayer::render(Painter& painter, PaintParameters& parameters, Re
bucket.segments,
bucket.paintPropertyBinders.at(getID()),
evaluated,
- painter.state.getZoom(),
+ parameters.state.getZoom(),
getID()
);
}
diff --git a/src/mbgl/renderer/layers/render_circle_layer.hpp b/src/mbgl/renderer/layers/render_circle_layer.hpp
index 7c3c19d21a..f31715f98f 100644
--- a/src/mbgl/renderer/layers/render_circle_layer.hpp
+++ b/src/mbgl/renderer/layers/render_circle_layer.hpp
@@ -14,7 +14,7 @@ public:
void transition(const TransitionParameters&) override;
void evaluate(const PropertyEvaluationParameters&) override;
bool hasTransition() const override;
- void render(Painter&, PaintParameters&, RenderSource*) override;
+ void render(PaintParameters&, RenderSource*) override;
bool queryIntersectsFeature(
const GeometryCoordinates&,
diff --git a/src/mbgl/renderer/layers/render_custom_layer.cpp b/src/mbgl/renderer/layers/render_custom_layer.cpp
index 30649137c7..49f94a699a 100644
--- a/src/mbgl/renderer/layers/render_custom_layer.cpp
+++ b/src/mbgl/renderer/layers/render_custom_layer.cpp
@@ -1,9 +1,10 @@
#include <mbgl/renderer/layers/render_custom_layer.hpp>
-#include <mbgl/renderer/painter.hpp>
#include <mbgl/renderer/paint_parameters.hpp>
+#include <mbgl/renderer/backend_scope.hpp>
+#include <mbgl/renderer/bucket.hpp>
#include <mbgl/style/layers/custom_layer_impl.hpp>
#include <mbgl/map/transform_state.hpp>
-#include <mbgl/renderer/backend_scope.hpp>
+#include <mbgl/map/view.hpp>
namespace mbgl {
@@ -37,21 +38,21 @@ std::unique_ptr<Bucket> RenderCustomLayer::createBucket(const BucketParameters&,
return nullptr;
}
-void RenderCustomLayer::render(Painter& painter, PaintParameters& paintParameters, RenderSource*) {
+void RenderCustomLayer::render(PaintParameters& paintParameters, RenderSource*) {
if (!initialized) {
assert(impl().initializeFn);
impl().initializeFn(impl().context);
initialized = true;
}
- gl::Context& context = painter.context;
- const TransformState& state = painter.state;
+ gl::Context& context = paintParameters.context;
+ const TransformState& state = paintParameters.state;
// Reset GL state to a known state so the CustomLayer always has a clean slate.
context.bindVertexArray = 0;
- context.setDepthMode(painter.depthModeForSublayer(0, gl::DepthMode::ReadOnly));
+ context.setDepthMode(paintParameters.depthModeForSublayer(0, gl::DepthMode::ReadOnly));
context.setStencilMode(gl::StencilMode::disabled());
- context.setColorMode(painter.colorModeForRenderPass());
+ context.setColorMode(paintParameters.colorModeForRenderPass());
CustomLayerRenderParameters parameters;
diff --git a/src/mbgl/renderer/layers/render_custom_layer.hpp b/src/mbgl/renderer/layers/render_custom_layer.hpp
index dd52d315cf..d8e9d93811 100644
--- a/src/mbgl/renderer/layers/render_custom_layer.hpp
+++ b/src/mbgl/renderer/layers/render_custom_layer.hpp
@@ -15,7 +15,7 @@ public:
bool hasTransition() const override;
std::unique_ptr<Bucket> createBucket(const BucketParameters&, const std::vector<const RenderLayer*>&) const final;
- void render(Painter&, PaintParameters&, RenderSource*) final;
+ void render(PaintParameters&, RenderSource*) final;
const style::CustomLayer::Impl& impl() const;
diff --git a/src/mbgl/renderer/layers/render_fill_extrusion_layer.cpp b/src/mbgl/renderer/layers/render_fill_extrusion_layer.cpp
index e06c43c112..27ed4d8084 100644
--- a/src/mbgl/renderer/layers/render_fill_extrusion_layer.cpp
+++ b/src/mbgl/renderer/layers/render_fill_extrusion_layer.cpp
@@ -1,12 +1,13 @@
#include <mbgl/renderer/layers/render_fill_extrusion_layer.hpp>
#include <mbgl/renderer/buckets/fill_extrusion_bucket.hpp>
-#include <mbgl/renderer/painter.hpp>
#include <mbgl/renderer/render_tile.hpp>
#include <mbgl/renderer/paint_parameters.hpp>
#include <mbgl/renderer/image_manager.hpp>
+#include <mbgl/renderer/render_static_data.hpp>
#include <mbgl/programs/programs.hpp>
#include <mbgl/programs/fill_extrusion_program.hpp>
#include <mbgl/tile/tile.hpp>
+#include <mbgl/map/view.hpp>
#include <mbgl/style/layers/fill_extrusion_layer_impl.hpp>
#include <mbgl/geometry/feature_index.hpp>
#include <mbgl/util/math.hpp>
@@ -44,22 +45,22 @@ bool RenderFillExtrusionLayer::hasTransition() const {
return unevaluated.hasTransition();
}
-void RenderFillExtrusionLayer::render(Painter& painter, PaintParameters& parameters, RenderSource*) {
- if (painter.pass == RenderPass::Opaque) {
+void RenderFillExtrusionLayer::render(PaintParameters& parameters, RenderSource*) {
+ if (parameters.pass == RenderPass::Opaque) {
return;
}
- const auto size = painter.context.viewport.getCurrentValue().size;
+ const auto size = parameters.context.viewport.getCurrentValue().size;
- if (!painter.extrusionTexture || painter.extrusionTexture->getSize() != size) {
- painter.extrusionTexture = OffscreenTexture(painter.context, size, OffscreenTextureAttachment::Depth);
+ if (!parameters.staticData.extrusionTexture || parameters.staticData.extrusionTexture->getSize() != size) {
+ parameters.staticData.extrusionTexture = OffscreenTexture(parameters.context, size, OffscreenTextureAttachment::Depth);
}
- painter.extrusionTexture->bind();
+ parameters.staticData.extrusionTexture->bind();
- painter.context.setStencilMode(gl::StencilMode::disabled());
- painter.context.setDepthMode(painter.depthModeForSublayer(0, gl::DepthMode::ReadWrite));
- painter.context.clear(Color{ 0.0f, 0.0f, 0.0f, 0.0f }, 1.0f, {});
+ parameters.context.setStencilMode(gl::StencilMode::disabled());
+ parameters.context.setDepthMode(parameters.depthModeForSublayer(0, gl::DepthMode::ReadWrite));
+ parameters.context.clear(Color{ 0.0f, 0.0f, 0.0f, 0.0f }, 1.0f, {});
if (evaluated.get<FillExtrusionPattern>().from.empty()) {
for (const RenderTile& tile : renderTiles) {
@@ -67,71 +68,71 @@ void RenderFillExtrusionLayer::render(Painter& painter, PaintParameters& paramet
FillExtrusionBucket& bucket = *reinterpret_cast<FillExtrusionBucket*>(tile.tile.getBucket(*baseImpl));
parameters.programs.fillExtrusion.get(evaluated).draw(
- painter.context,
+ parameters.context,
gl::Triangles(),
- painter.depthModeForSublayer(0, gl::DepthMode::ReadWrite),
+ parameters.depthModeForSublayer(0, gl::DepthMode::ReadWrite),
gl::StencilMode::disabled(),
- painter.colorModeForRenderPass(),
+ parameters.colorModeForRenderPass(),
FillExtrusionUniforms::values(
tile.translatedClipMatrix(evaluated.get<FillExtrusionTranslate>(),
evaluated.get<FillExtrusionTranslateAnchor>(),
- painter.state),
- painter.state,
- painter.evaluatedLight
+ parameters.state),
+ parameters.state,
+ parameters.evaluatedLight
),
*bucket.vertexBuffer,
*bucket.indexBuffer,
bucket.triangleSegments,
bucket.paintPropertyBinders.at(getID()),
evaluated,
- painter.state.getZoom(),
+ parameters.state.getZoom(),
getID());
}
} else {
- optional<ImagePosition> imagePosA = painter.imageManager->getPattern(evaluated.get<FillExtrusionPattern>().from);
- optional<ImagePosition> imagePosB = painter.imageManager->getPattern(evaluated.get<FillExtrusionPattern>().to);
+ optional<ImagePosition> imagePosA = parameters.imageManager.getPattern(evaluated.get<FillExtrusionPattern>().from);
+ optional<ImagePosition> imagePosB = parameters.imageManager.getPattern(evaluated.get<FillExtrusionPattern>().to);
if (!imagePosA || !imagePosB) {
return;
}
- painter.imageManager->bind(painter.context, 0);
+ parameters.imageManager.bind(parameters.context, 0);
for (const RenderTile& tile : renderTiles) {
assert(dynamic_cast<FillExtrusionBucket*>(tile.tile.getBucket(*baseImpl)));
FillExtrusionBucket& bucket = *reinterpret_cast<FillExtrusionBucket*>(tile.tile.getBucket(*baseImpl));
parameters.programs.fillExtrusionPattern.get(evaluated).draw(
- painter.context,
+ parameters.context,
gl::Triangles(),
- painter.depthModeForSublayer(0, gl::DepthMode::ReadWrite),
+ parameters.depthModeForSublayer(0, gl::DepthMode::ReadWrite),
gl::StencilMode::disabled(),
- painter.colorModeForRenderPass(),
+ parameters.colorModeForRenderPass(),
FillExtrusionPatternUniforms::values(
tile.translatedClipMatrix(evaluated.get<FillExtrusionTranslate>(),
evaluated.get<FillExtrusionTranslateAnchor>(),
- painter.state),
- painter.imageManager->getPixelSize(),
+ parameters.state),
+ parameters.imageManager.getPixelSize(),
*imagePosA,
*imagePosB,
evaluated.get<FillExtrusionPattern>(),
tile.id,
- painter.state,
+ parameters.state,
-std::pow(2, tile.id.canonical.z) / util::tileSize / 8.0f,
- painter.evaluatedLight
+ parameters.evaluatedLight
),
*bucket.vertexBuffer,
*bucket.indexBuffer,
bucket.triangleSegments,
bucket.paintPropertyBinders.at(getID()),
evaluated,
- painter.state.getZoom(),
+ parameters.state.getZoom(),
getID());
}
}
parameters.view.bind();
- painter.context.bindTexture(painter.extrusionTexture->getTexture());
+ parameters.context.bindTexture(parameters.staticData.extrusionTexture->getTexture());
mat4 viewportMat;
matrix::ortho(viewportMat, 0, size.width, size.height, 0, 0, 1);
@@ -139,22 +140,22 @@ void RenderFillExtrusionLayer::render(Painter& painter, PaintParameters& paramet
const Properties<>::PossiblyEvaluated properties;
parameters.programs.extrusionTexture.draw(
- painter.context,
+ parameters.context,
gl::Triangles(),
gl::DepthMode::disabled(),
gl::StencilMode::disabled(),
- painter.colorModeForRenderPass(),
+ parameters.colorModeForRenderPass(),
ExtrusionTextureProgram::UniformValues{
uniforms::u_matrix::Value{ viewportMat }, uniforms::u_world::Value{ size },
uniforms::u_image::Value{ 0 },
uniforms::u_opacity::Value{ evaluated.get<FillExtrusionOpacity>() }
},
- painter.extrusionTextureVertexBuffer,
- painter.quadTriangleIndexBuffer,
- painter.extrusionTextureSegments,
+ parameters.staticData.extrusionTextureVertexBuffer,
+ parameters.staticData.quadTriangleIndexBuffer,
+ parameters.staticData.extrusionTextureSegments,
ExtrusionTextureProgram::PaintPropertyBinders{ properties, 0 },
properties,
- painter.state.getZoom(),
+ parameters.state.getZoom(),
getID());
}
diff --git a/src/mbgl/renderer/layers/render_fill_extrusion_layer.hpp b/src/mbgl/renderer/layers/render_fill_extrusion_layer.hpp
index b3f1115790..a53e00ca6f 100644
--- a/src/mbgl/renderer/layers/render_fill_extrusion_layer.hpp
+++ b/src/mbgl/renderer/layers/render_fill_extrusion_layer.hpp
@@ -14,7 +14,7 @@ public:
void transition(const TransitionParameters&) override;
void evaluate(const PropertyEvaluationParameters&) override;
bool hasTransition() const override;
- void render(Painter&, PaintParameters&, RenderSource*) override;
+ void render(PaintParameters&, RenderSource*) override;
bool queryIntersectsFeature(
const GeometryCoordinates&,
diff --git a/src/mbgl/renderer/layers/render_fill_layer.cpp b/src/mbgl/renderer/layers/render_fill_layer.cpp
index 973b08dd1f..2a61a9e993 100644
--- a/src/mbgl/renderer/layers/render_fill_layer.cpp
+++ b/src/mbgl/renderer/layers/render_fill_layer.cpp
@@ -1,6 +1,5 @@
#include <mbgl/renderer/layers/render_fill_layer.hpp>
#include <mbgl/renderer/buckets/fill_bucket.hpp>
-#include <mbgl/renderer/painter.hpp>
#include <mbgl/renderer/render_tile.hpp>
#include <mbgl/renderer/paint_parameters.hpp>
#include <mbgl/renderer/image_manager.hpp>
@@ -59,7 +58,7 @@ bool RenderFillLayer::hasTransition() const {
return unevaluated.hasTransition();
}
-void RenderFillLayer::render(Painter& painter, PaintParameters& parameters, RenderSource*) {
+void RenderFillLayer::render(PaintParameters& parameters, RenderSource*) {
if (evaluated.get<FillPattern>().from.empty()) {
for (const RenderTile& tile : renderTiles) {
assert(dynamic_cast<FillBucket*>(tile.tile.getBucket(*baseImpl)));
@@ -71,30 +70,30 @@ void RenderFillLayer::render(Painter& painter, PaintParameters& parameters, Rend
const auto& indexBuffer,
const auto& segments) {
program.get(evaluated).draw(
- painter.context,
+ parameters.context,
drawMode,
- painter.depthModeForSublayer(sublayer, gl::DepthMode::ReadWrite),
- painter.stencilModeForClipping(tile.clip),
- painter.colorModeForRenderPass(),
+ parameters.depthModeForSublayer(sublayer, gl::DepthMode::ReadWrite),
+ parameters.stencilModeForClipping(tile.clip),
+ parameters.colorModeForRenderPass(),
FillProgram::UniformValues {
uniforms::u_matrix::Value{
tile.translatedMatrix(evaluated.get<FillTranslate>(),
evaluated.get<FillTranslateAnchor>(),
- painter.state)
+ parameters.state)
},
- uniforms::u_world::Value{ painter.context.viewport.getCurrentValue().size },
+ uniforms::u_world::Value{ parameters.context.viewport.getCurrentValue().size },
},
*bucket.vertexBuffer,
indexBuffer,
segments,
bucket.paintPropertyBinders.at(getID()),
evaluated,
- painter.state.getZoom(),
+ parameters.state.getZoom(),
getID()
);
};
- if (evaluated.get<FillAntialias>() && !unevaluated.get<FillOutlineColor>().isUndefined() && painter.pass == RenderPass::Translucent) {
+ if (evaluated.get<FillAntialias>() && !unevaluated.get<FillOutlineColor>().isUndefined() && parameters.pass == RenderPass::Translucent) {
draw(2,
parameters.programs.fillOutline,
gl::Lines { 2.0f },
@@ -105,7 +104,7 @@ void RenderFillLayer::render(Painter& painter, PaintParameters& parameters, Rend
// Only draw the fill when it's opaque and we're drawing opaque fragments,
// or when it's translucent and we're drawing translucent fragments.
if ((evaluated.get<FillColor>().constantOr(Color()).a >= 1.0f
- && evaluated.get<FillOpacity>().constantOr(0) >= 1.0f) == (painter.pass == RenderPass::Opaque)) {
+ && evaluated.get<FillOpacity>().constantOr(0) >= 1.0f) == (parameters.pass == RenderPass::Opaque)) {
draw(1,
parameters.programs.fill,
gl::Triangles(),
@@ -113,7 +112,7 @@ void RenderFillLayer::render(Painter& painter, PaintParameters& parameters, Rend
bucket.triangleSegments);
}
- if (evaluated.get<FillAntialias>() && unevaluated.get<FillOutlineColor>().isUndefined() && painter.pass == RenderPass::Translucent) {
+ if (evaluated.get<FillAntialias>() && unevaluated.get<FillOutlineColor>().isUndefined() && parameters.pass == RenderPass::Translucent) {
draw(2,
parameters.programs.fillOutline,
gl::Lines { 2.0f },
@@ -122,18 +121,18 @@ void RenderFillLayer::render(Painter& painter, PaintParameters& parameters, Rend
}
}
} else {
- if (painter.pass != RenderPass::Translucent) {
+ if (parameters.pass != RenderPass::Translucent) {
return;
}
- optional<ImagePosition> imagePosA = painter.imageManager->getPattern(evaluated.get<FillPattern>().from);
- optional<ImagePosition> imagePosB = painter.imageManager->getPattern(evaluated.get<FillPattern>().to);
+ optional<ImagePosition> imagePosA = parameters.imageManager.getPattern(evaluated.get<FillPattern>().from);
+ optional<ImagePosition> imagePosB = parameters.imageManager.getPattern(evaluated.get<FillPattern>().to);
if (!imagePosA || !imagePosB) {
return;
}
- painter.imageManager->bind(painter.context, 0);
+ parameters.imageManager.bind(parameters.context, 0);
for (const RenderTile& tile : renderTiles) {
assert(dynamic_cast<FillBucket*>(tile.tile.getBucket(*baseImpl)));
@@ -145,29 +144,29 @@ void RenderFillLayer::render(Painter& painter, PaintParameters& parameters, Rend
const auto& indexBuffer,
const auto& segments) {
program.get(evaluated).draw(
- painter.context,
+ parameters.context,
drawMode,
- painter.depthModeForSublayer(sublayer, gl::DepthMode::ReadWrite),
- painter.stencilModeForClipping(tile.clip),
- painter.colorModeForRenderPass(),
+ parameters.depthModeForSublayer(sublayer, gl::DepthMode::ReadWrite),
+ parameters.stencilModeForClipping(tile.clip),
+ parameters.colorModeForRenderPass(),
FillPatternUniforms::values(
tile.translatedMatrix(evaluated.get<FillTranslate>(),
evaluated.get<FillTranslateAnchor>(),
- painter.state),
- painter.context.viewport.getCurrentValue().size,
- painter.imageManager->getPixelSize(),
+ parameters.state),
+ parameters.context.viewport.getCurrentValue().size,
+ parameters.imageManager.getPixelSize(),
*imagePosA,
*imagePosB,
evaluated.get<FillPattern>(),
tile.id,
- painter.state
+ parameters.state
),
*bucket.vertexBuffer,
indexBuffer,
segments,
bucket.paintPropertyBinders.at(getID()),
evaluated,
- painter.state.getZoom(),
+ parameters.state.getZoom(),
getID()
);
};
diff --git a/src/mbgl/renderer/layers/render_fill_layer.hpp b/src/mbgl/renderer/layers/render_fill_layer.hpp
index 0dc5dd0b1d..a51865698f 100644
--- a/src/mbgl/renderer/layers/render_fill_layer.hpp
+++ b/src/mbgl/renderer/layers/render_fill_layer.hpp
@@ -14,7 +14,7 @@ public:
void transition(const TransitionParameters&) override;
void evaluate(const PropertyEvaluationParameters&) override;
bool hasTransition() const override;
- void render(Painter&, PaintParameters&, RenderSource*) override;
+ void render(PaintParameters&, RenderSource*) override;
bool queryIntersectsFeature(
const GeometryCoordinates&,
diff --git a/src/mbgl/renderer/layers/render_line_layer.cpp b/src/mbgl/renderer/layers/render_line_layer.cpp
index b40066f4c4..1b4a1c0ff7 100644
--- a/src/mbgl/renderer/layers/render_line_layer.cpp
+++ b/src/mbgl/renderer/layers/render_line_layer.cpp
@@ -1,6 +1,5 @@
#include <mbgl/renderer/layers/render_line_layer.hpp>
#include <mbgl/renderer/buckets/line_bucket.hpp>
-#include <mbgl/renderer/painter.hpp>
#include <mbgl/renderer/render_tile.hpp>
#include <mbgl/renderer/paint_parameters.hpp>
#include <mbgl/renderer/image_manager.hpp>
@@ -53,8 +52,8 @@ bool RenderLineLayer::hasTransition() const {
return unevaluated.hasTransition();
}
-void RenderLineLayer::render(Painter& painter, PaintParameters& parameters, RenderSource*) {
- if (painter.pass == RenderPass::Opaque) {
+void RenderLineLayer::render(PaintParameters& parameters, RenderSource*) {
+ if (parameters.pass == RenderPass::Opaque) {
return;
}
@@ -64,18 +63,18 @@ void RenderLineLayer::render(Painter& painter, PaintParameters& parameters, Rend
auto draw = [&] (auto& program, auto&& uniformValues) {
program.get(evaluated).draw(
- painter.context,
+ parameters.context,
gl::Triangles(),
- painter.depthModeForSublayer(0, gl::DepthMode::ReadOnly),
- painter.stencilModeForClipping(tile.clip),
- painter.colorModeForRenderPass(),
+ parameters.depthModeForSublayer(0, gl::DepthMode::ReadOnly),
+ parameters.stencilModeForClipping(tile.clip),
+ parameters.colorModeForRenderPass(),
std::move(uniformValues),
*bucket.vertexBuffer,
*bucket.indexBuffer,
bucket.segments,
bucket.paintPropertyBinders.at(getID()),
evaluated,
- painter.state.getZoom(),
+ parameters.state.getZoom(),
getID()
);
};
@@ -83,38 +82,38 @@ void RenderLineLayer::render(Painter& painter, PaintParameters& parameters, Rend
if (!evaluated.get<LineDasharray>().from.empty()) {
const LinePatternCap cap = bucket.layout.get<LineCap>() == LineCapType::Round
? LinePatternCap::Round : LinePatternCap::Square;
- LinePatternPos posA = painter.lineAtlas->getDashPosition(evaluated.get<LineDasharray>().from, cap);
- LinePatternPos posB = painter.lineAtlas->getDashPosition(evaluated.get<LineDasharray>().to, cap);
+ LinePatternPos posA = parameters.lineAtlas.getDashPosition(evaluated.get<LineDasharray>().from, cap);
+ LinePatternPos posB = parameters.lineAtlas.getDashPosition(evaluated.get<LineDasharray>().to, cap);
- painter.lineAtlas->bind(painter.context, 0);
+ parameters.lineAtlas.bind(parameters.context, 0);
draw(parameters.programs.lineSDF,
LineSDFProgram::uniformValues(
evaluated,
- painter.frame.pixelRatio,
+ parameters.pixelRatio,
tile,
- painter.state,
- painter.pixelsToGLUnits,
+ parameters.state,
+ parameters.pixelsToGLUnits,
posA,
posB,
- painter.lineAtlas->getSize().width));
+ parameters.lineAtlas.getSize().width));
} else if (!evaluated.get<LinePattern>().from.empty()) {
- optional<ImagePosition> posA = painter.imageManager->getPattern(evaluated.get<LinePattern>().from);
- optional<ImagePosition> posB = painter.imageManager->getPattern(evaluated.get<LinePattern>().to);
+ optional<ImagePosition> posA = parameters.imageManager.getPattern(evaluated.get<LinePattern>().from);
+ optional<ImagePosition> posB = parameters.imageManager.getPattern(evaluated.get<LinePattern>().to);
if (!posA || !posB)
return;
- painter.imageManager->bind(painter.context, 0);
+ parameters.imageManager.bind(parameters.context, 0);
draw(parameters.programs.linePattern,
LinePatternProgram::uniformValues(
evaluated,
tile,
- painter.state,
- painter.pixelsToGLUnits,
- painter.imageManager->getPixelSize(),
+ parameters.state,
+ parameters.pixelsToGLUnits,
+ parameters.imageManager.getPixelSize(),
*posA,
*posB));
@@ -123,8 +122,8 @@ void RenderLineLayer::render(Painter& painter, PaintParameters& parameters, Rend
LineProgram::uniformValues(
evaluated,
tile,
- painter.state,
- painter.pixelsToGLUnits));
+ parameters.state,
+ parameters.pixelsToGLUnits));
}
}
}
diff --git a/src/mbgl/renderer/layers/render_line_layer.hpp b/src/mbgl/renderer/layers/render_line_layer.hpp
index 47c526fd1e..8bf7e2329d 100644
--- a/src/mbgl/renderer/layers/render_line_layer.hpp
+++ b/src/mbgl/renderer/layers/render_line_layer.hpp
@@ -23,7 +23,7 @@ public:
void transition(const TransitionParameters&) override;
void evaluate(const PropertyEvaluationParameters&) override;
bool hasTransition() const override;
- void render(Painter&, PaintParameters&, RenderSource*) override;
+ void render(PaintParameters&, RenderSource*) override;
bool queryIntersectsFeature(
const GeometryCoordinates&,
diff --git a/src/mbgl/renderer/layers/render_raster_layer.cpp b/src/mbgl/renderer/layers/render_raster_layer.cpp
index 349646c281..367fd91fa5 100644
--- a/src/mbgl/renderer/layers/render_raster_layer.cpp
+++ b/src/mbgl/renderer/layers/render_raster_layer.cpp
@@ -1,9 +1,9 @@
#include <mbgl/renderer/layers/render_raster_layer.hpp>
#include <mbgl/renderer/buckets/raster_bucket.hpp>
-#include <mbgl/renderer/painter.hpp>
#include <mbgl/renderer/render_tile.hpp>
#include <mbgl/renderer/paint_parameters.hpp>
#include <mbgl/renderer/sources/render_image_source.hpp>
+#include <mbgl/renderer/render_static_data.hpp>
#include <mbgl/programs/programs.hpp>
#include <mbgl/programs/raster_program.hpp>
#include <mbgl/tile/tile.hpp>
@@ -69,8 +69,8 @@ static std::array<float, 3> spinWeights(float spin) {
return spin_weights;
}
-void RenderRasterLayer::render(Painter& painter, PaintParameters& parameters, RenderSource* source) {
- if (painter.pass != RenderPass::Translucent)
+void RenderRasterLayer::render(PaintParameters& parameters, RenderSource* source) {
+ if (parameters.pass != RenderPass::Translucent)
return;
auto draw = [&] (const mat4& matrix,
@@ -78,11 +78,11 @@ void RenderRasterLayer::render(Painter& painter, PaintParameters& parameters, Re
const auto& indexBuffer,
const auto& segments) {
parameters.programs.raster.draw(
- painter.context,
+ parameters.context,
gl::Triangles(),
- painter.depthModeForSublayer(0, gl::DepthMode::ReadOnly),
+ parameters.depthModeForSublayer(0, gl::DepthMode::ReadOnly),
gl::StencilMode::disabled(),
- painter.colorModeForRenderPass(),
+ parameters.colorModeForRenderPass(),
RasterProgram::UniformValues {
uniforms::u_matrix::Value{ matrix },
uniforms::u_image0::Value{ 0 },
@@ -103,7 +103,7 @@ void RenderRasterLayer::render(Painter& painter, PaintParameters& parameters, Re
segments,
RasterProgram::PaintPropertyBinders { evaluated, 0 },
evaluated,
- painter.state.getZoom(),
+ parameters.state.getZoom(),
getID()
);
};
@@ -113,8 +113,8 @@ void RenderRasterLayer::render(Painter& painter, PaintParameters& parameters, Re
RasterBucket& bucket = *imageSource->bucket;
assert(bucket.texture);
- painter.context.bindTexture(*bucket.texture, 0, gl::TextureFilter::Linear);
- painter.context.bindTexture(*bucket.texture, 1, gl::TextureFilter::Linear);
+ parameters.context.bindTexture(*bucket.texture, 0, gl::TextureFilter::Linear);
+ parameters.context.bindTexture(*bucket.texture, 1, gl::TextureFilter::Linear);
for (auto matrix_ : imageSource->matrices) {
draw(matrix_,
@@ -132,13 +132,13 @@ void RenderRasterLayer::render(Painter& painter, PaintParameters& parameters, Re
continue;
assert(bucket.texture);
- painter.context.bindTexture(*bucket.texture, 0, gl::TextureFilter::Linear);
- painter.context.bindTexture(*bucket.texture, 1, gl::TextureFilter::Linear);
+ parameters.context.bindTexture(*bucket.texture, 0, gl::TextureFilter::Linear);
+ parameters.context.bindTexture(*bucket.texture, 1, gl::TextureFilter::Linear);
draw(tile.matrix,
- painter.rasterVertexBuffer,
- painter.quadTriangleIndexBuffer,
- painter.rasterSegments);
+ parameters.staticData.rasterVertexBuffer,
+ parameters.staticData.quadTriangleIndexBuffer,
+ parameters.staticData.rasterSegments);
}
}
}
diff --git a/src/mbgl/renderer/layers/render_raster_layer.hpp b/src/mbgl/renderer/layers/render_raster_layer.hpp
index ce46152a95..87de316f7c 100644
--- a/src/mbgl/renderer/layers/render_raster_layer.hpp
+++ b/src/mbgl/renderer/layers/render_raster_layer.hpp
@@ -15,7 +15,7 @@ public:
void evaluate(const PropertyEvaluationParameters&) override;
bool hasTransition() const override;
- void render(Painter&, PaintParameters&, RenderSource*) override;
+ void render(PaintParameters&, RenderSource*) override;
std::unique_ptr<Bucket> createBucket(const BucketParameters&, const std::vector<const RenderLayer*>&) const override;
diff --git a/src/mbgl/renderer/layers/render_symbol_layer.cpp b/src/mbgl/renderer/layers/render_symbol_layer.cpp
index a87dd3c535..1376e8a3d8 100644
--- a/src/mbgl/renderer/layers/render_symbol_layer.cpp
+++ b/src/mbgl/renderer/layers/render_symbol_layer.cpp
@@ -2,9 +2,9 @@
#include <mbgl/renderer/buckets/symbol_bucket.hpp>
#include <mbgl/renderer/bucket_parameters.hpp>
#include <mbgl/renderer/property_evaluation_parameters.hpp>
-#include <mbgl/renderer/painter.hpp>
#include <mbgl/renderer/render_tile.hpp>
#include <mbgl/renderer/paint_parameters.hpp>
+#include <mbgl/renderer/frame_history.hpp>
#include <mbgl/text/glyph_atlas.hpp>
#include <mbgl/programs/programs.hpp>
#include <mbgl/programs/symbol_program.hpp>
@@ -70,8 +70,8 @@ bool RenderSymbolLayer::hasTransition() const {
return unevaluated.hasTransition();
}
-void RenderSymbolLayer::render(Painter& painter, PaintParameters& parameters, RenderSource*) {
- if (painter.pass == RenderPass::Opaque) {
+void RenderSymbolLayer::render(PaintParameters& parameters, RenderSource*) {
+ if (parameters.pass == RenderPass::Opaque) {
return;
}
@@ -81,7 +81,7 @@ void RenderSymbolLayer::render(Painter& painter, PaintParameters& parameters, Re
const auto& layout = bucket.layout;
- painter.frameHistory.bind(painter.context, 1);
+ parameters.frameHistory.bind(parameters.context, 1);
auto draw = [&] (auto& program,
auto&& uniformValues,
@@ -92,18 +92,18 @@ void RenderSymbolLayer::render(Painter& painter, PaintParameters& parameters, Re
const auto& paintProperties)
{
// We clip symbols to their tile extent in still mode.
- const bool needsClipping = painter.frame.mapMode == MapMode::Still;
+ const bool needsClipping = parameters.mapMode == MapMode::Still;
program.get(paintProperties).draw(
- painter.context,
+ parameters.context,
gl::Triangles(),
values_.pitchAlignment == AlignmentType::Map
- ? painter.depthModeForSublayer(0, gl::DepthMode::ReadOnly)
+ ? parameters.depthModeForSublayer(0, gl::DepthMode::ReadOnly)
: gl::DepthMode::disabled(),
needsClipping
- ? painter.stencilModeForClipping(tile.clip)
+ ? parameters.stencilModeForClipping(tile.clip)
: gl::StencilMode::disabled(),
- painter.colorModeForRenderPass(),
+ parameters.colorModeForRenderPass(),
std::move(uniformValues),
*buffers.vertexBuffer,
*buffers.dynamicVertexBuffer,
@@ -112,7 +112,7 @@ void RenderSymbolLayer::render(Painter& painter, PaintParameters& parameters, Re
buffers.segments,
binders,
paintProperties,
- painter.state.getZoom(),
+ parameters.state.getZoom(),
getID()
);
};
@@ -134,17 +134,17 @@ void RenderSymbolLayer::render(Painter& painter, PaintParameters& parameters, Re
values,
tile,
*bucket.iconSizeBinder,
- painter.state,
- painter.frameHistory);
+ parameters.state,
+ parameters.frameHistory);
- painter.context.updateVertexBuffer(*bucket.icon.dynamicVertexBuffer, std::move(bucket.icon.dynamicVertices));
+ parameters.context.updateVertexBuffer(*bucket.icon.dynamicVertexBuffer, std::move(bucket.icon.dynamicVertices));
}
const bool iconScaled = layout.get<IconSize>().constantOr(1.0) != 1.0 || bucket.iconsNeedLinear;
- const bool iconTransformed = values.rotationAlignment == AlignmentType::Map || painter.state.getPitch() != 0;
+ const bool iconTransformed = values.rotationAlignment == AlignmentType::Map || parameters.state.getPitch() != 0;
- painter.context.bindTexture(*geometryTile.iconAtlasTexture, 0,
- bucket.sdfIcons || painter.state.isChanging() || iconScaled || iconTransformed
+ parameters.context.bindTexture(*geometryTile.iconAtlasTexture, 0,
+ bucket.sdfIcons || parameters.state.isChanging() || iconScaled || iconTransformed
? gl::TextureFilter::Linear : gl::TextureFilter::Nearest);
const Size texsize = geometryTile.iconAtlasTexture->size;
@@ -152,7 +152,7 @@ void RenderSymbolLayer::render(Painter& painter, PaintParameters& parameters, Re
if (bucket.sdfIcons) {
if (values.hasHalo) {
draw(parameters.programs.symbolIconSDF,
- SymbolSDFIconProgram::uniformValues(false, values, texsize, painter.pixelsToGLUnits, alongLine, tile, painter.state, SymbolSDFPart::Halo),
+ SymbolSDFIconProgram::uniformValues(false, values, texsize, parameters.pixelsToGLUnits, alongLine, tile, parameters.state, SymbolSDFPart::Halo),
bucket.icon,
bucket.iconSizeBinder,
values,
@@ -162,7 +162,7 @@ void RenderSymbolLayer::render(Painter& painter, PaintParameters& parameters, Re
if (values.hasFill) {
draw(parameters.programs.symbolIconSDF,
- SymbolSDFIconProgram::uniformValues(false, values, texsize, painter.pixelsToGLUnits, alongLine, tile, painter.state, SymbolSDFPart::Fill),
+ SymbolSDFIconProgram::uniformValues(false, values, texsize, parameters.pixelsToGLUnits, alongLine, tile, parameters.state, SymbolSDFPart::Fill),
bucket.icon,
bucket.iconSizeBinder,
values,
@@ -171,7 +171,7 @@ void RenderSymbolLayer::render(Painter& painter, PaintParameters& parameters, Re
}
} else {
draw(parameters.programs.symbolIcon,
- SymbolIconProgram::uniformValues(false, values, texsize, painter.pixelsToGLUnits, alongLine, tile, painter.state),
+ SymbolIconProgram::uniformValues(false, values, texsize, parameters.pixelsToGLUnits, alongLine, tile, parameters.state),
bucket.icon,
bucket.iconSizeBinder,
values,
@@ -181,7 +181,7 @@ void RenderSymbolLayer::render(Painter& painter, PaintParameters& parameters, Re
}
if (bucket.hasTextData()) {
- painter.context.bindTexture(*geometryTile.glyphAtlasTexture, 0, gl::TextureFilter::Linear);
+ parameters.context.bindTexture(*geometryTile.glyphAtlasTexture, 0, gl::TextureFilter::Linear);
auto values = textPropertyValues(layout);
auto paintPropertyValues = textPaintProperties();
@@ -196,17 +196,17 @@ void RenderSymbolLayer::render(Painter& painter, PaintParameters& parameters, Re
values,
tile,
*bucket.textSizeBinder,
- painter.state,
- painter.frameHistory);
+ parameters.state,
+ parameters.frameHistory);
- painter.context.updateVertexBuffer(*bucket.text.dynamicVertexBuffer, std::move(bucket.text.dynamicVertices));
+ parameters.context.updateVertexBuffer(*bucket.text.dynamicVertexBuffer, std::move(bucket.text.dynamicVertices));
}
const Size texsize = geometryTile.glyphAtlasTexture->size;
if (values.hasHalo) {
draw(parameters.programs.symbolGlyph,
- SymbolSDFTextProgram::uniformValues(true, values, texsize, painter.pixelsToGLUnits, alongLine, tile, painter.state, SymbolSDFPart::Halo),
+ SymbolSDFTextProgram::uniformValues(true, values, texsize, parameters.pixelsToGLUnits, alongLine, tile, parameters.state, SymbolSDFPart::Halo),
bucket.text,
bucket.textSizeBinder,
values,
@@ -216,7 +216,7 @@ void RenderSymbolLayer::render(Painter& painter, PaintParameters& parameters, Re
if (values.hasFill) {
draw(parameters.programs.symbolGlyph,
- SymbolSDFTextProgram::uniformValues(true, values, texsize, painter.pixelsToGLUnits, alongLine, tile, painter.state, SymbolSDFPart::Fill),
+ SymbolSDFTextProgram::uniformValues(true, values, texsize, parameters.pixelsToGLUnits, alongLine, tile, parameters.state, SymbolSDFPart::Fill),
bucket.text,
bucket.textSizeBinder,
values,
@@ -229,20 +229,20 @@ void RenderSymbolLayer::render(Painter& painter, PaintParameters& parameters, Re
static const style::Properties<>::PossiblyEvaluated properties {};
static const CollisionBoxProgram::PaintPropertyBinders paintAttributeData(properties, 0);
- painter.programs->collisionBox.draw(
- painter.context,
+ parameters.programs.collisionBox.draw(
+ parameters.context,
gl::Lines { 1.0f },
gl::DepthMode::disabled(),
- painter.stencilModeForClipping(tile.clip),
- painter.colorModeForRenderPass(),
+ parameters.stencilModeForClipping(tile.clip),
+ parameters.colorModeForRenderPass(),
CollisionBoxProgram::UniformValues {
uniforms::u_matrix::Value{ tile.matrix },
- uniforms::u_scale::Value{ std::pow(2.0f, float(painter.state.getZoom() - tile.tile.id.overscaledZ)) },
- uniforms::u_zoom::Value{ float(painter.state.getZoom() * 10) },
+ uniforms::u_scale::Value{ std::pow(2.0f, float(parameters.state.getZoom() - tile.tile.id.overscaledZ)) },
+ uniforms::u_zoom::Value{ float(parameters.state.getZoom() * 10) },
uniforms::u_maxzoom::Value{ float((tile.id.canonical.z + 1) * 10) },
uniforms::u_collision_y_stretch::Value{ tile.tile.yStretch() },
- uniforms::u_camera_to_center_distance::Value{ painter.state.getCameraToCenterDistance() },
- uniforms::u_pitch::Value{ painter.state.getPitch() },
+ uniforms::u_camera_to_center_distance::Value{ parameters.state.getCameraToCenterDistance() },
+ uniforms::u_pitch::Value{ parameters.state.getPitch() },
uniforms::u_fadetexture::Value{ 1 }
},
*bucket.collisionBox.vertexBuffer,
@@ -250,7 +250,7 @@ void RenderSymbolLayer::render(Painter& painter, PaintParameters& parameters, Re
bucket.collisionBox.segments,
paintAttributeData,
properties,
- painter.state.getZoom(),
+ parameters.state.getZoom(),
getID()
);
}
diff --git a/src/mbgl/renderer/layers/render_symbol_layer.hpp b/src/mbgl/renderer/layers/render_symbol_layer.hpp
index f29ceb504c..83709b5122 100644
--- a/src/mbgl/renderer/layers/render_symbol_layer.hpp
+++ b/src/mbgl/renderer/layers/render_symbol_layer.hpp
@@ -66,7 +66,7 @@ public:
void transition(const TransitionParameters&) override;
void evaluate(const PropertyEvaluationParameters&) override;
bool hasTransition() const override;
- void render(Painter&, PaintParameters&, RenderSource*) override;
+ void render(PaintParameters&, RenderSource*) override;
style::IconPaintProperties::PossiblyEvaluated iconPaintProperties() const;
style::TextPaintProperties::PossiblyEvaluated textPaintProperties() const;