visgl / deck.gl

WebGL2 powered visualization framework
https://deck.gl
MIT License
12.29k stars 2.09k forks source link

[Bug] Aggregation layer issues in 9.0 #9058

Open jdgarrett opened 4 months ago

jdgarrett commented 4 months ago

Description

After upgrading to 9.0, I've been experiencing a couple of issues with aggregation layers.

  1. Making changes to the heatmap color ranges works as long as the length of the array stays the same, but when adding/removing colors from the range, the layer breaks and just renders as black: https://codepen.io/jdgarrett/pen/mdZRQbm Interestingly, this does seem to work for the other aggregation layers that I've tested.
  2. The data filter extension does not work with any of the aggregation layers that I've tested. There is another issue already for this one #8841, but I've realized that the issue applies to all aggregation layers.

There are also log warnings spammed to the console when rendering aggregation layers: image These warnings were taken from the Heatmap page in the docs.

Expected Behavior

The expected behavior is that data filtering works on aggregation layers like it did in previous versions, and allows for changes to the colorRange property of the heatmap layer without breaking rendering.

Steps to Reproduce

Color Range issue: https://codepen.io/jdgarrett/pen/mdZRQbm Filter issue: https://codepen.io/jdgarrett/pen/QWXdJGJ

Environment

Logs

luma.gl: Model "HeatmapLayer-triangle-layer: Ignoring constant supplied for unknown attribute "instancePickingColors"
luma.gl: Module picking not found
luma.gl: Unknown binding "project32Uniforms" in render pipeline "HeatmapLayer-triangle-layer-cached", expected one of "maxTexture", "weightsTexture", "colorTexture"
luma.gl: Unknown binding "fp32Uniforms" in render pipeline "HeatmapLayer-triangle-layer-cached", expected one of "maxTexture", "weightsTexture", "colorTexture"
luma.gl: Unknown binding "geometryUniforms" in render pipeline "HeatmapLayer-triangle-layer-cached", expected one of "maxTexture", "weightsTexture", "colorTexture"
luma.gl: Unknown binding "projectUniforms" in render pipeline "HeatmapLayer-triangle-layer-cached", expected one of "maxTexture", "weightsTexture", "colorTexture"
richard3d commented 3 months ago

Commenting here since this might be a related side effect I have noticed recently using DataFilterExtension and aggregation (specifically heatmap layer). If I deep copy the props (e.g. _.cloneDeep via lodash) and reassign to the heatmap layer, it seems there is a recompute of the buffers. After going through each property individually I have noticed it is the filterCategories prop that triggers this recompute (the prop value is just to [0]). Oddly when I do this for a vector layer I do not see any performance hit. I would expect both layers to behave the same way.