summaryrefslogtreecommitdiff
path: root/src/mbgl/renderer/buckets/symbol_bucket.hpp
Commit message (Collapse)AuthorAgeFilesLines
* [core] Drop BucketPlacementParametersMikhail Pozdnyakov2020-03-031-1/+1
|
* [core] Encapsulate placement code handling symbols sort rangesMikhail Pozdnyakov2020-03-031-10/+14
|
* [core] sort symbols using symbol-sort-key before placement (#16023)Ansis Brammanis2020-02-111-0/+2
| | | | fix #15964 partially port mapbox/mapbox-gl-js#9054
* [core] Do not index and place the off-screen symbols for overscaled tilesMikhail Pozdnyakov2020-01-221-1/+2
| | | | | For overscaled tiles the viewport might be showing only a small part of the tile, so we filter out the off-screen symbols to improve the performance.
* [core] Simplify CrossTileSymbolIndex::addLayer()Mikhail Pozdnyakov2020-01-221-1/+1
|
* [core] Don't use signed int type for anchor segmentAlexander Shalamov2019-12-091-7/+21
|
* [core] Use new 'SymbolTextAndIcon' program to draw icons in textAlexander Shalamov2019-12-021-1/+3
|
* [core] Clang format fixandroid-v8.3.2Mikhail Pozdnyakov2019-09-191-1/+2
|
* [core] Fix Placement constnessMikhail Pozdnyakov2019-09-191-2/+2
| | | | Update buckets methods do not mutate placement, placement methods do not mutate buckets.
* [core] fix collisionBox alignment when Icon/text translation is enabled (#15467)zmiao2019-08-301-10/+24
| | | | | | | | | | | | | | | | | | * add initial fix * fix bug for collision circle * refind code structure * fix indentation * update test * refind code structure * Add changelog * Add comment for boolean
* [core] fix mixed sdf + non-sdf icon rendering in one layer (#15456)zmiao2019-08-261-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * [core] fix icon symbol rendring when sdf and non-sdf icon in the same symbol layer * fix build error * fix typo * revert renderableSegment change * simplify codes * fix build error * refine sdf icon flag * [core] fix mixed sdf + non-sdf icon rendering in one layer * remove iconstatus getter in stymbol bucket * fix review findings * provide bitwise operator for SymbolContent enum * use MBGL_MBGL_CONSTEXPR * add one missing update for sdfIcon * make renderer symbol type as enum
* [core] Fix combination of icon-text-fit with text-variable-anchors and ↵Alexander Shalamov2019-08-201-2/+5
| | | | text-writing-mode
* [core] Implement support for "text-writing-mode" layout propertyAlexander Shalamov2019-08-131-2/+9
|
* [core] Remove ProjectedCollisionBox from CollisionBoxMikhail Pozdnyakov2019-08-051-4/+4
| | | | | - Minus 20 bytes from CollisionBox size. - Fix constness at Placement::placeBucket
* [core] Remove unused field from icon bufferAlexander Shalamov2019-07-231-1/+0
|
* [core] SymbolBacket creates collision buffers optionallyMikhail Pozdnyakov2019-07-221-2/+14
| | | | sizeof(SymbolBucket) : 1024 -> 704
* [core] Symbol bucket uses shared layoutMikhail Pozdnyakov2019-07-221-2/+2
| | | | sizeof(SymbolBucket): 2296 -> 1024
* [core] sizeof(SymbolBucket) 2312 -> 2296Mikhail Pozdnyakov2019-07-221-13/+13
|
* [core] Use fresh transform state for bucket vertices update in placementMikhail Pozdnyakov2019-06-031-1/+1
| | | | The transform state cached in placement might get stale and cannot be used for bucket vertices updates.
* [core] Encapsulate symbol bucket placement code in Placement::placeLayerBucket()Mikhail Pozdnyakov2019-05-281-1/+1
|
* [core] SymbolBucket updates complete at placement stageMikhail Pozdnyakov2019-05-241-2/+3
| | | | | | | | `RenderSymbolLayer` does not have to update dynamic vertices of its buckets, this logic is moved to placement (which is already updates opacity vertices). * fixes clustering of labels when text variable placement enabled - as assignes `usesVariablePlacement` per bucket * simplifies the code in `RenderSymbolLayer` (the `RenderSymbolLayer::upload()` is now omitted). * symbol buckets are not modified after orchestration finishes
* [core] Avoid bucket downcasting in PlacementMikhail Pozdnyakov2019-05-191-0/+2
|
* [core] Remove Bucket::supportsLayerMikhail Pozdnyakov2019-05-191-1/+0
|
* [core] RenderLayerSymbolInterface is not used in CrossTileSymbolIndexMikhail Pozdnyakov2019-05-191-1/+4
|
* [core] add gfx::UploadPass, split startRender into prepare and uploadKonstantin Käfer2019-05-151-1/+1
|
* [core] Placement order matches viewport-y sortMikhail Pozdnyakov2019-05-081-0/+2
| | | | | | | | Symbols are placed accordingly to their viewport Y order, if the style `symbol-z-order` is set to `viewport-y`. This improves rendering of symbol layers, where icons are allowed to overlap but not text.
* [core] Update `style::LayerProperties` instances in tilesMikhail Pozdnyakov2019-04-171-6/+2
|
* [core] Introduce `LayerRenderData`. Source::update() accepts layer properties.Mikhail Pozdnyakov2019-04-171-1/+1
|
* [core] Introduce variable text placement for point labels - Layout partMikhail Pozdnyakov2019-03-291-1/+5
|
* Merge pull request #14126 from mapbox/gfx-refactor-4Konstantin Käfer2019-03-151-1/+1
| | | Graphics refactor #4
* [core] Add possibility of overriding paint properties inside format ↵Alexander Shalamov2019-03-131-13/+7
| | | | | | | | | | | | | | | | | | expression #14062 * [core] Add format override expression and formatted section to evaluation context * [core] Add textColor to TaggedString's formatted section * [core] Add FormatSectionOverrides and introduce overridable properties * [core] Populate symbol layer paint properties for text sections * [core] Add benchmark for style that uses text-color override * [core] Add unit test for FormatOverrideExpression * [core] Add unit test for FormatSectionOverrides
* [core] use abstract Context interface where possibleKonstantin Käfer2019-03-121-1/+1
|
* [core] move VertexBuffer<> to gfx namespaceKonstantin Käfer2019-03-061-9/+9
|
* [core] move IndexBuffer to gfx namespaceKonstantin Käfer2019-03-061-5/+5
|
* [core] remove unused template parameter from gl::IndexBufferKonstantin Käfer2019-03-061-4/+4
|
* [core] move VertexVector/IndexVector to gfx namespaceKonstantin Käfer2019-03-061-12/+12
|
* [core] move draw mode and primitives to gfx namespaceKonstantin Käfer2019-03-011-8/+8
|
* [core] extract attribute structs and gl::Vertex to separate namespaceKonstantin Käfer2019-03-011-14/+14
|
* [core] SymbolBucket: use single map for paint properties dataMikhail Pozdnyakov2019-01-141-6/+7
| | | | Obviates unnecessary lookups, improves readability.
* [core] shader program must always match bucket in render symbol layerMikhail Pozdnyakov2019-01-111-1/+3
| | | | | | | | | Before this change, `RenderSymbolLayer` with updated style was trying to render symbols using the previous bucket (with paint property binders that matched a previous program). Now, symbol bucket caches the latest corresponding paint properties (caching is happening on complete tiles only). As a result, `RenderSymbolLayer` always picks the shader program and its parameters in sync with the obtained bucket.
* [core] Drop LayerTypeMikhail Pozdnyakov2019-01-041-6/+3
| | | | | Drop LayerType and its remaining usages. The generic code should be layer type agnostic.
* [core] Merge DataDrivenPropertyValue into PropertyValue (#12513)John Firebaugh2018-07-311-10/+10
|
* [core] Use hand-rolled RTTIJohn Firebaugh2018-07-241-0/+5
|
* [core] Only run placement for first layer per SymbolBucketChris Loer2018-05-031-0/+3
| | | | | | | | | Native version of mapbox/mapbox-gl-js#6548. Port of mapbox/mapbox-gl-js#6550. Prevents symbols that share the same layout properties from colliding against each other. Bump GL JS pin to get regression test. Rename "bucketName" -> "bucketLeaderID" to make it clearer what it represents.
* Port global symbol query from GL JS:Chris Loer2018-04-251-0/+2
| | | | | | | - Symbol querying is now global instead of per-tile - Symbols that bleed over tile boundaries no longer missed in queries - Symbol results now sorted based on rendering order (ie overlapping symbols change their sort order when a bearing change causes their render order to change) - Placement::retainedQueryData now responsible for maintaining symbol querying data for buckets that may no longer be in the TilePyramid.
* [core] fix symbol flickering after data updatesAnsis Brammanis2018-01-111-0/+1
|
* [core] Switch from background to foreground placementChris Loer2017-11-171-11/+47
| | | | | | | | | | | | - Background placement code now just generates static symbol buffers - Don't render GeometryTiles until their symbols are loaded. This is necessary for the CrossTileSymbolIndex to successfully prevent flicker. - SymbolInstances are transferred to SymbolBucket for use on foreground during collision detection - Symbols are sorted on foreground by sorting their index buffer but leaving vertex buffers intact (only works within one segment) - Vertical glyphs are generated at same time as horizontal glyphs. `reprojectLineLabels` chooses which one to use at render time and hides the other. - Icons are now always represented with a single collision box, even if they're placed along a line (this means their rotation alignment may be wrong, but the approach of representing them with multiple collision boxes wasn't very accurate either). - Generate vertices for new debug collision boxes and collision circles - Only add symbols within tile boundaries (reduces work, avoids double-draw) - Update symbol_projection.cpp to support line label projection calls from CollisionIndex.
* [core] Eliminate Bucket::renderJohn Firebaugh2017-07-191-1/+0
|
* [core] Rework attribute binding (again)John Firebaugh2017-07-121-4/+4
| | | | | | | | | | These changes are necessary for programs whose set of active attributes is not fixed at compile time by a template parameter pack, but rather varies based on the generated shader text at runtime. In such cases, the attribute location of a given named attribute may vary between instances of the same Program. Previously, attribute bindings were implicitly associated with a location based on template parameter order, and -1 was used to indicate an inactive attribute. This left us unable to disable the appropriate attribute when it went from active to inactive. Now, the state tracker for bindings explicitly associates locations and state, and an empty optional is used to indicate an inactive attribute. In addition, a gl::VertexArray class is now exposed, allowing more flexibility in the relationship between Programs, Segments, and attribute bindings. In this commit, that relationship does not change, but the subsequent commit adjusts it to match gl-js, reduce rebinds, and work around buggy VAO implementations. VertexArray uses a pimpl idiom in order to support implementations that lack the VAO extension. In that case, all VertexArrays share global binding state, reflecting the platform reality in the absence of VAOs, while still providing a uniform API.
* [core] improve legibility of labels that follow linesAnsis Brammanis2017-07-111-0/+24
| | | | | | | | | | port https://github.com/mapbox/mapbox-gl-js/pull/4781 This improves legibility of labels that follow lines in pitched views. The previous approach used the limited information in the shader to calculate put the glyph in approximatelyright place. The new approach does this more accurately by doing it on the cpu where we have access to the entire line geometry.