Skip to content
This repository has been archived by the owner on Aug 8, 2023. It is now read-only.

Commit

Permalink
[core] Rebased to master
Browse files Browse the repository at this point in the history
  • Loading branch information
alexshalamov committed Feb 13, 2020
1 parent 5e80bf1 commit a8291fe
Show file tree
Hide file tree
Showing 19 changed files with 203 additions and 271 deletions.
2 changes: 0 additions & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -752,8 +752,6 @@ add_library(
${PROJECT_SOURCE_DIR}/src/mbgl/util/http_timeout.hpp
${PROJECT_SOURCE_DIR}/src/mbgl/util/i18n.cpp
${PROJECT_SOURCE_DIR}/src/mbgl/util/i18n.hpp
${PROJECT_SOURCE_DIR}/src/mbgl/util/id.cpp
${PROJECT_SOURCE_DIR}/src/mbgl/util/id.hpp
${PROJECT_SOURCE_DIR}/src/mbgl/util/interpolate.cpp
${PROJECT_SOURCE_DIR}/src/mbgl/util/intersection_tests.cpp
${PROJECT_SOURCE_DIR}/src/mbgl/util/intersection_tests.hpp
Expand Down
1 change: 0 additions & 1 deletion src/mbgl/renderer/buckets/debug_bucket.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ DebugBucket::DebugBucket(const OverscaledTileID& id,
modified(std::move(modified_)),
expires(std::move(expires_)),
debugMode(debugMode_) {

auto addText = [&] (const std::string& text, double left, double baseline, double scale) {
for (uint8_t c : text) {
if (c < 32 || c >= 127)
Expand Down
7 changes: 2 additions & 5 deletions src/mbgl/renderer/buckets/raster_bucket.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,9 @@ namespace mbgl {
using namespace style;

RasterBucket::RasterBucket(PremultipliedImage&& image_)
: image(std::make_shared<PremultipliedImage>(std::move(image_))){
}
: image(std::make_shared<PremultipliedImage>(std::move(image_))) {}

RasterBucket::RasterBucket(std::shared_ptr<PremultipliedImage> image_)
: image(std::move(image_)) {
}
RasterBucket::RasterBucket(std::shared_ptr<PremultipliedImage> image_) : image(std::move(image_)) {}

RasterBucket::~RasterBucket() = default;

Expand Down
76 changes: 31 additions & 45 deletions src/mbgl/renderer/layers/render_background_layer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
#include <mbgl/renderer/image_manager.hpp>
#include <mbgl/renderer/render_static_data.hpp>
#include <mbgl/programs/programs.hpp>
#include <mbgl/programs/background_program.hpp>
#include <mbgl/util/tile_cover.hpp>
#include <mbgl/map/transform_state.hpp>
#include <mbgl/gfx/cull_face_mode.hpp>
Expand All @@ -18,28 +17,22 @@ using namespace style;

namespace {

inline const BackgroundLayer::Impl& impl_cast(const Immutable<style::Layer::Impl>& impl) {
inline const BackgroundLayer::Impl& impl(const Immutable<style::Layer::Impl>& impl) {
assert(impl->getTypeInfo() == BackgroundLayer::Impl::staticTypeInfo());
return static_cast<const style::BackgroundLayer::Impl&>(*impl);
}

} // namespace

class RenderBackgroundLayer::Impl {
public:
SegmentVector<BackgroundAttributes> segments;
};

RenderBackgroundLayer::RenderBackgroundLayer(Immutable<style::BackgroundLayer::Impl> _impl)
: RenderLayer(makeMutable<BackgroundLayerProperties>(std::move(_impl))),
unevaluated(impl_cast(baseImpl).paint.untransitioned()),
impl(std::make_unique<Impl>()) {
unevaluated(impl(baseImpl).paint.untransitioned()) {
}

RenderBackgroundLayer::~RenderBackgroundLayer() = default;

void RenderBackgroundLayer::transition(const TransitionParameters &parameters) {
unevaluated = impl_cast(baseImpl).paint.transitioned(parameters, std::move(unevaluated));
unevaluated = impl(baseImpl).paint.transitioned(parameters, std::move(unevaluated));
}

void RenderBackgroundLayer::evaluate(const PropertyEvaluationParameters &parameters) {
Expand Down Expand Up @@ -94,23 +87,22 @@ void RenderBackgroundLayer::render(PaintParameters& parameters) {
parameters.context,
*parameters.renderPass,
gfx::Triangles(),
parameters.depthModeForSublayer(0, parameters.pass == RenderPass::Opaque
? gfx::DepthMaskType::ReadWrite
: gfx::DepthMaskType::ReadOnly),
parameters.depthModeForSublayer(
0,
parameters.pass == RenderPass::Opaque ? gfx::DepthMaskType::ReadWrite : gfx::DepthMaskType::ReadOnly),
gfx::StencilMode::disabled(),
parameters.colorModeForRenderPass(),
gfx::CullFaceMode::disabled(),
*parameters.staticData.quadTriangleIndexBuffer,
impl->segments,
segments,
allUniformValues,
allAttributeBindings,
textureBindings,
util::toString(id)
);
util::toString(id));
};

if (impl->segments.empty()) {
impl->segments = parameters.staticData.tileTriangleSegments();
if (segments.empty()) {
segments = parameters.staticData.tileTriangleSegments();
}

const auto& evaluated = static_cast<const BackgroundLayerProperties&>(*evaluatedProperties).evaluated;
Expand All @@ -126,23 +118,19 @@ void RenderBackgroundLayer::render(PaintParameters& parameters) {

uint32_t i = 0;
for (const auto& tileID : util::tileCover(parameters.state, parameters.state.getIntegerZoom())) {
draw(
parameters.programs.getBackgroundLayerPrograms().backgroundPattern,
BackgroundPatternProgram::layoutUniformValues(
parameters.matrixForTile(tileID),
evaluated.get<BackgroundOpacity>(),
parameters.patternAtlas.getPixelSize(),
*imagePosA,
*imagePosB,
crossfade,
tileID,
parameters.state
),
BackgroundPatternProgram::TextureBindings{
textures::image::Value{ parameters.patternAtlas.textureBinding() },
},
i++
);
draw(parameters.programs.getBackgroundLayerPrograms().backgroundPattern,
BackgroundPatternProgram::layoutUniformValues(parameters.matrixForTile(tileID),
evaluated.get<BackgroundOpacity>(),
parameters.patternAtlas.getPixelSize(),
*imagePosA,
*imagePosB,
crossfade,
tileID,
parameters.state),
BackgroundPatternProgram::TextureBindings{
textures::image::Value{parameters.patternAtlas.textureBinding()},
},
i++);
}
} else {
auto backgroundRenderPass = (evaluated.get<BackgroundColor>().a >= 1.0f
Expand All @@ -153,16 +141,14 @@ void RenderBackgroundLayer::render(PaintParameters& parameters) {
}
uint32_t i = 0;
for (const auto& tileID : util::tileCover(parameters.state, parameters.state.getIntegerZoom())) {
draw(
parameters.programs.getBackgroundLayerPrograms().background,
BackgroundProgram::LayoutUniformValues {
uniforms::matrix::Value( parameters.matrixForTile(tileID) ),
uniforms::color::Value( evaluated.get<BackgroundColor>() ),
uniforms::opacity::Value( evaluated.get<BackgroundOpacity>() ),
},
BackgroundProgram::TextureBindings{},
i++
);
draw(parameters.programs.getBackgroundLayerPrograms().background,
BackgroundProgram::LayoutUniformValues{
uniforms::matrix::Value(parameters.matrixForTile(tileID)),
uniforms::color::Value(evaluated.get<BackgroundColor>()),
uniforms::opacity::Value(evaluated.get<BackgroundOpacity>()),
},
BackgroundProgram::TextureBindings{},
i++);
}
}
}
Expand Down
4 changes: 2 additions & 2 deletions src/mbgl/renderer/layers/render_background_layer.hpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
#pragma once

#include <mbgl/programs/background_program.hpp>
#include <mbgl/renderer/render_layer.hpp>
#include <mbgl/style/layers/background_layer_impl.hpp>
#include <mbgl/style/layers/background_layer_properties.hpp>
Expand All @@ -22,8 +23,7 @@ class RenderBackgroundLayer final : public RenderLayer {

// Paint properties
style::BackgroundPaintProperties::Unevaluated unevaluated;
class Impl;
const std::unique_ptr<Impl> impl;
SegmentVector<BackgroundAttributes> segments;
};

} // namespace mbgl
6 changes: 3 additions & 3 deletions src/mbgl/renderer/layers/render_circle_layer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ using namespace style;

namespace {

inline const style::CircleLayer::Impl& impl_cast(const Immutable<style::Layer::Impl>& impl) {
inline const style::CircleLayer::Impl& impl(const Immutable<style::Layer::Impl>& impl) {
assert(impl->getTypeInfo() == CircleLayer::Impl::staticTypeInfo());
return static_cast<const style::CircleLayer::Impl&>(*impl);
}
Expand All @@ -26,11 +26,11 @@ inline const style::CircleLayer::Impl& impl_cast(const Immutable<style::Layer::I

RenderCircleLayer::RenderCircleLayer(Immutable<style::CircleLayer::Impl> _impl)
: RenderLayer(makeMutable<CircleLayerProperties>(std::move(_impl))),
unevaluated(impl_cast(baseImpl).paint.untransitioned()) {
unevaluated(impl(baseImpl).paint.untransitioned()) {
}

void RenderCircleLayer::transition(const TransitionParameters& parameters) {
unevaluated = impl_cast(baseImpl).paint.transitioned(parameters, std::move(unevaluated));
unevaluated = impl(baseImpl).paint.transitioned(parameters, std::move(unevaluated));
}

void RenderCircleLayer::evaluate(const PropertyEvaluationParameters& parameters) {
Expand Down
6 changes: 3 additions & 3 deletions src/mbgl/renderer/layers/render_fill_extrusion_layer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ using namespace style;

namespace {

inline const FillExtrusionLayer::Impl& impl_cast(const Immutable<style::Layer::Impl>& impl) {
inline const FillExtrusionLayer::Impl& impl(const Immutable<style::Layer::Impl>& impl) {
assert(impl->getTypeInfo() == FillExtrusionLayer::Impl::staticTypeInfo());
return static_cast<const FillExtrusionLayer::Impl&>(*impl);
}
Expand All @@ -32,13 +32,13 @@ inline const FillExtrusionLayer::Impl& impl_cast(const Immutable<style::Layer::I

RenderFillExtrusionLayer::RenderFillExtrusionLayer(Immutable<style::FillExtrusionLayer::Impl> _impl)
: RenderLayer(makeMutable<FillExtrusionLayerProperties>(std::move(_impl))),
unevaluated(impl_cast(baseImpl).paint.untransitioned()) {
unevaluated(impl(baseImpl).paint.untransitioned()) {
}

RenderFillExtrusionLayer::~RenderFillExtrusionLayer() = default;

void RenderFillExtrusionLayer::transition(const TransitionParameters& parameters) {
unevaluated = impl_cast(baseImpl).paint.transitioned(parameters, std::move(unevaluated));
unevaluated = impl(baseImpl).paint.transitioned(parameters, std::move(unevaluated));
}

void RenderFillExtrusionLayer::evaluate(const PropertyEvaluationParameters& parameters) {
Expand Down
6 changes: 3 additions & 3 deletions src/mbgl/renderer/layers/render_fill_layer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ using namespace style;

namespace {

inline const FillLayer::Impl& impl_cast(const Immutable<style::Layer::Impl>& impl) {
inline const FillLayer::Impl& impl(const Immutable<style::Layer::Impl>& impl) {
assert(impl->getTypeInfo() == FillLayer::Impl::staticTypeInfo());
return static_cast<const FillLayer::Impl&>(*impl);
}
Expand All @@ -33,13 +33,13 @@ inline const FillLayer::Impl& impl_cast(const Immutable<style::Layer::Impl>& imp

RenderFillLayer::RenderFillLayer(Immutable<style::FillLayer::Impl> _impl)
: RenderLayer(makeMutable<FillLayerProperties>(std::move(_impl))),
unevaluated(impl_cast(baseImpl).paint.untransitioned()) {
unevaluated(impl(baseImpl).paint.untransitioned()) {
}

RenderFillLayer::~RenderFillLayer() = default;

void RenderFillLayer::transition(const TransitionParameters& parameters) {
unevaluated = impl_cast(baseImpl).paint.transitioned(parameters, std::move(unevaluated));
unevaluated = impl(baseImpl).paint.transitioned(parameters, std::move(unevaluated));
}

void RenderFillLayer::evaluate(const PropertyEvaluationParameters& parameters) {
Expand Down
Loading

0 comments on commit a8291fe

Please sign in to comment.