summaryrefslogtreecommitdiff
path: root/src/mbgl/renderer/layers
diff options
context:
space:
mode:
Diffstat (limited to 'src/mbgl/renderer/layers')
-rw-r--r--src/mbgl/renderer/layers/render_background_layer.cpp2
-rw-r--r--src/mbgl/renderer/layers/render_circle_layer.cpp43
-rw-r--r--src/mbgl/renderer/layers/render_heatmap_layer.cpp47
-rw-r--r--src/mbgl/renderer/layers/render_hillshade_layer.cpp68
-rw-r--r--src/mbgl/renderer/layers/render_hillshade_layer.hpp4
-rw-r--r--src/mbgl/renderer/layers/render_raster_layer.cpp40
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,