Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Small-radius heatmap flickers when moving the map #5563

Open
lbud opened this issue Oct 31, 2017 · 6 comments
Open

Small-radius heatmap flickers when moving the map #5563

lbud opened this issue Oct 31, 2017 · 6 comments
Assignees
Labels

Comments

@lbud
Copy link
Contributor

lbud commented Oct 31, 2017

Pitching maps with heatmap layers cause "far" kernels to change on every frame (kind of flicker, in a blurry heatmap sort of way).

heatmap-blur

Reproducible on any heatmap, including the examples page.
cc @mourner

@mourner
Copy link
Member

mourner commented Oct 31, 2017

Wow, not sure what's going on there....

@lbud
Copy link
Contributor Author

lbud commented Oct 31, 2017

@mourner the effect sort of reminds me of something I ran into in fill-extrusion layers in gl-native, where sometimes the depth buffer resolution was too low (mapbox/mapbox-gl-native#8431 (comment)), causing jagged edges on the sides of extrusions; we fixed this by setting the near clip plan in the fill-extrusion layer projection matrix to 100 so as not to waste a lot of precision on shapes extremely close to the camera (mapbox/mapbox-gl-native@72278bf). Not sure if this is relevant to what's going on here, but 🤷‍♀️

@wysisoft
Copy link

I don't think this is as much a "further distances" problem as much as a "small radius" problem. Radii above 5 seems to behave well. Radii 3 and under seem to flicker.

@pathmapper
Copy link
Contributor

Agree with @wysisoft, there is no need to pitch a heatmap to trigger the bug. This GIF is just the official example zoomed out so that heatmap-radius = 2.

heatmap-flicker

@ryanhamley
Copy link
Contributor

Thanks for pointing out what's going on here @pathmapper and @wysisoft

I can confirm that this is reproducible in our debug heatmap page as well, if you lower the heatmap-radius to <= 2. I'm not very familiar with the heatmap code though. @mourner does this new information point to a potential cause? could it be related to texture filtering a la #8738?

@mpulkki-mapbox
Copy link
Contributor

mpulkki-mapbox commented Nov 15, 2019

This is an aliasing issue caused by too low texture resolution in heatmap rendering. Information is lost when the heatmap is rendered to an offscreen texture that has 1/16 size of the viewport. Here's an another example of the bug:
heatmap_aliasing_bug
A quick and dirty fix would be to increase the texture resolution to 1:1, but I think the issue is deeper in the heatmap implementation. Here's a heatmap with 1:1 resolution:
heatmap_aliasing_fix
Related pull request: #8975

@mourner mourner self-assigned this Aug 25, 2020
@mourner mourner changed the title Further distances on pitched heatmaps "flicker" on every frame Small-radius heatmap flickers when moving the map Aug 25, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

6 participants