Commit Graph

46 Commits

Author SHA1 Message Date
Konstantin Käfer
c8cfdb1ced Merge pull request #14126 from mapbox/gfx-refactor-4
Graphics refactor #4
2019-03-15 20:31:12 +01:00
Alexander Shalamov
8be135231d [core] Add possibility of overriding paint properties inside format 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
2019-03-13 17:14:53 +02:00
Konstantin Käfer
e27f330629 [core] add texture bindings to draw call instead of Context member fn 2019-03-12 11:03:54 +01:00
Konstantin Käfer
cb64c380fb [core] add texture bindings to draw call invocations 2019-03-12 11:03:54 +01:00
Konstantin Käfer
2a25270298 [core] move Texture related enums to gfx namespace 2019-03-12 11:03:54 +01:00
Bruno de Oliveira Abinader
ba7427b4ac [core] Transform{State}: s/angle/bearing/ 2019-03-04 14:45:32 +02:00
Konstantin Käfer
67a9dc35bf [core] move CullFaceMode to gfx namespace 2019-03-01 09:33:37 +01:00
Konstantin Käfer
4372ce2b90 [core] move StencilMode to gfx namespace 2019-03-01 09:33:37 +01:00
Konstantin Käfer
4982933a78 [core] move DepthMode to gfx namespace 2019-03-01 09:33:37 +01:00
Konstantin Käfer
fd37d90650 [core] move draw mode and primitives to gfx namespace 2019-03-01 09:33:37 +01:00
Konstantin Käfer
95deab32ce [core] extract attribute structs and gl::Vertex to separate namespace 2019-03-01 09:33:37 +01:00
Mikhail Pozdnyakov
e800f37547 [core] Layer manager is responsible for buckets and layouts creation
This is a step to stop using of render layers in tile worker thread.
2019-02-25 13:47:56 +02:00
Mikhail Pozdnyakov
12295ef335 [core] SymbolBucket: use single map for paint properties data
Obviates unnecessary lookups, improves readability.
2019-01-14 12:53:44 +02:00
Mikhail Pozdnyakov
d37918c169 [core] Split layer type specific code in mbgl::Programs
Progams code for a certain layer type is encapsulted within
a dedicated `<layer type>Programs` class, inherited from
the generic base `LayerTypePrograms` class.

`mbgl::Programs::get<layer type>Programs()` lazily initializes the
layer type-specific programs code using pointer to the base class,
which allows LTO to remove this code from binaries (if the corresponding
`get<layer type>Programs()` method can never be invoked).
2019-01-11 16:43:52 +02:00
Mikhail Pozdnyakov
2bdab82ded [core] shader program must always match bucket in render symbol layer
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.
2019-01-11 11:30:04 +02:00
Mikhail Pozdnyakov
361982fef8 [core][Android][Darwin] LayerManager creates RenderLayer instances
`LayerManager` is now responsible for `RenderLayer` instances creation,
so that there is a single entry point for creating of objects, which
correspond to a certain layer type.

