diff options
Diffstat (limited to 'src/mbgl/programs/line_program.cpp')
-rw-r--r-- | src/mbgl/programs/line_program.cpp | 72 |
1 files changed, 39 insertions, 33 deletions
diff --git a/src/mbgl/programs/line_program.cpp b/src/mbgl/programs/line_program.cpp index e5b4cc2ad5..74a1ba3162 100644 --- a/src/mbgl/programs/line_program.cpp +++ b/src/mbgl/programs/line_program.cpp @@ -1,4 +1,5 @@ #include <mbgl/programs/line_program.hpp> +#include <mbgl/gfx/context_impl.hpp> #include <mbgl/style/layers/line_layer_properties.hpp> #include <mbgl/renderer/render_tile.hpp> #include <mbgl/renderer/image_atlas.hpp> @@ -8,6 +9,11 @@ namespace mbgl { +template std::unique_ptr<gfx::Program<LineProgram>> gfx::Context::createProgram(const ProgramParameters&); +template std::unique_ptr<gfx::Program<LinePatternProgram>> gfx::Context::createProgram(const ProgramParameters&); +template std::unique_ptr<gfx::Program<LineGradientProgram>> gfx::Context::createProgram(const ProgramParameters&); +template std::unique_ptr<gfx::Program<LineSDFProgram>> gfx::Context::createProgram(const ProgramParameters&); + using namespace style; static_assert(sizeof(LineLayoutVertex) == 12, "expected LineLayoutVertex size"); @@ -31,12 +37,12 @@ Values makeValues(const RenderLinePaintProperties::PossiblyEvaluated& properties }; } -LineProgram::UniformValues -LineProgram::uniformValues(const RenderLinePaintProperties::PossiblyEvaluated& properties, - const RenderTile& tile, - const TransformState& state, - const std::array<float, 2>& pixelsToGLUnits) { - return makeValues<LineProgram::UniformValues>( +LineProgram::LayoutUniformValues +LineProgram::layoutUniformValues(const RenderLinePaintProperties::PossiblyEvaluated& properties, + const RenderTile& tile, + const TransformState& state, + const std::array<float, 2>& pixelsToGLUnits) { + return makeValues<LineProgram::LayoutUniformValues>( properties, tile, state, @@ -44,16 +50,16 @@ LineProgram::uniformValues(const RenderLinePaintProperties::PossiblyEvaluated& p ); } -LineSDFProgram::UniformValues -LineSDFProgram::uniformValues(const RenderLinePaintProperties::PossiblyEvaluated& properties, - float pixelRatio, - const RenderTile& tile, - const TransformState& state, - const std::array<float, 2>& pixelsToGLUnits, - const LinePatternPos& posA, - const LinePatternPos& posB, - const CrossfadeParameters& crossfade, - float atlasWidth) { +LineSDFProgram::LayoutUniformValues +LineSDFProgram::layoutUniformValues(const RenderLinePaintProperties::PossiblyEvaluated& properties, + float pixelRatio, + const RenderTile& tile, + const TransformState& state, + const std::array<float, 2>& pixelsToGLUnits, + const LinePatternPos& posA, + const LinePatternPos& posB, + const CrossfadeParameters& crossfade, + float atlasWidth) { const float widthA = posA.width * crossfade.fromScale; const float widthB = posB.width * crossfade.toScale; @@ -67,7 +73,7 @@ LineSDFProgram::uniformValues(const RenderLinePaintProperties::PossiblyEvaluated -posB.height / 2.0f }}; - return makeValues<LineSDFProgram::UniformValues>( + return makeValues<LineSDFProgram::LayoutUniformValues>( properties, tile, state, @@ -81,18 +87,18 @@ LineSDFProgram::uniformValues(const RenderLinePaintProperties::PossiblyEvaluated ); } -LinePatternProgram::UniformValues -LinePatternProgram::uniformValues(const RenderLinePaintProperties::PossiblyEvaluated& properties, - const RenderTile& tile, - const TransformState& state, - const std::array<float, 2>& pixelsToGLUnits, - const Size atlasSize, - const CrossfadeParameters& crossfade, - const float pixelRatio) { - +LinePatternProgram::LayoutUniformValues LinePatternProgram::layoutUniformValues( + const RenderLinePaintProperties::PossiblyEvaluated& properties, + const RenderTile& tile, + const TransformState& state, + const std::array<float, 2>& pixelsToGLUnits, + const Size atlasSize, + const CrossfadeParameters& crossfade, + const float pixelRatio) { + const auto tileRatio = 1 / tile.id.pixelsToTileUnits(1, state.getIntegerZoom()); - return makeValues<LinePatternProgram::UniformValues>( + return makeValues<LinePatternProgram::LayoutUniformValues>( properties, tile, state, @@ -103,12 +109,12 @@ 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>( +LineGradientProgram::LayoutUniformValues LineGradientProgram::layoutUniformValues( + const RenderLinePaintProperties::PossiblyEvaluated& properties, + const RenderTile& tile, + const TransformState& state, + const std::array<float, 2>& pixelsToGLUnits) { + return makeValues<LineGradientProgram::LayoutUniformValues>( properties, tile, state, |