Comments (5)
Some thoughts on the subject.
It looks like a really deep-seated problem without any easy and performance-safe solutions.
Reason for such behaviour is obvious:
in drawFill, we first draw all the fills, then all the outlines. Pseudocode:
for (tile of tiles)
drawFill()
for (tile of tiles)
drawOutline()
So it's no surprise that outlines appear on top.
To make it work, we need to alternate fills and outlines:
"fill shape1 -> outline shape1 -> fill shape2 -> outline shape2 -> ..."
This is currently a very non-trivial task. For that we need to "take apart" each tile and somehow draw its features 1 by 1:
for (tile of tiles)
features = extractFeaturesFrom(tile)
for (feature of features)
drawFill()
drawOutline()
This looks like a really disruptive solution. Implementation will surely be difficult and performance will apparently suffer, though hard to tell how much.
So perhaps the best solution would be to leave it as it is. Overlapping geometries within a single source is not a widespread case i suppose.
from maplibre-gl-js.
I need to check again, but it might be that the error is not present when terrain is on.
from maplibre-gl-js.
When terrain is on we render to texture, which is a lot slower and can explain the difference, I think.
from maplibre-gl-js.
Unrelated, but still interesting to me, do you have a number on the performance impact of rendering to texture vs the normal path? Do we have a benchmark maybe?
from maplibre-gl-js.
I don't, but it's a noticable difference in terms of UX so it's in the area of hundres of milliseconds.
from maplibre-gl-js.
Related Issues (20)
- CSS: `-ms-high-contrast` is in the process of being deprecated HOT 1
- Feature Properties Transform HOT 4
- fill-outline-color does not draw when terrain is enabled on the map. HOT 1
- Maplibre >=4.2.0: can't use "within" filter in "all" filter anymore: ["all", ["within", ...], ...] HOT 10
- Stop rendering when hands off computer, a.k.a frame invalidation HOT 5
- Marker hovers above Globe when moving the map HOT 2
- within filter inconsistent results based on zoom level HOT 4
- docs: show how to npm i maplibre-gl on intro page HOT 2
- transformCameraUpdate leads to unexpected camera jumps when targetting terrain HOT 1
- `feature-state` with `fill-outline-color` breaks rendering HOT 11
- map crashes when panning through mountains in 3D terrain (even on maplibre docs itself) HOT 3
- Poor sprite quality HOT 3
- Filter based on zoom level gives wrong results HOT 4
- RTL plugin with `await` triggers console error HOT 1
- Add an `.editorconfig` config HOT 2
- Zoom in to maximum spatiotemporal white, tile only has level 16, use level 16 zoom when zooming in to level 18 HOT 1
- GeolocateControl create control button twice when mounted/unmounted/remounted HOT 2
- Suggest installing newer version of maplibre-gl HOT 1
- Docs: Images are not lazy loaded on Examples page HOT 5
- Use a modern moduleResolution strategy
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from maplibre-gl-js.