visgl / deck.gl

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

[Bug] deckgl 9.0.1 did not render PathLayer and others #8694

Closed TextTL closed 7 months ago

TextTL commented 7 months ago

Description

PathLayer and or GeoJSONLayer render LineString correctly.

Flavors

Expected Behavior

PathLayer should render correctly,

Steps to Reproduce

copy https://codepen.io/vis-gl/pen/mxxzdw

from the playground to

https://codepen.io/txtl-smith/pen/yLrPQpv

Add two extensions to ScatterPlotlayer, and the circle was not render. If there's on extension, the ScatterPlotLayer is rendered.

Environment

Logs

luma.gl: Model "TestPolygonLayer-child-fill-top: Ignoring constant supplied for unknown attribute "instanceElevations" setConstantAttributes @ main.7fc60f3e.js:2 luma.gl: Model "TestPolygonLayer-child-fill-top: Ignoring constant supplied for unknown attribute "instanceLineColors" setConstantAttributes @ main.7fc60f3e.js:2 luma.gl: Model "TestPolygonLayer-child-fill-top: Ignoring constant supplied for unknown attribute "instanceFilterCategoryValues" setConstantAttributes @ main.7fc60f3e.js:2 luma.gl: Model "TestPolygonLayer-child-stroke: Ignoring constant supplied for unknown attribute "filterCategoryValues" setConstantAttributes @ main.7fc60f3e.js:2 luma.gl: Model(TestPathLayer-child): Ignoring buffer "positions-buffer" for unknown attribute "positions" setAttributes @ main.7fc60f3e.js:2 luma.gl: Model(TestPathLayer-child): Ignoring buffer "instancePickingColors" for unknown attribute "instancePickingColors" setAttributes @ main.7fc60f3e.js:2 luma.gl: Model(TestPathLayer-child): Ignoring buffer "vertexPositions" for unknown attribute "vertexPositions" setAttributes @ main.7fc60f3e.js:2 luma.gl: Model(TestPathLayer-child): Ignoring buffer "vertexPositions" for unknown attribute "vertexPositions64Low" setAttributes @ main.7fc60f3e.js:2 luma.gl: Model(TestPathLayer-child): Ignoring buffer "vertexPositions" for unknown attribute "instanceLeftPositions" setAttributes @ main.7fc60f3e.js:2 luma.gl: Model(TestPathLayer-child): Ignoring buffer "vertexPositions" for unknown attribute "instanceLeftPositions64Low" setAttributes @ main.7fc60f3e.js:2 luma.gl: Model(TestPathLayer-child): Ignoring buffer "vertexPositions" for unknown attribute "instanceStartPositions" setAttributes @ main.7fc60f3e.js:2 luma.gl: Model(TestPathLayer-child): Ignoring buffer "vertexPositions" for unknown attribute "instanceStartPositions64Low" setAttributes @ main.7fc60f3e.js:2 luma.gl: Model(TestPathLayer-child): Ignoring buffer "vertexPositions" for unknown attribute "instanceEndPositions" setAttributes @ main.7fc60f3e.js:2 luma.gl: Model(TestPathLayer-child): Ignoring buffer "vertexPositions" for unknown attribute "instanceEndPositions64Low" setAttributes @ main.7fc60f3e.js:2 luma.gl: Model(TestPathLayer-child): Ignoring buffer "vertexPositions" for unknown attribute "instanceRightPositions" setAttributes @ main.7fc60f3e.js:2 luma.gl: Model(TestPathLayer-child): Ignoring buffer "vertexPositions" for unknown attribute "instanceRightPositions64Low" setAttributes @ main.7fc60f3e.js:2 luma.gl: Model(TestPathLayer-child): Ignoring buffer "instanceTypes" for unknown attribute "instanceTypes" setAttributes @ main.7fc60f3e.js:2 luma.gl: Model(TestPathLayer-child): Ignoring buffer "instanceStrokeWidths" for unknown attribute "instanceStrokeWidths" setAttributes @ main.7fc60f3e.js:2 luma.gl: Model(TestPathLayer-child): Ignoring buffer "instanceColors" for unknown attribute "instanceColors" setAttributes @ main.7fc60f3e.js:2 luma.gl: Model(TestPathLayer-child): Ignoring buffer "filterValues" for unknown attribute "filterValues" setAttributes @ main.7fc60f3e.js:2 luma.gl: Model(TestPathLayer-child): Ignoring buffer "filterValues" for unknown attribute "instanceFilterValues" setAttributes @ main.7fc60f3e.js:2 luma.gl: Model(TestPathLayer-child): Ignoring buffer "instanceDashArrays" for unknown attribute "instanceDashArrays" setAttributes @ main.7fc60f3e.js:2 luma.gl: Model "TestPathLayer-child: Ignoring constant supplied for unknown attribute "filterCategoryValues" setConstantAttributes @ main.7fc60f3e.js:2 luma.gl: Model "TestPathLayer-child: Ignoring constant supplied for unknown attribute "instanceFilterCategoryValues" setConstantAttributes @ main.7fc60f3e.js:2 luma.gl: Model "TestPathLayer-child: Ignoring constant supplied for unknown attribute "instanceDashOffsets" setConstantAttributes @ main.7fc60f3e.js:2 luma.gl: Model(TestGeoJSONLayer-child-linestrings): Ignoring buffer "positions-buffer" for unknown attribute "positions" setAttributes @ main.7fc60f3e.js:2 luma.gl: Model(TestGeoJSONLayer-child-linestrings): Ignoring buffer "instancePickingColors" for unknown attribute "instancePickingColors" setAttributes @ main.7fc60f3e.js:2 luma.gl: Model(TestGeoJSONLayer-child-linestrings): Ignoring buffer "vertexPositions" for unknown attribute "vertexPositions" setAttributes @ main.7fc60f3e.js:2 luma.gl: Model(TestGeoJSONLayer-child-linestrings): Ignoring buffer "vertexPositions" for unknown attribute "vertexPositions64Low" setAttributes @ main.7fc60f3e.js:2 luma.gl: Model(TestGeoJSONLayer-child-linestrings): Ignoring buffer "vertexPositions" for unknown attribute "instanceLeftPositions" setAttributes @ main.7fc60f3e.js:2 luma.gl: Model(TestGeoJSONLayer-child-linestrings): Ignoring buffer "vertexPositions" for unknown attribute "instanceLeftPositions64Low" setAttributes @ main.7fc60f3e.js:2 luma.gl: Model(TestGeoJSONLayer-child-linestrings): Ignoring buffer "vertexPositions" for unknown attribute "instanceStartPositions" setAttributes @ main.7fc60f3e.js:2 luma.gl: Model(TestGeoJSONLayer-child-linestrings): Ignoring buffer "vertexPositions" for unknown attribute "instanceStartPositions64Low" setAttributes @ main.7fc60f3e.js:2 luma.gl: Model(TestGeoJSONLayer-child-linestrings): Ignoring buffer "vertexPositions" for unknown attribute "instanceEndPositions" setAttributes @ main.7fc60f3e.js:2 luma.gl: Model(TestGeoJSONLayer-child-linestrings): Ignoring buffer "vertexPositions" for unknown attribute "instanceEndPositions64Low" setAttributes @ main.7fc60f3e.js:2 luma.gl: Model(TestGeoJSONLayer-child-linestrings): Ignoring buffer "vertexPositions" for unknown attribute "instanceRightPositions" setAttributes @ main.7fc60f3e.js:2 luma.gl: Model(TestGeoJSONLayer-child-linestrings): Ignoring buffer "vertexPositions" for unknown attribute "instanceRightPositions64Low" setAttributes @ main.7fc60f3e.js:2 luma.gl: Model(TestGeoJSONLayer-child-linestrings): Ignoring buffer "instanceTypes" for unknown attribute "instanceTypes" setAttributes @ main.7fc60f3e.js:2 luma.gl: Model(TestGeoJSONLayer-child-linestrings): Ignoring buffer "instanceStrokeWidths" for unknown attribute "instanceStrokeWidths" setAttributes @ main.7fc60f3e.js:2 luma.gl: Model(TestGeoJSONLayer-child-linestrings): Ignoring buffer "instanceColors" for unknown attribute "instanceColors" setAttributes @ main.7fc60f3e.js:2 luma.gl: Model(TestGeoJSONLayer-child-linestrings): Ignoring buffer "filterValues" for unknown attribute "filterValues" setAttributes @ main.7fc60f3e.js:2 luma.gl: Model(TestGeoJSONLayer-child-linestrings): Ignoring buffer "filterValues" for unknown attribute "instanceFilterValues" setAttributes @ main.7fc60f3e.js:2 luma.gl: Model(TestGeoJSONLayer-child-linestrings): Ignoring buffer "instanceDashArrays" for unknown attribute "instanceDashArrays" setAttributes @ main.7fc60f3e.js:2 model.js:437 luma.gl: Model "TestGeoJSONLayer-child-linestrings: Ignoring constant supplied for unknown attribute "filterCategoryValues" setConstantAttributes @ model.js:437 Show 1 more frame Show less model.js:437 luma.gl: Model "TestGeoJSONLayer-child-linestrings: Ignoring constant supplied for unknown attribute "instanceFilterCategoryValues" setConstantAttributes @ model.js:437 Show 1 more frame Show less model.js:437 luma.gl: Model "TestGeoJSONLayer-child-linestrings: Ignoring constant supplied for unknown attribute "instanceDashOffsets" setConstantAttributes @ model.js:437 Show 1 more frame Show less model.js:417 luma.gl: Model(TestGeoJSONLayer-child-points-circle): Ignoring buffer "positions-buffer" for unknown attribute "positions" setAttributes @ model.js:417 Show 1 more frame Show less model.js:417 luma.gl: Model(TestGeoJSONLayer-child-points-circle): Ignoring buffer "instancePickingColors" for unknown attribute "instancePickingColors" setAttributes @ model.js:417 Show 1 more frame Show less model.js:417 luma.gl: Model(TestGeoJSONLayer-child-points-circle): Ignoring buffer "instancePositions" for unknown attribute "instancePositions" setAttributes @ model.js:417 Show 1 more frame Show less model.js:417 luma.gl: Model(TestGeoJSONLayer-child-points-circle): Ignoring buffer "instancePositions" for unknown attribute "instancePositions64Low" setAttributes @ model.js:417 Show 1 more frame Show less model.js:417 luma.gl: Model(TestGeoJSONLayer-child-points-circle): Ignoring buffer "instanceRadius" for unknown attribute "instanceRadius" setAttributes @ model.js:417 Show 1 more frame Show less model.js:417 luma.gl: Model(TestGeoJSONLayer-child-points-circle): Ignoring buffer "instanceFillColors" for unknown attribute "instanceFillColors" setAttributes @ model.js:417 Show 1 more frame Show less model.js:417 luma.gl: Model(TestGeoJSONLayer-child-points-circle): Ignoring buffer "instanceLineColors" for unknown attribute "instanceLineColors" setAttributes @ model.js:417 Show 1 more frame Show less model.js:417 luma.gl: Model(TestGeoJSONLayer-child-points-circle): Ignoring buffer "instanceLineWidths" for unknown attribute "instanceLineWidths" setAttributes @ model.js:417 Show 1 more frame Show less model.js:417 luma.gl: Model(TestGeoJSONLayer-child-points-circle): Ignoring buffer "filterValues" for unknown attribute "filterValues" setAttributes @ model.js:417 Show 1 more frame Show less model.js:417 luma.gl: Model(TestGeoJSONLayer-child-points-circle): Ignoring buffer "filterValues" for unknown attribute "instanceFilterValues" setAttributes @ model.js:417 Show 1 more frame Show less model.js:417 luma.gl: Model(TestGeoJSONLayer-child-points-circle): Ignoring buffer "instanceStartAngle" for unknown attribute "instanceStartAngle" setAttributes @ model.js:417 Show 1 more frame Show less model.js:417 luma.gl: Model(TestGeoJSONLayer-child-points-circle): Ignoring buffer "instanceEndAngle" for unknown attribute "instanceEndAngle" setAttributes @ model.js:417 Show 1 more frame Show less model.js:437 luma.gl: Model "TestGeoJSONLayer-child-points-circle: Ignoring constant supplied for unknown attribute "filterCategoryValues" setConstantAttributes @ model.js:437 Show 1 more frame Show less model.js:437 luma.gl: Model "TestGeoJSONLayer-child-points-circle: Ignoring constant supplied for unknown attribute "instanceFilterCategoryValues" setConstantAttributes @ model.js:437 Show 1 more frame Show less model.js:437 luma.gl: Model "TestGeoJSONLayer-child-points-circle: Ignoring constant supplied for unknown attribute "instanceDashSegments" setConstantAttributes @ model.js:437 Show 1 more frame Show less model.js:437 luma.gl: Model "TestGeoJSONLayer-child-points-circle: Ignoring constant supplied for unknown attribute "instanceDashColors" setConstantAttributes @ model.js:437 Show 1 more frame Show less model.js:437 luma.gl: Model "TestGeoJSONLayer-child-points-icon: Ignoring constant supplied for unknown attribute "filterCategoryValues" setConstantAttributes @ model.js:437 Show 1 more frame Show less model.js:437 luma.gl: Model "TestGeoJSONLayer-child-points-text-characters: Ignoring constant supplied for unknown attribute "filterCategoryValues" setConstantAttributes @ model.js:437 Show 1 more frame Show less model.js:437 luma.gl: Model "TestIconLayer-child: Ignoring constant supplied for unknown attribute "filterCategoryValues" setConstantAttributes @ model.js:437 Show 1 more frame Show less model.js:437 luma.gl: Model "TestLabelLayerNormal-child-characters: Ignoring constant supplied for unknown attribute "filterCategoryValues" setConstantAttributes @ model.js:437 Show 1 more frame Show less model.js:459 luma.gl: Model.updateModuleSettings is deprecated. Use Model.shaderInputs.setProps() updateModuleSettings @ model.js:459 Show 1 more frame Show less webgl-render-pipeline.js:243 Uncaught (in promise) Error: Error during linking: Too many attributes (instancePickingColors)

