summaryrefslogtreecommitdiff
path: root/src/mbgl/programs
diff options
context:
space:
mode:
authorMikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com>2018-08-08 15:09:27 +0300
committerMikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com>2018-08-23 19:01:40 +0300
commitfb5afd34b9b25e993a4b109385215eba0b83923f (patch)
tree61474b72e7d099808eb85ea60275e58da11bdd39 /src/mbgl/programs
parent52275f835a38897ebf1aeb2158ccfca2272e4770 (diff)
downloadqtlocation-mapboxgl-fb5afd34b9b25e993a4b109385215eba0b83923f.tar.gz
[core] Add `line-gradient` property
Porting of https://github.com/mapbox/mapbox-gl-js/pull/6303 See the link above for the description of the feature and its limitations). Based on patch from @lbud (Lauren Budorick).
Diffstat (limited to 'src/mbgl/programs')
-rw-r--r--src/mbgl/programs/line_program.cpp14
-rw-r--r--src/mbgl/programs/line_program.hpp21
-rw-r--r--src/mbgl/programs/programs.hpp2
3 files changed, 37 insertions, 0 deletions
diff --git a/src/mbgl/programs/line_program.cpp b/src/mbgl/programs/line_program.cpp
index faf57ef19b..0533a13c35 100644
--- a/src/mbgl/programs/line_program.cpp
+++ b/src/mbgl/programs/line_program.cpp
@@ -116,4 +116,18 @@ LinePatternProgram::uniformValues(const RenderLinePaintProperties::PossiblyEvalu
);
}
+LineGradientProgram::UniformValues
+LineGradientProgram::uniformValues(const RenderLinePaintProperties::PossiblyEvaluated& properties,
+ const RenderTile& tile,
+ const TransformState& state,
+ const std::array<float, 2>& pixelsToGLUnits) {
+ return makeValues<LineGradientProgram::UniformValues>(
+ properties,
+ tile,
+ state,
+ pixelsToGLUnits,
+ uniforms::u_image::Value{ 0 }
+ );
+}
+
} // namespace mbgl
diff --git a/src/mbgl/programs/line_program.hpp b/src/mbgl/programs/line_program.hpp
index da9964e623..632dbe92b9 100644
--- a/src/mbgl/programs/line_program.hpp
+++ b/src/mbgl/programs/line_program.hpp
@@ -4,6 +4,7 @@
#include <mbgl/programs/attributes.hpp>
#include <mbgl/programs/uniforms.hpp>
#include <mbgl/shaders/line.hpp>
+#include <mbgl/shaders/line_gradient.hpp>
#include <mbgl/shaders/line_pattern.hpp>
#include <mbgl/shaders/line_sdf.hpp>
#include <mbgl/util/geometry.hpp>
@@ -159,6 +160,26 @@ public:
float atlasWidth);
};
+class LineGradientProgram : public Program<
+ shaders::line_gradient,
+ gl::Triangle,
+ LineLayoutAttributes,
+ gl::Uniforms<
+ uniforms::u_matrix,
+ uniforms::u_ratio,
+ uniforms::u_gl_units_to_pixels,
+ uniforms::u_image>,
+ RenderLinePaintProperties>
+{
+public:
+ using Program::Program;
+
+ static UniformValues uniformValues(const RenderLinePaintProperties::PossiblyEvaluated&,
+ const RenderTile&,
+ const TransformState&,
+ const std::array<float, 2>& pixelsToGLUnits);
+};
+
using LineLayoutVertex = LineProgram::LayoutVertex;
using LineAttributes = LineProgram::Attributes;
diff --git a/src/mbgl/programs/programs.hpp b/src/mbgl/programs/programs.hpp
index b703323d9c..7895069112 100644
--- a/src/mbgl/programs/programs.hpp
+++ b/src/mbgl/programs/programs.hpp
@@ -37,6 +37,7 @@ public:
hillshade(context, programParameters),
hillshadePrepare(context, programParameters),
line(context, programParameters),
+ lineGradient(context, programParameters),
lineSDF(context, programParameters),
linePattern(context, programParameters),
raster(context, programParameters),
@@ -64,6 +65,7 @@ public:
HillshadeProgram hillshade;
HillshadePrepareProgram hillshadePrepare;
ProgramMap<LineProgram> line;
+ ProgramMap<LineGradientProgram> lineGradient;
ProgramMap<LineSDFProgram> lineSDF;
ProgramMap<LinePatternProgram> linePattern;
RasterProgram raster;