diff options
Diffstat (limited to 'src/mbgl/renderer')
-rw-r--r-- | src/mbgl/renderer/buckets/line_bucket.cpp | 20 | ||||
-rw-r--r-- | src/mbgl/renderer/layers/render_line_layer.cpp | 53 | ||||
-rw-r--r-- | src/mbgl/renderer/layers/render_line_layer.hpp | 5 | ||||
-rw-r--r-- | src/mbgl/renderer/layers/render_symbol_layer.cpp | 3 |
4 files changed, 39 insertions, 42 deletions
diff --git a/src/mbgl/renderer/buckets/line_bucket.cpp b/src/mbgl/renderer/buckets/line_bucket.cpp index 1cd1f13851..0bda994160 100644 --- a/src/mbgl/renderer/buckets/line_bucket.cpp +++ b/src/mbgl/renderer/buckets/line_bucket.cpp @@ -148,7 +148,7 @@ void LineBucket::addGeometry(const GeometryCoordinates& coordinates, maxLineLength = std::max<double>(maxLineLength, total_length); lineDistances = Distances{ *numericValue<double>(clip_start_it->second), *numericValue<double>(clip_end_it->second), total_length}; - lineClips.push_back(LineClip{ lineDistances->clipStart, lineDistances->clipEnd }); + lineClips.push_back(LineClip{lineDistances->clipStart, lineDistances->clipEnd}); } const LineJoinType joinType = layout.evaluate<LineJoin>(zoom, feature, canonical); @@ -478,11 +478,10 @@ void LineBucket::addCurrentVertex(const GeometryCoordinate& currentCoordinate, extrude = extrude - (util::perp(normal) * endLeft); vertices.emplace_back(LineProgram::layoutVertex(currentCoordinate, extrude, round, false, endLeft, scaledDistance * LINE_DISTANCE_SCALE)); if (lineDistances) { - vertices2.emplace_back(LineLayoutVertexExt { - { static_cast<float>(lineDistances->lineDistance(distance) - lineDistances->clipStart) }, - { static_cast<float>(lineDistances->clipEnd - lineDistances->clipStart) }, - { static_cast<uint32_t>(lineClips.size()) } - }); + vertices2.emplace_back( + LineLayoutVertexExt{{static_cast<float>(lineDistances->lineDistance(distance) - lineDistances->clipStart)}, + {static_cast<float>(lineDistances->clipEnd - lineDistances->clipStart)}, + {static_cast<uint32_t>(lineClips.size())}}); } e3 = vertices.elements() - 1 - startVertex; if (e1 >= 0 && e2 >= 0) { @@ -496,11 +495,10 @@ void LineBucket::addCurrentVertex(const GeometryCoordinate& currentCoordinate, extrude = extrude - (util::perp(normal) * endRight); vertices.emplace_back(LineProgram::layoutVertex(currentCoordinate, extrude, round, true, -endRight, scaledDistance * LINE_DISTANCE_SCALE)); if (lineDistances) { - vertices2.emplace_back(LineLayoutVertexExt { - { static_cast<float>(lineDistances->lineDistance(distance) - lineDistances->clipStart) }, - { static_cast<float>(lineDistances->clipEnd - lineDistances->clipStart) }, - { static_cast<uint32_t>(lineClips.size()) } - }); + vertices2.emplace_back( + LineLayoutVertexExt{{static_cast<float>(lineDistances->lineDistance(distance) - lineDistances->clipStart)}, + {static_cast<float>(lineDistances->clipEnd - lineDistances->clipStart)}, + {static_cast<uint32_t>(lineClips.size())}}); } e3 = vertices.elements() - 1 - startVertex; if (e1 >= 0 && e2 >= 0) { diff --git a/src/mbgl/renderer/layers/render_line_layer.cpp b/src/mbgl/renderer/layers/render_line_layer.cpp index b0ff011447..25ed647aae 100644 --- a/src/mbgl/renderer/layers/render_line_layer.cpp +++ b/src/mbgl/renderer/layers/render_line_layer.cpp @@ -1,6 +1,8 @@ #include <mbgl/geometry/feature_index.hpp> #include <mbgl/geometry/line_atlas.hpp> #include <mbgl/gfx/cull_face_mode.hpp> +#include <mbgl/math/clamp.hpp> +#include <mbgl/math/log2.hpp> #include <mbgl/programs/line_program.hpp> #include <mbgl/programs/programs.hpp> #include <mbgl/renderer/buckets/line_bucket.hpp> @@ -15,8 +17,6 @@ #include <mbgl/tile/tile.hpp> #include <mbgl/util/intersection_tests.hpp> #include <mbgl/util/math.hpp> -#include <mbgl/math/log2.hpp> -#include <mbgl/math/clamp.hpp> namespace mbgl { @@ -76,8 +76,8 @@ void RenderLineLayer::prepare(const LayerPrepareParameters& params) { const auto& evaluated = getEvaluated<LineLayerProperties>(renderData->layerProperties); auto& bucket = static_cast<LineBucket&>(*renderData->bucket); if (!evaluated.get<LineDasharray>().from.empty()) { - const LinePatternCap cap = bucket.layout.get<LineCap>() == LineCapType::Round - ? LinePatternCap::Round : LinePatternCap::Square; + const LinePatternCap cap = + bucket.layout.get<LineCap>() == LineCapType::Round ? LinePatternCap::Round : LinePatternCap::Square; // Ensures that the dash data gets added to the atlas. params.lineAtlas.getDashPatternTexture( evaluated.get<LineDasharray>().from, evaluated.get<LineDasharray>().to, cap); @@ -88,8 +88,7 @@ void RenderLineLayer::prepare(const LayerPrepareParameters& params) { } void RenderLineLayer::upload(gfx::UploadPass& uploadPass) { - if (unevaluated.get<LineGradient>().getValue().isUndefined()) - return; + if (unevaluated.get<LineGradient>().getValue().isUndefined()) return; for (const RenderTile& tile : *renderTiles) { const LayerRenderData* renderData = tile.getLayerRenderData(*baseImpl); @@ -207,30 +206,25 @@ void RenderLineLayer::render(PaintParameters& parameters) { assert(bucket.gradientTexture); auto& programInstance = parameters.programs.getLineLayerPrograms().lineGradient; - auto&& uniformValues = LineGradientProgram::layoutUniformValues( - evaluated, - tile, - parameters.state, - parameters.pixelsToGLUnits, - parameters.pixelRatio, - bucket.lineClips.size()); + auto&& uniformValues = LineGradientProgram::layoutUniformValues(evaluated, + tile, + parameters.state, + parameters.pixelsToGLUnits, + parameters.pixelRatio, + bucket.lineClips.size()); auto&& textureBindings = LineGradientProgram::TextureBindings{ - textures::image::Value{ bucket.gradientTexture->getResource(), samplerFiler }, + textures::image::Value{bucket.gradientTexture->getResource(), samplerFiler}, }; const auto& paintPropertyBinders = bucket.paintPropertyBinders.at(getID()); const auto allUniformValues = - programInstance.computeAllUniformValues(std::forward<decltype(uniformValues)>(uniformValues), - paintPropertyBinders, - evaluated, - parameters.state.getZoom()); + LineGradientProgram::computeAllUniformValues(std::forward<decltype(uniformValues)>(uniformValues), + paintPropertyBinders, + evaluated, + parameters.state.getZoom()); const auto allAttributeBindings = LineGradientProgram::computeAllAttributeBindings( - *bucket.vertexBuffer, - *bucket.vertexBuffer2, - paintPropertyBinders, - evaluated - ); + *bucket.vertexBuffer, *bucket.vertexBuffer2, paintPropertyBinders, evaluated); - checkRenderability(parameters, programInstance.activeBindingCount(allAttributeBindings)); + checkRenderability(parameters, LineGradientProgram::activeBindingCount(allAttributeBindings)); programInstance.draw(parameters.context, *parameters.renderPass, @@ -332,7 +326,10 @@ bool RenderLineLayer::queryIntersectsFeature(const GeometryCoordinates& queryGeo halfWidth); } -void RenderLineLayer::updateColorRamp(LineBucket& lineBucket, const RenderTile& tile, const RenderSource& source, const TransformState& state) { +void RenderLineLayer::updateColorRamp(LineBucket& lineBucket, + const RenderTile& tile, + const RenderSource& source, + const TransformState& state) { auto colorValue = unevaluated.get<LineGradient>().getValue(); if (colorValue.isUndefined()) { return; @@ -344,14 +341,14 @@ void RenderLineLayer::updateColorRamp(LineBucket& lineBucket, const RenderTile& if (isStepExpression) { const uint8_t sourceMaxZoom = source.getMaxZoom(); const uint8_t zoomDiff = static_cast<uint8_t>(state.getMaxZoom()) - tile.id.canonical.z; - const float potentialOverzoom = tile.id.canonical.z == sourceMaxZoom ? - ceilf(static_cast<float>(1 << zoomDiff)) : 1.0f; + const float potentialOverzoom = + tile.id.canonical.z == sourceMaxZoom ? ceilf(static_cast<float>(1 << zoomDiff)) : 1.0f; const float lineLength = lineBucket.maxLineLength / static_cast<float>(util::EXTENT); // Logical pixel tile size is 512px, and 1024px right before current zoom + 1 const float maxTileSize = 1024; // Maximum possible texture coverage heuristic, bound by hardware max texture size const float maxTextureCoverage = lineLength * maxTileSize * potentialOverzoom; - const uint32_t nextPowerOf2 = static_cast<uint32_t>(powf(2.0f, ceilf(util::log2<float>(maxTextureCoverage)))); + const auto nextPowerOf2 = static_cast<uint32_t>(powf(2.0f, ceilf(util::log2<float>(maxTextureCoverage)))); textureResolution = util::clamp<uint32_t>(nextPowerOf2, 256, gfx::Context::maxTextureSize); samplerFiler = gfx::TextureFilterType::Nearest; diff --git a/src/mbgl/renderer/layers/render_line_layer.hpp b/src/mbgl/renderer/layers/render_line_layer.hpp index 45592822d1..3079d0076f 100644 --- a/src/mbgl/renderer/layers/render_line_layer.hpp +++ b/src/mbgl/renderer/layers/render_line_layer.hpp @@ -41,7 +41,10 @@ private: style::LinePaintProperties::Unevaluated unevaluated; float getLineWidth(const GeometryTileFeature&, float, const FeatureState&) const; - void updateColorRamp(LineBucket& lineBucket, const RenderTile& tile, const RenderSource& source, const TransformState& state); + void updateColorRamp(LineBucket& lineBucket, + const RenderTile& tile, + const RenderSource& source, + const TransformState& state); uint32_t gradientVersion; gfx::TextureFilterType samplerFiler; diff --git a/src/mbgl/renderer/layers/render_symbol_layer.cpp b/src/mbgl/renderer/layers/render_symbol_layer.cpp index 200a87fe9e..ddcff1eed5 100644 --- a/src/mbgl/renderer/layers/render_symbol_layer.cpp +++ b/src/mbgl/renderer/layers/render_symbol_layer.cpp @@ -410,8 +410,7 @@ void RenderSymbolLayer::render(PaintParameters& parameters) { textureBindings, this->getID() + "/" + suffix ); - } - ); + });
}; for (const RenderTile& tile : *renderTiles) { |