at uu._reportLinkStatus (webgl-render-pipeline.js:243:23)
at uu._linkShaders (webgl-render-pipeline.js:218:18)
at new uu (webgl-render-pipeline.js:54:14)
at Gu.createRenderPipeline (webgl-device.js:226:16)
at Dd.createRenderPipeline (pipeline-factory.js:29:42)
at Gd._updatePipeline (model.js:537:50)
at new Gd (model.js:155:30)
at wC._getModel (path-layer.js:249:16)
at wC.updateState (path-layer.js:160:37)
at wC._update (layer.js:777:22)

webgl-render-pipeline.js:243 Uncaught (in promise) Error: Error during linking: Vertex shader is not compiled.

at uu._reportLinkStatus (webgl-render-pipeline.js:243:23)
at uu._linkShaders (webgl-render-pipeline.js:218:18)
at new uu (webgl-render-pipeline.js:54:14)
at Gu.createRenderPipeline (webgl-device.js:226:16)
at Dd.createRenderPipeline (pipeline-factory.js:29:42)
at Gd._updatePipeline (model.js:537:50)
at new Gd (model.js:155:30)
at HS._getModel (scatterplot-layer.js:124:16)
at HS.updateState (scatterplot-layer.js:97:37)
at HS._update (layer.js:777:22)

