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_background_layer.cpp9
-rw-r--r--src/mbgl/renderer/layers/render_circle_layer.cpp1
-rw-r--r--src/mbgl/renderer/layers/render_fill_extrusion_layer.cpp12
-rw-r--r--src/mbgl/renderer/layers/render_fill_layer.cpp20
-rw-r--r--src/mbgl/renderer/layers/render_heatmap_layer.cpp2
-rw-r--r--src/mbgl/renderer/layers/render_hillshade_layer.cpp2
-rw-r--r--src/mbgl/renderer/layers/render_line_layer.cpp23
-rw-r--r--src/mbgl/renderer/layers/render_raster_layer.cpp1
-rw-r--r--src/mbgl/renderer/layers/render_symbol_layer.cpp21
-rw-r--r--src/mbgl/renderer/render_tile.cpp3
-rw-r--r--src/mbgl/renderer/renderer_impl.cpp1
-rw-r--r--src/mbgl/renderer/sources/render_image_source.cpp1
12 files changed, 73 insertions, 23 deletions
diff --git a/src/mbgl/renderer/layers/render_background_layer.cpp b/src/mbgl/renderer/layers/render_background_layer.cpp
index 7494e01446..61c8fa208e 100644
--- a/src/mbgl/renderer/layers/render_background_layer.cpp
+++ b/src/mbgl/renderer/layers/render_background_layer.cpp
@@ -50,7 +50,7 @@ void RenderBackgroundLayer::render(PaintParameters& parameters, RenderSource*) {
const Properties<>::PossiblyEvaluated properties;
const BackgroundProgram::Binders paintAttributeData(properties, 0);
- auto draw = [&](auto& program, auto&& uniformValues) {
+ auto draw = [&](auto& program, auto&& uniformValues, auto&& textureBindings) {
const auto allUniformValues = program.computeAllUniformValues(
std::move(uniformValues),
paintAttributeData,
@@ -76,6 +76,7 @@ void RenderBackgroundLayer::render(PaintParameters& parameters, RenderSource*) {
parameters.staticData.tileTriangleSegments,
allUniformValues,
allAttributeBindings,
+ std::move(textureBindings),
getID()
);
};
@@ -101,7 +102,8 @@ void RenderBackgroundLayer::render(PaintParameters& parameters, RenderSource*) {
crossfade,
tileID,
parameters.state
- )
+ ),
+ BackgroundPatternProgram::TextureBindings{}
);
}
} else {
@@ -112,7 +114,8 @@ void RenderBackgroundLayer::render(PaintParameters& parameters, RenderSource*) {
uniforms::u_matrix::Value( parameters.matrixForTile(tileID) ),
uniforms::u_color::Value( evaluated.get<BackgroundColor>() ),
uniforms::u_opacity::Value( evaluated.get<BackgroundOpacity>() ),
- }
+ },
+ BackgroundProgram::TextureBindings{}
);
}
}
diff --git a/src/mbgl/renderer/layers/render_circle_layer.cpp b/src/mbgl/renderer/layers/render_circle_layer.cpp
index aec6813823..32ee24551c 100644
--- a/src/mbgl/renderer/layers/render_circle_layer.cpp
+++ b/src/mbgl/renderer/layers/render_circle_layer.cpp
@@ -107,6 +107,7 @@ void RenderCircleLayer::render(PaintParameters& parameters, RenderSource*) {
bucket.segments,
allUniformValues,
allAttributeBindings,
+ CircleProgram::TextureBindings{},
getID()
);
}
diff --git a/src/mbgl/renderer/layers/render_fill_extrusion_layer.cpp b/src/mbgl/renderer/layers/render_fill_extrusion_layer.cpp
index d6ce18e85a..5699bc5d4a 100644
--- a/src/mbgl/renderer/layers/render_fill_extrusion_layer.cpp
+++ b/src/mbgl/renderer/layers/render_fill_extrusion_layer.cpp
@@ -72,7 +72,8 @@ void RenderFillExtrusionLayer::render(PaintParameters& parameters, RenderSource*
parameters.context.clear(Color{ 0.0f, 0.0f, 0.0f, 0.0f }, depthClearValue, {});
auto draw = [&](auto& programInstance, const auto& tileBucket, auto&& uniformValues,
- const optional<ImagePosition>& patternPositionA, const optional<ImagePosition>& patternPositionB) {
+ const optional<ImagePosition>& patternPositionA,
+ const optional<ImagePosition>& patternPositionB, auto&& textureBindings) {
const auto& paintPropertyBinders = tileBucket.paintPropertyBinders.at(getID());
paintPropertyBinders.setPatternParameters(patternPositionA, patternPositionB, crossfade);
@@ -101,6 +102,7 @@ void RenderFillExtrusionLayer::render(PaintParameters& parameters, RenderSource*
tileBucket.triangleSegments,
allUniformValues,
allAttributeBindings,
+ std::move(textureBindings),
getID());
};
@@ -122,7 +124,9 @@ void RenderFillExtrusionLayer::render(PaintParameters& parameters, RenderSource*
parameters.state,
parameters.evaluatedLight
),
- {}, {}
+ {},
+ {},
+ FillExtrusionProgram::TextureBindings{}
);
}
} else {
@@ -155,7 +159,8 @@ void RenderFillExtrusionLayer::render(PaintParameters& parameters, RenderSource*
parameters.evaluatedLight
),
patternPosA,
- patternPosB
+ patternPosB,
+ FillExtrusionPatternProgram::TextureBindings{}
);
}
}
@@ -202,6 +207,7 @@ void RenderFillExtrusionLayer::render(PaintParameters& parameters, RenderSource*
parameters.staticData.extrusionTextureSegments,
allUniformValues,
allAttributeBindings,
+ ExtrusionTextureProgram::TextureBindings{},
getID());
}
}
diff --git a/src/mbgl/renderer/layers/render_fill_layer.cpp b/src/mbgl/renderer/layers/render_fill_layer.cpp
index 5498031c4c..798749711d 100644
--- a/src/mbgl/renderer/layers/render_fill_layer.cpp
+++ b/src/mbgl/renderer/layers/render_fill_layer.cpp
@@ -73,7 +73,8 @@ void RenderFillLayer::render(PaintParameters& parameters, RenderSource*) {
const auto& drawMode,
const auto& depthMode,
const auto& indexBuffer,
- const auto& segments) {
+ const auto& segments,
+ auto&& textureBindings) {
auto& programInstance = program.get(evaluated);
const auto& paintPropertyBinders = bucket.paintPropertyBinders.at(getID());
@@ -110,6 +111,7 @@ void RenderFillLayer::render(PaintParameters& parameters, RenderSource*) {
segments,
allUniformValues,
allAttributeBindings,
+ std::move(textureBindings),
getID()
);
};
@@ -124,7 +126,8 @@ void RenderFillLayer::render(PaintParameters& parameters, RenderSource*) {
? gfx::DepthMaskType::ReadWrite
: gfx::DepthMaskType::ReadOnly),
*bucket.triangleIndexBuffer,
- bucket.triangleSegments);
+ bucket.triangleSegments,
+ FillProgram::TextureBindings{});
}
if (evaluated.get<FillAntialias>() && parameters.pass == RenderPass::Translucent) {
@@ -134,7 +137,8 @@ void RenderFillLayer::render(PaintParameters& parameters, RenderSource*) {
unevaluated.get<FillOutlineColor>().isUndefined() ? 2 : 0,
gfx::DepthMaskType::ReadOnly),
*bucket.lineIndexBuffer,
- bucket.lineSegments);
+ bucket.lineSegments,
+ FillOutlineProgram::TextureBindings{});
}
}
} else {
@@ -159,7 +163,8 @@ void RenderFillLayer::render(PaintParameters& parameters, RenderSource*) {
const auto& drawMode,
const auto& depthMode,
const auto& indexBuffer,
- const auto& segments) {
+ const auto& segments,
+ auto&& textureBindings) {
auto& programInstance = program.get(evaluated);
const auto& paintPropertyBinders = bucket.paintPropertyBinders.at(getID());
@@ -200,6 +205,7 @@ void RenderFillLayer::render(PaintParameters& parameters, RenderSource*) {
segments,
allUniformValues,
allAttributeBindings,
+ std::move(textureBindings),
getID()
);
};
@@ -208,14 +214,16 @@ void RenderFillLayer::render(PaintParameters& parameters, RenderSource*) {
gfx::Triangles(),
parameters.depthModeForSublayer(1, gfx::DepthMaskType::ReadWrite),
*bucket.triangleIndexBuffer,
- bucket.triangleSegments);
+ bucket.triangleSegments,
+ FillProgram::TextureBindings{});
if (evaluated.get<FillAntialias>() && unevaluated.get<FillOutlineColor>().isUndefined()) {
draw(parameters.programs.getFillLayerPrograms().fillOutlinePattern,
gfx::Lines { 2.0f },
parameters.depthModeForSublayer(2, gfx::DepthMaskType::ReadOnly),
*bucket.lineIndexBuffer,
- bucket.lineSegments);
+ bucket.lineSegments,
+ FillOutlineProgram::TextureBindings{});
}
}
}
diff --git a/src/mbgl/renderer/layers/render_heatmap_layer.cpp b/src/mbgl/renderer/layers/render_heatmap_layer.cpp
index 66421874af..9dd1ee6493 100644
--- a/src/mbgl/renderer/layers/render_heatmap_layer.cpp
+++ b/src/mbgl/renderer/layers/render_heatmap_layer.cpp
@@ -128,6 +128,7 @@ void RenderHeatmapLayer::render(PaintParameters& parameters, RenderSource*) {
bucket.segments,
allUniformValues,
allAttributeBindings,
+ HeatmapProgram::TextureBindings{},
getID()
);
}
@@ -176,6 +177,7 @@ void RenderHeatmapLayer::render(PaintParameters& parameters, RenderSource*) {
parameters.staticData.extrusionTextureSegments,
allUniformValues,
allAttributeBindings,
+ HeatmapProgram::TextureBindings{},
getID()
);
}
diff --git a/src/mbgl/renderer/layers/render_hillshade_layer.cpp b/src/mbgl/renderer/layers/render_hillshade_layer.cpp
index 438d6a345f..70ff2379d4 100644
--- a/src/mbgl/renderer/layers/render_hillshade_layer.cpp
+++ b/src/mbgl/renderer/layers/render_hillshade_layer.cpp
@@ -105,6 +105,7 @@ void RenderHillshadeLayer::render(PaintParameters& parameters, RenderSource* src
segments,
allUniformValues,
allAttributeBindings,
+ HillshadeProgram::TextureBindings{},
getID()
);
};
@@ -167,6 +168,7 @@ void RenderHillshadeLayer::render(PaintParameters& parameters, RenderSource* src
parameters.staticData.rasterSegments,
allUniformValues,
allAttributeBindings,
+ HillshadePrepareProgram::TextureBindings{},
getID()
);
bucket.texture = std::move(view.getTexture());
diff --git a/src/mbgl/renderer/layers/render_line_layer.cpp b/src/mbgl/renderer/layers/render_line_layer.cpp
index b38bc490a6..9eb659f79f 100644
--- a/src/mbgl/renderer/layers/render_line_layer.cpp
+++ b/src/mbgl/renderer/layers/render_line_layer.cpp
@@ -64,7 +64,9 @@ void RenderLineLayer::render(PaintParameters& parameters, RenderSource*) {
}
LineBucket& bucket = *bucket_;
- auto draw = [&] (auto& program, auto&& uniformValues, const optional<ImagePosition>& patternPositionA, const optional<ImagePosition>& patternPositionB) {
+ auto draw = [&](auto& program, auto&& uniformValues,
+ const optional<ImagePosition>& patternPositionA,
+ const optional<ImagePosition>& patternPositionB, auto&& textureBindings) {
auto& programInstance = program.get(evaluated);
const auto& paintPropertyBinders = bucket.paintPropertyBinders.at(getID());
@@ -96,6 +98,7 @@ void RenderLineLayer::render(PaintParameters& parameters, RenderSource*) {
bucket.segments,
allUniformValues,
allAttributeBindings,
+ std::move(textureBindings),
getID()
);
};
@@ -118,7 +121,10 @@ void RenderLineLayer::render(PaintParameters& parameters, RenderSource*) {
posA,
posB,
crossfade,
- parameters.lineAtlas.getSize().width), {}, {});
+ parameters.lineAtlas.getSize().width),
+ {},
+ {},
+ LineSDFProgram::TextureBindings{});
} else if (!unevaluated.get<LinePattern>().isUndefined()) {
const auto linePatternValue = evaluated.get<LinePattern>().constantOr(Faded<std::basic_string<char>>{ "", ""});
@@ -140,7 +146,8 @@ void RenderLineLayer::render(PaintParameters& parameters, RenderSource*) {
crossfade,
parameters.pixelRatio),
*posA,
- *posB);
+ *posB,
+ LinePatternProgram::TextureBindings{});
} else if (!unevaluated.get<LineGradient>().getValue().isUndefined()) {
if (!colorRampTexture) {
colorRampTexture = parameters.context.createTexture(colorRamp);
@@ -152,14 +159,20 @@ void RenderLineLayer::render(PaintParameters& parameters, RenderSource*) {
evaluated,
tile,
parameters.state,
- parameters.pixelsToGLUnits), {}, {});
+ parameters.pixelsToGLUnits),
+ {},
+ {},
+ LineGradientProgram::TextureBindings{});
} else {
draw(parameters.programs.getLineLayerPrograms().line,
LineProgram::uniformValues(
evaluated,
tile,
parameters.state,
- parameters.pixelsToGLUnits), {}, {});
+ parameters.pixelsToGLUnits),
+ {},
+ {},
+ LineProgram::TextureBindings{});
}
}
}
diff --git a/src/mbgl/renderer/layers/render_raster_layer.cpp b/src/mbgl/renderer/layers/render_raster_layer.cpp
index 30b180173c..a9fdcc0320 100644
--- a/src/mbgl/renderer/layers/render_raster_layer.cpp
+++ b/src/mbgl/renderer/layers/render_raster_layer.cpp
@@ -119,6 +119,7 @@ void RenderRasterLayer::render(PaintParameters& parameters, RenderSource* source
segments,
allUniformValues,
allAttributeBindings,
+ RasterProgram::TextureBindings{},
getID()
);
};
diff --git a/src/mbgl/renderer/layers/render_symbol_layer.cpp b/src/mbgl/renderer/layers/render_symbol_layer.cpp
index 11eeb376ce..a5ac6ceeea 100644
--- a/src/mbgl/renderer/layers/render_symbol_layer.cpp
+++ b/src/mbgl/renderer/layers/render_symbol_layer.cpp
@@ -93,7 +93,8 @@ void RenderSymbolLayer::render(PaintParameters& parameters, RenderSource*) {
const auto& symbolSizeBinder,
const SymbolPropertyValues& values_,
const auto& binders,
- const auto& paintProperties)
+ const auto& paintProperties,
+ auto&& textureBindings)
{
auto& programInstance = program.get(paintProperties);
@@ -127,6 +128,7 @@ void RenderSymbolLayer::render(PaintParameters& parameters, RenderSource*) {
buffers.segments,
allUniformValues,
allAttributeBindings,
+ std::move(textureBindings),
getID()
);
};
@@ -170,7 +172,8 @@ void RenderSymbolLayer::render(PaintParameters& parameters, RenderSource*) {
bucket.iconSizeBinder,
values,
bucketPaintProperties.iconBinders,
- paintPropertyValues);
+ paintPropertyValues,
+ SymbolSDFIconProgram::TextureBindings{});
}
if (values.hasFill) {
@@ -180,7 +183,8 @@ void RenderSymbolLayer::render(PaintParameters& parameters, RenderSource*) {
bucket.iconSizeBinder,
values,
bucketPaintProperties.iconBinders,
- paintPropertyValues);
+ paintPropertyValues,
+ SymbolSDFIconProgram::TextureBindings{});
}
} else {
draw(parameters.programs.getSymbolLayerPrograms().symbolIcon,
@@ -189,7 +193,8 @@ void RenderSymbolLayer::render(PaintParameters& parameters, RenderSource*) {
bucket.iconSizeBinder,
values,
bucketPaintProperties.iconBinders,
- paintPropertyValues);
+ paintPropertyValues,
+ SymbolIconProgram::TextureBindings{});
}
}
@@ -223,7 +228,8 @@ void RenderSymbolLayer::render(PaintParameters& parameters, RenderSource*) {
bucket.textSizeBinder,
values,
bucketPaintProperties.textBinders,
- paintPropertyValues);
+ paintPropertyValues,
+ SymbolSDFTextProgram::TextureBindings{});
}
if (values.hasFill) {
@@ -233,7 +239,8 @@ void RenderSymbolLayer::render(PaintParameters& parameters, RenderSource*) {
bucket.textSizeBinder,
values,
bucketPaintProperties.textBinders,
- paintPropertyValues);
+ paintPropertyValues,
+ SymbolSDFTextProgram::TextureBindings{});
}
}
@@ -267,6 +274,7 @@ void RenderSymbolLayer::render(PaintParameters& parameters, RenderSource*) {
bucket.collisionBox.segments,
paintAttributeData,
properties,
+ CollisionBoxProgram::TextureBindings{},
parameters.state.getZoom(),
getID()
);
@@ -303,6 +311,7 @@ void RenderSymbolLayer::render(PaintParameters& parameters, RenderSource*) {
bucket.collisionCircle.segments,
paintAttributeData,
properties,
+ CollisionCircleProgram::TextureBindings{},
parameters.state.getZoom(),
getID()
);
diff --git a/src/mbgl/renderer/render_tile.cpp b/src/mbgl/renderer/render_tile.cpp
index beb0a06af9..d240189d74 100644
--- a/src/mbgl/renderer/render_tile.cpp
+++ b/src/mbgl/renderer/render_tile.cpp
@@ -112,6 +112,7 @@ void RenderTile::finishRender(PaintParameters& parameters) {
parameters.state.getZoom()
),
allAttributeBindings,
+ DebugProgram::TextureBindings{},
"debug"
);
@@ -134,6 +135,7 @@ void RenderTile::finishRender(PaintParameters& parameters) {
parameters.state.getZoom()
),
allAttributeBindings,
+ DebugProgram::TextureBindings{},
"debug"
);
}
@@ -162,6 +164,7 @@ void RenderTile::finishRender(PaintParameters& parameters) {
paintAttributeData,
properties
),
+ DebugProgram::TextureBindings{},
"debug"
);
}
diff --git a/src/mbgl/renderer/renderer_impl.cpp b/src/mbgl/renderer/renderer_impl.cpp
index 8aa3690524..d66ba1767e 100644
--- a/src/mbgl/renderer/renderer_impl.cpp
+++ b/src/mbgl/renderer/renderer_impl.cpp
@@ -469,6 +469,7 @@ void Renderer::Impl::render(const UpdateParameters& updateParameters) {
paintAttributeData,
properties
),
+ ClippingMaskProgram::TextureBindings{},
"clipping"
);
}
diff --git a/src/mbgl/renderer/sources/render_image_source.cpp b/src/mbgl/renderer/sources/render_image_source.cpp
index 410491d255..cc8525aa9f 100644
--- a/src/mbgl/renderer/sources/render_image_source.cpp
+++ b/src/mbgl/renderer/sources/render_image_source.cpp
@@ -84,6 +84,7 @@ void RenderImageSource::finishRender(PaintParameters& parameters) {
paintAttributeData,
properties
),
+ DebugProgram::TextureBindings{},
"image"
);
}