diff options
-rw-r--r-- | package.json | 2 | ||||
-rw-r--r-- | src/mbgl/programs/line_program.cpp | 22 | ||||
-rw-r--r-- | src/mbgl/programs/line_program.hpp | 17 | ||||
-rw-r--r-- | src/mbgl/renderer/painter_line.cpp | 5 |
4 files changed, 22 insertions, 24 deletions
diff --git a/package.json b/package.json index c449c3ee48..ff549ff844 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,7 @@ "ejs": "^2.4.1", "express": "^4.11.1", "lodash": "^4.16.4", - "mapbox-gl": "mapbox/mapbox-gl-js#eb6c6596c6a7a61363d30356674e0002153b1d19", + "mapbox-gl": "mapbox/mapbox-gl-js#ef5582dd3bc5c15a3112e875ed66494dab8e9d0b", "mapbox-gl-style-spec": "mapbox/mapbox-gl-style-spec#49e8b407bdbbe6f7c92dbcb56d3d51f425fc2653", "mapbox-gl-test-suite": "mapbox/mapbox-gl-test-suite#da53a81453068f4c2b440f9077d6bd5e7e14ff3d", "mkdirp": "^0.5.1", diff --git a/src/mbgl/programs/line_program.cpp b/src/mbgl/programs/line_program.cpp index cd53337c10..f7054d3398 100644 --- a/src/mbgl/programs/line_program.cpp +++ b/src/mbgl/programs/line_program.cpp @@ -16,18 +16,9 @@ template <class Values, class...Args> Values makeValues(const LinePaintProperties::Evaluated& properties, const RenderTile& tile, const TransformState& state, + const std::array<float, 2>& pixelsToGLUnits, Args&&... args) { - mat2 antialiasingMatrix; - matrix::identity(antialiasingMatrix); - matrix::scale(antialiasingMatrix, antialiasingMatrix, 1.0, std::cos(state.getPitch())); - matrix::rotate(antialiasingMatrix, antialiasingMatrix, state.getAngle()); - - // calculate how much longer the real world distance is at the top of the screen - // than at the middle of the screen. - float topedgelength = std::sqrt(std::pow(state.getSize().height, 2.0f) / 4.0f * (1.0f + std::pow(state.getCameraToCenterDistance(), 2.0f))); - float x = state.getSize().height / 2.0f * std::tan(state.getPitch()); - return Values { uniforms::u_matrix::Value{ tile.translatedMatrix(properties.get<LineTranslate>(), @@ -39,9 +30,8 @@ Values makeValues(const LinePaintProperties::Evaluated& properties, uniforms::u_gapwidth::Value{ properties.get<LineGapWidth>() }, uniforms::u_blur::Value{ properties.get<LineBlur>() }, uniforms::u_offset::Value{ properties.get<LineOffset>() }, - uniforms::u_antialiasingmatrix::Value{ antialiasingMatrix }, uniforms::u_ratio::Value{ 1.0f / tile.id.pixelsToTileUnits(1.0, state.getZoom()) }, - uniforms::u_extra::Value{ (topedgelength + x) / topedgelength - 1.0f }, + uniforms::u_gl_units_to_pixels::Value{{{ 1.0f / pixelsToGLUnits[0], 1.0f / pixelsToGLUnits[1] }}}, std::forward<Args>(args)... }; } @@ -49,11 +39,13 @@ Values makeValues(const LinePaintProperties::Evaluated& properties, LineProgram::UniformValues LineProgram::uniformValues(const LinePaintProperties::Evaluated& properties, const RenderTile& tile, - const TransformState& state) { + const TransformState& state, + const std::array<float, 2>& pixelsToGLUnits) { return makeValues<LineProgram::UniformValues>( properties, tile, state, + pixelsToGLUnits, uniforms::u_color::Value{ properties.get<LineColor>() } ); } @@ -63,6 +55,7 @@ LineSDFProgram::uniformValues(const LinePaintProperties::Evaluated& properties, float pixelRatio, const RenderTile& tile, const TransformState& state, + const std::array<float, 2>& pixelsToGLUnits, const LinePatternPos& posA, const LinePatternPos& posB, float dashLineWidth, @@ -84,6 +77,7 @@ LineSDFProgram::uniformValues(const LinePaintProperties::Evaluated& properties, properties, tile, state, + pixelsToGLUnits, uniforms::u_color::Value{ properties.get<LineColor>() }, uniforms::u_patternscale_a::Value{ scaleA }, uniforms::u_patternscale_b::Value{ scaleB }, @@ -99,6 +93,7 @@ LinePatternProgram::UniformValues LinePatternProgram::uniformValues(const LinePaintProperties::Evaluated& properties, const RenderTile& tile, const TransformState& state, + const std::array<float, 2>& pixelsToGLUnits, const SpriteAtlasPosition& posA, const SpriteAtlasPosition& posB) { std::array<float, 2> sizeA {{ @@ -115,6 +110,7 @@ LinePatternProgram::uniformValues(const LinePaintProperties::Evaluated& properti properties, tile, state, + pixelsToGLUnits, uniforms::u_pattern_tl_a::Value{ posA.tl }, uniforms::u_pattern_br_a::Value{ posA.br }, uniforms::u_pattern_tl_b::Value{ posB.tl }, diff --git a/src/mbgl/programs/line_program.hpp b/src/mbgl/programs/line_program.hpp index 059806ffb2..9b97cc47a9 100644 --- a/src/mbgl/programs/line_program.hpp +++ b/src/mbgl/programs/line_program.hpp @@ -22,7 +22,6 @@ namespace uniforms { MBGL_DEFINE_UNIFORM_SCALAR(float, u_ratio); MBGL_DEFINE_UNIFORM_SCALAR(float, u_width); MBGL_DEFINE_UNIFORM_SCALAR(float, u_gapwidth); -MBGL_DEFINE_UNIFORM_SCALAR(float, u_extra); MBGL_DEFINE_UNIFORM_SCALAR(float, u_offset); MBGL_DEFINE_UNIFORM_SCALAR(float, u_tex_y_a); MBGL_DEFINE_UNIFORM_SCALAR(float, u_tex_y_b); @@ -30,7 +29,7 @@ MBGL_DEFINE_UNIFORM_SCALAR(float, u_sdfgamma); MBGL_DEFINE_UNIFORM_SCALAR(float, u_fade); MBGL_DEFINE_UNIFORM_VECTOR(float, 2, u_patternscale_a); MBGL_DEFINE_UNIFORM_VECTOR(float, 2, u_patternscale_b); -MBGL_DEFINE_UNIFORM_MATRIX(double, 2, u_antialiasingmatrix); +MBGL_DEFINE_UNIFORM_VECTOR(float, 2, u_gl_units_to_pixels); } // namespace uniforms struct LineAttributes : gl::Attributes< @@ -93,9 +92,8 @@ class LineProgram : public Program< uniforms::u_gapwidth, uniforms::u_blur, uniforms::u_offset, - uniforms::u_antialiasingmatrix, uniforms::u_ratio, - uniforms::u_extra, + uniforms::u_gl_units_to_pixels, uniforms::u_color>> { public: @@ -103,7 +101,8 @@ public: static UniformValues uniformValues(const style::LinePaintProperties::Evaluated&, const RenderTile&, - const TransformState&); + const TransformState&, + const std::array<float, 2>& pixelsToGLUnits); }; class LinePatternProgram : public Program< @@ -117,9 +116,8 @@ class LinePatternProgram : public Program< uniforms::u_gapwidth, uniforms::u_blur, uniforms::u_offset, - uniforms::u_antialiasingmatrix, uniforms::u_ratio, - uniforms::u_extra, + uniforms::u_gl_units_to_pixels, uniforms::u_pattern_tl_a, uniforms::u_pattern_br_a, uniforms::u_pattern_tl_b, @@ -135,6 +133,7 @@ public: static UniformValues uniformValues(const style::LinePaintProperties::Evaluated&, const RenderTile&, const TransformState&, + const std::array<float, 2>& pixelsToGLUnits, const SpriteAtlasPosition& posA, const SpriteAtlasPosition& posB); }; @@ -150,9 +149,8 @@ class LineSDFProgram : public Program< uniforms::u_gapwidth, uniforms::u_blur, uniforms::u_offset, - uniforms::u_antialiasingmatrix, uniforms::u_ratio, - uniforms::u_extra, + uniforms::u_gl_units_to_pixels, uniforms::u_color, uniforms::u_patternscale_a, uniforms::u_patternscale_b, @@ -169,6 +167,7 @@ public: float pixelRatio, const RenderTile&, const TransformState&, + const std::array<float, 2>& pixelsToGLUnits, const LinePatternPos& posA, const LinePatternPos& posB, float dashLineWidth, diff --git a/src/mbgl/renderer/painter_line.cpp b/src/mbgl/renderer/painter_line.cpp index a66f53a856..012746d2f2 100644 --- a/src/mbgl/renderer/painter_line.cpp +++ b/src/mbgl/renderer/painter_line.cpp @@ -51,6 +51,7 @@ void Painter::renderLine(PaintParameters& parameters, frame.pixelRatio, tile, state, + pixelsToGLUnits, posA, posB, layer.impl->dashLineWidth, @@ -72,6 +73,7 @@ void Painter::renderLine(PaintParameters& parameters, properties, tile, state, + pixelsToGLUnits, *posA, *posB)); @@ -80,7 +82,8 @@ void Painter::renderLine(PaintParameters& parameters, LineProgram::uniformValues( properties, tile, - state)); + state, + pixelsToGLUnits)); } } |