model.js:417 luma.gl: Model(TestGeoJSONLayer-child-flash-linestrings): Ignoring buffer "positions-buffer" for unknown attribute "positions" setAttributes @ model.js:417 Show 1 more frame Show less model.js:417 luma.gl: Model(TestGeoJSONLayer-child-flash-linestrings): Ignoring buffer "instancePickingColors" for unknown attribute "instancePickingColors" setAttributes @ model.js:417 Show 1 more frame Show less model.js:417 luma.gl: Model(TestGeoJSONLayer-child-flash-linestrings): Ignoring buffer "vertexPositions" for unknown attribute "vertexPositions" setAttributes @ model.js:417 Show 1 more frame Show less model.js:417 luma.gl: Model(TestGeoJSONLayer-child-flash-linestrings): Ignoring buffer "vertexPositions" for unknown attribute "vertexPositions64Low" setAttributes @ model.js:417 Show 1 more frame Show less model.js:417 luma.gl: Model(TestGeoJSONLayer-child-flash-linestrings): Ignoring buffer "vertexPositions" for unknown attribute "instanceLeftPositions" setAttributes @ model.js:417 Show 1 more frame Show less model.js:417 luma.gl: Model(TestGeoJSONLayer-child-flash-linestrings): Ignoring buffer "vertexPositions" for unknown attribute "instanceLeftPositions64Low" setAttributes @ model.js:417 Show 1 more frame Show less model.js:417 luma.gl: Model(TestGeoJSONLayer-child-flash-linestrings): Ignoring buffer "vertexPositions" for unknown attribute "instanceStartPositions" setAttributes @ model.js:417 Show 1 more frame Show less model.js:417 luma.gl: Model(TestGeoJSONLayer-child-flash-linestrings): Ignoring buffer "vertexPositions" for unknown attribute "instanceStartPositions64Low" setAttributes @ model.js:417 Show 1 more frame Show less model.js:417 luma.gl: Model(TestGeoJSONLayer-child-flash-linestrings): Ignoring buffer "vertexPositions" for unknown attribute "instanceEndPositions" setAttributes @ model.js:417 Show 1 more frame Show less model.js:417 luma.gl: Model(TestGeoJSONLayer-child-flash-linestrings): Ignoring buffer "vertexPositions" for unknown attribute "instanceEndPositions64Low" setAttributes @ model.js:417 Show 1 more frame Show less model.js:417 luma.gl: Model(TestGeoJSONLayer-child-flash-linestrings): Ignoring buffer "vertexPositions" for unknown attribute "instanceRightPositions" setAttributes @ model.js:417 Show 1 more frame Show less model.js:417 luma.gl: Model(TestGeoJSONLayer-child-flash-linestrings): Ignoring buffer "vertexPositions" for unknown attribute "instanceRightPositions64Low" setAttributes @ model.js:417 Show 1 more frame Show less model.js:417 luma.gl: Model(TestGeoJSONLayer-child-flash-linestrings): Ignoring buffer "instanceTypes" for unknown attribute "instanceTypes" setAttributes @ model.js:417 Show 1 more frame Show less model.js:417 luma.gl: Model(TestGeoJSONLayer-child-flash-linestrings): Ignoring buffer "instanceStrokeWidths" for unknown attribute "instanceStrokeWidths" setAttributes @ model.js:417 Show 1 more frame Show less model.js:417 luma.gl: Model(TestGeoJSONLayer-child-flash-linestrings): Ignoring buffer "Buffer-37" for unknown attribute "instanceColors" setAttributes @ model.js:417 Show 1 more frame Show less model.js:417 luma.gl: Model(TestGeoJSONLayer-child-flash-linestrings): Ignoring buffer "filterValues" for unknown attribute "filterValues" setAttributes @ model.js:417 Show 1 more frame Show less model.js:417 luma.gl: Model(TestGeoJSONLayer-child-flash-linestrings): Ignoring buffer "filterValues" for unknown attribute "instanceFilterValues" setAttributes @ model.js:417 Show 1 more frame Show less model.js:417 luma.gl: Model(TestGeoJSONLayer-child-flash-linestrings): Ignoring buffer "instanceDashArrays" for unknown attribute "instanceDashArrays" setAttributes @ model.js:417 Show 1 more frame Show less model.js:437 luma.gl: Model "TestGeoJSONLayer-child-flash-linestrings: Ignoring constant supplied for unknown attribute "filterCategoryValues" setConstantAttributes @ model.js:437 Show 1 more frame Show less model.js:437 luma.gl: Model "TestGeoJSONLayer-child-flash-linestrings: Ignoring constant supplied for unknown attribute "instanceFilterCategoryValues" setConstantAttributes @ model.js:437 Show 1 more frame Show less model.js:437 luma.gl: Model "TestGeoJSONLayer-child-flash-linestrings: Ignoring constant supplied for unknown attribute "instanceDashOffsets" setConstantAttributes @ model.js:437 Show 1 more frame Show less model.js:417 luma.gl: Model(TestGeoJSONLayer-child-flash-linestrings): Ignoring buffer "Buffer-36" for unknown attribute "instanceColors" setAttributes @ model.js:417 Show 1 more frame Show less webgl-render-pipeline.js:243 Uncaught (in promise) Error: Error during linking: Too many attributes (instancePickingColors)