The `LayerType type` field is dropped from `Layer::Impl`.
2018-11-27 18:10:21 +02:00
Alexander Shalamov
77911f1cc9 [core] Replace RenderSymbolLayer downcast with symbol interface 2018-11-19 14:06:21 +02:00
Alexander Shalamov
eb170b250a [core] Add use LayerTypeInfo::Layout for the layers that require Layout 2018-11-19 14:06:21 +02:00
Alexander Shalamov
f6ad5f378e [core] Move RenderTile filtering / sorting logic to render layers 2018-11-19 14:06:21 +02:00
Bruno de Oliveira Abinader
05a7b78aa8 [core] Add face culling mode parameter to Program::draw
Add a parameter to Program::draw to control whether face culling should
be enabled. This will be used in a follow up commit to enable face
culling for fill extrusion layers.
2018-09-13 08:42:36 +03:00
Molly Lloyd
d197fc7d8d [core] simplify dependency layout process and refactor data structures 2018-08-31 13:08:47 -07:00
Molly Lloyd
4a5dc37245 [core] Implement CrossFadedDataDrivenProperty to add support for feature expressions in *-pattern properties 2018-08-31 13:08:47 -07:00
Bruno de Oliveira Abinader
83bd4c2135 [core] Replace remaining dynamic_cast with static_cast 2018-08-08 14:14:34 +03:00
John Firebaugh
f6659c729f [core] Use hand-rolled RTTI 2018-07-24 11:08:40 -07:00
John Firebaugh
2bbc792060 [core] Check all bucket dynamic_casts
A mismatch can occur when a layer changes from one type to another.
2018-07-24 11:08:40 -07:00
Chris Loer
f9b36f9f5b [core] Add symbol-placement: line-center
- Remove unused/vestigial 'maxCameraDistance'
- Create a single collision circle for line labels that are less than half the width of a collision circle
2018-07-23 13:33:27 -07:00
Konstantin Käfer
d66251234d [core] don't use floating point versions of pow/log
GLIBC 2.27 added new versioned symbols of powf and logf, while the double versions of pow and log remained stable.
Prefer the double version to avoid introducing a dependency on a newer version of GLIBC than strictly necessary.
See https://lists.gnu.org/archive/html/info-gnu/2018-02/msg00000.html
2018-06-04 10:43:21 +02:00
Konstantin Käfer
c3346f473a [core] Don't crash when attribute count is exceeded 2018-05-03 16:31:43 -07:00
Chris Loer
14db958ae5 [core] Account for overscaling in debug collision circles.
Fixes issue #11116.
Port of GL JS issue $6041.
2018-02-06 08:46:15 -08:00
Ansis Brammanis
22c07596a0 [core] Split MapMode::Still into Static and Tile
`Tile` makes sure the symbols in the resulting tile are tileable while
symbols in `Still` match rendering in `Continuous` mode.
2017-11-17 10:05:15 -08:00
Chris Loer
ff58848cfd [core] Remove dead code
- CollisionTile
 - FrameHistory
 - PlacementConfig
2017-11-17 10:05:15 -08:00
Chris Loer
30de793c2a [core] Update shaders/tests from GL JS. 2017-11-17 10:05:15 -08:00
John Firebaugh
64203ba53f [core] Refactor Painter away 2017-07-19 09:31:07 -07:00
John Firebaugh
2c0fe49650 [core] Inline Painter::renderSymbol 2017-07-19 09:31:07 -07:00
John Firebaugh
5c24636c26 [core] Eliminate Bucket::render 2017-07-19 09:31:07 -07:00
Chris Loer
e8657becc5 [core] Update shaders.
Implements 'icon-pitch-alignment' (issue #9345)
Fixes issue #9456 (map-aligned point label regression)
2017-07-12 14:14:09 -07:00
Ansis Brammanis
e514138b69 [core] improve legibility of labels that follow lines
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.
2017-07-11 09:10:24 -07:00
Chris Loer
f8402e2042 [core] Set "max_camera_distance" to 1.5 for viewport-aligned road labels.
Viewport-aligned curved labels start to look very strange in the distance. Until we have a better system for projecting them, just prevent them from showing.
2017-07-11 09:10:23 -07:00
John Firebaugh
150fc6b643 [core] Don't transition new layers on a setStyle operation 2017-06-26 09:42:35 -07:00
Konstantin Käfer
244484ca6c [core] retain GeometryTileLayer in SymbolLayout
We're storing GeometryTileFeature objects in SymbolLayout, but they may reference data in GeometryTileLayer, which could go away if we don't retain it.
2017-06-21 17:18:08 -07:00
John Firebaugh
174408ed11 [core] Remove unused SymbolPropertyValues members 2017-06-14 11:14:05 -07:00
John Firebaugh
0b68731207 [core] Per-bucket icon atlases 2017-06-13 10:18:43 -07:00
John Firebaugh
e473f2dcce [core] cascade ⇢ transition / cascading ⇢ transitionable 2017-05-15 09:45:55 -07:00
John Firebaugh
da4d735e2c [core] Unify {Paint,Layout,Light}Properties 2017-05-15 09:45:55 -07:00
John Firebaugh
2690a65f8d [core] *LayerImpl::cascading ⇢ paint 2017-05-15 09:45:55 -07:00
Asheem Mamoowala
84e39611a0 [core] Move renderer/* files into sub-folders (#8983)
Move renderer/* files into sub-folders
2017-05-12 17:07:48 -07:00