@deck.gl/aggregation-layers 9.0.35 → 9.1.0-beta.1
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/common/aggregation-layer.d.ts +30 -0
- package/dist/common/aggregation-layer.d.ts.map +1 -0
- package/dist/common/aggregation-layer.js +69 -0
- package/dist/common/aggregator/aggregator.d.ts +76 -0
- package/dist/common/aggregator/aggregator.d.ts.map +1 -0
- package/dist/common/aggregator/aggregator.js +4 -0
- package/dist/common/aggregator/cpu-aggregator/aggregate.d.ts +27 -0
- package/dist/common/aggregator/cpu-aggregator/aggregate.d.ts.map +1 -0
- package/dist/common/aggregator/cpu-aggregator/aggregate.js +66 -0
- package/dist/common/aggregator/cpu-aggregator/cpu-aggregator.d.ts +70 -0
- package/dist/common/aggregator/cpu-aggregator/cpu-aggregator.d.ts.map +1 -0
- package/dist/common/aggregator/cpu-aggregator/cpu-aggregator.js +139 -0
- package/dist/common/aggregator/cpu-aggregator/sort-bins.d.ts +15 -0
- package/dist/common/aggregator/cpu-aggregator/sort-bins.d.ts.map +1 -0
- package/dist/common/aggregator/cpu-aggregator/sort-bins.js +43 -0
- package/dist/common/aggregator/cpu-aggregator/vertex-accessor.d.ts +21 -0
- package/dist/common/aggregator/cpu-aggregator/vertex-accessor.d.ts.map +1 -0
- package/dist/common/aggregator/cpu-aggregator/vertex-accessor.js +55 -0
- package/dist/common/aggregator/gpu-aggregator/aggregation-transform-uniforms.d.ts +18 -0
- package/dist/common/aggregator/gpu-aggregator/aggregation-transform-uniforms.d.ts.map +1 -0
- package/dist/common/aggregator/gpu-aggregator/aggregation-transform-uniforms.js +20 -0
- package/dist/common/aggregator/gpu-aggregator/bin-sorter-uniforms.d.ts +14 -0
- package/dist/common/aggregator/gpu-aggregator/bin-sorter-uniforms.d.ts.map +1 -0
- package/dist/common/aggregator/gpu-aggregator/bin-sorter-uniforms.js +17 -0
- package/dist/common/aggregator/gpu-aggregator/utils.d.ts +6 -0
- package/dist/common/aggregator/gpu-aggregator/utils.d.ts.map +1 -0
- package/dist/common/aggregator/gpu-aggregator/utils.js +24 -0
- package/dist/common/aggregator/gpu-aggregator/webgl-aggregation-transform.d.ts +24 -0
- package/dist/common/aggregator/gpu-aggregator/webgl-aggregation-transform.d.ts.map +1 -0
- package/dist/common/aggregator/gpu-aggregator/webgl-aggregation-transform.js +215 -0
- package/dist/common/aggregator/gpu-aggregator/webgl-aggregator.d.ts +81 -0
- package/dist/common/aggregator/gpu-aggregator/webgl-aggregator.d.ts.map +1 -0
- package/dist/common/aggregator/gpu-aggregator/webgl-aggregator.js +201 -0
- package/dist/common/aggregator/gpu-aggregator/webgl-bin-sorter.d.ts +38 -0
- package/dist/common/aggregator/gpu-aggregator/webgl-bin-sorter.d.ts.map +1 -0
- package/dist/common/aggregator/gpu-aggregator/webgl-bin-sorter.js +223 -0
- package/dist/common/aggregator/index.d.ts +6 -0
- package/dist/common/aggregator/index.d.ts.map +1 -0
- package/dist/common/aggregator/index.js +5 -0
- package/dist/common/types.d.ts +11 -0
- package/dist/common/types.d.ts.map +1 -0
- package/dist/common/types.js +4 -0
- package/dist/common/utils/bounds-utils.d.ts +10 -0
- package/dist/common/utils/bounds-utils.d.ts.map +1 -0
- package/dist/common/utils/bounds-utils.js +20 -0
- package/dist/common/utils/color-utils.d.ts +10 -0
- package/dist/common/utils/color-utils.d.ts.map +1 -0
- package/dist/common/utils/color-utils.js +65 -0
- package/dist/common/utils/prop-utils.d.ts.map +1 -0
- package/dist/common/utils/prop-utils.js +12 -0
- package/dist/common/utils/scale-utils.d.ts +46 -0
- package/dist/common/utils/scale-utils.d.ts.map +1 -0
- package/dist/common/utils/scale-utils.js +180 -0
- package/dist/contour-layer/bin-options-uniforms.d.ts +13 -0
- package/dist/contour-layer/bin-options-uniforms.d.ts.map +1 -0
- package/dist/contour-layer/bin-options-uniforms.js +17 -0
- package/dist/contour-layer/contour-layer.d.ts +42 -50
- package/dist/contour-layer/contour-layer.d.ts.map +1 -1
- package/dist/contour-layer/contour-layer.js +232 -192
- package/dist/contour-layer/contour-utils.d.ts +36 -15
- package/dist/contour-layer/contour-utils.d.ts.map +1 -1
- package/dist/contour-layer/contour-utils.js +24 -29
- package/dist/contour-layer/marching-squares-codes.d.ts.map +1 -1
- package/dist/contour-layer/marching-squares-codes.js +3 -0
- package/dist/contour-layer/marching-squares.d.ts +22 -6
- package/dist/contour-layer/marching-squares.d.ts.map +1 -1
- package/dist/contour-layer/marching-squares.js +71 -68
- package/dist/contour-layer/value-reader.d.ts +10 -0
- package/dist/contour-layer/value-reader.d.ts.map +1 -0
- package/dist/contour-layer/value-reader.js +46 -0
- package/dist/dist.dev.js +4842 -4081
- package/dist/grid-layer/bin-options-uniforms.d.ts +13 -0
- package/dist/grid-layer/bin-options-uniforms.d.ts.map +1 -0
- package/dist/grid-layer/bin-options-uniforms.js +17 -0
- package/dist/grid-layer/grid-cell-layer-vertex.glsl.d.ts +3 -0
- package/dist/grid-layer/grid-cell-layer-vertex.glsl.d.ts.map +1 -0
- package/dist/grid-layer/grid-cell-layer-vertex.glsl.js +51 -0
- package/dist/grid-layer/grid-cell-layer.d.ts +32 -0
- package/dist/grid-layer/grid-cell-layer.d.ts.map +1 -0
- package/dist/grid-layer/grid-cell-layer.js +93 -0
- package/dist/grid-layer/grid-layer-uniforms.d.ts +21 -0
- package/dist/grid-layer/grid-layer-uniforms.d.ts.map +1 -0
- package/dist/grid-layer/grid-layer-uniforms.js +23 -0
- package/dist/grid-layer/grid-layer.d.ts +175 -13
- package/dist/grid-layer/grid-layer.d.ts.map +1 -1
- package/dist/grid-layer/grid-layer.js +342 -46
- package/dist/{aggregation-layer.d.ts → heatmap-layer/aggregation-layer.d.ts} +1 -0
- package/dist/heatmap-layer/aggregation-layer.d.ts.map +1 -0
- package/dist/{aggregation-layer.js → heatmap-layer/aggregation-layer.js} +6 -21
- package/dist/heatmap-layer/heatmap-layer-uniforms.d.ts +30 -0
- package/dist/heatmap-layer/heatmap-layer-uniforms.d.ts.map +1 -0
- package/dist/heatmap-layer/heatmap-layer-uniforms.js +32 -0
- package/dist/heatmap-layer/heatmap-layer-utils.d.ts +1 -1
- package/dist/heatmap-layer/heatmap-layer-utils.d.ts.map +1 -1
- package/dist/heatmap-layer/heatmap-layer-utils.js +3 -0
- package/dist/heatmap-layer/heatmap-layer.d.ts +6 -4
- package/dist/heatmap-layer/heatmap-layer.d.ts.map +1 -1
- package/dist/heatmap-layer/heatmap-layer.js +43 -33
- package/dist/heatmap-layer/max-fs.glsl.d.ts.map +1 -1
- package/dist/heatmap-layer/max-fs.glsl.js +3 -0
- package/dist/heatmap-layer/max-vs.glsl.d.ts +1 -1
- package/dist/heatmap-layer/max-vs.glsl.d.ts.map +1 -1
- package/dist/heatmap-layer/max-vs.glsl.js +6 -4
- package/dist/heatmap-layer/triangle-layer-fragment.glsl.d.ts +1 -1
- package/dist/heatmap-layer/triangle-layer-fragment.glsl.d.ts.map +1 -1
- package/dist/heatmap-layer/triangle-layer-fragment.glsl.js +5 -23
- package/dist/heatmap-layer/triangle-layer-uniforms.d.ts +22 -0
- package/dist/heatmap-layer/triangle-layer-uniforms.d.ts.map +1 -0
- package/dist/heatmap-layer/triangle-layer-uniforms.js +22 -0
- package/dist/heatmap-layer/triangle-layer-vertex.glsl.d.ts +1 -1
- package/dist/heatmap-layer/triangle-layer-vertex.glsl.d.ts.map +1 -1
- package/dist/heatmap-layer/triangle-layer-vertex.glsl.js +10 -30
- package/dist/heatmap-layer/triangle-layer.d.ts +4 -10
- package/dist/heatmap-layer/triangle-layer.d.ts.map +1 -1
- package/dist/heatmap-layer/triangle-layer.js +17 -30
- package/dist/heatmap-layer/weights-fs.glsl.d.ts.map +1 -1
- package/dist/heatmap-layer/weights-fs.glsl.js +3 -0
- package/dist/heatmap-layer/weights-vs.glsl.d.ts +1 -1
- package/dist/heatmap-layer/weights-vs.glsl.d.ts.map +1 -1
- package/dist/heatmap-layer/weights-vs.glsl.js +6 -7
- package/dist/hexagon-layer/bin-options-uniforms.d.ts +14 -0
- package/dist/hexagon-layer/bin-options-uniforms.d.ts.map +1 -0
- package/dist/hexagon-layer/bin-options-uniforms.js +17 -0
- package/dist/hexagon-layer/hexagon-cell-layer-vertex.glsl.d.ts +3 -0
- package/dist/hexagon-layer/hexagon-cell-layer-vertex.glsl.d.ts.map +1 -0
- package/dist/hexagon-layer/hexagon-cell-layer-vertex.glsl.js +55 -0
- package/dist/hexagon-layer/hexagon-cell-layer.d.ts +29 -0
- package/dist/hexagon-layer/hexagon-cell-layer.d.ts.map +1 -0
- package/dist/hexagon-layer/hexagon-cell-layer.js +94 -0
- package/dist/hexagon-layer/hexagon-layer-uniforms.d.ts +19 -0
- package/dist/hexagon-layer/hexagon-layer-uniforms.d.ts.map +1 -0
- package/dist/hexagon-layer/hexagon-layer-uniforms.js +21 -0
- package/dist/hexagon-layer/hexagon-layer.d.ts +84 -54
- package/dist/hexagon-layer/hexagon-layer.d.ts.map +1 -1
- package/dist/hexagon-layer/hexagon-layer.js +307 -123
- package/dist/hexagon-layer/hexbin.d.ts +17 -0
- package/dist/hexagon-layer/hexbin.d.ts.map +1 -0
- package/dist/hexagon-layer/hexbin.js +69 -0
- package/dist/index.cjs +3025 -2946
- package/dist/index.cjs.map +4 -4
- package/dist/index.d.ts +7 -13
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -27
- package/dist/screen-grid-layer/bin-options-uniforms.d.ts +11 -0
- package/dist/screen-grid-layer/bin-options-uniforms.d.ts.map +1 -0
- package/dist/screen-grid-layer/bin-options-uniforms.js +15 -0
- package/dist/screen-grid-layer/screen-grid-cell-layer.d.ts +11 -16
- package/dist/screen-grid-layer/screen-grid-cell-layer.d.ts.map +1 -1
- package/dist/screen-grid-layer/screen-grid-cell-layer.js +52 -134
- package/dist/screen-grid-layer/screen-grid-layer-fragment.glsl.d.ts +1 -1
- package/dist/screen-grid-layer/screen-grid-layer-fragment.glsl.d.ts.map +1 -1
- package/dist/screen-grid-layer/screen-grid-layer-fragment.glsl.js +4 -24
- package/dist/screen-grid-layer/screen-grid-layer-uniforms.d.ts +17 -0
- package/dist/screen-grid-layer/screen-grid-layer-uniforms.d.ts.map +1 -0
- package/dist/screen-grid-layer/screen-grid-layer-uniforms.js +19 -0
- package/dist/screen-grid-layer/screen-grid-layer-vertex.glsl.d.ts +1 -1
- package/dist/screen-grid-layer/screen-grid-layer-vertex.glsl.d.ts.map +1 -1
- package/dist/screen-grid-layer/screen-grid-layer-vertex.glsl.js +21 -62
- package/dist/screen-grid-layer/screen-grid-layer.d.ts +33 -40
- package/dist/screen-grid-layer/screen-grid-layer.d.ts.map +1 -1
- package/dist/screen-grid-layer/screen-grid-layer.js +157 -174
- package/dist.min.js +401 -382
- package/package.json +10 -9
- package/src/common/aggregation-layer.ts +107 -0
- package/src/common/aggregator/aggregator.ts +88 -0
- package/src/common/aggregator/cpu-aggregator/aggregate.ts +101 -0
- package/src/common/aggregator/cpu-aggregator/cpu-aggregator.ts +203 -0
- package/src/common/aggregator/cpu-aggregator/sort-bins.ts +63 -0
- package/src/common/aggregator/cpu-aggregator/vertex-accessor.ts +86 -0
- package/src/common/aggregator/gpu-aggregator/aggregation-transform-uniforms.ts +33 -0
- package/src/common/aggregator/gpu-aggregator/bin-sorter-uniforms.ts +27 -0
- package/src/common/aggregator/gpu-aggregator/utils.ts +27 -0
- package/src/common/aggregator/gpu-aggregator/webgl-aggregation-transform.ts +247 -0
- package/src/common/aggregator/gpu-aggregator/webgl-aggregator.ts +274 -0
- package/src/common/aggregator/gpu-aggregator/webgl-bin-sorter.ts +258 -0
- package/src/common/aggregator/index.ts +10 -0
- package/src/{types.ts → common/types.ts} +10 -4
- package/src/common/utils/bounds-utils.ts +34 -0
- package/src/common/utils/color-utils.ts +86 -0
- package/src/common/utils/prop-utils.ts +13 -0
- package/src/common/utils/scale-utils.ts +236 -0
- package/src/contour-layer/bin-options-uniforms.ts +26 -0
- package/src/contour-layer/contour-layer.ts +300 -265
- package/src/contour-layer/contour-utils.ts +68 -39
- package/src/contour-layer/marching-squares-codes.ts +4 -0
- package/src/contour-layer/marching-squares.ts +93 -82
- package/src/contour-layer/value-reader.ts +65 -0
- package/src/grid-layer/bin-options-uniforms.ts +26 -0
- package/src/grid-layer/grid-cell-layer-vertex.glsl.ts +68 -0
- package/src/grid-layer/grid-cell-layer.ts +141 -0
- package/src/grid-layer/grid-layer-uniforms.ts +37 -0
- package/src/grid-layer/grid-layer.ts +614 -73
- package/src/{aggregation-layer.ts → heatmap-layer/aggregation-layer.ts} +6 -21
- package/src/heatmap-layer/heatmap-layer-uniforms.ts +50 -0
- package/src/heatmap-layer/heatmap-layer-utils.ts +9 -1
- package/src/heatmap-layer/heatmap-layer.ts +59 -36
- package/src/heatmap-layer/max-fs.glsl.ts +4 -0
- package/src/heatmap-layer/max-vs.glsl.ts +7 -4
- package/src/heatmap-layer/triangle-layer-fragment.glsl.ts +5 -23
- package/src/heatmap-layer/triangle-layer-uniforms.ts +37 -0
- package/src/heatmap-layer/triangle-layer-vertex.glsl.ts +10 -30
- package/src/heatmap-layer/triangle-layer.ts +26 -31
- package/src/heatmap-layer/weights-fs.glsl.ts +4 -0
- package/src/heatmap-layer/weights-vs.glsl.ts +7 -7
- package/src/hexagon-layer/bin-options-uniforms.ts +27 -0
- package/src/hexagon-layer/hexagon-cell-layer-vertex.glsl.ts +73 -0
- package/src/hexagon-layer/hexagon-cell-layer.ts +141 -0
- package/src/hexagon-layer/hexagon-layer-uniforms.ts +34 -0
- package/src/hexagon-layer/hexagon-layer.ts +454 -186
- package/src/hexagon-layer/hexbin.ts +79 -0
- package/src/index.ts +21 -34
- package/src/screen-grid-layer/bin-options-uniforms.ts +23 -0
- package/src/screen-grid-layer/screen-grid-cell-layer.ts +71 -156
- package/src/screen-grid-layer/screen-grid-layer-fragment.glsl.ts +4 -24
- package/src/screen-grid-layer/screen-grid-layer-uniforms.ts +31 -0
- package/src/screen-grid-layer/screen-grid-layer-vertex.glsl.ts +21 -64
- package/src/screen-grid-layer/screen-grid-layer.ts +194 -222
- package/dist/aggregation-layer.d.ts.map +0 -1
- package/dist/cpu-grid-layer/cpu-grid-layer.d.ts +0 -158
- package/dist/cpu-grid-layer/cpu-grid-layer.d.ts.map +0 -1
- package/dist/cpu-grid-layer/cpu-grid-layer.js +0 -130
- package/dist/cpu-grid-layer/grid-aggregator.d.ts +0 -35
- package/dist/cpu-grid-layer/grid-aggregator.d.ts.map +0 -1
- package/dist/cpu-grid-layer/grid-aggregator.js +0 -141
- package/dist/gpu-grid-layer/gpu-grid-cell-layer-fragment.glsl.d.ts +0 -3
- package/dist/gpu-grid-layer/gpu-grid-cell-layer-fragment.glsl.d.ts.map +0 -1
- package/dist/gpu-grid-layer/gpu-grid-cell-layer-fragment.glsl.js +0 -30
- package/dist/gpu-grid-layer/gpu-grid-cell-layer-vertex.glsl.d.ts +0 -3
- package/dist/gpu-grid-layer/gpu-grid-cell-layer-vertex.glsl.d.ts.map +0 -1
- package/dist/gpu-grid-layer/gpu-grid-cell-layer-vertex.glsl.js +0 -112
- package/dist/gpu-grid-layer/gpu-grid-cell-layer.d.ts +0 -48
- package/dist/gpu-grid-layer/gpu-grid-cell-layer.d.ts.map +0 -1
- package/dist/gpu-grid-layer/gpu-grid-cell-layer.js +0 -146
- package/dist/gpu-grid-layer/gpu-grid-layer.d.ts +0 -99
- package/dist/gpu-grid-layer/gpu-grid-layer.d.ts.map +0 -1
- package/dist/gpu-grid-layer/gpu-grid-layer.js +0 -289
- package/dist/grid-aggregation-layer.d.ts +0 -67
- package/dist/grid-aggregation-layer.d.ts.map +0 -1
- package/dist/grid-aggregation-layer.js +0 -173
- package/dist/hexagon-layer/hexagon-aggregator.d.ts +0 -27
- package/dist/hexagon-layer/hexagon-aggregator.d.ts.map +0 -1
- package/dist/hexagon-layer/hexagon-aggregator.js +0 -112
- package/dist/types.d.ts +0 -12
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -1
- package/dist/utils/aggregation-operation-utils.d.ts +0 -19
- package/dist/utils/aggregation-operation-utils.d.ts.map +0 -1
- package/dist/utils/aggregation-operation-utils.js +0 -94
- package/dist/utils/bin-sorter.d.ts +0 -52
- package/dist/utils/bin-sorter.d.ts.map +0 -1
- package/dist/utils/bin-sorter.js +0 -167
- package/dist/utils/color-utils.d.ts +0 -3
- package/dist/utils/color-utils.d.ts.map +0 -1
- package/dist/utils/color-utils.js +0 -53
- package/dist/utils/cpu-aggregator.d.ts +0 -169
- package/dist/utils/cpu-aggregator.d.ts.map +0 -1
- package/dist/utils/cpu-aggregator.js +0 -421
- package/dist/utils/gpu-grid-aggregation/aggregate-all-fs.glsl.d.ts +0 -3
- package/dist/utils/gpu-grid-aggregation/aggregate-all-fs.glsl.d.ts.map +0 -1
- package/dist/utils/gpu-grid-aggregation/aggregate-all-fs.glsl.js +0 -36
- package/dist/utils/gpu-grid-aggregation/aggregate-all-vs.glsl.d.ts +0 -3
- package/dist/utils/gpu-grid-aggregation/aggregate-all-vs.glsl.d.ts.map +0 -1
- package/dist/utils/gpu-grid-aggregation/aggregate-all-vs.glsl.js +0 -42
- package/dist/utils/gpu-grid-aggregation/aggregate-to-grid-fs.glsl.d.ts +0 -3
- package/dist/utils/gpu-grid-aggregation/aggregate-to-grid-fs.glsl.d.ts.map +0 -1
- package/dist/utils/gpu-grid-aggregation/aggregate-to-grid-fs.glsl.js +0 -30
- package/dist/utils/gpu-grid-aggregation/aggregate-to-grid-vs.glsl.d.ts +0 -3
- package/dist/utils/gpu-grid-aggregation/aggregate-to-grid-vs.glsl.d.ts.map +0 -1
- package/dist/utils/gpu-grid-aggregation/aggregate-to-grid-vs.glsl.js +0 -61
- package/dist/utils/gpu-grid-aggregation/gpu-grid-aggregator-constants.d.ts +0 -38
- package/dist/utils/gpu-grid-aggregation/gpu-grid-aggregator-constants.d.ts.map +0 -1
- package/dist/utils/gpu-grid-aggregation/gpu-grid-aggregator-constants.js +0 -41
- package/dist/utils/gpu-grid-aggregation/gpu-grid-aggregator-utils.d.ts +0 -1
- package/dist/utils/gpu-grid-aggregation/gpu-grid-aggregator-utils.d.ts.map +0 -1
- package/dist/utils/gpu-grid-aggregation/gpu-grid-aggregator-utils.js +0 -1
- package/dist/utils/gpu-grid-aggregation/gpu-grid-aggregator.d.ts +0 -76
- package/dist/utils/gpu-grid-aggregation/gpu-grid-aggregator.d.ts.map +0 -1
- package/dist/utils/gpu-grid-aggregation/gpu-grid-aggregator.js +0 -555
- package/dist/utils/gpu-grid-aggregation/transform-mean-vs.glsl.d.ts +0 -3
- package/dist/utils/gpu-grid-aggregation/transform-mean-vs.glsl.d.ts.map +0 -1
- package/dist/utils/gpu-grid-aggregation/transform-mean-vs.glsl.js +0 -32
- package/dist/utils/grid-aggregation-utils.d.ts +0 -30
- package/dist/utils/grid-aggregation-utils.d.ts.map +0 -1
- package/dist/utils/grid-aggregation-utils.js +0 -114
- package/dist/utils/prop-utils.d.ts.map +0 -1
- package/dist/utils/prop-utils.js +0 -28
- package/dist/utils/resource-utils.d.ts +0 -14
- package/dist/utils/resource-utils.d.ts.map +0 -1
- package/dist/utils/resource-utils.js +0 -38
- package/dist/utils/scale-utils.d.ts +0 -15
- package/dist/utils/scale-utils.d.ts.map +0 -1
- package/dist/utils/scale-utils.js +0 -184
- package/src/cpu-grid-layer/cpu-grid-layer.ts +0 -329
- package/src/cpu-grid-layer/grid-aggregator.ts +0 -184
- package/src/gpu-grid-layer/gpu-grid-cell-layer-fragment.glsl.ts +0 -35
- package/src/gpu-grid-layer/gpu-grid-cell-layer-vertex.glsl.ts +0 -143
- package/src/gpu-grid-layer/gpu-grid-cell-layer.ts +0 -201
- package/src/gpu-grid-layer/gpu-grid-layer.ts +0 -455
- package/src/grid-aggregation-layer.ts +0 -243
- package/src/hexagon-layer/hexagon-aggregator.ts +0 -127
- package/src/utils/aggregation-operation-utils.ts +0 -118
- package/src/utils/bin-sorter.ts +0 -218
- package/src/utils/color-utils.ts +0 -57
- package/src/utils/cpu-aggregator.ts +0 -503
- package/src/utils/gpu-grid-aggregation/aggregate-all-fs.glsl.ts +0 -40
- package/src/utils/gpu-grid-aggregation/aggregate-all-vs.glsl.ts +0 -54
- package/src/utils/gpu-grid-aggregation/aggregate-to-grid-fs.glsl.ts +0 -35
- package/src/utils/gpu-grid-aggregation/aggregate-to-grid-vs.glsl.ts +0 -79
- package/src/utils/gpu-grid-aggregation/gpu-grid-aggregator-constants.ts +0 -46
- package/src/utils/gpu-grid-aggregation/gpu-grid-aggregator-utils.ts +0 -0
- package/src/utils/gpu-grid-aggregation/gpu-grid-aggregator.md +0 -155
- package/src/utils/gpu-grid-aggregation/gpu-grid-aggregator.ts +0 -690
- package/src/utils/gpu-grid-aggregation/transform-mean-vs.glsl.ts +0 -38
- package/src/utils/grid-aggregation-utils.ts +0 -147
- package/src/utils/prop-utils.ts +0 -29
- package/src/utils/resource-utils.ts +0 -53
- package/src/utils/scale-utils.js +0 -219
- /package/dist/{utils → common/utils}/prop-utils.d.ts +0 -0
|
@@ -1,56 +1,87 @@
|
|
|
1
|
-
|
|
1
|
+
// deck.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// Copyright (c) vis.gl contributors
|
|
4
|
+
|
|
5
|
+
import type {Color} from '@deck.gl/core';
|
|
6
|
+
import {getCode, getLines, getPolygons} from './marching-squares';
|
|
7
|
+
|
|
8
|
+
export type Contour = {
|
|
9
|
+
/**
|
|
10
|
+
* Isolines: `threshold` value must be a single `Number`, Isolines are generated based on this threshold value.
|
|
11
|
+
*
|
|
12
|
+
* Isobands: `threshold` value must be an Array of two `Number`s. Isobands are generated using `[threshold[0], threshold[1])` as threshold range, i.e area that has values `>= threshold[0]` and `< threshold[1]` are rendered with corresponding color. NOTE: `threshold[0]` is inclusive and `threshold[1]` is not inclusive.
|
|
13
|
+
*/
|
|
14
|
+
threshold: number | number[];
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* RGBA color array to be used to render the contour.
|
|
18
|
+
* @default [255, 255, 255, 255]
|
|
19
|
+
*/
|
|
20
|
+
color?: Color;
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Applicable for `Isoline`s only, width of the Isoline in pixels.
|
|
24
|
+
* @default 1
|
|
25
|
+
*/
|
|
26
|
+
strokeWidth?: number;
|
|
27
|
+
|
|
28
|
+
/** Defines z order of the contour. */
|
|
29
|
+
zIndex?: number;
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
export type ContourLine = {
|
|
33
|
+
vertices: number[][];
|
|
34
|
+
contour: Contour;
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
export type ContourPolygon = {
|
|
38
|
+
vertices: number[][];
|
|
39
|
+
contour: Contour;
|
|
40
|
+
};
|
|
2
41
|
|
|
3
42
|
// Given all the cell weights, generates contours for each threshold.
|
|
4
43
|
/* eslint-disable max-depth */
|
|
5
44
|
export function generateContours({
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
cellSize
|
|
45
|
+
contours,
|
|
46
|
+
getValue,
|
|
47
|
+
xRange,
|
|
48
|
+
yRange
|
|
11
49
|
}: {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
cellSize: number[];
|
|
50
|
+
contours: Contour[];
|
|
51
|
+
getValue: (x: number, y: number) => number;
|
|
52
|
+
xRange: [number, number];
|
|
53
|
+
yRange: [number, number];
|
|
17
54
|
}) {
|
|
18
|
-
const
|
|
19
|
-
const contourPolygons:
|
|
20
|
-
const width = gridSize[0];
|
|
21
|
-
const height = gridSize[1];
|
|
55
|
+
const contourLines: ContourLine[] = [];
|
|
56
|
+
const contourPolygons: ContourPolygon[] = [];
|
|
22
57
|
let segmentIndex = 0;
|
|
23
58
|
let polygonIndex = 0;
|
|
24
59
|
|
|
25
|
-
for (
|
|
26
|
-
const
|
|
60
|
+
for (let i = 0; i < contours.length; i++) {
|
|
61
|
+
const contour = contours[i];
|
|
62
|
+
const z = contour.zIndex ?? i;
|
|
27
63
|
const {threshold} = contour;
|
|
28
|
-
for (let x = -1; x <
|
|
29
|
-
for (let y = -1; y <
|
|
64
|
+
for (let x = xRange[0] - 1; x < xRange[1]; x++) {
|
|
65
|
+
for (let y = yRange[0] - 1; y < yRange[1]; y++) {
|
|
30
66
|
// Get the MarchingSquares code based on neighbor cell weights.
|
|
31
67
|
const {code, meanCode} = getCode({
|
|
32
|
-
|
|
68
|
+
getValue,
|
|
33
69
|
threshold,
|
|
34
70
|
x,
|
|
35
71
|
y,
|
|
36
|
-
|
|
37
|
-
|
|
72
|
+
xRange,
|
|
73
|
+
yRange
|
|
38
74
|
});
|
|
39
75
|
const opts = {
|
|
40
|
-
type: CONTOUR_TYPE.ISO_BANDS,
|
|
41
|
-
gridOrigin,
|
|
42
|
-
cellSize,
|
|
43
76
|
x,
|
|
44
77
|
y,
|
|
45
|
-
|
|
46
|
-
height,
|
|
78
|
+
z,
|
|
47
79
|
code,
|
|
48
|
-
meanCode
|
|
49
|
-
thresholdData: data
|
|
80
|
+
meanCode
|
|
50
81
|
};
|
|
51
82
|
if (Array.isArray(threshold)) {
|
|
52
|
-
|
|
53
|
-
const polygons =
|
|
83
|
+
// ISO bands
|
|
84
|
+
const polygons = getPolygons(opts);
|
|
54
85
|
for (const polygon of polygons) {
|
|
55
86
|
contourPolygons[polygonIndex++] = {
|
|
56
87
|
vertices: polygon,
|
|
@@ -58,13 +89,11 @@ export function generateContours({
|
|
|
58
89
|
};
|
|
59
90
|
}
|
|
60
91
|
} else {
|
|
61
|
-
//
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
start: vertices[i],
|
|
67
|
-
end: vertices[i + 1],
|
|
92
|
+
// ISO lines
|
|
93
|
+
const path = getLines(opts);
|
|
94
|
+
if (path.length > 0) {
|
|
95
|
+
contourLines[segmentIndex++] = {
|
|
96
|
+
vertices: path,
|
|
68
97
|
contour
|
|
69
98
|
};
|
|
70
99
|
}
|
|
@@ -72,6 +101,6 @@ export function generateContours({
|
|
|
72
101
|
}
|
|
73
102
|
}
|
|
74
103
|
}
|
|
75
|
-
return {
|
|
104
|
+
return {lines: contourLines, polygons: contourPolygons};
|
|
76
105
|
}
|
|
77
106
|
/* eslint-enable max-depth */
|
|
@@ -1,24 +1,19 @@
|
|
|
1
|
+
// deck.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// Copyright (c) vis.gl contributors
|
|
4
|
+
|
|
1
5
|
// All utility methods needed to implement Marching Squares algorithm
|
|
2
6
|
// Ref: https://en.wikipedia.org/wiki/Marching_squares
|
|
3
7
|
|
|
4
|
-
import {log} from '@deck.gl/core';
|
|
5
8
|
import {ISOLINES_CODE_OFFSET_MAP, ISOBANDS_CODE_OFFSET_MAP} from './marching-squares-codes';
|
|
6
9
|
|
|
7
|
-
export const CONTOUR_TYPE = {
|
|
8
|
-
ISO_LINES: 1,
|
|
9
|
-
ISO_BANDS: 2
|
|
10
|
-
};
|
|
11
|
-
|
|
12
|
-
const DEFAULT_THRESHOLD_DATA = {
|
|
13
|
-
zIndex: 0,
|
|
14
|
-
zOffset: 0.005
|
|
15
|
-
};
|
|
16
|
-
|
|
17
10
|
// Utility methods
|
|
18
11
|
|
|
19
12
|
function getVertexCode(weight: number, threshold: number | number[]): number {
|
|
20
13
|
// threshold must be a single value or a range (array of size 2)
|
|
21
|
-
|
|
14
|
+
if (Number.isNaN(weight)) {
|
|
15
|
+
return 0;
|
|
16
|
+
}
|
|
22
17
|
// Iso-bands
|
|
23
18
|
if (Array.isArray(threshold)) {
|
|
24
19
|
if (weight < threshold[0]) {
|
|
@@ -32,60 +27,71 @@ function getVertexCode(weight: number, threshold: number | number[]): number {
|
|
|
32
27
|
|
|
33
28
|
// Returns marching square code for given cell
|
|
34
29
|
/* eslint-disable complexity, max-statements*/
|
|
35
|
-
export function getCode(opts
|
|
30
|
+
export function getCode(opts: {
|
|
31
|
+
getValue: (x: number, y: number) => number;
|
|
32
|
+
threshold: number | number[];
|
|
33
|
+
x: number;
|
|
34
|
+
xRange: [number, number];
|
|
35
|
+
y: number;
|
|
36
|
+
yRange: [number, number];
|
|
37
|
+
}): {
|
|
38
|
+
code: number;
|
|
39
|
+
meanCode: number;
|
|
40
|
+
} {
|
|
36
41
|
// Assumptions
|
|
37
42
|
// Origin is on bottom-left , and X increase to right, Y to top
|
|
38
43
|
// When processing one cell, we process 4 cells, by extending row to top and on column to right
|
|
39
44
|
// to create a 2X2 cell grid
|
|
40
|
-
const {
|
|
41
|
-
let threshold = opts.threshold;
|
|
42
|
-
if (opts.thresholdValue) {
|
|
43
|
-
log.deprecated('thresholdValue', 'threshold')();
|
|
44
|
-
threshold = opts.thresholdValue;
|
|
45
|
-
}
|
|
45
|
+
const {x, y, xRange, yRange, getValue, threshold} = opts;
|
|
46
46
|
|
|
47
|
-
const isLeftBoundary = x < 0;
|
|
48
|
-
const isRightBoundary = x >=
|
|
49
|
-
const isBottomBoundary = y < 0;
|
|
50
|
-
const isTopBoundary = y >=
|
|
47
|
+
const isLeftBoundary = x < xRange[0];
|
|
48
|
+
const isRightBoundary = x >= xRange[1] - 1;
|
|
49
|
+
const isBottomBoundary = y < yRange[0];
|
|
50
|
+
const isTopBoundary = y >= yRange[1] - 1;
|
|
51
51
|
const isBoundary = isLeftBoundary || isRightBoundary || isBottomBoundary || isTopBoundary;
|
|
52
52
|
|
|
53
|
-
|
|
54
|
-
|
|
53
|
+
let weights: number = 0;
|
|
54
|
+
let current: number;
|
|
55
|
+
let right: number;
|
|
56
|
+
let top: number;
|
|
57
|
+
let topRight: number;
|
|
55
58
|
|
|
56
59
|
// TOP
|
|
57
60
|
if (isLeftBoundary || isTopBoundary) {
|
|
58
|
-
|
|
61
|
+
top = 0;
|
|
59
62
|
} else {
|
|
60
|
-
|
|
61
|
-
|
|
63
|
+
const w = getValue(x, y + 1);
|
|
64
|
+
top = getVertexCode(w, threshold);
|
|
65
|
+
weights += w;
|
|
62
66
|
}
|
|
63
67
|
|
|
64
68
|
// TOP-RIGHT
|
|
65
69
|
if (isRightBoundary || isTopBoundary) {
|
|
66
|
-
|
|
70
|
+
topRight = 0;
|
|
67
71
|
} else {
|
|
68
|
-
|
|
69
|
-
|
|
72
|
+
const w = getValue(x + 1, y + 1);
|
|
73
|
+
topRight = getVertexCode(w, threshold);
|
|
74
|
+
weights += w;
|
|
70
75
|
}
|
|
71
76
|
|
|
72
77
|
// RIGHT
|
|
73
78
|
if (isRightBoundary || isBottomBoundary) {
|
|
74
|
-
|
|
79
|
+
right = 0;
|
|
75
80
|
} else {
|
|
76
|
-
|
|
77
|
-
|
|
81
|
+
const w = getValue(x + 1, y);
|
|
82
|
+
right = getVertexCode(w, threshold);
|
|
83
|
+
weights += w;
|
|
78
84
|
}
|
|
79
85
|
|
|
80
86
|
// CURRENT
|
|
81
87
|
if (isLeftBoundary || isBottomBoundary) {
|
|
82
|
-
|
|
88
|
+
current = 0;
|
|
83
89
|
} else {
|
|
84
|
-
|
|
85
|
-
|
|
90
|
+
const w = getValue(x, y);
|
|
91
|
+
current = getVertexCode(w, threshold);
|
|
92
|
+
weights += w;
|
|
86
93
|
}
|
|
87
94
|
|
|
88
|
-
const {top, topRight, right, current} = codes;
|
|
89
95
|
let code = -1;
|
|
90
96
|
if (Number.isFinite(threshold)) {
|
|
91
97
|
code = (top << 3) | (topRight << 2) | (right << 1) | current;
|
|
@@ -99,10 +105,7 @@ export function getCode(opts) {
|
|
|
99
105
|
// only occur when we are not processing a cell on boundary
|
|
100
106
|
// because when on a boundary either, bottom-row, top-row, left-column or right-column will have both 0 codes
|
|
101
107
|
if (!isBoundary) {
|
|
102
|
-
meanCode = getVertexCode(
|
|
103
|
-
(weights.top + weights.topRight + weights.right + weights.current) / 4,
|
|
104
|
-
threshold
|
|
105
|
-
);
|
|
108
|
+
meanCode = getVertexCode(weights / 4, threshold);
|
|
106
109
|
}
|
|
107
110
|
return {code, meanCode};
|
|
108
111
|
}
|
|
@@ -110,13 +113,15 @@ export function getCode(opts) {
|
|
|
110
113
|
|
|
111
114
|
// Returns intersection vertices for given cellindex
|
|
112
115
|
// [x, y] refers current marching cell, reference vertex is always top-right corner
|
|
113
|
-
export function
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
116
|
+
export function getPolygons(opts: {
|
|
117
|
+
x: number;
|
|
118
|
+
y: number;
|
|
119
|
+
z: number;
|
|
120
|
+
code: number;
|
|
121
|
+
meanCode: number;
|
|
122
|
+
}) {
|
|
123
|
+
const {x, y, z, code, meanCode} = opts;
|
|
124
|
+
let offsets: any = ISOBANDS_CODE_OFFSET_MAP[code];
|
|
120
125
|
|
|
121
126
|
// handle saddle cases
|
|
122
127
|
if (!Array.isArray(offsets)) {
|
|
@@ -124,49 +129,55 @@ export function getVertices(opts) {
|
|
|
124
129
|
}
|
|
125
130
|
|
|
126
131
|
// Reference vertex is at top-right move to top-right corner
|
|
127
|
-
|
|
128
|
-
const
|
|
129
|
-
const rX = (x + 1) * cellSize[0];
|
|
130
|
-
const rY = (y + 1) * cellSize[1];
|
|
131
|
-
|
|
132
|
-
const refVertexX = gridOrigin[0] + rX;
|
|
133
|
-
const refVertexY = gridOrigin[1] + rY;
|
|
132
|
+
const rX = x + 1;
|
|
133
|
+
const rY = y + 1;
|
|
134
134
|
|
|
135
135
|
// offsets format
|
|
136
|
-
//
|
|
137
|
-
// ISO_BANDS: [[1A, 1B, 1C, ...], [2A, 2B, 2C, ...]],
|
|
138
|
-
|
|
136
|
+
// [[1A, 1B, 1C, ...], [2A, 2B, 2C, ...]],
|
|
139
137
|
// vertices format
|
|
140
|
-
|
|
141
|
-
//
|
|
142
|
-
|
|
143
|
-
// ISO_BANDS: => confirms to SolidPolygonLayer's simple polygon format
|
|
144
|
-
// [
|
|
145
|
-
// [[x1A, y1A], [x1B, y1B], [x1C, y1C] ... ],
|
|
138
|
+
// [
|
|
139
|
+
// [[x1A, y1A], [x1B, y1B], [x1C, y1C] ... ],
|
|
146
140
|
// ...
|
|
147
|
-
//
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
polygon.push([vX, vY, vZ]);
|
|
157
|
-
});
|
|
158
|
-
polygons.push(polygon);
|
|
141
|
+
// ]
|
|
142
|
+
|
|
143
|
+
const polygons: number[][][] = [];
|
|
144
|
+
offsets.forEach(polygonOffsets => {
|
|
145
|
+
const polygon: number[][] = [];
|
|
146
|
+
polygonOffsets.forEach(xyOffset => {
|
|
147
|
+
const vX = rX + xyOffset[0];
|
|
148
|
+
const vY = rY + xyOffset[1];
|
|
149
|
+
polygon.push([vX, vY, z]);
|
|
159
150
|
});
|
|
160
|
-
|
|
151
|
+
polygons.push(polygon);
|
|
152
|
+
});
|
|
153
|
+
return polygons;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
// Returns intersection vertices for given cellindex
|
|
157
|
+
// [x, y] refers current marching cell, reference vertex is always top-right corner
|
|
158
|
+
export function getLines(opts: {x: number; y: number; z: number; code: number; meanCode: number}) {
|
|
159
|
+
const {x, y, z, code, meanCode} = opts;
|
|
160
|
+
let offsets = ISOLINES_CODE_OFFSET_MAP[code];
|
|
161
|
+
|
|
162
|
+
// handle saddle cases
|
|
163
|
+
if (!Array.isArray(offsets)) {
|
|
164
|
+
offsets = offsets[meanCode];
|
|
161
165
|
}
|
|
162
166
|
|
|
163
|
-
//
|
|
167
|
+
// Reference vertex is at top-right move to top-right corner
|
|
168
|
+
const rX = x + 1;
|
|
169
|
+
const rY = y + 1;
|
|
170
|
+
|
|
171
|
+
// offsets format
|
|
172
|
+
// [[1A, 1B], [2A, 2B]],
|
|
173
|
+
// vertices format
|
|
174
|
+
// [[x1A, y1A], [x1B, y1B], [x2A, x2B], ...],
|
|
164
175
|
const lines: number[][] = [];
|
|
165
176
|
offsets.forEach(xyOffsets => {
|
|
166
177
|
xyOffsets.forEach(offset => {
|
|
167
|
-
const vX =
|
|
168
|
-
const vY =
|
|
169
|
-
lines.push([vX, vY,
|
|
178
|
+
const vX = rX + offset[0];
|
|
179
|
+
const vY = rY + offset[1];
|
|
180
|
+
lines.push([vX, vY, z]);
|
|
170
181
|
});
|
|
171
182
|
});
|
|
172
183
|
return lines;
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
// deck.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// Copyright (c) vis.gl contributors
|
|
4
|
+
|
|
5
|
+
import {Aggregator, CPUAggregator, WebGLAggregator} from '../common/aggregator/index';
|
|
6
|
+
import type {TypedArray} from '@luma.gl/core';
|
|
7
|
+
|
|
8
|
+
type ValueReader = (x: number, y: number) => number;
|
|
9
|
+
|
|
10
|
+
/** Returns an accessor to the aggregated values from bin id */
|
|
11
|
+
export function getAggregatorValueReader(opts: {
|
|
12
|
+
aggregator: Aggregator;
|
|
13
|
+
binIdRange: [number, number][];
|
|
14
|
+
channel: 0 | 1 | 2;
|
|
15
|
+
}): ValueReader | null {
|
|
16
|
+
const {aggregator, binIdRange, channel} = opts;
|
|
17
|
+
|
|
18
|
+
if (aggregator instanceof WebGLAggregator) {
|
|
19
|
+
const buffer = aggregator.getResult(channel)?.buffer;
|
|
20
|
+
if (buffer) {
|
|
21
|
+
const values = new Float32Array(buffer.readSyncWebGL().buffer);
|
|
22
|
+
return getWebGLAggregatorValueReader(values, binIdRange);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
if (aggregator instanceof CPUAggregator) {
|
|
26
|
+
const values = aggregator.getResult(channel)?.value;
|
|
27
|
+
const ids = aggregator.getBins()?.value;
|
|
28
|
+
if (ids && values) {
|
|
29
|
+
return getCPUAggregatorValueReader(values, ids, aggregator.binCount);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
function getWebGLAggregatorValueReader(
|
|
36
|
+
values: Float32Array,
|
|
37
|
+
binIdRange: [number, number][]
|
|
38
|
+
): ValueReader {
|
|
39
|
+
const [[minX, maxX], [minY, maxY]] = binIdRange;
|
|
40
|
+
const width = maxX - minX;
|
|
41
|
+
const height = maxY - minY;
|
|
42
|
+
return (x: number, y: number) => {
|
|
43
|
+
x -= minX;
|
|
44
|
+
y -= minY;
|
|
45
|
+
if (x < 0 || x >= width || y < 0 || y >= height) {
|
|
46
|
+
return NaN;
|
|
47
|
+
}
|
|
48
|
+
return values[y * width + x];
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
function getCPUAggregatorValueReader(
|
|
53
|
+
values: TypedArray,
|
|
54
|
+
ids: TypedArray,
|
|
55
|
+
count: number
|
|
56
|
+
): ValueReader {
|
|
57
|
+
const idMap: Record<string, Record<string, number>> = {};
|
|
58
|
+
for (let i = 0; i < count; i++) {
|
|
59
|
+
const x = ids[i * 2];
|
|
60
|
+
const y = ids[i * 2 + 1];
|
|
61
|
+
idMap[x] = idMap[x] || {};
|
|
62
|
+
idMap[x][y] = values[i];
|
|
63
|
+
}
|
|
64
|
+
return (x: number, y: number) => idMap[x]?.[y] ?? NaN;
|
|
65
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
// deck.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// Copyright (c) vis.gl contributors
|
|
4
|
+
|
|
5
|
+
import type {ShaderModule} from '@luma.gl/shadertools';
|
|
6
|
+
|
|
7
|
+
const uniformBlock = /* glsl */ `\
|
|
8
|
+
uniform binOptionsUniforms {
|
|
9
|
+
vec2 cellOriginCommon;
|
|
10
|
+
vec2 cellSizeCommon;
|
|
11
|
+
} binOptions;
|
|
12
|
+
`;
|
|
13
|
+
|
|
14
|
+
export type BinOptions = {
|
|
15
|
+
cellOriginCommon: [number, number];
|
|
16
|
+
cellSizeCommon: [number, number];
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
export const binOptionsUniforms = {
|
|
20
|
+
name: 'binOptions',
|
|
21
|
+
vs: uniformBlock,
|
|
22
|
+
uniformTypes: {
|
|
23
|
+
cellOriginCommon: 'vec2<f32>',
|
|
24
|
+
cellSizeCommon: 'vec2<f32>'
|
|
25
|
+
}
|
|
26
|
+
} as const satisfies ShaderModule<BinOptions>;
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
// deck.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// Copyright (c) vis.gl contributors
|
|
4
|
+
|
|
5
|
+
export default /* glsl */ `#version 300 es
|
|
6
|
+
|
|
7
|
+
#define SHADER_NAME grid-cell-layer-vertex-shader
|
|
8
|
+
|
|
9
|
+
in vec3 positions;
|
|
10
|
+
in vec3 normals;
|
|
11
|
+
|
|
12
|
+
in vec2 instancePositions;
|
|
13
|
+
in float instanceElevationValues;
|
|
14
|
+
in float instanceColorValues;
|
|
15
|
+
in vec3 instancePickingColors;
|
|
16
|
+
|
|
17
|
+
uniform sampler2D colorRange;
|
|
18
|
+
|
|
19
|
+
// Result
|
|
20
|
+
out vec4 vColor;
|
|
21
|
+
|
|
22
|
+
float interp(float value, vec2 domain, vec2 range) {
|
|
23
|
+
float r = min(max((value - domain.x) / (domain.y - domain.x), 0.), 1.);
|
|
24
|
+
return mix(range.x, range.y, r);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
vec4 interp(float value, vec2 domain, sampler2D range) {
|
|
28
|
+
float r = (value - domain.x) / (domain.y - domain.x);
|
|
29
|
+
return texture(range, vec2(r, 0.5));
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
void main(void) {
|
|
33
|
+
geometry.pickingColor = instancePickingColors;
|
|
34
|
+
|
|
35
|
+
if (isnan(instanceColorValues) ||
|
|
36
|
+
instanceColorValues < grid.colorDomain.z ||
|
|
37
|
+
instanceColorValues > grid.colorDomain.w ||
|
|
38
|
+
instanceElevationValues < grid.elevationDomain.z ||
|
|
39
|
+
instanceElevationValues > grid.elevationDomain.w
|
|
40
|
+
) {
|
|
41
|
+
gl_Position = vec4(0.);
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
vec2 commonPosition = (instancePositions + (positions.xy + 1.0) / 2.0 * column.coverage) * grid.sizeCommon + grid.originCommon - project.commonOrigin.xy;
|
|
46
|
+
geometry.position = vec4(commonPosition, 0.0, 1.0);
|
|
47
|
+
geometry.normal = project_normal(normals);
|
|
48
|
+
|
|
49
|
+
// calculate z, if 3d not enabled set to 0
|
|
50
|
+
float elevation = 0.0;
|
|
51
|
+
if (column.extruded) {
|
|
52
|
+
elevation = interp(instanceElevationValues, grid.elevationDomain.xy, grid.elevationRange);
|
|
53
|
+
elevation = project_size(elevation);
|
|
54
|
+
// cylindar gemoetry height are between -1.0 to 1.0, transform it to between 0, 1
|
|
55
|
+
geometry.position.z = (positions.z + 1.0) / 2.0 * elevation;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
gl_Position = project_common_position_to_clipspace(geometry.position);
|
|
59
|
+
DECKGL_FILTER_GL_POSITION(gl_Position, geometry);
|
|
60
|
+
|
|
61
|
+
vColor = interp(instanceColorValues, grid.colorDomain.xy, colorRange);
|
|
62
|
+
vColor.a *= layer.opacity;
|
|
63
|
+
if (column.extruded) {
|
|
64
|
+
vColor.rgb = lighting_getLightColor(vColor.rgb, project.cameraPosition, geometry.position.xyz, geometry.normal);
|
|
65
|
+
}
|
|
66
|
+
DECKGL_FILTER_COLOR(vColor, geometry);
|
|
67
|
+
}
|
|
68
|
+
`;
|