at uu._reportLinkStatus (webgl-render-pipeline.js:243:23)
at uu._linkShaders (webgl-render-pipeline.js:218:18)
at new uu (webgl-render-pipeline.js:54:14)
at Gu.createRenderPipeline (webgl-device.js:226:16)
at Dd.createRenderPipeline (pipeline-factory.js:29:42)
at Gd._updatePipeline (model.js:537:50)
at Gd.setBufferLayout (model.js:316:30)
at wC._setModelAttributes (layer.js:586:19)
at wC.updateAttributes (layer.js:498:18)
at wC._updateAttributes (layer.js:522:14)
Pessimistress commented 7 months ago

From the logs looks like you are using PathLayer with DataFilterExtension? Can you update "steps to reproduce" with a better description of your use case?

peacefixation commented 7 months ago

I'm seeing a similar error with version 9.0.1 using MVTLayer and GoogleMapsOverlay in a Vue project. The layer is not rendered and I get the error below. I tried to create a minimal example using a much simpler vanilla JS project but I'm not able to reproduce the error (i.e. the layer renders), so I can't pin down the issue yet.

Uncaught (in promise) Error: Error during linking: Must have a compiled vertex shader attached:
SHADER_INFO_LOG:
WARNING: 0:82: '/' : Divide by zero during constant folding
WARNING: 0:89: '/' : Divide by zero during constant folding
ERROR: 0:594: 'DECKGL_FILTER_GL_POSITION' : no matching overloaded function found
ERROR: 0:607: 'DECKGL_FILTER_COLOR' : no matching overloaded function found
    _reportLinkStatus webgl-render-pipeline.js:243
    _linkShaders webgl-render-pipeline.js:218
    WEBGLRenderPipeline webgl-render-pipeline.js:54
    createRenderPipeline webgl-device.js:226
    createRenderPipeline pipeline-factory.js:29
    _updatePipeline model.js:535
    setBufferLayout model.js:314
    _setModelAttributes layer.js:586
    updateAttributes layer.js:498
    _updateAttributes layer.js:522
    _postUpdate layer.js:985
    _update layer.js:792
    _initialize layer.js:732
    _initializeLayer layer-manager.js:287
    _updateSublayersRecursively layer-manager.js:254
    _updateSublayersRecursively layer-manager.js:269
    _updateSublayersRecursively layer-manager.js:269
    _updateLayers layer-manager.js:221
    setLayers layer-manager.js:161
    updateLayers layer-manager.js:172
    _onRenderFrame deck.js:722
    _renderFrame animation-loop.js:256
    redraw animation-loop.js:154
    _animationFrame animation-loop.js:244
    requestAnimationFrame request-animation-frame.js:9
    _requestAnimationFrame animation-loop.js:225
    _animationFrame animation-loop.js:245
    requestAnimationFrame request-animation-frame.js:9
    _requestAnimationFrame animation-loop.js:225
    _animationFrame animation-loop.js:245
    requestAnimationFrame request-animation-frame.js:9
    _requestAnimationFrame animation-loop.js:225
    _animationFrame animation-loop.js:245
    requestAnimationFrame request-animation-frame.js:9
    _requestAnimationFrame animation-loop.js:225
    _animationFrame animation-loop.js:245
    requestAnimationFrame request-animation-frame.js:9
    _requestAnimationFrame animation-loop.js:225
    _animationFrame animation-loop.js:245
    requestAnimationFrame request-animation-frame.js:9
    _requestAnimationFrame animation-loop.js:225
    _animationFrame animation-loop.js:245
    requestAnimationFrame request-animation-frame.js:9
    _requestAnimationFrame animation-loop.js:225
    _animationFrame animation-loop.js:245
    requestAnimationFrame request-animation-frame.js:9
    _requestAnimationFrame animation-loop.js:225
    _animationFrame animation-loop.js:245
    requestAnimationFrame request-animation-frame.js:9
    _requestAnimationFrame animation-loop.js:225
    _animationFrame animation-loop.js:245
    requestAnimationFrame request-animation-frame.js:9
    _requestAnimationFrame animation-loop.js:225
    _animationFrame animation-loop.js:245
    requestAnimationFrame request-animation-frame.js:9
    _requestAnimationFrame animation-loop.js:225
    _animationFrame animation-loop.js:245
