diff options
author | John Firebaugh <john.firebaugh@gmail.com> | 2016-10-29 14:51:07 -0700 |
---|---|---|
committer | John Firebaugh <john.firebaugh@gmail.com> | 2016-11-08 08:09:28 -0800 |
commit | 36210fe4e9c68a52dedc90548d90e77cf39a2228 (patch) | |
tree | be6f8e5c84f98094a372fc7518a5384fd37563bc /src/mbgl/renderer | |
parent | 687ee1e1c92275f65469412591ff262b46e7ccd9 (diff) | |
download | qtlocation-mapboxgl-36210fe4e9c68a52dedc90548d90e77cf39a2228.tar.gz |
[core] Make attribute binding more similar to uniform binding
Diffstat (limited to 'src/mbgl/renderer')
-rw-r--r-- | src/mbgl/renderer/circle_bucket.cpp | 14 | ||||
-rw-r--r-- | src/mbgl/renderer/circle_bucket.hpp | 2 | ||||
-rw-r--r-- | src/mbgl/renderer/debug_bucket.cpp | 6 | ||||
-rw-r--r-- | src/mbgl/renderer/debug_bucket.hpp | 2 | ||||
-rw-r--r-- | src/mbgl/renderer/fill_bucket.cpp | 4 | ||||
-rw-r--r-- | src/mbgl/renderer/fill_bucket.hpp | 2 | ||||
-rw-r--r-- | src/mbgl/renderer/line_bucket.cpp | 10 | ||||
-rw-r--r-- | src/mbgl/renderer/line_bucket.hpp | 2 | ||||
-rw-r--r-- | src/mbgl/renderer/painter.cpp | 30 | ||||
-rw-r--r-- | src/mbgl/renderer/painter.hpp | 4 | ||||
-rw-r--r-- | src/mbgl/renderer/symbol_bucket.hpp | 4 |
11 files changed, 38 insertions, 42 deletions
diff --git a/src/mbgl/renderer/circle_bucket.cpp b/src/mbgl/renderer/circle_bucket.cpp index 3e98d725bb..1137a3f5dc 100644 --- a/src/mbgl/renderer/circle_bucket.cpp +++ b/src/mbgl/renderer/circle_bucket.cpp @@ -34,9 +34,9 @@ void CircleBucket::addGeometry(const GeometryCollection& geometryCollection) { constexpr const uint16_t vertexLength = 4; for (auto& circle : geometryCollection) { - for(auto & geometry : circle) { - auto x = geometry.x; - auto y = geometry.y; + for(auto& point : circle) { + auto x = point.x; + auto y = point.y; // Do not include points that are outside the tile boundaries. // Include all points in Still mode. You need to include points from @@ -58,10 +58,10 @@ void CircleBucket::addGeometry(const GeometryCollection& geometryCollection) { // │ 1 2 │ // └─────────┘ // - vertices.emplace_back(x, y, -1, -1); // 1 - vertices.emplace_back(x, y, 1, -1); // 2 - vertices.emplace_back(x, y, 1, 1); // 3 - vertices.emplace_back(x, y, -1, 1); // 4 + vertices.emplace_back(CircleAttributes::vertex(point, -1, -1)); // 1 + vertices.emplace_back(CircleAttributes::vertex(point, 1, -1)); // 2 + vertices.emplace_back(CircleAttributes::vertex(point, 1, 1)); // 3 + vertices.emplace_back(CircleAttributes::vertex(point, -1, 1)); // 4 auto& segment = segments.back(); assert(segment.vertexLength <= std::numeric_limits<uint16_t>::max()); diff --git a/src/mbgl/renderer/circle_bucket.hpp b/src/mbgl/renderer/circle_bucket.hpp index a682d423d6..b0ae47f523 100644 --- a/src/mbgl/renderer/circle_bucket.hpp +++ b/src/mbgl/renderer/circle_bucket.hpp @@ -6,7 +6,7 @@ #include <mbgl/gl/vertex_buffer.hpp> #include <mbgl/gl/index_buffer.hpp> #include <mbgl/gl/segment.hpp> -#include <mbgl/shader/circle_vertex.hpp> +#include <mbgl/shader/circle_attributes.hpp> namespace mbgl { diff --git a/src/mbgl/renderer/debug_bucket.cpp b/src/mbgl/renderer/debug_bucket.cpp index 14b3976169..d2d4465ab6 100644 --- a/src/mbgl/renderer/debug_bucket.cpp +++ b/src/mbgl/renderer/debug_bucket.cpp @@ -1,7 +1,7 @@ #include <mbgl/renderer/debug_bucket.hpp> #include <mbgl/renderer/painter.hpp> #include <mbgl/shader/fill_shader.hpp> -#include <mbgl/shader/fill_vertex.hpp> +#include <mbgl/shader/fill_attributes.hpp> #include <mbgl/geometry/debug_font_data.hpp> #include <mbgl/util/string.hpp> @@ -37,8 +37,8 @@ std::vector<FillVertex> buildTextVertices(const OverscaledTileID& id, }; if (prev) { - textPoints.emplace_back(prev->x, prev->y); - textPoints.emplace_back(p.x, p.y); + textPoints.emplace_back(FillAttributes::vertex(*prev)); + textPoints.emplace_back(FillAttributes::vertex(p)); } prev = p; diff --git a/src/mbgl/renderer/debug_bucket.hpp b/src/mbgl/renderer/debug_bucket.hpp index cdffdd8d7a..beb57fa51a 100644 --- a/src/mbgl/renderer/debug_bucket.hpp +++ b/src/mbgl/renderer/debug_bucket.hpp @@ -6,7 +6,7 @@ #include <mbgl/util/optional.hpp> #include <mbgl/util/noncopyable.hpp> #include <mbgl/gl/vertex_buffer.hpp> -#include <mbgl/shader/fill_vertex.hpp> +#include <mbgl/shader/fill_attributes.hpp> namespace mbgl { diff --git a/src/mbgl/renderer/fill_bucket.cpp b/src/mbgl/renderer/fill_bucket.cpp index 9a6f31cbfc..97ba5c5f9e 100644 --- a/src/mbgl/renderer/fill_bucket.cpp +++ b/src/mbgl/renderer/fill_bucket.cpp @@ -58,11 +58,11 @@ void FillBucket::addGeometry(const GeometryCollection& geometry) { assert(lineSegment.vertexLength <= std::numeric_limits<uint16_t>::max()); uint16_t lineIndex = lineSegment.vertexLength; - vertices.emplace_back(ring[0].x, ring[0].y); + vertices.emplace_back(FillAttributes::vertex(ring[0])); lines.emplace_back(lineIndex + nVertices - 1, lineIndex); for (uint32_t i = 1; i < nVertices; i++) { - vertices.emplace_back(ring[i].x, ring[i].y); + vertices.emplace_back(FillAttributes::vertex(ring[i])); lines.emplace_back(lineIndex + i - 1, lineIndex + i); } diff --git a/src/mbgl/renderer/fill_bucket.hpp b/src/mbgl/renderer/fill_bucket.hpp index 715b8e2745..c7f07b51e7 100644 --- a/src/mbgl/renderer/fill_bucket.hpp +++ b/src/mbgl/renderer/fill_bucket.hpp @@ -5,7 +5,7 @@ #include <mbgl/gl/vertex_buffer.hpp> #include <mbgl/gl/index_buffer.hpp> #include <mbgl/gl/segment.hpp> -#include <mbgl/shader/fill_vertex.hpp> +#include <mbgl/shader/fill_attributes.hpp> #include <vector> diff --git a/src/mbgl/renderer/line_bucket.cpp b/src/mbgl/renderer/line_bucket.cpp index 9856684c58..1db075652c 100644 --- a/src/mbgl/renderer/line_bucket.cpp +++ b/src/mbgl/renderer/line_bucket.cpp @@ -372,12 +372,10 @@ void LineBucket::addCurrentVertex(const GeometryCoordinate& currentCoordinate, bool round, std::size_t startVertex, std::vector<TriangleElement>& triangleStore) { - int8_t tx = round ? 1 : 0; - Point<double> extrude = normal; if (endLeft) extrude = extrude - (util::perp(normal) * endLeft); - vertices.emplace_back(currentCoordinate.x, currentCoordinate.y, extrude.x, extrude.y, tx, 0, endLeft, distance * LINE_DISTANCE_SCALE); + vertices.emplace_back(LineAttributes::vertex(currentCoordinate, extrude, { round, false }, endLeft, distance * LINE_DISTANCE_SCALE)); e3 = vertices.size() - 1 - startVertex; if (e1 >= 0 && e2 >= 0) { triangleStore.emplace_back(e1, e2, e3); @@ -388,7 +386,7 @@ void LineBucket::addCurrentVertex(const GeometryCoordinate& currentCoordinate, extrude = normal * -1.0; if (endRight) extrude = extrude - (util::perp(normal) * endRight); - vertices.emplace_back(currentCoordinate.x, currentCoordinate.y, extrude.x, extrude.y, tx, 1, -endRight, distance * LINE_DISTANCE_SCALE); + vertices.emplace_back(LineAttributes::vertex(currentCoordinate, extrude, { round, true }, -endRight, distance * LINE_DISTANCE_SCALE)); e3 = vertices.size() - 1 - startVertex; if (e1 >= 0 && e2 >= 0) { triangleStore.emplace_back(e1, e2, e3); @@ -412,10 +410,8 @@ void LineBucket::addPieSliceVertex(const GeometryCoordinate& currentVertex, bool lineTurnsLeft, std::size_t startVertex, std::vector<TriangleElement>& triangleStore) { - int8_t ty = lineTurnsLeft; - Point<double> flippedExtrude = extrude * (lineTurnsLeft ? -1.0 : 1.0); - vertices.emplace_back(currentVertex.x, currentVertex.y, flippedExtrude.x, flippedExtrude.y, 0, ty, 0, distance * LINE_DISTANCE_SCALE); + vertices.emplace_back(LineAttributes::vertex(currentVertex, flippedExtrude, { false, lineTurnsLeft }, 0, distance * LINE_DISTANCE_SCALE)); e3 = vertices.size() - 1 - startVertex; if (e1 >= 0 && e2 >= 0) { triangleStore.emplace_back(e1, e2, e3); diff --git a/src/mbgl/renderer/line_bucket.hpp b/src/mbgl/renderer/line_bucket.hpp index 7b4c5f1b57..1123ddadb6 100644 --- a/src/mbgl/renderer/line_bucket.hpp +++ b/src/mbgl/renderer/line_bucket.hpp @@ -5,7 +5,7 @@ #include <mbgl/gl/vertex_buffer.hpp> #include <mbgl/gl/index_buffer.hpp> #include <mbgl/gl/segment.hpp> -#include <mbgl/shader/line_vertex.hpp> +#include <mbgl/shader/line_attributes.hpp> #include <mbgl/style/layers/line_layer_properties.hpp> #include <vector> diff --git a/src/mbgl/renderer/painter.cpp b/src/mbgl/renderer/painter.cpp index 7ab7b741ea..6777871516 100644 --- a/src/mbgl/renderer/painter.cpp +++ b/src/mbgl/renderer/painter.cpp @@ -45,25 +45,25 @@ Painter::Painter(gl::Context& context_, const TransformState& state_) : context(context_), state(state_), tileTriangleVertexBuffer(context.createVertexBuffer(std::vector<FillVertex> {{ - { 0, 0 }, - { util::EXTENT, 0 }, - { 0, util::EXTENT }, - { util::EXTENT, 0 }, - { 0, util::EXTENT }, - { util::EXTENT, util::EXTENT } + FillAttributes::vertex({ 0, 0 }), + FillAttributes::vertex({ util::EXTENT, 0 }), + FillAttributes::vertex({ 0, util::EXTENT }), + FillAttributes::vertex({ util::EXTENT, 0 }), + FillAttributes::vertex({ 0, util::EXTENT }), + FillAttributes::vertex({ util::EXTENT, util::EXTENT }) }})), tileLineStripVertexBuffer(context.createVertexBuffer(std::vector<FillVertex> {{ - { 0, 0 }, - { util::EXTENT, 0 }, - { util::EXTENT, util::EXTENT }, - { 0, util::EXTENT }, - { 0, 0 } + FillAttributes::vertex({ 0, 0 }), + FillAttributes::vertex({ util::EXTENT, 0 }), + FillAttributes::vertex({ util::EXTENT, util::EXTENT }), + FillAttributes::vertex({ 0, util::EXTENT }), + FillAttributes::vertex({ 0, 0 }) }})), rasterVertexBuffer(context.createVertexBuffer(std::vector<RasterVertex> {{ - { 0, 0, 0, 0 }, - { util::EXTENT, 0, 32767, 0 }, - { 0, util::EXTENT, 0, 32767 }, - { util::EXTENT, util::EXTENT, 32767, 32767 } + RasterAttributes::vertex({ 0, 0 }, { 0, 0 }), + RasterAttributes::vertex({ util::EXTENT, 0 }, { 32767, 0 }), + RasterAttributes::vertex({ 0, util::EXTENT }, { 0, 32767 }), + RasterAttributes::vertex({ util::EXTENT, util::EXTENT }, { 32767, 32767 }) }})) { #ifndef NDEBUG gl::debugging::enable(); diff --git a/src/mbgl/renderer/painter.hpp b/src/mbgl/renderer/painter.hpp index ea60f79801..d7154397f3 100644 --- a/src/mbgl/renderer/painter.hpp +++ b/src/mbgl/renderer/painter.hpp @@ -9,8 +9,8 @@ #include <mbgl/renderer/bucket.hpp> #include <mbgl/gl/context.hpp> -#include <mbgl/shader/fill_vertex.hpp> -#include <mbgl/shader/raster_vertex.hpp> +#include <mbgl/shader/fill_attributes.hpp> +#include <mbgl/shader/raster_attributes.hpp> #include <mbgl/style/style.hpp> diff --git a/src/mbgl/renderer/symbol_bucket.hpp b/src/mbgl/renderer/symbol_bucket.hpp index a905e25363..993d3b85d8 100644 --- a/src/mbgl/renderer/symbol_bucket.hpp +++ b/src/mbgl/renderer/symbol_bucket.hpp @@ -5,8 +5,8 @@ #include <mbgl/gl/vertex_buffer.hpp> #include <mbgl/gl/index_buffer.hpp> #include <mbgl/gl/segment.hpp> -#include <mbgl/shader/symbol_vertex.hpp> -#include <mbgl/shader/collision_box_vertex.hpp> +#include <mbgl/shader/symbol_attributes.hpp> +#include <mbgl/shader/collision_box_attributes.hpp> #include <mbgl/text/glyph_range.hpp> #include <mbgl/style/layers/symbol_layer_properties.hpp> |