diff options
author | Mikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com> | 2018-08-08 15:09:27 +0300 |
---|---|---|
committer | Mikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com> | 2018-08-23 19:01:40 +0300 |
commit | fb5afd34b9b25e993a4b109385215eba0b83923f (patch) | |
tree | 61474b72e7d099808eb85ea60275e58da11bdd39 /src/mbgl/programs | |
parent | 52275f835a38897ebf1aeb2158ccfca2272e4770 (diff) | |
download | qtlocation-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.cpp | 14 | ||||
-rw-r--r-- | src/mbgl/programs/line_program.hpp | 21 | ||||
-rw-r--r-- | src/mbgl/programs/programs.hpp | 2 |
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; |