[webgl-render-pipeline.js:243](webpack://dasmap/node_modules/@deck.gl/core/node_modules/@luma.gl/webgl/dist/adapter/resources/webgl-render-pipeline.js)
    _linkShaders webgl-render-pipeline.js:227
    WEBGLRenderPipeline webgl-render-pipeline.js:54
    createRenderPipeline webgl-device.js:226
    createRenderPipeline pipeline-factory.js:29
    _updatePipeline model.js:535
    setBufferLayout model.js:314
    _setModelAttributes layer.js:586
    updateAttributes layer.js:498
    _updateAttributes layer.js:522
    _postUpdate layer.js:985
    _update layer.js:792
    _initialize layer.js:732
    _initializeLayer layer-manager.js:287
    _updateSublayersRecursively layer-manager.js:254
    _updateSublayersRecursively layer-manager.js:269
    _updateSublayersRecursively layer-manager.js:269
    _updateLayers layer-manager.js:221
    setLayers layer-manager.js:161
    updateLayers layer-manager.js:172
    _onRenderFrame deck.js:722
    _renderFrame animation-loop.js:256
    redraw animation-loop.js:154
    _animationFrame animation-loop.js:244
    (Async: FrameRequestCallback)
    requestAnimationFrame request-animation-frame.js:9
    _requestAnimationFrame animation-loop.js:225
    _animationFrame animation-loop.js:245
    (Async: FrameRequestCallback)
    requestAnimationFrame request-animation-frame.js:9
    _requestAnimationFrame animation-loop.js:225
    _animationFrame animation-loop.js:245
    (Async: FrameRequestCallback)
    requestAnimationFrame request-animation-frame.js:9
    _requestAnimationFrame animation-loop.js:225
    _animationFrame animation-loop.js:245
    (Async: FrameRequestCallback)
    requestAnimationFrame request-animation-frame.js:9
    _requestAnimationFrame animation-loop.js:225
    _animationFrame animation-loop.js:245
    (Async: FrameRequestCallback)
    requestAnimationFrame request-animation-frame.js:9
    _requestAnimationFrame animation-loop.js:225
    _animationFrame animation-loop.js:245
    (Async: FrameRequestCallback)
    requestAnimationFrame request-animation-frame.js:9
    _requestAnimationFrame animation-loop.js:225
    _animationFrame animation-loop.js:245
    (Async: FrameRequestCallback)
    requestAnimationFrame request-animation-frame.js:9
    _requestAnimationFrame animation-loop.js:225
    _animationFrame animation-loop.js:245
    (Async: FrameRequestCallback)
    requestAnimationFrame request-animation-frame.js:9
    _requestAnimationFrame animation-loop.js:225
    _animationFrame animation-loop.js:245
    (Async: FrameRequestCallback)
    requestAnimationFrame request-animation-frame.js:9
    _requestAnimationFrame animation-loop.js:225
    _animationFrame animation-loop.js:245
    (Async: FrameRequestCallback)
    requestAnimationFrame request-animation-frame.js:9
    _requestAnimationFrame animation-loop.js:225
    _animationFrame animation-loop.js:245
    (Async: FrameRequestCallback)
    requestAnimationFrame request-animation-frame.js:9
    _requestAnimationFrame animation-loop.js:225
    _animationFrame animation-loop.js:245

I turned debug mode on in the JS console and the trace I see shows:

 WARNING: '/' : Divide by zero during constant folding
  83: }
  84: t = r - PI_2 * q;
  85: q = floor(t / PI_16 + 0.5);
  86: int k = int(q);
  87: int abs_k = int(abs(float(k)));
  88: if (abs_k > 4) {
  89: return 1.0 / 0.0;

the code seems to be in this file from the luma.gl project and I see a hardcoded 1.0 / 0.0 which seems pretty weird?!

TextTL commented 7 months ago

@Pessimistress The issue was caused by having more than one extensions:

I copied https://codepen.io/vis-gl/pen/mxxzdw

from the playground to https://codepen.io/txtl-smith/pen/yLrPQpv

Add two extensions to ScatterPlotlayer, and the circle was not render. If there's on extension, the ScatterPlotLayer is rendered.

Pessimistress commented 7 months ago

WebGL has a hard limit of 16 attributes per vertex shader. There is not much we can do about that.

@felixpalmer I think the features of DataFilterExtension should be behind a flag, similar to how PathStyleExtension handles dash and offset. Otherwise the new category attribute can be a breaking change as illustrated by this issue.

TextTL commented 7 months ago

@Pessimistress somehow it worked in 8.9.x. I'll investigate more.

TextTL commented 7 months ago

It seems like that v9.x.x add more attributes to DataFilterExtension for "Category Filtering" and break my application because of limits of max allowed attributes