diff options
Diffstat (limited to 'src/mbgl/renderer/layers')
-rw-r--r-- | src/mbgl/renderer/layers/render_background_layer.cpp | 2 | ||||
-rw-r--r-- | src/mbgl/renderer/layers/render_circle_layer.cpp | 43 | ||||
-rw-r--r-- | src/mbgl/renderer/layers/render_heatmap_layer.cpp | 47 | ||||
-rw-r--r-- | src/mbgl/renderer/layers/render_hillshade_layer.cpp | 68 | ||||
-rw-r--r-- | src/mbgl/renderer/layers/render_hillshade_layer.hpp | 4 | ||||
-rw-r--r-- | src/mbgl/renderer/layers/render_raster_layer.cpp | 40 |
6 files changed, 87 insertions, 117 deletions
diff --git a/src/mbgl/renderer/layers/render_background_layer.cpp b/src/mbgl/renderer/layers/render_background_layer.cpp index fc916e1d1b..3e12b74db9 100644 --- a/src/mbgl/renderer/layers/render_background_layer.cpp +++ b/src/mbgl/renderer/layers/render_background_layer.cpp @@ -100,7 +100,7 @@ void RenderBackgroundLayer::render(PaintParameters& parameters) { }; if (segments.empty()) { - segments = parameters.staticData.tileTriangleSegments(); + segments = RenderStaticData::tileTriangleSegments(); } const auto& evaluated = static_cast<const BackgroundLayerProperties&>(*evaluatedProperties).evaluated; diff --git a/src/mbgl/renderer/layers/render_circle_layer.cpp b/src/mbgl/renderer/layers/render_circle_layer.cpp index e5d7e6230e..a8a70d2a3a 100644 --- a/src/mbgl/renderer/layers/render_circle_layer.cpp +++ b/src/mbgl/renderer/layers/render_circle_layer.cpp @@ -75,35 +75,26 @@ void RenderCircleLayer::render(PaintParameters& parameters) { const auto& paintPropertyBinders = bucket.paintPropertyBinders.at(getID()); auto& programInstance = parameters.programs.getCircleLayerPrograms().circle; - - const auto allUniformValues = programInstance.computeAllUniformValues( - CircleProgram::LayoutUniformValues { - uniforms::matrix::Value( - tile.translatedMatrix(evaluated.get<CircleTranslate>(), - evaluated.get<CircleTranslateAnchor>(), - parameters.state) - ), - uniforms::scale_with_map::Value( scaleWithMap ), - uniforms::extrude_scale::Value( pitchWithMap - ? std::array<float, 2> {{ - tile.id.pixelsToTileUnits(1, parameters.state.getZoom()), - tile.id.pixelsToTileUnits(1, parameters.state.getZoom()) }} - : parameters.pixelsToGLUnits ), - uniforms::device_pixel_ratio::Value( parameters.pixelRatio ), - uniforms::camera_to_center_distance::Value( parameters.state.getCameraToCenterDistance() ), - uniforms::pitch_with_map::Value( pitchWithMap ) - }, + + const auto allUniformValues = CircleProgram::computeAllUniformValues( + CircleProgram::LayoutUniformValues{ + uniforms::matrix::Value(tile.translatedMatrix( + evaluated.get<CircleTranslate>(), evaluated.get<CircleTranslateAnchor>(), parameters.state)), + uniforms::scale_with_map::Value(scaleWithMap), + uniforms::extrude_scale::Value( + pitchWithMap ? std::array<float, 2>{{tile.id.pixelsToTileUnits(1, parameters.state.getZoom()), + tile.id.pixelsToTileUnits(1, parameters.state.getZoom())}} + : parameters.pixelsToGLUnits), + uniforms::device_pixel_ratio::Value(parameters.pixelRatio), + uniforms::camera_to_center_distance::Value(parameters.state.getCameraToCenterDistance()), + uniforms::pitch_with_map::Value(pitchWithMap)}, paintPropertyBinders, evaluated, - parameters.state.getZoom() - ); - const auto allAttributeBindings = programInstance.computeAllAttributeBindings( - *bucket.vertexBuffer, - paintPropertyBinders, - evaluated - ); + parameters.state.getZoom()); + const auto allAttributeBindings = + CircleProgram::computeAllAttributeBindings(*bucket.vertexBuffer, paintPropertyBinders, evaluated); - checkRenderability(parameters, programInstance.activeBindingCount(allAttributeBindings)); + checkRenderability(parameters, CircleProgram::activeBindingCount(allAttributeBindings)); programInstance.draw( parameters.context, diff --git a/src/mbgl/renderer/layers/render_heatmap_layer.cpp b/src/mbgl/renderer/layers/render_heatmap_layer.cpp index 03a7d12fc4..cc1ebdc175 100644 --- a/src/mbgl/renderer/layers/render_heatmap_layer.cpp +++ b/src/mbgl/renderer/layers/render_heatmap_layer.cpp @@ -112,23 +112,18 @@ void RenderHeatmapLayer::render(PaintParameters& parameters) { auto& programInstance = parameters.programs.getHeatmapLayerPrograms().heatmap; - const auto allUniformValues = programInstance.computeAllUniformValues( - HeatmapProgram::LayoutUniformValues { - uniforms::intensity::Value( evaluated.get<style::HeatmapIntensity>() ), - uniforms::matrix::Value( tile.matrix ), - uniforms::heatmap::extrude_scale::Value( extrudeScale ) - }, + const auto allUniformValues = HeatmapProgram::computeAllUniformValues( + HeatmapProgram::LayoutUniformValues{ + uniforms::intensity::Value(evaluated.get<style::HeatmapIntensity>()), + uniforms::matrix::Value(tile.matrix), + uniforms::heatmap::extrude_scale::Value(extrudeScale)}, paintPropertyBinders, evaluated, - parameters.state.getZoom() - ); - const auto allAttributeBindings = programInstance.computeAllAttributeBindings( - *bucket.vertexBuffer, - paintPropertyBinders, - evaluated - ); + parameters.state.getZoom()); + const auto allAttributeBindings = + HeatmapProgram::computeAllAttributeBindings(*bucket.vertexBuffer, paintPropertyBinders, evaluated); - checkRenderability(parameters, programInstance.activeBindingCount(allAttributeBindings)); + checkRenderability(parameters, HeatmapProgram::activeBindingCount(allAttributeBindings)); programInstance.draw(parameters.context, *renderPass, @@ -156,27 +151,23 @@ void RenderHeatmapLayer::render(PaintParameters& parameters) { auto& programInstance = parameters.programs.getHeatmapLayerPrograms().heatmapTexture; - const auto allUniformValues = programInstance.computeAllUniformValues( + const auto allUniformValues = HeatmapTextureProgram::computeAllUniformValues( HeatmapTextureProgram::LayoutUniformValues{ - uniforms::matrix::Value( viewportMat ), - uniforms::world::Value( size ), - uniforms::opacity::Value( getEvaluated<HeatmapLayerProperties>(evaluatedProperties).get<HeatmapOpacity>() ) - }, + uniforms::matrix::Value(viewportMat), + uniforms::world::Value(size), + uniforms::opacity::Value( + getEvaluated<HeatmapLayerProperties>(evaluatedProperties).get<HeatmapOpacity>())}, paintAttributeData, properties, - parameters.state.getZoom() - ); - const auto allAttributeBindings = programInstance.computeAllAttributeBindings( - *parameters.staticData.heatmapTextureVertexBuffer, - paintAttributeData, - properties - ); + parameters.state.getZoom()); + const auto allAttributeBindings = HeatmapTextureProgram::computeAllAttributeBindings( + *parameters.staticData.heatmapTextureVertexBuffer, paintAttributeData, properties); - checkRenderability(parameters, programInstance.activeBindingCount(allAttributeBindings)); + checkRenderability(parameters, HeatmapTextureProgram::activeBindingCount(allAttributeBindings)); if (segments.empty()) { // Copy over the segments so that we can create our own DrawScopes. - segments = parameters.staticData.heatmapTextureSegments(); + segments = RenderStaticData::heatmapTextureSegments(); } programInstance.draw( parameters.context, diff --git a/src/mbgl/renderer/layers/render_hillshade_layer.cpp b/src/mbgl/renderer/layers/render_hillshade_layer.cpp index 5c4d4f1d95..a937c857cc 100644 --- a/src/mbgl/renderer/layers/render_hillshade_layer.cpp +++ b/src/mbgl/renderer/layers/render_hillshade_layer.cpp @@ -33,13 +33,13 @@ RenderHillshadeLayer::RenderHillshadeLayer(Immutable<style::HillshadeLayer::Impl RenderHillshadeLayer::~RenderHillshadeLayer() = default; -const std::array<float, 2> RenderHillshadeLayer::getLatRange(const UnwrappedTileID& id) { - const LatLng latlng0 = LatLng(id); - const LatLng latlng1 = LatLng(UnwrappedTileID(id.canonical.z, id.canonical.x, id.canonical.y + 1)); - return {{static_cast<float>(latlng0.latitude()), static_cast<float>(latlng1.latitude())}}; +std::array<float, 2> RenderHillshadeLayer::getLatRange(const UnwrappedTileID& id) { + const LatLng latlng0 = LatLng(id); + const LatLng latlng1 = LatLng(UnwrappedTileID(id.canonical.z, id.canonical.x, id.canonical.y + 1)); + return {{static_cast<float>(latlng0.latitude()), static_cast<float>(latlng1.latitude())}}; } -const std::array<float, 2> RenderHillshadeLayer::getLight(const PaintParameters& parameters) { +std::array<float, 2> RenderHillshadeLayer::getLight(const PaintParameters& parameters) { const auto& evaluated = static_cast<const HillshadeLayerProperties&>(*evaluatedProperties).evaluated; float azimuthal = evaluated.get<HillshadeIlluminationDirection>() * util::DEG2RAD; if (evaluated.get<HillshadeIlluminationAnchor>() == HillshadeIlluminationAnchorType::Viewport) azimuthal = azimuthal - parameters.state.getBearing(); @@ -89,26 +89,22 @@ void RenderHillshadeLayer::render(PaintParameters& parameters) { const HillshadeProgram::Binders paintAttributeData{ evaluated, 0 }; - const auto allUniformValues = programInstance.computeAllUniformValues( - HillshadeProgram::LayoutUniformValues { - uniforms::matrix::Value( matrix ), - uniforms::highlight::Value( evaluated.get<HillshadeHighlightColor>() ), - uniforms::shadow::Value( evaluated.get<HillshadeShadowColor>() ), - uniforms::accent::Value( evaluated.get<HillshadeAccentColor>() ), - uniforms::light::Value( getLight(parameters) ), - uniforms::latrange::Value( getLatRange(id) ), + const auto allUniformValues = HillshadeProgram::computeAllUniformValues( + HillshadeProgram::LayoutUniformValues{ + uniforms::matrix::Value(matrix), + uniforms::highlight::Value(evaluated.get<HillshadeHighlightColor>()), + uniforms::shadow::Value(evaluated.get<HillshadeShadowColor>()), + uniforms::accent::Value(evaluated.get<HillshadeAccentColor>()), + uniforms::light::Value(getLight(parameters)), + uniforms::latrange::Value(getLatRange(id)), }, paintAttributeData, evaluated, - parameters.state.getZoom() - ); - const auto allAttributeBindings = programInstance.computeAllAttributeBindings( - vertexBuffer, - paintAttributeData, - evaluated - ); + parameters.state.getZoom()); + const auto allAttributeBindings = + HillshadeProgram::computeAllAttributeBindings(vertexBuffer, paintAttributeData, evaluated); - checkRenderability(parameters, programInstance.activeBindingCount(allAttributeBindings)); + checkRenderability(parameters, HillshadeProgram::activeBindingCount(allAttributeBindings)); programInstance.draw(parameters.context, *parameters.renderPass, @@ -154,29 +150,25 @@ void RenderHillshadeLayer::render(PaintParameters& parameters) { auto& programInstance = parameters.programs.getHillshadeLayerPrograms().hillshadePrepare; - const auto allUniformValues = programInstance.computeAllUniformValues( - HillshadePrepareProgram::LayoutUniformValues { - uniforms::matrix::Value( mat ), - uniforms::dimension::Value( {{stride, stride}} ), - uniforms::zoom::Value( float(tile.id.canonical.z) ), - uniforms::maxzoom::Value( float(maxzoom) ), - uniforms::unpack::Value( bucket.getDEMData().getUnpackVector() ), + const auto allUniformValues = HillshadePrepareProgram::computeAllUniformValues( + HillshadePrepareProgram::LayoutUniformValues{ + uniforms::matrix::Value(mat), + uniforms::dimension::Value({{stride, stride}}), + uniforms::zoom::Value(float(tile.id.canonical.z)), + uniforms::maxzoom::Value(float(maxzoom)), + uniforms::unpack::Value(bucket.getDEMData().getUnpackVector()), }, paintAttributeData, properties, - parameters.state.getZoom() - ); - const auto allAttributeBindings = programInstance.computeAllAttributeBindings( - *parameters.staticData.rasterVertexBuffer, - paintAttributeData, - properties - ); + parameters.state.getZoom()); + const auto allAttributeBindings = HillshadePrepareProgram::computeAllAttributeBindings( + *parameters.staticData.rasterVertexBuffer, paintAttributeData, properties); - checkRenderability(parameters, programInstance.activeBindingCount(allAttributeBindings)); + checkRenderability(parameters, HillshadePrepareProgram::activeBindingCount(allAttributeBindings)); // Copy over the segments so that we can create our own DrawScopes that get destroyed // after this draw call. - auto segments = parameters.staticData.rasterSegments(); + auto segments = RenderStaticData::rasterSegments(); programInstance.draw(parameters.context, *renderPass, gfx::Triangles(), @@ -211,7 +203,7 @@ void RenderHillshadeLayer::render(PaintParameters& parameters) { // Draw the full tile. if (bucket.segments.empty()) { // Copy over the segments so that we can create our own DrawScopes. - bucket.segments = parameters.staticData.rasterSegments(); + bucket.segments = RenderStaticData::rasterSegments(); } draw(parameters.matrixForTile(tile.id, true), *parameters.staticData.rasterVertexBuffer, diff --git a/src/mbgl/renderer/layers/render_hillshade_layer.hpp b/src/mbgl/renderer/layers/render_hillshade_layer.hpp index 61f5c507a9..829b669712 100644 --- a/src/mbgl/renderer/layers/render_hillshade_layer.hpp +++ b/src/mbgl/renderer/layers/render_hillshade_layer.hpp @@ -25,8 +25,8 @@ private: style::HillshadePaintProperties::Unevaluated unevaluated; uint8_t maxzoom = util::TERRAIN_RGB_MAXZOOM; - const std::array<float, 2> getLatRange(const UnwrappedTileID& id); - const std::array<float, 2> getLight(const PaintParameters& parameters); + std::array<float, 2> getLatRange(const UnwrappedTileID& id); + std::array<float, 2> getLight(const PaintParameters& parameters); }; } // namespace mbgl diff --git a/src/mbgl/renderer/layers/render_raster_layer.cpp b/src/mbgl/renderer/layers/render_raster_layer.cpp index 047333d5e5..345222e7ba 100644 --- a/src/mbgl/renderer/layers/render_raster_layer.cpp +++ b/src/mbgl/renderer/layers/render_raster_layer.cpp @@ -100,31 +100,27 @@ void RenderRasterLayer::render(PaintParameters& parameters) { const std::string& drawScopeID) { auto& programInstance = parameters.programs.getRasterLayerPrograms().raster; - const auto allUniformValues = programInstance.computeAllUniformValues( - RasterProgram::LayoutUniformValues { - uniforms::matrix::Value( matrix ), - uniforms::opacity::Value( evaluated.get<RasterOpacity>() ), - uniforms::fade_t::Value( 1 ), - uniforms::brightness_low::Value( evaluated.get<RasterBrightnessMin>() ), - uniforms::brightness_high::Value( evaluated.get<RasterBrightnessMax>() ), - uniforms::saturation_factor::Value( saturationFactor(evaluated.get<RasterSaturation>()) ), - uniforms::contrast_factor::Value( contrastFactor(evaluated.get<RasterContrast>()) ), - uniforms::spin_weights::Value( spinWeights(evaluated.get<RasterHueRotate>()) ), - uniforms::buffer_scale::Value( 1.0f ), - uniforms::scale_parent::Value( 1.0f ), - uniforms::tl_parent::Value( std::array<float, 2> {{ 0.0f, 0.0f }} ), + const auto allUniformValues = RasterProgram::computeAllUniformValues( + RasterProgram::LayoutUniformValues{ + uniforms::matrix::Value(matrix), + uniforms::opacity::Value(evaluated.get<RasterOpacity>()), + uniforms::fade_t::Value(1), + uniforms::brightness_low::Value(evaluated.get<RasterBrightnessMin>()), + uniforms::brightness_high::Value(evaluated.get<RasterBrightnessMax>()), + uniforms::saturation_factor::Value(saturationFactor(evaluated.get<RasterSaturation>())), + uniforms::contrast_factor::Value(contrastFactor(evaluated.get<RasterContrast>())), + uniforms::spin_weights::Value(spinWeights(evaluated.get<RasterHueRotate>())), + uniforms::buffer_scale::Value(1.0f), + uniforms::scale_parent::Value(1.0f), + uniforms::tl_parent::Value(std::array<float, 2>{{0.0f, 0.0f}}), }, paintAttributeData, evaluated, - parameters.state.getZoom() - ); - const auto allAttributeBindings = programInstance.computeAllAttributeBindings( - vertexBuffer, - paintAttributeData, - evaluated - ); + parameters.state.getZoom()); + const auto allAttributeBindings = + RasterProgram::computeAllAttributeBindings(vertexBuffer, paintAttributeData, evaluated); - checkRenderability(parameters, programInstance.activeBindingCount(allAttributeBindings)); + checkRenderability(parameters, RasterProgram::activeBindingCount(allAttributeBindings)); programInstance.draw( parameters.context, @@ -188,7 +184,7 @@ void RenderRasterLayer::render(PaintParameters& parameters) { // Draw the full tile. if (bucket.segments.empty()) { // Copy over the segments so that we can create our own DrawScopes. - bucket.segments = parameters.staticData.rasterSegments(); + bucket.segments = RenderStaticData::rasterSegments(); } draw(parameters.matrixForTile(tile.id, true), *parameters.staticData.rasterVertexBuffer, |