Commit Graph

42 Commits

Author SHA1 Message Date
Mikhail Pozdnyakov
796cc3a4d6 [core] Bitmask operations for enums 2019-09-13 13:45:48 +03:00
Mikhail Pozdnyakov
8a6a332264 [core] Fix assertion at RenderRasterLayer::prepare()
It shall consider that image data might not be available until
the source loads it.
2019-07-26 11:23:13 +03:00
Mikhail Pozdnyakov
fa5646d112 [core] Synchronize render passes and render tiles
Before this change render passes were assigned for the
whole layer at properties evaluation stage.

This caused problems, as layer render data are bound
to the tile and these data might differ from tile to
tile, depending on which tile has been updated by the
tile worker and which has not been yet updated.

This change takes into consideration the actual render
passes required for each tile and combines them for
the layer render passes. Naturally, this change also
introduces render pass check for each render layer in
`RenderLayer::render()` implementations.
2019-07-11 15:36:28 +03:00
Mikhail Pozdnyakov
929824ecc3 [core] Share render tiles lists between layers
This helps to avoid unneeded allocations.
2019-07-09 12:34:58 +03:00
Thiago Marcos P. Santos
3575695033 Revert "[core] Change severity of too many data-driven properties to "Info""
This reverts commit 2125080dc3.
2019-07-08 20:29:43 +03:00
Mikhail Pozdnyakov
da3b7749b0 [core] RenderSource creates render items 2019-07-04 16:56:43 +03:00
Mikhail Pozdnyakov
d570834975 [core] Remove orchestration methods from RenderTile 2019-07-04 16:56:43 +03:00
Thiago Marcos P. Santos
2125080dc3 [core] Change severity of too many data-driven properties to "Info"
So it can be filtered by the SDKs using a Log::Observer.
2019-06-15 03:39:45 +03:00
Mikhail Pozdnyakov
1edebf0035 [core] TilePyramid::getRenderTiles -> getRenderedTiles 2019-06-10 19:36:47 +03:00
Mikhail Pozdnyakov
a03f7b166b [core] RenderTile does not expose Tile
RenderTile and Tile will be split when ochestration movces to a separate thread.

This PR improves encapsulation of Tiles management: now performed within TilePyramid.
2019-05-28 16:16:42 +03:00
Mikhail Pozdnyakov
25093370e2 [core] RenderLayer::setRenderTiles(RenderTiles) -> prepare(LayerPrepareParameters)
RenderLayer::prepare() is responsible for the complete initialization of a render
layer, so that it can render.
2019-05-22 16:41:10 +03:00
Mikhail Pozdnyakov
f2ad89c463 [core] Remove RenderLayerSymbolInterface 2019-05-19 18:15:33 +03:00
Mikhail Pozdnyakov
81823e35a6 [core] RenderTile shall never be created for a not renderable tile
A RenderTile is already never created for a not renderable tile, guarantied by the checks in `updateRenderables()`.

However, the client code had plenty of `isRenderable()` checks in the render path, which complicated the code and affected rendering performance.

This patch removes the unneeded checks from the client code and puts an assertion to `TilePyramid::addRenderTile()`.
2019-05-14 11:19:56 +03:00
Mikhail Pozdnyakov
4c8295e672 [core] Less strict rules for adding render layers to sources 2019-04-29 17:03:23 +03:00
Konstantin Käfer
08163713e2 [core] change approach to stencil clipping to (almost) match JS 2019-04-29 11:37:39 +02:00
Mikhail Pozdnyakov
b96d824b2d [core] Simplify RenderLayer interface. 2019-04-17 17:21:41 +03:00
Mikhail Pozdnyakov
150b427300 [core] Update style::LayerProperties instances in tiles 2019-04-17 17:21:41 +03:00
Mikhail Pozdnyakov
4b21560cf5 [core] Use style::LayerProperties in render layers, buckets and layouts. 2019-04-17 17:21:41 +03:00
Mikhail Pozdnyakov
45e8154d33 [core] Simplify render symbol layer initialization
Obviate few extra calls from the renderer impl parts initializing symbol layers.
2019-04-02 17:40:53 +03:00
Konstantin Käfer
9ee1de575a [core] expose vertex binding count in gfx::Context 2019-03-20 15:40:47 +01:00
Konstantin Käfer
52cf9a1af3 [core] remove gl/context.hpp from more files, cast where necessary 2019-03-20 15:40:47 +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
ac3d59862a [core] TilePyramid has sorted render tiles
Thus we obviate unneeded extra sorting of render tiles at each render layer.
2019-01-16 16:16:18 +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
767745e8b8 [core] Remove casts for Custom and Background render layers 2018-11-19 14:06:21 +02:00
Alexander Shalamov
a7274f66d0 [core] Move layer specific color ramp updates behind common update() method 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
Alexander Shalamov
006ee8b003 [core] Move markContextDestroyed() to the RenderLayer 2018-11-19 14:06:21 +02:00
Konstantin Käfer
1b4398f7aa [core] downgrade event severity for erroneous DDS rendering to Warning 2018-08-20 18:05:33 +02:00
Konstantin Käfer
c3346f473a [core] Don't crash when attribute count is exceeded 2018-05-03 16:31:43 -07:00
Vladimir Agafonkin
82de856c94 [core, ios, macos, android, node] Heatmap layer (#11046)
Co-Authored-By: Konstantin Käfer <mail@kkaefer.com>
Co-Authored-By: Anand Thakker <anandthakker@users.noreply.github.com>
Co-Authored-By: Minh Nguyễn <1ec5@users.noreply.github.com>
2018-02-15 17:38:23 +02:00
Molly Lloyd
f3294200c6 [core] add raster-dem source type and hillshade layer type (#10642) 2018-01-23 10:49:23 -08:00
John Firebaugh
5c24636c26 [core] Eliminate Bucket::render 2017-07-19 09:31:07 -07:00
John Firebaugh
f5d3b850bf [core] Merge RenderLayer::uploadBuckets into RenderSource::startRender 2017-06-13 10:18:43 -07:00
Asheem Mamoowala
f0d0e7423b Refactor RenderLayer and RenderSource to be more friendly for Non-tiled sources (#9058) 2017-05-26 16:54:36 -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
John Firebaugh
095dc7b167 [core] Replace createRender{Source,Layer} with Render{Source,Layer}::create
* Eliminates the need for EnableImmutableFromThis
* Eliminates the dependency of {Source,Layer}::Impl on corresponding Render class (circular dependency)
2017-05-12 11:26:27 -07:00
John Firebaugh
c2a5894f2d [core] Immutable Impls 2017-05-12 11:26:27 -07:00
Bruno de Oliveira Abinader
f709d7b055 [tidy] llvm-namespace-comment 2017-05-12 18:07:36 +03:00
Ivo van Dongen
3c175adf30 [core] split off render layers 2017-04-25 17:23:54 -07:00