diff options
Diffstat (limited to 'src/mbgl/renderer/layers')
-rw-r--r-- | src/mbgl/renderer/layers/render_background_layer.cpp | 9 | ||||
-rw-r--r-- | src/mbgl/renderer/layers/render_circle_layer.cpp | 1 | ||||
-rw-r--r-- | src/mbgl/renderer/layers/render_fill_extrusion_layer.cpp | 12 | ||||
-rw-r--r-- | src/mbgl/renderer/layers/render_fill_layer.cpp | 20 | ||||
-rw-r--r-- | src/mbgl/renderer/layers/render_heatmap_layer.cpp | 2 | ||||
-rw-r--r-- | src/mbgl/renderer/layers/render_hillshade_layer.cpp | 2 | ||||
-rw-r--r-- | src/mbgl/renderer/layers/render_line_layer.cpp | 23 | ||||
-rw-r--r-- | src/mbgl/renderer/layers/render_raster_layer.cpp | 1 | ||||
-rw-r--r-- | src/mbgl/renderer/layers/render_symbol_layer.cpp | 21 |
9 files changed, 68 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() ); |