@deck.gl/aggregation-layers 9.0.0-beta.1 → 9.0.0-beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/aggregation-layer.js +153 -0
- package/dist/contour-layer/contour-layer.js +241 -0
- package/dist/contour-layer/contour-utils.js +64 -0
- package/dist/contour-layer/marching-squares-codes.js +337 -0
- package/dist/contour-layer/marching-squares.js +147 -0
- package/dist/cpu-grid-layer/cpu-grid-layer.js +130 -0
- package/dist/cpu-grid-layer/grid-aggregator.js +141 -0
- package/dist/dist.dev.js +1187 -10528
- package/dist/gpu-grid-layer/gpu-grid-cell-layer-fragment.glsl.js +34 -0
- package/dist/{esm/gpu-grid-layer → gpu-grid-layer}/gpu-grid-cell-layer-vertex.glsl.js +20 -1
- package/dist/gpu-grid-layer/gpu-grid-cell-layer.js +145 -0
- package/dist/gpu-grid-layer/gpu-grid-layer.js +288 -0
- package/dist/grid-aggregation-layer.js +172 -0
- package/dist/grid-layer/grid-layer.js +63 -0
- package/{typed → dist}/heatmap-layer/heatmap-layer-utils.d.ts +0 -9
- package/dist/heatmap-layer/heatmap-layer-utils.d.ts.map +1 -0
- package/dist/heatmap-layer/heatmap-layer-utils.js +63 -0
- package/{typed → dist}/heatmap-layer/heatmap-layer.d.ts +4 -4
- package/dist/heatmap-layer/heatmap-layer.d.ts.map +1 -0
- package/dist/heatmap-layer/heatmap-layer.js +471 -0
- package/dist/{esm/heatmap-layer → heatmap-layer}/max-fs.glsl.js +0 -1
- package/dist/heatmap-layer/max-vs.glsl.d.ts +3 -0
- package/{typed → dist}/heatmap-layer/max-vs.glsl.d.ts.map +1 -1
- package/dist/heatmap-layer/max-vs.glsl.js +19 -0
- package/dist/heatmap-layer/triangle-layer-fragment.glsl.d.ts +3 -0
- package/dist/heatmap-layer/triangle-layer-fragment.glsl.js +61 -0
- package/dist/heatmap-layer/triangle-layer-vertex.glsl.js +52 -0
- package/{typed → dist}/heatmap-layer/triangle-layer.d.ts +10 -2
- package/dist/heatmap-layer/triangle-layer.d.ts.map +1 -0
- package/dist/heatmap-layer/triangle-layer.js +59 -0
- package/dist/{esm/heatmap-layer → heatmap-layer}/weights-fs.glsl.js +0 -1
- package/dist/heatmap-layer/weights-vs.glsl.d.ts +3 -0
- package/{typed → dist}/heatmap-layer/weights-vs.glsl.d.ts.map +1 -1
- package/dist/{esm/heatmap-layer → heatmap-layer}/weights-vs.glsl.js +4 -3
- package/dist/hexagon-layer/hexagon-aggregator.js +112 -0
- package/dist/hexagon-layer/hexagon-layer.js +174 -0
- package/dist/index.cjs +4494 -0
- package/dist/index.cjs.map +7 -0
- package/dist/index.js +32 -0
- package/dist/screen-grid-layer/screen-grid-cell-layer.js +166 -0
- package/dist/screen-grid-layer/screen-grid-layer-fragment.glsl.js +40 -0
- package/dist/{esm/screen-grid-layer → screen-grid-layer}/screen-grid-layer-vertex.glsl.js +19 -1
- package/dist/screen-grid-layer/screen-grid-layer.js +216 -0
- package/dist/types.js +1 -0
- package/dist/utils/aggregation-operation-utils.js +94 -0
- package/dist/utils/bin-sorter.js +167 -0
- package/dist/utils/color-utils.js +53 -0
- package/dist/utils/cpu-aggregator.js +421 -0
- package/dist/utils/gpu-grid-aggregation/aggregate-all-fs.glsl.js +39 -0
- package/dist/utils/gpu-grid-aggregation/aggregate-all-vs.glsl.js +53 -0
- package/dist/utils/gpu-grid-aggregation/aggregate-to-grid-fs.glsl.js +34 -0
- package/dist/{esm/utils → utils}/gpu-grid-aggregation/aggregate-to-grid-vs.glsl.js +19 -1
- package/dist/utils/gpu-grid-aggregation/gpu-grid-aggregator-constants.js +41 -0
- package/dist/utils/gpu-grid-aggregation/gpu-grid-aggregator-utils.js +1 -0
- package/{typed → dist}/utils/gpu-grid-aggregation/gpu-grid-aggregator.d.ts.map +1 -1
- package/dist/utils/gpu-grid-aggregation/gpu-grid-aggregator.js +566 -0
- package/dist/utils/gpu-grid-aggregation/transform-mean-vs.glsl.js +37 -0
- package/dist/utils/grid-aggregation-utils.js +114 -0
- package/dist/utils/prop-utils.js +28 -0
- package/dist/utils/resource-utils.js +38 -0
- package/dist/utils/scale-utils.js +184 -0
- package/dist.min.js +74 -178
- package/package.json +18 -11
- package/src/heatmap-layer/heatmap-layer-utils.ts +0 -23
- package/src/heatmap-layer/heatmap-layer.ts +87 -105
- package/src/heatmap-layer/max-vs.glsl.ts +11 -5
- package/src/heatmap-layer/triangle-layer-fragment.glsl.ts +2 -2
- package/src/heatmap-layer/triangle-layer.ts +17 -23
- package/src/heatmap-layer/weights-vs.glsl.ts +4 -2
- package/src/utils/gpu-grid-aggregation/gpu-grid-aggregator.ts +10 -13
- package/dist/es5/aggregation-layer.js +0 -215
- package/dist/es5/aggregation-layer.js.map +0 -1
- package/dist/es5/contour-layer/contour-layer.js +0 -353
- package/dist/es5/contour-layer/contour-layer.js.map +0 -1
- package/dist/es5/contour-layer/contour-utils.js +0 -110
- package/dist/es5/contour-layer/contour-utils.js.map +0 -1
- package/dist/es5/contour-layer/marching-squares-codes.js +0 -152
- package/dist/es5/contour-layer/marching-squares-codes.js.map +0 -1
- package/dist/es5/contour-layer/marching-squares.js +0 -168
- package/dist/es5/contour-layer/marching-squares.js.map +0 -1
- package/dist/es5/cpu-grid-layer/cpu-grid-layer.js +0 -235
- package/dist/es5/cpu-grid-layer/cpu-grid-layer.js.map +0 -1
- package/dist/es5/cpu-grid-layer/grid-aggregator.js +0 -180
- package/dist/es5/cpu-grid-layer/grid-aggregator.js.map +0 -1
- package/dist/es5/gpu-grid-layer/gpu-grid-cell-layer-fragment.glsl.js +0 -9
- package/dist/es5/gpu-grid-layer/gpu-grid-cell-layer-fragment.glsl.js.map +0 -1
- package/dist/es5/gpu-grid-layer/gpu-grid-cell-layer-vertex.glsl.js +0 -9
- package/dist/es5/gpu-grid-layer/gpu-grid-cell-layer-vertex.glsl.js.map +0 -1
- package/dist/es5/gpu-grid-layer/gpu-grid-cell-layer.js +0 -247
- package/dist/es5/gpu-grid-layer/gpu-grid-cell-layer.js.map +0 -1
- package/dist/es5/gpu-grid-layer/gpu-grid-layer.js +0 -424
- package/dist/es5/gpu-grid-layer/gpu-grid-layer.js.map +0 -1
- package/dist/es5/grid-aggregation-layer.js +0 -280
- package/dist/es5/grid-aggregation-layer.js.map +0 -1
- package/dist/es5/grid-layer/grid-layer.js +0 -125
- package/dist/es5/grid-layer/grid-layer.js.map +0 -1
- package/dist/es5/heatmap-layer/heatmap-layer-utils.js +0 -122
- package/dist/es5/heatmap-layer/heatmap-layer-utils.js.map +0 -1
- package/dist/es5/heatmap-layer/heatmap-layer.js +0 -672
- package/dist/es5/heatmap-layer/heatmap-layer.js.map +0 -1
- package/dist/es5/heatmap-layer/max-fs.glsl.js +0 -9
- package/dist/es5/heatmap-layer/max-fs.glsl.js.map +0 -1
- package/dist/es5/heatmap-layer/max-vs.glsl.js +0 -9
- package/dist/es5/heatmap-layer/max-vs.glsl.js.map +0 -1
- package/dist/es5/heatmap-layer/triangle-layer-fragment.glsl.js +0 -9
- package/dist/es5/heatmap-layer/triangle-layer-fragment.glsl.js.map +0 -1
- package/dist/es5/heatmap-layer/triangle-layer-vertex.glsl.js +0 -9
- package/dist/es5/heatmap-layer/triangle-layer-vertex.glsl.js.map +0 -1
- package/dist/es5/heatmap-layer/triangle-layer.js +0 -122
- package/dist/es5/heatmap-layer/triangle-layer.js.map +0 -1
- package/dist/es5/heatmap-layer/weights-fs.glsl.js +0 -9
- package/dist/es5/heatmap-layer/weights-fs.glsl.js.map +0 -1
- package/dist/es5/heatmap-layer/weights-vs.glsl.js +0 -9
- package/dist/es5/heatmap-layer/weights-vs.glsl.js.map +0 -1
- package/dist/es5/hexagon-layer/hexagon-aggregator.js +0 -118
- package/dist/es5/hexagon-layer/hexagon-aggregator.js.map +0 -1
- package/dist/es5/hexagon-layer/hexagon-layer.js +0 -289
- package/dist/es5/hexagon-layer/hexagon-layer.js.map +0 -1
- package/dist/es5/index.js +0 -104
- package/dist/es5/index.js.map +0 -1
- package/dist/es5/screen-grid-layer/screen-grid-cell-layer.js +0 -244
- package/dist/es5/screen-grid-layer/screen-grid-cell-layer.js.map +0 -1
- package/dist/es5/screen-grid-layer/screen-grid-layer-fragment.glsl.js +0 -9
- package/dist/es5/screen-grid-layer/screen-grid-layer-fragment.glsl.js.map +0 -1
- package/dist/es5/screen-grid-layer/screen-grid-layer-vertex.glsl.js +0 -9
- package/dist/es5/screen-grid-layer/screen-grid-layer-vertex.glsl.js.map +0 -1
- package/dist/es5/screen-grid-layer/screen-grid-layer.js +0 -317
- package/dist/es5/screen-grid-layer/screen-grid-layer.js.map +0 -1
- package/dist/es5/types.js +0 -2
- package/dist/es5/types.js.map +0 -1
- package/dist/es5/utils/aggregation-operation-utils.js +0 -123
- package/dist/es5/utils/aggregation-operation-utils.js.map +0 -1
- package/dist/es5/utils/bin-sorter.js +0 -248
- package/dist/es5/utils/bin-sorter.js.map +0 -1
- package/dist/es5/utils/color-utils.js +0 -39
- package/dist/es5/utils/color-utils.js.map +0 -1
- package/dist/es5/utils/cpu-aggregator.js +0 -496
- package/dist/es5/utils/cpu-aggregator.js.map +0 -1
- package/dist/es5/utils/gpu-grid-aggregation/aggregate-all-fs.glsl.js +0 -9
- package/dist/es5/utils/gpu-grid-aggregation/aggregate-all-fs.glsl.js.map +0 -1
- package/dist/es5/utils/gpu-grid-aggregation/aggregate-all-vs.glsl.js +0 -9
- package/dist/es5/utils/gpu-grid-aggregation/aggregate-all-vs.glsl.js.map +0 -1
- package/dist/es5/utils/gpu-grid-aggregation/aggregate-to-grid-fs.glsl.js +0 -9
- package/dist/es5/utils/gpu-grid-aggregation/aggregate-to-grid-fs.glsl.js.map +0 -1
- package/dist/es5/utils/gpu-grid-aggregation/aggregate-to-grid-vs.glsl.js +0 -9
- package/dist/es5/utils/gpu-grid-aggregation/aggregate-to-grid-vs.glsl.js.map +0 -1
- package/dist/es5/utils/gpu-grid-aggregation/gpu-grid-aggregator-constants.js +0 -63
- package/dist/es5/utils/gpu-grid-aggregation/gpu-grid-aggregator-constants.js.map +0 -1
- package/dist/es5/utils/gpu-grid-aggregation/gpu-grid-aggregator-utils.js +0 -2
- package/dist/es5/utils/gpu-grid-aggregation/gpu-grid-aggregator-utils.js.map +0 -1
- package/dist/es5/utils/gpu-grid-aggregation/gpu-grid-aggregator.js +0 -732
- package/dist/es5/utils/gpu-grid-aggregation/gpu-grid-aggregator.js.map +0 -1
- package/dist/es5/utils/gpu-grid-aggregation/gpu-grid-aggregator.md +0 -155
- package/dist/es5/utils/gpu-grid-aggregation/transform-mean-vs.glsl.js +0 -9
- package/dist/es5/utils/gpu-grid-aggregation/transform-mean-vs.glsl.js.map +0 -1
- package/dist/es5/utils/grid-aggregation-utils.js +0 -118
- package/dist/es5/utils/grid-aggregation-utils.js.map +0 -1
- package/dist/es5/utils/prop-utils.js +0 -19
- package/dist/es5/utils/prop-utils.js.map +0 -1
- package/dist/es5/utils/resource-utils.js +0 -59
- package/dist/es5/utils/resource-utils.js.map +0 -1
- package/dist/es5/utils/scale-utils.js +0 -254
- package/dist/es5/utils/scale-utils.js.map +0 -1
- package/dist/esm/aggregation-layer.js +0 -156
- package/dist/esm/aggregation-layer.js.map +0 -1
- package/dist/esm/contour-layer/contour-layer.js +0 -316
- package/dist/esm/contour-layer/contour-layer.js.map +0 -1
- package/dist/esm/contour-layer/contour-utils.js +0 -81
- package/dist/esm/contour-layer/contour-utils.js.map +0 -1
- package/dist/esm/contour-layer/marching-squares-codes.js +0 -219
- package/dist/esm/contour-layer/marching-squares-codes.js.map +0 -1
- package/dist/esm/contour-layer/marching-squares.js +0 -151
- package/dist/esm/contour-layer/marching-squares.js.map +0 -1
- package/dist/esm/cpu-grid-layer/cpu-grid-layer.js +0 -186
- package/dist/esm/cpu-grid-layer/cpu-grid-layer.js.map +0 -1
- package/dist/esm/cpu-grid-layer/grid-aggregator.js +0 -142
- package/dist/esm/cpu-grid-layer/grid-aggregator.js.map +0 -1
- package/dist/esm/gpu-grid-layer/gpu-grid-cell-layer-fragment.glsl.js +0 -16
- package/dist/esm/gpu-grid-layer/gpu-grid-cell-layer-fragment.glsl.js.map +0 -1
- package/dist/esm/gpu-grid-layer/gpu-grid-cell-layer-vertex.glsl.js.map +0 -1
- package/dist/esm/gpu-grid-layer/gpu-grid-cell-layer.js +0 -196
- package/dist/esm/gpu-grid-layer/gpu-grid-cell-layer.js.map +0 -1
- package/dist/esm/gpu-grid-layer/gpu-grid-layer.js +0 -399
- package/dist/esm/gpu-grid-layer/gpu-grid-layer.js.map +0 -1
- package/dist/esm/grid-aggregation-layer.js +0 -240
- package/dist/esm/grid-aggregation-layer.js.map +0 -1
- package/dist/esm/grid-layer/grid-layer.js +0 -80
- package/dist/esm/grid-layer/grid-layer.js.map +0 -1
- package/dist/esm/heatmap-layer/heatmap-layer-utils.js +0 -68
- package/dist/esm/heatmap-layer/heatmap-layer-utils.js.map +0 -1
- package/dist/esm/heatmap-layer/heatmap-layer.js +0 -626
- package/dist/esm/heatmap-layer/heatmap-layer.js.map +0 -1
- package/dist/esm/heatmap-layer/max-fs.glsl.js.map +0 -1
- package/dist/esm/heatmap-layer/max-vs.glsl.js +0 -14
- package/dist/esm/heatmap-layer/max-vs.glsl.js.map +0 -1
- package/dist/esm/heatmap-layer/triangle-layer-fragment.glsl.js +0 -43
- package/dist/esm/heatmap-layer/triangle-layer-fragment.glsl.js.map +0 -1
- package/dist/esm/heatmap-layer/triangle-layer-vertex.glsl.js +0 -33
- package/dist/esm/heatmap-layer/triangle-layer-vertex.glsl.js.map +0 -1
- package/dist/esm/heatmap-layer/triangle-layer.js +0 -80
- package/dist/esm/heatmap-layer/triangle-layer.js.map +0 -1
- package/dist/esm/heatmap-layer/weights-fs.glsl.js.map +0 -1
- package/dist/esm/heatmap-layer/weights-vs.glsl.js.map +0 -1
- package/dist/esm/hexagon-layer/hexagon-aggregator.js +0 -87
- package/dist/esm/hexagon-layer/hexagon-aggregator.js.map +0 -1
- package/dist/esm/hexagon-layer/hexagon-layer.js +0 -232
- package/dist/esm/hexagon-layer/hexagon-layer.js.map +0 -1
- package/dist/esm/index.js +0 -13
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/screen-grid-layer/screen-grid-cell-layer.js +0 -203
- package/dist/esm/screen-grid-layer/screen-grid-cell-layer.js.map +0 -1
- package/dist/esm/screen-grid-layer/screen-grid-layer-fragment.glsl.js +0 -21
- package/dist/esm/screen-grid-layer/screen-grid-layer-fragment.glsl.js.map +0 -1
- package/dist/esm/screen-grid-layer/screen-grid-layer-vertex.glsl.js.map +0 -1
- package/dist/esm/screen-grid-layer/screen-grid-layer.js +0 -285
- package/dist/esm/screen-grid-layer/screen-grid-layer.js.map +0 -1
- package/dist/esm/types.js +0 -2
- package/dist/esm/types.js.map +0 -1
- package/dist/esm/utils/aggregation-operation-utils.js +0 -91
- package/dist/esm/utils/aggregation-operation-utils.js.map +0 -1
- package/dist/esm/utils/bin-sorter.js +0 -165
- package/dist/esm/utils/bin-sorter.js.map +0 -1
- package/dist/esm/utils/color-utils.js +0 -28
- package/dist/esm/utils/color-utils.js.map +0 -1
- package/dist/esm/utils/cpu-aggregator.js +0 -487
- package/dist/esm/utils/cpu-aggregator.js.map +0 -1
- package/dist/esm/utils/gpu-grid-aggregation/aggregate-all-fs.glsl.js +0 -21
- package/dist/esm/utils/gpu-grid-aggregation/aggregate-all-fs.glsl.js.map +0 -1
- package/dist/esm/utils/gpu-grid-aggregation/aggregate-all-vs.glsl.js +0 -35
- package/dist/esm/utils/gpu-grid-aggregation/aggregate-all-vs.glsl.js.map +0 -1
- package/dist/esm/utils/gpu-grid-aggregation/aggregate-to-grid-fs.glsl.js +0 -16
- package/dist/esm/utils/gpu-grid-aggregation/aggregate-to-grid-fs.glsl.js.map +0 -1
- package/dist/esm/utils/gpu-grid-aggregation/aggregate-to-grid-vs.glsl.js.map +0 -1
- package/dist/esm/utils/gpu-grid-aggregation/gpu-grid-aggregator-constants.js +0 -42
- package/dist/esm/utils/gpu-grid-aggregation/gpu-grid-aggregator-constants.js.map +0 -1
- package/dist/esm/utils/gpu-grid-aggregation/gpu-grid-aggregator-utils.js +0 -2
- package/dist/esm/utils/gpu-grid-aggregation/gpu-grid-aggregator-utils.js.map +0 -1
- package/dist/esm/utils/gpu-grid-aggregation/gpu-grid-aggregator.js +0 -720
- package/dist/esm/utils/gpu-grid-aggregation/gpu-grid-aggregator.js.map +0 -1
- package/dist/esm/utils/gpu-grid-aggregation/gpu-grid-aggregator.md +0 -155
- package/dist/esm/utils/gpu-grid-aggregation/transform-mean-vs.glsl.js +0 -19
- package/dist/esm/utils/gpu-grid-aggregation/transform-mean-vs.glsl.js.map +0 -1
- package/dist/esm/utils/grid-aggregation-utils.js +0 -109
- package/dist/esm/utils/grid-aggregation-utils.js.map +0 -1
- package/dist/esm/utils/prop-utils.js +0 -12
- package/dist/esm/utils/prop-utils.js.map +0 -1
- package/dist/esm/utils/resource-utils.js +0 -44
- package/dist/esm/utils/resource-utils.js.map +0 -1
- package/dist/esm/utils/scale-utils.js +0 -192
- package/dist/esm/utils/scale-utils.js.map +0 -1
- package/typed/heatmap-layer/heatmap-layer-utils.d.ts.map +0 -1
- package/typed/heatmap-layer/heatmap-layer.d.ts.map +0 -1
- package/typed/heatmap-layer/max-vs.glsl.d.ts +0 -3
- package/typed/heatmap-layer/triangle-layer-fragment.glsl.d.ts +0 -3
- package/typed/heatmap-layer/triangle-layer.d.ts.map +0 -1
- package/typed/heatmap-layer/weights-vs.glsl.d.ts +0 -3
- /package/{typed → dist}/aggregation-layer.d.ts +0 -0
- /package/{typed → dist}/aggregation-layer.d.ts.map +0 -0
- /package/{typed → dist}/contour-layer/contour-layer.d.ts +0 -0
- /package/{typed → dist}/contour-layer/contour-layer.d.ts.map +0 -0
- /package/{typed → dist}/contour-layer/contour-utils.d.ts +0 -0
- /package/{typed → dist}/contour-layer/contour-utils.d.ts.map +0 -0
- /package/{typed → dist}/contour-layer/marching-squares-codes.d.ts +0 -0
- /package/{typed → dist}/contour-layer/marching-squares-codes.d.ts.map +0 -0
- /package/{typed → dist}/contour-layer/marching-squares.d.ts +0 -0
- /package/{typed → dist}/contour-layer/marching-squares.d.ts.map +0 -0
- /package/{typed → dist}/cpu-grid-layer/cpu-grid-layer.d.ts +0 -0
- /package/{typed → dist}/cpu-grid-layer/cpu-grid-layer.d.ts.map +0 -0
- /package/{typed → dist}/cpu-grid-layer/grid-aggregator.d.ts +0 -0
- /package/{typed → dist}/cpu-grid-layer/grid-aggregator.d.ts.map +0 -0
- /package/{typed → dist}/gpu-grid-layer/gpu-grid-cell-layer-fragment.glsl.d.ts +0 -0
- /package/{typed → dist}/gpu-grid-layer/gpu-grid-cell-layer-fragment.glsl.d.ts.map +0 -0
- /package/{typed → dist}/gpu-grid-layer/gpu-grid-cell-layer-vertex.glsl.d.ts +0 -0
- /package/{typed → dist}/gpu-grid-layer/gpu-grid-cell-layer-vertex.glsl.d.ts.map +0 -0
- /package/{typed → dist}/gpu-grid-layer/gpu-grid-cell-layer.d.ts +0 -0
- /package/{typed → dist}/gpu-grid-layer/gpu-grid-cell-layer.d.ts.map +0 -0
- /package/{typed → dist}/gpu-grid-layer/gpu-grid-layer.d.ts +0 -0
- /package/{typed → dist}/gpu-grid-layer/gpu-grid-layer.d.ts.map +0 -0
- /package/{typed → dist}/grid-aggregation-layer.d.ts +0 -0
- /package/{typed → dist}/grid-aggregation-layer.d.ts.map +0 -0
- /package/{typed → dist}/grid-layer/grid-layer.d.ts +0 -0
- /package/{typed → dist}/grid-layer/grid-layer.d.ts.map +0 -0
- /package/{typed → dist}/heatmap-layer/max-fs.glsl.d.ts +0 -0
- /package/{typed → dist}/heatmap-layer/max-fs.glsl.d.ts.map +0 -0
- /package/{typed → dist}/heatmap-layer/triangle-layer-fragment.glsl.d.ts.map +0 -0
- /package/{typed → dist}/heatmap-layer/triangle-layer-vertex.glsl.d.ts +0 -0
- /package/{typed → dist}/heatmap-layer/triangle-layer-vertex.glsl.d.ts.map +0 -0
- /package/{typed → dist}/heatmap-layer/weights-fs.glsl.d.ts +0 -0
- /package/{typed → dist}/heatmap-layer/weights-fs.glsl.d.ts.map +0 -0
- /package/{typed → dist}/hexagon-layer/hexagon-aggregator.d.ts +0 -0
- /package/{typed → dist}/hexagon-layer/hexagon-aggregator.d.ts.map +0 -0
- /package/{typed → dist}/hexagon-layer/hexagon-layer.d.ts +0 -0
- /package/{typed → dist}/hexagon-layer/hexagon-layer.d.ts.map +0 -0
- /package/{typed → dist}/index.d.ts +0 -0
- /package/{typed → dist}/index.d.ts.map +0 -0
- /package/{typed → dist}/screen-grid-layer/screen-grid-cell-layer.d.ts +0 -0
- /package/{typed → dist}/screen-grid-layer/screen-grid-cell-layer.d.ts.map +0 -0
- /package/{typed → dist}/screen-grid-layer/screen-grid-layer-fragment.glsl.d.ts +0 -0
- /package/{typed → dist}/screen-grid-layer/screen-grid-layer-fragment.glsl.d.ts.map +0 -0
- /package/{typed → dist}/screen-grid-layer/screen-grid-layer-vertex.glsl.d.ts +0 -0
- /package/{typed → dist}/screen-grid-layer/screen-grid-layer-vertex.glsl.d.ts.map +0 -0
- /package/{typed → dist}/screen-grid-layer/screen-grid-layer.d.ts +0 -0
- /package/{typed → dist}/screen-grid-layer/screen-grid-layer.d.ts.map +0 -0
- /package/{typed → dist}/types.d.ts +0 -0
- /package/{typed → dist}/types.d.ts.map +0 -0
- /package/{typed → dist}/utils/aggregation-operation-utils.d.ts +0 -0
- /package/{typed → dist}/utils/aggregation-operation-utils.d.ts.map +0 -0
- /package/{typed → dist}/utils/bin-sorter.d.ts +0 -0
- /package/{typed → dist}/utils/bin-sorter.d.ts.map +0 -0
- /package/{typed → dist}/utils/color-utils.d.ts +0 -0
- /package/{typed → dist}/utils/color-utils.d.ts.map +0 -0
- /package/{typed → dist}/utils/cpu-aggregator.d.ts +0 -0
- /package/{typed → dist}/utils/cpu-aggregator.d.ts.map +0 -0
- /package/{typed → dist}/utils/gpu-grid-aggregation/aggregate-all-fs.glsl.d.ts +0 -0
- /package/{typed → dist}/utils/gpu-grid-aggregation/aggregate-all-fs.glsl.d.ts.map +0 -0
- /package/{typed → dist}/utils/gpu-grid-aggregation/aggregate-all-vs.glsl.d.ts +0 -0
- /package/{typed → dist}/utils/gpu-grid-aggregation/aggregate-all-vs.glsl.d.ts.map +0 -0
- /package/{typed → dist}/utils/gpu-grid-aggregation/aggregate-to-grid-fs.glsl.d.ts +0 -0
- /package/{typed → dist}/utils/gpu-grid-aggregation/aggregate-to-grid-fs.glsl.d.ts.map +0 -0
- /package/{typed → dist}/utils/gpu-grid-aggregation/aggregate-to-grid-vs.glsl.d.ts +0 -0
- /package/{typed → dist}/utils/gpu-grid-aggregation/aggregate-to-grid-vs.glsl.d.ts.map +0 -0
- /package/{typed → dist}/utils/gpu-grid-aggregation/gpu-grid-aggregator-constants.d.ts +0 -0
- /package/{typed → dist}/utils/gpu-grid-aggregation/gpu-grid-aggregator-constants.d.ts.map +0 -0
- /package/{typed → dist}/utils/gpu-grid-aggregation/gpu-grid-aggregator-utils.d.ts +0 -0
- /package/{typed → dist}/utils/gpu-grid-aggregation/gpu-grid-aggregator-utils.d.ts.map +0 -0
- /package/{typed → dist}/utils/gpu-grid-aggregation/gpu-grid-aggregator.d.ts +0 -0
- /package/{typed → dist}/utils/gpu-grid-aggregation/transform-mean-vs.glsl.d.ts +0 -0
- /package/{typed → dist}/utils/gpu-grid-aggregation/transform-mean-vs.glsl.d.ts.map +0 -0
- /package/{typed → dist}/utils/grid-aggregation-utils.d.ts +0 -0
- /package/{typed → dist}/utils/grid-aggregation-utils.d.ts.map +0 -0
- /package/{typed → dist}/utils/prop-utils.d.ts +0 -0
- /package/{typed → dist}/utils/prop-utils.d.ts.map +0 -0
- /package/{typed → dist}/utils/resource-utils.d.ts +0 -0
- /package/{typed → dist}/utils/resource-utils.d.ts.map +0 -0
- /package/{typed → dist}/utils/scale-utils.d.ts +0 -0
- /package/{typed → dist}/utils/scale-utils.d.ts.map +0 -0
package/package.json
CHANGED
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
"name": "@deck.gl/aggregation-layers",
|
|
3
3
|
"description": "deck.gl layers that aggregate the input data into alternative representations",
|
|
4
4
|
"license": "MIT",
|
|
5
|
-
"
|
|
5
|
+
"type": "module",
|
|
6
|
+
"version": "9.0.0-beta.3",
|
|
6
7
|
"publishConfig": {
|
|
7
8
|
"access": "public"
|
|
8
9
|
},
|
|
@@ -16,13 +17,19 @@
|
|
|
16
17
|
"type": "git",
|
|
17
18
|
"url": "https://github.com/visgl/deck.gl.git"
|
|
18
19
|
},
|
|
19
|
-
"
|
|
20
|
-
"
|
|
21
|
-
"
|
|
20
|
+
"types": "dist/index.d.ts",
|
|
21
|
+
"main": "dist/index.cjs",
|
|
22
|
+
"module": "dist/index.js",
|
|
23
|
+
"exports": {
|
|
24
|
+
".": {
|
|
25
|
+
"types": "./dist/index.d.ts",
|
|
26
|
+
"import": "./dist/index.js",
|
|
27
|
+
"require": "./dist/index.cjs"
|
|
28
|
+
}
|
|
29
|
+
},
|
|
22
30
|
"files": [
|
|
23
31
|
"dist",
|
|
24
32
|
"src",
|
|
25
|
-
"typed",
|
|
26
33
|
"dist.min.js"
|
|
27
34
|
],
|
|
28
35
|
"sideEffects": false,
|
|
@@ -32,17 +39,17 @@
|
|
|
32
39
|
},
|
|
33
40
|
"dependencies": {
|
|
34
41
|
"@babel/runtime": "^7.0.0",
|
|
35
|
-
"@luma.gl/constants": "9.0.0-
|
|
36
|
-
"@luma.gl/core": "9.0.0-
|
|
37
|
-
"@luma.gl/shadertools": "9.0.0-
|
|
42
|
+
"@luma.gl/constants": "9.0.0-beta.4",
|
|
43
|
+
"@luma.gl/core": "9.0.0-beta.4",
|
|
44
|
+
"@luma.gl/shadertools": "9.0.0-beta.4",
|
|
38
45
|
"@math.gl/web-mercator": "^4.0.0",
|
|
39
46
|
"d3-hexbin": "^0.2.1"
|
|
40
47
|
},
|
|
41
48
|
"peerDependencies": {
|
|
42
49
|
"@deck.gl/core": "^9.0.0-alpha",
|
|
43
50
|
"@deck.gl/layers": "^9.0.0-alpha",
|
|
44
|
-
"@luma.gl/core": "9.0.0-
|
|
45
|
-
"@luma.gl/engine": "9.0.0-
|
|
51
|
+
"@luma.gl/core": "9.0.0-beta.4",
|
|
52
|
+
"@luma.gl/engine": "9.0.0-beta.4"
|
|
46
53
|
},
|
|
47
|
-
"gitHead": "
|
|
54
|
+
"gitHead": "643d1009268bbf92b5bc0941d00aa59d5e3a582b"
|
|
48
55
|
}
|
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
import {Device} from '@luma.gl/core';
|
|
2
|
-
import {GL} from '@luma.gl/constants';
|
|
3
|
-
|
|
4
1
|
export function getBounds(points: number[][]): number[] {
|
|
5
2
|
// Now build bounding box in world space (aligned to world coordiante system)
|
|
6
3
|
const x = points.map(p => p[0]);
|
|
@@ -77,23 +74,3 @@ export function getTextureCoordinates(point: number[], bounds: number[]) {
|
|
|
77
74
|
const [xMin, yMin, xMax, yMax] = bounds;
|
|
78
75
|
return [(point[0] - xMin) / (xMax - xMin), (point[1] - yMin) / (yMax - yMin)];
|
|
79
76
|
}
|
|
80
|
-
|
|
81
|
-
// Returns format and type for creating texture objects
|
|
82
|
-
export function getTextureParams({
|
|
83
|
-
device,
|
|
84
|
-
floatTargetSupport
|
|
85
|
-
}: {
|
|
86
|
-
device: Device;
|
|
87
|
-
floatTargetSupport?: boolean;
|
|
88
|
-
}) {
|
|
89
|
-
return floatTargetSupport
|
|
90
|
-
? {
|
|
91
|
-
// format: should be RGBA32F on WebGL2 (float textures), RGBA in WebGL1 for float or non float textures
|
|
92
|
-
format: device.info.type === 'webgl2' ? GL.RGBA32F : GL.RGBA,
|
|
93
|
-
type: GL.FLOAT
|
|
94
|
-
}
|
|
95
|
-
: {
|
|
96
|
-
format: GL.RGBA,
|
|
97
|
-
type: GL.UNSIGNED_BYTE
|
|
98
|
-
};
|
|
99
|
-
}
|
|
@@ -24,13 +24,11 @@ import {
|
|
|
24
24
|
boundsContain,
|
|
25
25
|
packVertices,
|
|
26
26
|
scaleToAspectRatio,
|
|
27
|
-
getTextureCoordinates
|
|
28
|
-
getTextureParams
|
|
27
|
+
getTextureCoordinates
|
|
29
28
|
} from './heatmap-layer-utils';
|
|
30
29
|
import {Buffer, DeviceFeature, Texture, TextureProps, TextureFormat} from '@luma.gl/core';
|
|
31
30
|
import {GL} from '@luma.gl/constants';
|
|
32
31
|
import {TextureTransform, TextureTransformProps} from '@luma.gl/engine';
|
|
33
|
-
import {withGLParameters} from '@luma.gl/webgl';
|
|
34
32
|
import {
|
|
35
33
|
Accessor,
|
|
36
34
|
AccessorFunction,
|
|
@@ -51,16 +49,16 @@ import AggregationLayer, {AggregationLayerProps} from '../aggregation-layer';
|
|
|
51
49
|
import {defaultColorRange, colorRangeToFlatArray} from '../utils/color-utils';
|
|
52
50
|
import weightsVs from './weights-vs.glsl';
|
|
53
51
|
import weightsFs from './weights-fs.glsl';
|
|
54
|
-
import
|
|
55
|
-
import
|
|
52
|
+
import maxVs from './max-vs.glsl';
|
|
53
|
+
import maxFs from './max-fs.glsl';
|
|
56
54
|
|
|
57
55
|
const RESOLUTION = 2; // (number of common space pixels) / (number texels)
|
|
58
56
|
const TEXTURE_PROPS: TextureProps = {
|
|
59
57
|
format: 'rgba8unorm',
|
|
60
58
|
mipmaps: false,
|
|
61
59
|
sampler: {
|
|
62
|
-
minFilter: '
|
|
63
|
-
magFilter: '
|
|
60
|
+
minFilter: 'linear',
|
|
61
|
+
magFilter: 'linear',
|
|
64
62
|
addressModeU: 'clamp-to-edge',
|
|
65
63
|
addressModeV: 'clamp-to-edge'
|
|
66
64
|
}
|
|
@@ -205,7 +203,6 @@ export default class HeatmapLayer<
|
|
|
205
203
|
maxWeightTransform?: TextureTransform;
|
|
206
204
|
textureSize: number;
|
|
207
205
|
format: TextureFormat;
|
|
208
|
-
type: GL;
|
|
209
206
|
weightsScale: number;
|
|
210
207
|
visibleWorldBounds: number[];
|
|
211
208
|
viewportCorners: number[][];
|
|
@@ -303,7 +300,7 @@ export default class HeatmapLayer<
|
|
|
303
300
|
maxTexture: maxWeightsTexture,
|
|
304
301
|
colorTexture,
|
|
305
302
|
aggregationMode: AGGREGATION_MODE[aggregation] || 0,
|
|
306
|
-
|
|
303
|
+
weightsTexture,
|
|
307
304
|
intensity,
|
|
308
305
|
threshold,
|
|
309
306
|
colorDomain
|
|
@@ -369,17 +366,21 @@ export default class HeatmapLayer<
|
|
|
369
366
|
}
|
|
370
367
|
|
|
371
368
|
_createTextures() {
|
|
372
|
-
const {textureSize, format
|
|
369
|
+
const {textureSize, format} = this.state;
|
|
373
370
|
|
|
374
371
|
this.setState({
|
|
375
372
|
weightsTexture: this.context.device.createTexture({
|
|
373
|
+
...TEXTURE_PROPS,
|
|
376
374
|
width: textureSize,
|
|
377
375
|
height: textureSize,
|
|
378
|
-
format
|
|
379
|
-
type,
|
|
380
|
-
...TEXTURE_PROPS
|
|
376
|
+
format
|
|
381
377
|
}),
|
|
382
|
-
maxWeightsTexture: this.context.device.createTexture({
|
|
378
|
+
maxWeightsTexture: this.context.device.createTexture({
|
|
379
|
+
...TEXTURE_PROPS,
|
|
380
|
+
width: 1,
|
|
381
|
+
height: 1,
|
|
382
|
+
format
|
|
383
|
+
})
|
|
383
384
|
});
|
|
384
385
|
}
|
|
385
386
|
|
|
@@ -398,61 +399,71 @@ export default class HeatmapLayer<
|
|
|
398
399
|
|
|
399
400
|
const textureSize = Math.min(weightsTextureSize, device.limits.maxTextureDimension2D as number);
|
|
400
401
|
const floatTargetSupport = FLOAT_TARGET_FEATURES.every(feature => device.features.has(feature));
|
|
401
|
-
const
|
|
402
|
+
const format: TextureFormat = floatTargetSupport ? 'rgba32float' : 'rgba8unorm';
|
|
402
403
|
const weightsScale = floatTargetSupport ? 1 : 1 / 255;
|
|
403
|
-
this.setState({textureSize, format,
|
|
404
|
+
this.setState({textureSize, format, weightsScale});
|
|
404
405
|
if (!floatTargetSupport) {
|
|
405
406
|
log.warn(
|
|
406
|
-
`HeatmapLayer: ${this.id} rendering to float texture not supported,
|
|
407
|
+
`HeatmapLayer: ${this.id} rendering to float texture not supported, falling back to low precision format`
|
|
407
408
|
)();
|
|
408
409
|
}
|
|
409
410
|
}
|
|
410
411
|
|
|
411
|
-
|
|
412
|
-
return super.getShaders(
|
|
413
|
-
type === 'max-weights-transform'
|
|
414
|
-
? {
|
|
415
|
-
vs: vsMax,
|
|
416
|
-
_fs: fsMax
|
|
417
|
-
}
|
|
418
|
-
: {
|
|
419
|
-
vs: weightsVs,
|
|
420
|
-
_fs: weightsFs
|
|
421
|
-
}
|
|
422
|
-
);
|
|
423
|
-
}
|
|
424
|
-
|
|
425
|
-
_createWeightsTransform(shaders = {}) {
|
|
412
|
+
_createWeightsTransform(shaders: {vs: string; fs?: string}) {
|
|
426
413
|
let {weightsTransform} = this.state;
|
|
427
|
-
|
|
414
|
+
const {weightsTexture} = this.state;
|
|
415
|
+
const attributeManager = this.getAttributeManager()!;
|
|
428
416
|
|
|
417
|
+
weightsTransform?.destroy();
|
|
429
418
|
weightsTransform = new TextureTransform(this.context.device, {
|
|
430
419
|
id: `${this.id}-weights-transform`,
|
|
420
|
+
bufferLayout: attributeManager.getBufferLayouts(),
|
|
431
421
|
vertexCount: 1,
|
|
432
|
-
targetTexture:
|
|
433
|
-
|
|
422
|
+
targetTexture: weightsTexture!,
|
|
423
|
+
parameters: {
|
|
424
|
+
depthWriteEnabled: false,
|
|
425
|
+
blendColorOperation: 'add',
|
|
426
|
+
blendColorSrcFactor: 'one',
|
|
427
|
+
blendColorDstFactor: 'one',
|
|
428
|
+
blendAlphaSrcFactor: 'one',
|
|
429
|
+
blendAlphaDstFactor: 'one'
|
|
430
|
+
},
|
|
431
|
+
topology: 'point-list',
|
|
434
432
|
...shaders
|
|
435
433
|
} as TextureTransformProps);
|
|
434
|
+
|
|
436
435
|
this.setState({weightsTransform});
|
|
437
436
|
}
|
|
438
437
|
|
|
439
438
|
_setupResources() {
|
|
440
439
|
this._createTextures();
|
|
440
|
+
const {device} = this.context;
|
|
441
441
|
const {textureSize, weightsTexture, maxWeightsTexture} = this.state;
|
|
442
442
|
|
|
443
|
-
const weightsTransformShaders = this.getShaders(
|
|
443
|
+
const weightsTransformShaders = this.getShaders({
|
|
444
|
+
vs: weightsVs,
|
|
445
|
+
fs: weightsFs
|
|
446
|
+
});
|
|
444
447
|
this._createWeightsTransform(weightsTransformShaders);
|
|
445
448
|
|
|
446
|
-
const maxWeightsTransformShaders = this.getShaders(
|
|
447
|
-
const maxWeightTransform = new TextureTransform(
|
|
449
|
+
const maxWeightsTransformShaders = this.getShaders({vs: maxVs, fs: maxFs});
|
|
450
|
+
const maxWeightTransform = new TextureTransform(device, {
|
|
448
451
|
id: `${this.id}-max-weights-transform`,
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
_targetTexture: maxWeightsTexture,
|
|
453
|
-
_targetTextureVarying: 'outTexture',
|
|
452
|
+
bindings: {inTexture: weightsTexture},
|
|
453
|
+
uniforms: {textureSize},
|
|
454
|
+
targetTexture: maxWeightsTexture,
|
|
454
455
|
...maxWeightsTransformShaders,
|
|
455
|
-
|
|
456
|
+
vertexCount: textureSize * textureSize,
|
|
457
|
+
topology: 'point-list',
|
|
458
|
+
parameters: {
|
|
459
|
+
depthWriteEnabled: false,
|
|
460
|
+
blendColorOperation: 'max',
|
|
461
|
+
blendAlphaOperation: 'max',
|
|
462
|
+
blendColorSrcFactor: 'one',
|
|
463
|
+
blendColorDstFactor: 'one',
|
|
464
|
+
blendAlphaSrcFactor: 'one',
|
|
465
|
+
blendAlphaDstFactor: 'one'
|
|
466
|
+
}
|
|
456
467
|
});
|
|
457
468
|
|
|
458
469
|
this.setState({
|
|
@@ -460,35 +471,27 @@ export default class HeatmapLayer<
|
|
|
460
471
|
maxWeightsTexture,
|
|
461
472
|
maxWeightTransform,
|
|
462
473
|
zoom: null,
|
|
463
|
-
triPositionBuffer:
|
|
464
|
-
|
|
465
|
-
// @ts-expect-error
|
|
466
|
-
accessor: {size: 3}
|
|
467
|
-
}),
|
|
468
|
-
triTexCoordBuffer: this.context.device.createBuffer({
|
|
469
|
-
byteLength: 48,
|
|
470
|
-
// @ts-expect-error
|
|
471
|
-
accessor: {size: 2}
|
|
472
|
-
})
|
|
474
|
+
triPositionBuffer: device.createBuffer({byteLength: 48}),
|
|
475
|
+
triTexCoordBuffer: device.createBuffer({byteLength: 48})
|
|
473
476
|
});
|
|
474
477
|
}
|
|
475
478
|
|
|
476
479
|
// overwrite super class method to update transform model
|
|
477
480
|
updateShaders(shaderOptions) {
|
|
478
|
-
//
|
|
479
|
-
this._createWeightsTransform(
|
|
481
|
+
// shader params (modules, injects) changed, update model object
|
|
482
|
+
this._createWeightsTransform({
|
|
483
|
+
vs: weightsVs,
|
|
484
|
+
fs: weightsFs,
|
|
485
|
+
...shaderOptions
|
|
486
|
+
});
|
|
480
487
|
}
|
|
481
488
|
|
|
482
489
|
_updateMaxWeightValue() {
|
|
483
|
-
const {maxWeightTransform} = this.state;
|
|
490
|
+
const {maxWeightTransform, textureSize} = this.state;
|
|
491
|
+
|
|
484
492
|
maxWeightTransform!.run({
|
|
485
|
-
parameters: {
|
|
486
|
-
|
|
487
|
-
blend: true,
|
|
488
|
-
depthTest: false,
|
|
489
|
-
blendFunc: [GL.ONE, GL.ONE],
|
|
490
|
-
blendEquation: GL.MAX
|
|
491
|
-
}
|
|
493
|
+
parameters: {viewport: [0, 0, 1, 1]},
|
|
494
|
+
clearColor: [0, 0, 0, 0]
|
|
492
495
|
});
|
|
493
496
|
}
|
|
494
497
|
|
|
@@ -563,18 +566,16 @@ export default class HeatmapLayer<
|
|
|
563
566
|
let {colorTexture} = this.state;
|
|
564
567
|
const colors = colorRangeToFlatArray(colorRange, false, Uint8Array as any);
|
|
565
568
|
|
|
566
|
-
if (colorTexture) {
|
|
567
|
-
//
|
|
568
|
-
colorTexture.
|
|
569
|
-
data: colors,
|
|
570
|
-
width: colorRange.length
|
|
571
|
-
});
|
|
569
|
+
if (colorTexture && colorTexture?.width === colorRange.length) {
|
|
570
|
+
// TODO(v9): Unclear whether `setSubImageData` is a public API, or what to use if not.
|
|
571
|
+
(colorTexture as any).setSubImageData({data: colors});
|
|
572
572
|
} else {
|
|
573
|
+
colorTexture?.destroy();
|
|
573
574
|
colorTexture = this.context.device.createTexture({
|
|
575
|
+
...TEXTURE_PROPS,
|
|
574
576
|
data: colors,
|
|
575
577
|
width: colorRange.length,
|
|
576
|
-
height: 1
|
|
577
|
-
...TEXTURE_PROPS
|
|
578
|
+
height: 1
|
|
578
579
|
});
|
|
579
580
|
}
|
|
580
581
|
this.setState({colorTexture});
|
|
@@ -602,41 +603,22 @@ export default class HeatmapLayer<
|
|
|
602
603
|
this.state.colorDomain = colorDomain || DEFAULT_COLOR_DOMAIN;
|
|
603
604
|
}
|
|
604
605
|
|
|
605
|
-
const
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
weightsTransform.
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
weightsTransform.run({
|
|
619
|
-
uniforms,
|
|
620
|
-
parameters: {
|
|
621
|
-
// @ts-expect-error TODO(v9): Resolve errors.
|
|
622
|
-
blend: true,
|
|
623
|
-
depthTest: false,
|
|
624
|
-
blendFunc: [GL.ONE, GL.ONE],
|
|
625
|
-
blendEquation: GL.FUNC_ADD
|
|
626
|
-
},
|
|
627
|
-
clearRenderTarget: true,
|
|
628
|
-
attributes: this.getAttributes(),
|
|
629
|
-
moduleSettings: this.getModuleSettings()
|
|
630
|
-
});
|
|
606
|
+
const attributeManager = this.getAttributeManager()!;
|
|
607
|
+
const attributes = attributeManager.getAttributes();
|
|
608
|
+
const moduleSettings = this.getModuleSettings();
|
|
609
|
+
const positions = attributes.positions.buffer;
|
|
610
|
+
const uniforms = {radiusPixels, commonBounds, textureWidth: textureSize, weightsScale};
|
|
611
|
+
const weights = attributes.weights.buffer;
|
|
612
|
+
weightsTransform.model.setAttributes({positions, weights});
|
|
613
|
+
weightsTransform.model.setVertexCount(this.getNumInstances());
|
|
614
|
+
weightsTransform.model.setUniforms(uniforms);
|
|
615
|
+
weightsTransform.model.updateModuleSettings(moduleSettings);
|
|
616
|
+
weightsTransform.run({
|
|
617
|
+
parameters: {viewport: [0, 0, textureSize, textureSize]},
|
|
618
|
+
clearColor: [0, 0, 0, 0]
|
|
631
619
|
});
|
|
632
|
-
this._updateMaxWeightValue();
|
|
633
620
|
|
|
634
|
-
|
|
635
|
-
// TODO v9 sampler support in luma.gl needs to improve
|
|
636
|
-
// weightsTexture.setSampler({
|
|
637
|
-
// magFilter: 'linear',
|
|
638
|
-
// minFilter: 'linear'
|
|
639
|
-
// });
|
|
621
|
+
this._updateMaxWeightValue();
|
|
640
622
|
}
|
|
641
623
|
|
|
642
624
|
_debouncedUpdateWeightmap(fromTimer = false) {
|
|
@@ -1,13 +1,19 @@
|
|
|
1
1
|
export default `\
|
|
2
2
|
#version 300 es
|
|
3
|
-
|
|
3
|
+
uniform sampler2D inTexture;
|
|
4
|
+
uniform float textureSize;
|
|
4
5
|
out vec4 outTexture;
|
|
5
6
|
|
|
6
7
|
void main()
|
|
7
8
|
{
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
// Sample every pixel in texture
|
|
10
|
+
int yIndex = gl_VertexID / int(textureSize);
|
|
11
|
+
int xIndex = gl_VertexID - (yIndex * int(textureSize));
|
|
12
|
+
vec2 uv = (0.5 + vec2(float(xIndex), float(yIndex))) / textureSize;
|
|
13
|
+
outTexture = texture(inTexture, uv);
|
|
14
|
+
|
|
15
|
+
gl_Position = vec4(0.0, 0.0, 0.0, 1.0);
|
|
16
|
+
// Enforce default value for ANGLE issue (https://bugs.chromium.org/p/angleproject/issues/detail?id=3941)
|
|
17
|
+
gl_PointSize = 1.0;
|
|
12
18
|
}
|
|
13
19
|
`;
|
|
@@ -25,7 +25,7 @@ export default `\
|
|
|
25
25
|
precision highp float;
|
|
26
26
|
|
|
27
27
|
uniform float opacity;
|
|
28
|
-
uniform sampler2D
|
|
28
|
+
uniform sampler2D weightsTexture;
|
|
29
29
|
uniform sampler2D colorTexture;
|
|
30
30
|
uniform float aggregationMode;
|
|
31
31
|
|
|
@@ -43,7 +43,7 @@ vec4 getLinearColor(float value) {
|
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
void main(void) {
|
|
46
|
-
vec4 weights = texture(
|
|
46
|
+
vec4 weights = texture(weightsTexture, vTexCoords);
|
|
47
47
|
float weight = weights.r;
|
|
48
48
|
|
|
49
49
|
if (aggregationMode > 0.5) {
|
|
@@ -18,13 +18,14 @@
|
|
|
18
18
|
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
19
19
|
// THE SOFTWARE.
|
|
20
20
|
|
|
21
|
-
import type {Device, Texture} from '@luma.gl/core';
|
|
22
|
-
import {Model
|
|
21
|
+
import type {Buffer, Device, Texture} from '@luma.gl/core';
|
|
22
|
+
import {Model} from '@luma.gl/engine';
|
|
23
23
|
import {Layer, LayerContext, project32} from '@deck.gl/core';
|
|
24
24
|
import vs from './triangle-layer-vertex.glsl';
|
|
25
25
|
import fs from './triangle-layer-fragment.glsl';
|
|
26
26
|
|
|
27
27
|
type _TriangleLayerProps = {
|
|
28
|
+
data: {attributes: {positions: Buffer; texCoords: Buffer}};
|
|
28
29
|
colorDomain: number[];
|
|
29
30
|
aggregationMode: string;
|
|
30
31
|
threshold: number;
|
|
@@ -32,7 +33,7 @@ type _TriangleLayerProps = {
|
|
|
32
33
|
vertexCount: number;
|
|
33
34
|
colorTexture: Texture;
|
|
34
35
|
maxTexture: Texture;
|
|
35
|
-
|
|
36
|
+
weightsTexture: Texture;
|
|
36
37
|
};
|
|
37
38
|
|
|
38
39
|
export default class TriangleLayer extends Layer<_TriangleLayerProps> {
|
|
@@ -40,6 +41,8 @@ export default class TriangleLayer extends Layer<_TriangleLayerProps> {
|
|
|
40
41
|
|
|
41
42
|
state!: {
|
|
42
43
|
model: Model;
|
|
44
|
+
positions: Buffer;
|
|
45
|
+
texCoords: Buffer;
|
|
43
46
|
};
|
|
44
47
|
|
|
45
48
|
getShaders() {
|
|
@@ -47,40 +50,31 @@ export default class TriangleLayer extends Layer<_TriangleLayerProps> {
|
|
|
47
50
|
}
|
|
48
51
|
|
|
49
52
|
initializeState({device}: LayerContext): void {
|
|
50
|
-
|
|
51
|
-
attributeManager.add({
|
|
52
|
-
positions: {size: 3, noAlloc: true},
|
|
53
|
-
texCoords: {size: 2, noAlloc: true}
|
|
54
|
-
});
|
|
55
|
-
this.setState({
|
|
56
|
-
model: this._getModel(device)
|
|
57
|
-
});
|
|
53
|
+
this.setState({model: this._getModel(device)});
|
|
58
54
|
}
|
|
59
55
|
|
|
60
56
|
_getModel(device: Device): Model {
|
|
61
|
-
const {vertexCount} = this.props;
|
|
57
|
+
const {vertexCount, data, weightsTexture, maxTexture, colorTexture} = this.props;
|
|
62
58
|
|
|
63
59
|
return new Model(device, {
|
|
64
60
|
...this.getShaders(),
|
|
65
61
|
id: this.props.id,
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
62
|
+
bindings: {weightsTexture, maxTexture, colorTexture},
|
|
63
|
+
attributes: data.attributes,
|
|
64
|
+
bufferLayout: [
|
|
65
|
+
{name: 'positions', format: 'float32x3'},
|
|
66
|
+
{name: 'texCoords', format: 'float32x2'}
|
|
67
|
+
],
|
|
68
|
+
topology: 'triangle-fan-webgl',
|
|
69
|
+
vertexCount
|
|
70
70
|
});
|
|
71
71
|
}
|
|
72
72
|
|
|
73
73
|
draw({uniforms}): void {
|
|
74
74
|
const {model} = this.state;
|
|
75
|
-
|
|
76
|
-
const {texture, maxTexture, colorTexture, intensity, threshold, aggregationMode, colorDomain} =
|
|
77
|
-
this.props;
|
|
78
|
-
|
|
75
|
+
const {intensity, threshold, aggregationMode, colorDomain} = this.props;
|
|
79
76
|
model.setUniforms({
|
|
80
77
|
...uniforms,
|
|
81
|
-
texture,
|
|
82
|
-
maxTexture,
|
|
83
|
-
colorTexture,
|
|
84
78
|
intensity,
|
|
85
79
|
threshold,
|
|
86
80
|
aggregationMode,
|
|
@@ -8,17 +8,19 @@ uniform float radiusPixels;
|
|
|
8
8
|
uniform float textureWidth;
|
|
9
9
|
uniform vec4 commonBounds;
|
|
10
10
|
uniform float weightsScale;
|
|
11
|
+
|
|
11
12
|
void main()
|
|
12
13
|
{
|
|
13
14
|
weightsTexture = vec4(weights * weightsScale, 0., 0., 1.);
|
|
14
15
|
|
|
15
|
-
float radiusTexels
|
|
16
|
+
float radiusTexels = project_pixel_size(radiusPixels) * textureWidth / (commonBounds.z - commonBounds.x);
|
|
16
17
|
gl_PointSize = radiusTexels * 2.;
|
|
17
18
|
|
|
18
19
|
vec3 commonPosition = project_position(positions, positions64Low);
|
|
19
20
|
|
|
20
|
-
// map xy from commonBounds to [-1, 1]
|
|
21
|
+
// // map xy from commonBounds to [-1, 1]
|
|
21
22
|
gl_Position.xy = (commonPosition.xy - commonBounds.xy) / (commonBounds.zw - commonBounds.xy) ;
|
|
22
23
|
gl_Position.xy = (gl_Position.xy * 2.) - (1.);
|
|
24
|
+
gl_Position.w = 1.0;
|
|
23
25
|
}
|
|
24
26
|
`;
|
|
@@ -21,7 +21,6 @@
|
|
|
21
21
|
import type {Device, DeviceFeature} from '@luma.gl/core';
|
|
22
22
|
import {Model, TextureTransform} from '@luma.gl/engine';
|
|
23
23
|
import {fp64arithmetic} from '@luma.gl/shadertools';
|
|
24
|
-
import {readPixelsToBuffer, withGLParameters, clear} from '@luma.gl/webgl';
|
|
25
24
|
import {GL} from '@luma.gl/constants';
|
|
26
25
|
import {log, project32, _mergeShaders as mergeShaders, getShaderAssembler} from '@deck.gl/core';
|
|
27
26
|
|
|
@@ -302,26 +301,26 @@ export default class GPUGridAggregator {
|
|
|
302
301
|
results[id] = {};
|
|
303
302
|
const {needMin, needMax, combineMaxMin} = weights[id];
|
|
304
303
|
results[id].aggregationTexture = textures[id];
|
|
305
|
-
results[id].aggregationBuffer =
|
|
304
|
+
results[id].aggregationBuffer = this.device.readPixelsToBufferWebGL(framebuffers[id], {
|
|
306
305
|
target: weights[id].aggregationBuffer, // update if a buffer is provided
|
|
307
306
|
sourceType: GL.FLOAT
|
|
308
307
|
});
|
|
309
308
|
if (needMin && needMax && combineMaxMin) {
|
|
310
|
-
results[id].maxMinBuffer =
|
|
309
|
+
results[id].maxMinBuffer = this.device.readPixelsToBufferWebGL(maxMinFramebuffers[id], {
|
|
311
310
|
target: weights[id].maxMinBuffer, // update if a buffer is provided
|
|
312
311
|
sourceType: GL.FLOAT
|
|
313
312
|
});
|
|
314
313
|
results[id].maxMinTexture = resources[`${id}-maxMinTexture`];
|
|
315
314
|
} else {
|
|
316
315
|
if (needMin) {
|
|
317
|
-
results[id].minBuffer =
|
|
316
|
+
results[id].minBuffer = this.device.readPixelsToBufferWebGL(minFramebuffers[id], {
|
|
318
317
|
target: weights[id].minBuffer, // update if a buffer is provided
|
|
319
318
|
sourceType: GL.FLOAT
|
|
320
319
|
});
|
|
321
320
|
results[id].minTexture = resources[`${id}-minTexture`];
|
|
322
321
|
}
|
|
323
322
|
if (needMax) {
|
|
324
|
-
results[id].maxBuffer =
|
|
323
|
+
results[id].maxBuffer = this.device.readPixelsToBufferWebGL(maxFramebuffers[id], {
|
|
325
324
|
target: weights[id].maxBuffer, // update if a buffer is provided
|
|
326
325
|
sourceType: GL.FLOAT
|
|
327
326
|
});
|
|
@@ -413,15 +412,14 @@ export default class GPUGridAggregator {
|
|
|
413
412
|
const {framebuffers} = this.state;
|
|
414
413
|
const {allAggregationModel} = this;
|
|
415
414
|
|
|
416
|
-
|
|
417
|
-
this.device,
|
|
415
|
+
this.device.withParametersWebGL(
|
|
418
416
|
{
|
|
419
417
|
...clearParams,
|
|
420
418
|
framebuffer: minOrMaxFb,
|
|
421
419
|
viewport: [0, 0, gridSize[0], gridSize[1]]
|
|
422
420
|
},
|
|
423
421
|
() => {
|
|
424
|
-
|
|
422
|
+
this.device.clearWebGL({color: true});
|
|
425
423
|
|
|
426
424
|
// allAggregationModel.setParameters(parameters);
|
|
427
425
|
allAggregationModel.setUniforms({gridSize, combineMaxMin});
|
|
@@ -444,15 +442,14 @@ export default class GPUGridAggregator {
|
|
|
444
442
|
operation === AGGREGATION_OPERATION.MIN
|
|
445
443
|
? [MAX_32_BIT_FLOAT, MAX_32_BIT_FLOAT, MAX_32_BIT_FLOAT, 0]
|
|
446
444
|
: [0, 0, 0, 0];
|
|
447
|
-
|
|
448
|
-
this.device,
|
|
445
|
+
this.device.withParametersWebGL(
|
|
449
446
|
{
|
|
450
447
|
framebuffer: framebuffers[id],
|
|
451
448
|
viewport: [0, 0, gridSize[0], gridSize[1]],
|
|
452
449
|
clearColor
|
|
453
450
|
},
|
|
454
451
|
() => {
|
|
455
|
-
|
|
452
|
+
this.device.clearWebGL({color: true});
|
|
456
453
|
|
|
457
454
|
const attributes = {weights: weightAttributes[id]};
|
|
458
455
|
gridAggregationModel.draw({
|
|
@@ -483,7 +480,7 @@ export default class GPUGridAggregator {
|
|
|
483
480
|
}
|
|
484
481
|
});
|
|
485
482
|
|
|
486
|
-
// update framebuffer with mean results so
|
|
483
|
+
// update framebuffer with mean results so device.readPixelsToBufferWebGL returns mean values
|
|
487
484
|
framebuffers[id].attach({[GL.COLOR_ATTACHMENT0]: textures[id]});
|
|
488
485
|
}
|
|
489
486
|
}
|
|
@@ -607,7 +604,7 @@ export default class GPUGridAggregator {
|
|
|
607
604
|
if (results[id]) {
|
|
608
605
|
for (const bufferName of BUFFER_NAMES) {
|
|
609
606
|
if (results[id][bufferName] && weights[id][bufferName] !== results[id][bufferName]) {
|
|
610
|
-
// No result buffer is provided in weights object, `
|
|
607
|
+
// No result buffer is provided in weights object, `device.readPixelsToBufferWebGL` has created a new Buffer object
|
|
611
608
|
// collect the new buffer for garabge collection
|
|
612
609
|
const name = `gpu-result-${id}-${bufferName}`;
|
|
613
610
|
if (resources[name]) {
|