@deck.gl/extensions 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/brushing/brushing-extension.d.ts +1 -0
- package/dist/brushing/brushing-extension.d.ts.map +1 -1
- package/dist/brushing/brushing-extension.js +15 -19
- package/dist/brushing/shader-module.d.ts +8 -2
- package/dist/brushing/shader-module.d.ts.map +1 -1
- package/dist/brushing/shader-module.js +74 -50
- package/dist/clip/clip-extension.d.ts +5 -2
- package/dist/clip/clip-extension.d.ts.map +1 -1
- package/dist/clip/clip-extension.js +36 -42
- package/dist/collision-filter/collision-filter-effect.d.ts +4 -4
- package/dist/collision-filter/collision-filter-effect.d.ts.map +1 -1
- package/dist/collision-filter/collision-filter-effect.js +27 -13
- package/dist/collision-filter/collision-filter-extension.d.ts +1 -1
- package/dist/collision-filter/collision-filter-extension.d.ts.map +1 -1
- package/dist/collision-filter/collision-filter-extension.js +5 -6
- package/dist/collision-filter/collision-filter-pass.d.ts +7 -3
- package/dist/collision-filter/collision-filter-pass.d.ts.map +1 -1
- package/dist/collision-filter/collision-filter-pass.js +8 -3
- package/dist/collision-filter/shader-module.d.ts +3 -2
- package/dist/collision-filter/shader-module.d.ts.map +1 -1
- package/dist/collision-filter/shader-module.js +74 -52
- package/dist/data-filter/aggregator.d.ts +4 -10
- package/dist/data-filter/aggregator.d.ts.map +1 -1
- package/dist/data-filter/aggregator.js +14 -8
- package/dist/data-filter/data-filter-extension.d.ts.map +1 -1
- package/dist/data-filter/data-filter-extension.js +40 -38
- package/dist/data-filter/shader-module.d.ts +11 -4
- package/dist/data-filter/shader-module.d.ts.map +1 -1
- package/dist/data-filter/shader-module.js +189 -131
- package/dist/dist.dev.js +2699 -2028
- package/dist/fill-style/fill-style-extension.d.ts.map +1 -1
- package/dist/fill-style/fill-style-extension.js +11 -4
- package/dist/fill-style/shader-module.d.ts +64 -6
- package/dist/fill-style/shader-module.d.ts.map +1 -1
- package/dist/fill-style/shader-module.js +73 -51
- package/dist/fp64/fp64-extension.d.ts +1 -0
- package/dist/fp64/fp64-extension.d.ts.map +1 -1
- package/dist/fp64/fp64-extension.js +7 -19
- package/dist/fp64/project64.d.ts +2 -2
- package/dist/fp64/project64.d.ts.map +1 -1
- package/dist/fp64/project64.glsl.d.ts +1 -1
- package/dist/fp64/project64.glsl.d.ts.map +1 -1
- package/dist/fp64/project64.glsl.js +18 -21
- package/dist/fp64/project64.js +24 -24
- package/dist/index.cjs +1017 -523
- package/dist/index.cjs.map +3 -3
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/mask/mask-effect.d.ts +5 -3
- package/dist/mask/mask-effect.d.ts.map +1 -1
- package/dist/mask/mask-effect.js +12 -5
- package/dist/mask/mask-extension.d.ts +1 -1
- package/dist/mask/mask-extension.d.ts.map +1 -1
- package/dist/mask/mask-extension.js +13 -8
- package/dist/mask/mask-pass.d.ts +38 -38
- package/dist/mask/mask-pass.d.ts.map +1 -1
- package/dist/mask/mask-pass.js +3 -0
- package/dist/mask/shader-module.d.ts +60 -3
- package/dist/mask/shader-module.d.ts.map +1 -1
- package/dist/mask/shader-module.js +73 -46
- package/dist/path-style/path-style-extension.d.ts.map +1 -1
- package/dist/path-style/path-style-extension.js +20 -24
- package/dist/path-style/shaders.glsl.d.ts.map +1 -1
- package/dist/path-style/shaders.glsl.js +11 -7
- package/dist/terrain/height-map-builder.d.ts.map +1 -1
- package/dist/terrain/height-map-builder.js +3 -0
- package/dist/terrain/shader-module.d.ts +60 -6
- package/dist/terrain/shader-module.d.ts.map +1 -1
- package/dist/terrain/shader-module.js +69 -61
- package/dist/terrain/terrain-cover.d.ts.map +1 -1
- package/dist/terrain/terrain-cover.js +3 -0
- package/dist/terrain/terrain-effect.d.ts +4 -2
- package/dist/terrain/terrain-effect.d.ts.map +1 -1
- package/dist/terrain/terrain-effect.js +31 -18
- package/dist/terrain/terrain-extension.d.ts.map +1 -1
- package/dist/terrain/terrain-extension.js +3 -0
- package/dist/terrain/terrain-pass.d.ts +43 -38
- package/dist/terrain/terrain-pass.d.ts.map +1 -1
- package/dist/terrain/terrain-pass.js +10 -0
- package/dist/terrain/terrain-picking-pass.d.ts +5 -0
- package/dist/terrain/terrain-picking-pass.d.ts.map +1 -1
- package/dist/terrain/terrain-picking-pass.js +10 -0
- package/dist/terrain/utils.d.ts.map +1 -1
- package/dist/terrain/utils.js +3 -0
- package/dist/utils/debug.d.ts +2 -2
- package/dist/utils/debug.d.ts.map +1 -1
- package/dist/utils/debug.js +3 -1
- package/dist/utils/projection-utils.d.ts.map +1 -1
- package/dist/utils/projection-utils.js +3 -0
- package/dist.min.js +1102 -817
- package/package.json +8 -8
- package/src/brushing/brushing-extension.ts +17 -20
- package/src/brushing/shader-module.ts +58 -47
- package/src/clip/clip-extension.ts +38 -40
- package/src/collision-filter/collision-filter-effect.ts +31 -20
- package/src/collision-filter/collision-filter-extension.ts +6 -7
- package/src/collision-filter/collision-filter-pass.ts +9 -3
- package/src/collision-filter/shader-module.ts +40 -22
- package/src/data-filter/aggregator.ts +23 -11
- package/src/data-filter/data-filter-extension.ts +68 -48
- package/src/data-filter/shader-module.ts +144 -84
- package/src/fill-style/fill-style-extension.ts +13 -5
- package/src/fill-style/shader-module.ts +84 -52
- package/src/fp64/fp64-extension.ts +8 -19
- package/src/fp64/project64.glsl.ts +18 -21
- package/src/fp64/project64.ts +27 -28
- package/src/index.ts +5 -0
- package/src/mask/mask-effect.ts +17 -7
- package/src/mask/mask-extension.ts +16 -9
- package/src/mask/mask-pass.ts +4 -0
- package/src/mask/shader-module.ts +63 -27
- package/src/path-style/path-style-extension.ts +27 -28
- package/src/path-style/shaders.glsl.ts +13 -7
- package/src/terrain/height-map-builder.ts +4 -0
- package/src/terrain/shader-module.ts +62 -44
- package/src/terrain/terrain-cover.ts +4 -0
- package/src/terrain/terrain-effect.ts +36 -19
- package/src/terrain/terrain-extension.ts +4 -0
- package/src/terrain/terrain-pass.ts +12 -0
- package/src/terrain/terrain-picking-pass.ts +12 -0
- package/src/terrain/utils.ts +4 -0
- package/src/utils/debug.ts +4 -0
- package/src/utils/projection-utils.ts +4 -0
- package/dist/utils/syntax-tags.d.ts +0 -6
- package/dist/utils/syntax-tags.d.ts.map +0 -1
- package/dist/utils/syntax-tags.js +0 -5
- package/src/utils/syntax-tags.ts +0 -5
package/dist/index.d.ts
CHANGED
|
@@ -16,4 +16,5 @@ export type { ClipExtensionProps } from "./clip/clip-extension.js";
|
|
|
16
16
|
export type { CollisionFilterExtensionProps } from "./collision-filter/collision-filter-extension.js";
|
|
17
17
|
export type { MaskExtensionProps } from "./mask/mask-extension.js";
|
|
18
18
|
export type { TerrainExtensionProps } from "./terrain/terrain-extension.js";
|
|
19
|
+
export type { TerrainModuleProps } from "./terrain/shader-module.js";
|
|
19
20
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,OAAO,IAAI,iBAAiB,EAAC,yCAAsC;AAC3E,OAAO,EAAC,OAAO,IAAI,mBAAmB,EAAC,+CAA4C;AACnF,OAAO,EAAC,OAAO,IAAI,aAAa,EAAC,iCAA8B;AAC/D,OAAO,EAAC,OAAO,IAAI,kBAAkB,EAAC,6CAA0C;AAChF,OAAO,EAAC,OAAO,IAAI,kBAAkB,EAAC,6CAA0C;AAChF,OAAO,EAAC,OAAO,IAAI,aAAa,EAAC,iCAA8B;AAC/D,OAAO,EAAC,OAAO,IAAI,wBAAwB,EAAC,yDAAsD;AAClG,OAAO,EAAC,OAAO,IAAI,aAAa,EAAC,iCAA8B;AAC/D,OAAO,EAAC,OAAO,IAAI,iBAAiB,EAAC,uCAAoC;AAGzE,OAAO,EAAC,OAAO,IAAI,SAAS,EAAC,4BAAyB;AAGtD,YAAY,EAAC,sBAAsB,EAAC,yCAAsC;AAC1E,YAAY,EACV,wBAAwB,EACxB,0BAA0B,EAC3B,+CAA4C;AAC7C,YAAY,EACV,uBAAuB,EACvB,yBAAyB,EAC1B,6CAA0C;AAC3C,YAAY,EACV,uBAAuB,EACvB,yBAAyB,EAC1B,6CAA0C;AAC3C,YAAY,EAAC,kBAAkB,EAAC,iCAA8B;AAC9D,YAAY,EAAC,6BAA6B,EAAC,yDAAsD;AACjG,YAAY,EAAC,kBAAkB,EAAC,iCAA8B;AAC9D,YAAY,EAAC,qBAAqB,EAAC,uCAAoC;AACvE,YAAY,EAAC,kBAAkB,EAAC,mCAAgC"}
|
package/dist/index.js
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
// deck.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// Copyright (c) vis.gl contributors
|
|
1
4
|
export { default as BrushingExtension } from "./brushing/brushing-extension.js";
|
|
2
5
|
export { default as DataFilterExtension } from "./data-filter/data-filter-extension.js";
|
|
3
6
|
export { default as Fp64Extension } from "./fp64/fp64-extension.js";
|
|
@@ -33,9 +33,11 @@ export default class MaskEffect implements Effect {
|
|
|
33
33
|
* Returns a map from mask layer id to channel info
|
|
34
34
|
*/
|
|
35
35
|
private _sortMaskChannels;
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
36
|
+
getShaderModuleProps(): {
|
|
37
|
+
mask: {
|
|
38
|
+
maskMap: Texture;
|
|
39
|
+
maskChannels: Record<string, Mask> | null;
|
|
40
|
+
};
|
|
39
41
|
};
|
|
40
42
|
cleanup(): void;
|
|
41
43
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mask-effect.d.ts","sourceRoot":"","sources":["../../src/mask/mask-effect.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mask-effect.d.ts","sourceRoot":"","sources":["../../src/mask/mask-effect.ts"],"names":[],"mappings":"AAIA,OAAO,EAGL,MAAM,EACN,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAEjB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,eAAe,CAAC;AAG3C,OAAO,EAAiD,MAAM,EAAC,qCAAkC;AAGjG,KAAK,IAAI,GAAG;IACV,wBAAwB;IACxB,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3C,gBAAgB,EAAE,gBAAgB,CAAC;CACpC,CAAC;AAaF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC;AAGF,MAAM,CAAC,OAAO,OAAO,UAAW,YAAW,MAAM;IAC/C,EAAE,SAAiB;IACnB,KAAK,OAAQ;IACb,YAAY,UAAQ;IACpB,KAAK,SAAK;IAEV,OAAO,CAAC,YAAY,CAAC,CAAU;IAC/B,OAAO,CAAC,QAAQ,CAA0B;IAC1C,OAAO,CAAC,KAAK,CAAqC;IAClD,OAAO,CAAC,QAAQ,CAAC,CAAW;IAC5B,OAAO,CAAC,OAAO,CAAC,CAAU;IAC1B,OAAO,CAAC,YAAY,CAAC,CAAW;IAEhC,KAAK,CAAC,EAAC,MAAM,EAAC,EAAE,aAAa;IAU7B,SAAS,CAAC,EACR,MAAM,EACN,WAAW,EACX,SAAS,EACT,gBAAgB,EAChB,KAAK,EACL,SAAS,EACV,EAAE,gBAAgB,GAAG,kBAAkB;IA2CxC,OAAO,CAAC,cAAc;IAkGtB;;;;;;OAMG;IACH,OAAO,CAAC,iBAAiB;IA4CzB,oBAAoB,IAAI;QACtB,IAAI,EAAE;YACJ,OAAO,EAAE,OAAO,CAAC;YACjB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC;SAC3C,CAAC;KACH;IASD,OAAO,IAAI,IAAI;CAgBhB"}
|
package/dist/mask/mask-effect.js
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
// deck.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// Copyright (c) vis.gl contributors
|
|
1
4
|
import { log } from '@deck.gl/core';
|
|
2
5
|
import { equals } from '@math.gl/core';
|
|
3
6
|
import MaskPass from "./mask-pass.js";
|
|
@@ -106,8 +109,10 @@ export default class MaskEffect {
|
|
|
106
109
|
viewports: maskViewport ? [maskViewport] : [],
|
|
107
110
|
onViewportActive,
|
|
108
111
|
views,
|
|
109
|
-
|
|
110
|
-
|
|
112
|
+
shaderModuleProps: {
|
|
113
|
+
project: {
|
|
114
|
+
devicePixelRatio: 1
|
|
115
|
+
}
|
|
111
116
|
}
|
|
112
117
|
});
|
|
113
118
|
didRender = true;
|
|
@@ -169,10 +174,12 @@ export default class MaskEffect {
|
|
|
169
174
|
}
|
|
170
175
|
return channelMap;
|
|
171
176
|
}
|
|
172
|
-
|
|
177
|
+
getShaderModuleProps() {
|
|
173
178
|
return {
|
|
174
|
-
|
|
175
|
-
|
|
179
|
+
mask: {
|
|
180
|
+
maskMap: this.masks ? this.maskMap : this.dummyMaskMap,
|
|
181
|
+
maskChannels: this.masks
|
|
182
|
+
}
|
|
176
183
|
};
|
|
177
184
|
}
|
|
178
185
|
cleanup() {
|
|
@@ -25,6 +25,6 @@ export default class MaskExtension extends LayerExtension {
|
|
|
25
25
|
static extensionName: string;
|
|
26
26
|
initializeState(this: Layer<MaskExtensionProps>): void;
|
|
27
27
|
getShaders(this: Layer<MaskExtensionProps>): any;
|
|
28
|
-
draw(this: Layer<Required<MaskExtensionProps>>, {
|
|
28
|
+
draw(this: Layer<Required<MaskExtensionProps>>, { context, shaderModuleProps }: any): void;
|
|
29
29
|
}
|
|
30
30
|
//# sourceMappingURL=mask-extension.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mask-extension.d.ts","sourceRoot":"","sources":["../../src/mask/mask-extension.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mask-extension.d.ts","sourceRoot":"","sources":["../../src/mask/mask-extension.ts"],"names":[],"mappings":"AAIA,OAAO,EAAoB,KAAK,EAAE,cAAc,EAAM,MAAM,eAAe,CAAC;AAU5E,MAAM,MAAM,kBAAkB,GAAG;IAC/B;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,wDAAwD;AACxD,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,cAAc;IACvD,MAAM,CAAC,YAAY;;;;MAAgB;IACnC,MAAM,CAAC,aAAa,SAAmB;IAEvC,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,kBAAkB,CAAC;IAI/C,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,kBAAkB,CAAC,GAAG,GAAG;IAehD,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,EAAE,EAAC,OAAO,EAAE,iBAAiB,EAAC,EAAE,GAAG;CA+BlF"}
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
// deck.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// Copyright (c) vis.gl contributors
|
|
1
4
|
import { COORDINATE_SYSTEM, LayerExtension, log } from '@deck.gl/core';
|
|
2
5
|
import mask from "./shader-module.js";
|
|
3
6
|
import MaskEffect from "./mask-effect.js";
|
|
@@ -24,17 +27,18 @@ class MaskExtension extends LayerExtension {
|
|
|
24
27
|
};
|
|
25
28
|
}
|
|
26
29
|
/* eslint-disable camelcase */
|
|
27
|
-
draw({
|
|
28
|
-
|
|
30
|
+
draw({ context, shaderModuleProps }) {
|
|
31
|
+
const maskProps = {};
|
|
32
|
+
maskProps.maskByInstance = Boolean(this.state.maskByInstance);
|
|
29
33
|
const { maskId, maskInverted } = this.props;
|
|
30
|
-
const { maskChannels } =
|
|
34
|
+
const { maskChannels } = shaderModuleProps.mask || {};
|
|
31
35
|
const { viewport } = context;
|
|
32
36
|
if (maskChannels && maskChannels[maskId]) {
|
|
33
37
|
const { index, bounds, coordinateOrigin: fromCoordinateOrigin } = maskChannels[maskId];
|
|
34
38
|
let { coordinateSystem: fromCoordinateSystem } = maskChannels[maskId];
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
39
|
+
maskProps.enabled = true;
|
|
40
|
+
maskProps.channel = index;
|
|
41
|
+
maskProps.inverted = maskInverted;
|
|
38
42
|
if (fromCoordinateSystem === COORDINATE_SYSTEM.DEFAULT) {
|
|
39
43
|
fromCoordinateSystem = viewport.isGeospatial
|
|
40
44
|
? COORDINATE_SYSTEM.LNGLAT
|
|
@@ -43,14 +47,15 @@ class MaskExtension extends LayerExtension {
|
|
|
43
47
|
const opts = { modelMatrix: null, fromCoordinateOrigin, fromCoordinateSystem };
|
|
44
48
|
const bl = this.projectPosition([bounds[0], bounds[1], 0], opts);
|
|
45
49
|
const tr = this.projectPosition([bounds[2], bounds[3], 0], opts);
|
|
46
|
-
|
|
50
|
+
maskProps.bounds = [bl[0], bl[1], tr[0], tr[1]];
|
|
47
51
|
}
|
|
48
52
|
else {
|
|
49
53
|
if (maskId) {
|
|
50
54
|
log.warn(`Could not find a mask layer with id: ${maskId}`)();
|
|
51
55
|
}
|
|
52
|
-
|
|
56
|
+
maskProps.enabled = false;
|
|
53
57
|
}
|
|
58
|
+
this.setShaderModuleProps({ mask: maskProps });
|
|
54
59
|
}
|
|
55
60
|
}
|
|
56
61
|
MaskExtension.defaultProps = defaultProps;
|
package/dist/mask/mask-pass.d.ts
CHANGED
|
@@ -13,45 +13,45 @@ export default class MaskPass extends LayersPass {
|
|
|
13
13
|
});
|
|
14
14
|
render(options: MaskPassRenderOptions): void;
|
|
15
15
|
protected getLayerParameters(layer: Layer<{}>, layerIndex: number, viewport: Viewport): {
|
|
16
|
-
cullMode?: import("@luma.gl/core").CullMode
|
|
17
|
-
frontFace?: import("@luma.gl/core").FrontFace
|
|
18
|
-
depthBias?: number
|
|
19
|
-
depthBiasSlopeScale?: number
|
|
20
|
-
depthBiasClamp?: number
|
|
21
|
-
unclippedDepth?: boolean
|
|
22
|
-
provokingVertex?: "first" | "last"
|
|
23
|
-
polygonMode?: "fill" | "line"
|
|
24
|
-
polygonOffsetLine?: boolean
|
|
25
|
-
clipDistance0?: boolean
|
|
26
|
-
clipDistance1?: boolean
|
|
27
|
-
clipDistance2?: boolean
|
|
28
|
-
clipDistance3?: boolean
|
|
29
|
-
clipDistance4?: boolean
|
|
30
|
-
clipDistance5?: boolean
|
|
31
|
-
clipDistance6?: boolean
|
|
32
|
-
clipDistance7?: boolean
|
|
33
|
-
topology?: import("@luma.gl/core").PrimitiveTopology
|
|
34
|
-
stripIndexFormat?: import("@luma.gl/core").IndexFormat
|
|
35
|
-
depthWriteEnabled?: boolean
|
|
36
|
-
depthCompare?: import("@luma.gl/core").CompareFunction
|
|
37
|
-
depthFormat?: import("@luma.gl/core").DepthStencilTextureFormat
|
|
38
|
-
stencilReadMask?: number
|
|
39
|
-
stencilWriteMask?: number
|
|
40
|
-
stencilCompare?: import("@luma.gl/core").CompareFunction
|
|
41
|
-
stencilPassOperation?: import("@luma.gl/core").StencilOperation
|
|
42
|
-
stencilFailOperation?: import("@luma.gl/core").StencilOperation
|
|
43
|
-
stencilDepthFailOperation?: import("@luma.gl/core").StencilOperation
|
|
44
|
-
blendColorOperation?: import("@luma.gl/core").BlendOperation | undefined;
|
|
45
|
-
blendColorSrcFactor?: import("@luma.gl/core").BlendFactor | undefined;
|
|
46
|
-
blendColorDstFactor?: import("@luma.gl/core").BlendFactor | undefined;
|
|
47
|
-
blendAlphaOperation?: import("@luma.gl/core").BlendOperation | undefined;
|
|
48
|
-
blendAlphaSrcFactor?: import("@luma.gl/core").BlendFactor | undefined;
|
|
49
|
-
blendAlphaDstFactor?: import("@luma.gl/core").BlendFactor | undefined;
|
|
50
|
-
colorMask?: number | undefined;
|
|
51
|
-
sampleCount?: number | undefined;
|
|
52
|
-
sampleMask?: number | undefined;
|
|
53
|
-
sampleAlphaToCoverageEnabled?: boolean | undefined;
|
|
16
|
+
cullMode?: import("@luma.gl/core").CullMode;
|
|
17
|
+
frontFace?: import("@luma.gl/core").FrontFace;
|
|
18
|
+
depthBias?: number;
|
|
19
|
+
depthBiasSlopeScale?: number;
|
|
20
|
+
depthBiasClamp?: number;
|
|
21
|
+
unclippedDepth?: boolean;
|
|
22
|
+
provokingVertex?: "first" | "last";
|
|
23
|
+
polygonMode?: "fill" | "line";
|
|
24
|
+
polygonOffsetLine?: boolean;
|
|
25
|
+
clipDistance0?: boolean;
|
|
26
|
+
clipDistance1?: boolean;
|
|
27
|
+
clipDistance2?: boolean;
|
|
28
|
+
clipDistance3?: boolean;
|
|
29
|
+
clipDistance4?: boolean;
|
|
30
|
+
clipDistance5?: boolean;
|
|
31
|
+
clipDistance6?: boolean;
|
|
32
|
+
clipDistance7?: boolean;
|
|
33
|
+
topology?: import("@luma.gl/core").PrimitiveTopology;
|
|
34
|
+
stripIndexFormat?: import("@luma.gl/core").IndexFormat;
|
|
35
|
+
depthWriteEnabled?: boolean;
|
|
36
|
+
depthCompare?: import("@luma.gl/core").CompareFunction;
|
|
37
|
+
depthFormat?: import("@luma.gl/core").DepthStencilTextureFormat;
|
|
38
|
+
stencilReadMask?: number;
|
|
39
|
+
stencilWriteMask?: number;
|
|
40
|
+
stencilCompare?: import("@luma.gl/core").CompareFunction;
|
|
41
|
+
stencilPassOperation?: import("@luma.gl/core").StencilOperation;
|
|
42
|
+
stencilFailOperation?: import("@luma.gl/core").StencilOperation;
|
|
43
|
+
stencilDepthFailOperation?: import("@luma.gl/core").StencilOperation;
|
|
54
44
|
blend: boolean;
|
|
45
|
+
blendColorOperation?: import("@luma.gl/core").BlendOperation;
|
|
46
|
+
blendColorSrcFactor?: import("@luma.gl/core").BlendFactor;
|
|
47
|
+
blendColorDstFactor?: import("@luma.gl/core").BlendFactor;
|
|
48
|
+
blendAlphaOperation?: import("@luma.gl/core").BlendOperation;
|
|
49
|
+
blendAlphaSrcFactor?: import("@luma.gl/core").BlendFactor;
|
|
50
|
+
blendAlphaDstFactor?: import("@luma.gl/core").BlendFactor;
|
|
51
|
+
colorMask?: number;
|
|
52
|
+
sampleCount?: number;
|
|
53
|
+
sampleMask?: number;
|
|
54
|
+
sampleAlphaToCoverageEnabled?: boolean;
|
|
55
55
|
depthTest: boolean;
|
|
56
56
|
};
|
|
57
57
|
shouldDrawLayer(layer: any): any;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mask-pass.d.ts","sourceRoot":"","sources":["../../src/mask/mask-pass.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mask-pass.d.ts","sourceRoot":"","sources":["../../src/mask/mask-pass.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,MAAM,EAAE,WAAW,EAA4B,OAAO,EAAC,MAAM,eAAe,CAAC;AAC1F,OAAO,EAAC,KAAK,EAAE,WAAW,IAAI,UAAU,EAAE,uBAAuB,EAAE,QAAQ,EAAC,MAAM,eAAe,CAAC;AAElG,KAAK,qBAAqB,GAAG,uBAAuB,GAAG;IACrD,kEAAkE;IAClE,OAAO,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;CACxB,CAAC;AAWF,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,UAAU;IAC9C,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,WAAW,CAAC;gBAEL,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAC;IAyBjE,MAAM,CAAC,OAAO,EAAE,qBAAqB;IAMrC,SAAS,CAAC,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IASrF,eAAe,CAAC,KAAK,KAAA;IAIrB,MAAM;CAIP"}
|
package/dist/mask/mask-pass.js
CHANGED
|
@@ -1,8 +1,65 @@
|
|
|
1
|
-
import type { ShaderModule } from '@luma.gl/shadertools';
|
|
2
1
|
import type { Texture } from '@luma.gl/core';
|
|
3
|
-
type
|
|
2
|
+
type MaskBindingProps = {
|
|
4
3
|
maskMap?: Texture;
|
|
5
4
|
};
|
|
6
|
-
|
|
5
|
+
type MaskUniformProps = {
|
|
6
|
+
bounds: [number, number, number, number];
|
|
7
|
+
channel: number;
|
|
8
|
+
enabled: boolean;
|
|
9
|
+
inverted: boolean;
|
|
10
|
+
maskByInstance: boolean;
|
|
11
|
+
};
|
|
12
|
+
export type MaskProps = MaskBindingProps & MaskUniformProps;
|
|
13
|
+
declare const _default: {
|
|
14
|
+
readonly name: "mask";
|
|
15
|
+
readonly dependencies: [{
|
|
16
|
+
readonly name: "project";
|
|
17
|
+
readonly dependencies: [{
|
|
18
|
+
name: string;
|
|
19
|
+
vs: string;
|
|
20
|
+
}, {
|
|
21
|
+
readonly name: "geometry";
|
|
22
|
+
readonly vs: "\n#define SMOOTH_EDGE_RADIUS 0.5\n\nstruct VertexGeometry {\n vec4 position;\n vec3 worldPosition;\n vec3 worldPositionAlt;\n vec3 normal;\n vec2 uv;\n vec3 pickingColor;\n} geometry = VertexGeometry(\n vec4(0.0, 0.0, 1.0, 0.0),\n vec3(0.0),\n vec3(0.0),\n vec3(0.0),\n vec2(0.0),\n vec3(0.0)\n);\n";
|
|
23
|
+
readonly fs: "\n#define SMOOTH_EDGE_RADIUS 0.5\n\nstruct FragmentGeometry {\n vec2 uv;\n} geometry;\n\nfloat smoothedge(float edge, float x) {\n return smoothstep(edge - SMOOTH_EDGE_RADIUS, edge + SMOOTH_EDGE_RADIUS, x);\n}\n";
|
|
24
|
+
}];
|
|
25
|
+
readonly vs: string;
|
|
26
|
+
readonly getUniforms: (opts?: import("@deck.gl/core").ProjectProps | {}) => {};
|
|
27
|
+
readonly uniformTypes: {
|
|
28
|
+
readonly wrapLongitude: "f32";
|
|
29
|
+
readonly coordinateSystem: "i32";
|
|
30
|
+
readonly commonUnitsPerMeter: "vec3<f32>";
|
|
31
|
+
readonly projectionMode: "i32";
|
|
32
|
+
readonly scale: "f32";
|
|
33
|
+
readonly commonUnitsPerWorldUnit: "vec3<f32>";
|
|
34
|
+
readonly commonUnitsPerWorldUnit2: "vec3<f32>";
|
|
35
|
+
readonly center: "vec4<f32>";
|
|
36
|
+
readonly modelMatrix: "mat4x4<f32>";
|
|
37
|
+
readonly viewProjectionMatrix: "mat4x4<f32>";
|
|
38
|
+
readonly viewportSize: "vec2<f32>";
|
|
39
|
+
readonly devicePixelRatio: "f32";
|
|
40
|
+
readonly focalDistance: "f32";
|
|
41
|
+
readonly cameraPosition: "vec3<f32>";
|
|
42
|
+
readonly coordinateOrigin: "vec3<f32>";
|
|
43
|
+
readonly commonOrigin: "vec3<f32>";
|
|
44
|
+
readonly pseudoMeters: "f32";
|
|
45
|
+
};
|
|
46
|
+
}];
|
|
47
|
+
readonly vs: "\nuniform maskUniforms {\n vec4 bounds;\n highp int channel;\n bool enabled;\n bool inverted;\n bool maskByInstance;\n} mask;\n\n\nvec2 mask_getCoords(vec4 position) {\n return (position.xy - mask.bounds.xy) / (mask.bounds.zw - mask.bounds.xy);\n}\n\n";
|
|
48
|
+
readonly fs: "\nuniform maskUniforms {\n vec4 bounds;\n highp int channel;\n bool enabled;\n bool inverted;\n bool maskByInstance;\n} mask;\n\n\nuniform sampler2D mask_texture;\n\nbool mask_isInBounds(vec2 texCoords) {\n if (!mask.enabled) {\n return true;\n }\n vec4 maskColor = texture(mask_texture, texCoords);\n float maskValue = 1.0;\n if (mask.channel == 0) {\n maskValue = maskColor.r;\n } else if (mask.channel == 1) {\n maskValue = maskColor.g;\n } else if (mask.channel == 2) {\n maskValue = maskColor.b;\n } else if (mask.channel == 3) {\n maskValue = maskColor.a;\n }\n\n if (mask.inverted) {\n return maskValue >= 0.5;\n } else {\n return maskValue < 0.5;\n }\n}\n\n";
|
|
49
|
+
readonly inject: {
|
|
50
|
+
'vs:#decl': string;
|
|
51
|
+
'vs:#main-end': string;
|
|
52
|
+
'fs:#decl': string;
|
|
53
|
+
'fs:#main-start': string;
|
|
54
|
+
};
|
|
55
|
+
readonly getUniforms: (opts?: MaskProps | {}) => Record<string, any>;
|
|
56
|
+
readonly uniformTypes: {
|
|
57
|
+
readonly bounds: "vec4<f32>";
|
|
58
|
+
readonly channel: "i32";
|
|
59
|
+
readonly enabled: "i32";
|
|
60
|
+
readonly inverted: "i32";
|
|
61
|
+
readonly maskByInstance: "i32";
|
|
62
|
+
};
|
|
63
|
+
};
|
|
7
64
|
export default _default;
|
|
8
65
|
//# sourceMappingURL=shader-module.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shader-module.d.ts","sourceRoot":"","sources":["../../src/mask/shader-module.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"shader-module.d.ts","sourceRoot":"","sources":["../../src/mask/shader-module.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,eAAe,CAAC;AAoF3C,KAAK,gBAAgB,GAAG;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,KAAK,gBAAgB,GAAG;IACtB,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,cAAc,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,gBAAgB,GAAG,gBAAgB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kCAG5B,SAAS,GAAG,EAAE,KAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;;;;;;;;;AASpE,wBAc6C"}
|
|
@@ -1,61 +1,81 @@
|
|
|
1
|
+
// deck.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// Copyright (c) vis.gl contributors
|
|
1
4
|
import { project } from '@deck.gl/core';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
5
|
+
const uniformBlock = /* glsl */ `\
|
|
6
|
+
uniform maskUniforms {
|
|
7
|
+
vec4 bounds;
|
|
8
|
+
highp int channel;
|
|
9
|
+
bool enabled;
|
|
10
|
+
bool inverted;
|
|
11
|
+
bool maskByInstance;
|
|
12
|
+
} mask;
|
|
13
|
+
`;
|
|
14
|
+
const vertex = /* glsl */ `
|
|
6
15
|
vec2 mask_getCoords(vec4 position) {
|
|
7
|
-
return (position.xy -
|
|
16
|
+
return (position.xy - mask.bounds.xy) / (mask.bounds.zw - mask.bounds.xy);
|
|
8
17
|
}
|
|
9
18
|
`;
|
|
10
|
-
const
|
|
19
|
+
const vs = `
|
|
20
|
+
${uniformBlock}
|
|
21
|
+
${vertex}
|
|
22
|
+
`;
|
|
23
|
+
const fragment = /* glsl */ `
|
|
11
24
|
uniform sampler2D mask_texture;
|
|
12
|
-
|
|
13
|
-
uniform bool mask_enabled;
|
|
14
|
-
uniform bool mask_inverted;
|
|
25
|
+
|
|
15
26
|
bool mask_isInBounds(vec2 texCoords) {
|
|
16
|
-
if (!
|
|
17
|
-
return true;
|
|
18
|
-
}
|
|
19
|
-
vec4 maskColor = texture(mask_texture, texCoords);
|
|
20
|
-
float maskValue = 1.0;
|
|
21
|
-
if (
|
|
22
|
-
maskValue = maskColor.r;
|
|
23
|
-
} else if (
|
|
24
|
-
maskValue = maskColor.g;
|
|
25
|
-
} else if (
|
|
26
|
-
maskValue = maskColor.b;
|
|
27
|
-
} else if (
|
|
28
|
-
maskValue = maskColor.a;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
27
|
+
if (!mask.enabled) {
|
|
28
|
+
return true;
|
|
29
|
+
}
|
|
30
|
+
vec4 maskColor = texture(mask_texture, texCoords);
|
|
31
|
+
float maskValue = 1.0;
|
|
32
|
+
if (mask.channel == 0) {
|
|
33
|
+
maskValue = maskColor.r;
|
|
34
|
+
} else if (mask.channel == 1) {
|
|
35
|
+
maskValue = maskColor.g;
|
|
36
|
+
} else if (mask.channel == 2) {
|
|
37
|
+
maskValue = maskColor.b;
|
|
38
|
+
} else if (mask.channel == 3) {
|
|
39
|
+
maskValue = maskColor.a;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
if (mask.inverted) {
|
|
43
|
+
return maskValue >= 0.5;
|
|
44
|
+
} else {
|
|
45
|
+
return maskValue < 0.5;
|
|
46
|
+
}
|
|
35
47
|
}
|
|
36
48
|
`;
|
|
49
|
+
const fs = `
|
|
50
|
+
${uniformBlock}
|
|
51
|
+
${fragment}
|
|
52
|
+
`;
|
|
37
53
|
const inject = {
|
|
38
|
-
'vs:#decl': `
|
|
54
|
+
'vs:#decl': /* glsl */ `
|
|
39
55
|
out vec2 mask_texCoords;
|
|
40
56
|
`,
|
|
41
|
-
'vs:#main-end': `
|
|
42
|
-
vec4 mask_common_position;
|
|
43
|
-
if (
|
|
44
|
-
mask_common_position = project_position(vec4(geometry.worldPosition, 1.0));
|
|
45
|
-
} else {
|
|
46
|
-
mask_common_position = geometry.position;
|
|
47
|
-
}
|
|
48
|
-
mask_texCoords = mask_getCoords(mask_common_position);
|
|
57
|
+
'vs:#main-end': /* glsl */ `
|
|
58
|
+
vec4 mask_common_position;
|
|
59
|
+
if (mask.maskByInstance) {
|
|
60
|
+
mask_common_position = project_position(vec4(geometry.worldPosition, 1.0));
|
|
61
|
+
} else {
|
|
62
|
+
mask_common_position = geometry.position;
|
|
63
|
+
}
|
|
64
|
+
mask_texCoords = mask_getCoords(mask_common_position);
|
|
49
65
|
`,
|
|
50
|
-
'fs:#decl': `
|
|
66
|
+
'fs:#decl': /* glsl */ `
|
|
51
67
|
in vec2 mask_texCoords;
|
|
52
68
|
`,
|
|
53
|
-
'fs:#main-start': `
|
|
54
|
-
if (
|
|
55
|
-
bool mask = mask_isInBounds(mask_texCoords);
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
69
|
+
'fs:#main-start': /* glsl */ `
|
|
70
|
+
if (mask.enabled) {
|
|
71
|
+
bool mask = mask_isInBounds(mask_texCoords);
|
|
72
|
+
|
|
73
|
+
// Debug: show extent of render target
|
|
74
|
+
// fragColor = vec4(mask_texCoords, 0.0, 1.0);
|
|
75
|
+
// fragColor = texture(mask_texture, mask_texCoords);
|
|
76
|
+
|
|
77
|
+
if (!mask) discard;
|
|
78
|
+
}
|
|
59
79
|
`
|
|
60
80
|
};
|
|
61
81
|
/* eslint-disable camelcase */
|
|
@@ -65,7 +85,7 @@ const getMaskUniforms = (opts) => {
|
|
|
65
85
|
mask_texture: opts.maskMap
|
|
66
86
|
};
|
|
67
87
|
}
|
|
68
|
-
return {};
|
|
88
|
+
return opts || {};
|
|
69
89
|
};
|
|
70
90
|
export default {
|
|
71
91
|
name: 'mask',
|
|
@@ -73,5 +93,12 @@ export default {
|
|
|
73
93
|
vs,
|
|
74
94
|
fs,
|
|
75
95
|
inject,
|
|
76
|
-
getUniforms: getMaskUniforms
|
|
96
|
+
getUniforms: getMaskUniforms,
|
|
97
|
+
uniformTypes: {
|
|
98
|
+
bounds: 'vec4<f32>',
|
|
99
|
+
channel: 'i32',
|
|
100
|
+
enabled: 'i32',
|
|
101
|
+
inverted: 'i32',
|
|
102
|
+
maskByInstance: 'i32'
|
|
103
|
+
}
|
|
77
104
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"path-style-extension.d.ts","sourceRoot":"","sources":["../../src/path-style/path-style-extension.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"path-style-extension.d.ts","sourceRoot":"","sources":["../../src/path-style/path-style-extension.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,cAAc,EAAgC,MAAM,eAAe,CAAC;AAI5E,OAAO,KAAK,EAAC,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,gBAAgB,EAAC,MAAM,eAAe,CAAC;AAenF,MAAM,MAAM,uBAAuB,CAAC,KAAK,GAAG,GAAG,IAAI;IACjD;;;OAGG;IACH,YAAY,CAAC,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACjD;;;;OAIG;IACH,SAAS,CAAC,EAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACpC;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC;;;OAGG;IACH,IAAI,EAAE,OAAO,CAAC;IACd;;;OAGG;IACH,MAAM,EAAE,OAAO,CAAC;IAChB;;;OAGG;IACH,iBAAiB,EAAE,OAAO,CAAC;CAC5B,CAAC;AAEF,kGAAkG;AAClG,MAAM,CAAC,OAAO,OAAO,kBAAmB,SAAQ,cAAc,CAAC,yBAAyB,CAAC;IACvF,MAAM,CAAC,YAAY;;;;;;;;;;;MAAgB;IACnC,MAAM,CAAC,aAAa,SAAwB;gBAEhC,EACV,IAAY,EACZ,MAAc,EACd,iBAAyB,EAC1B,GAAE,OAAO,CAAC,yBAAyB,CAAM;IAI1C,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,uBAAuB,CAAC,GAAG,OAAO;IAIzD,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,uBAAuB,CAAC,EAAE,SAAS,EAAE,IAAI,GAAG,GAAG;IA4BtE,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,uBAAuB,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI;IAgC5F,WAAW,CACT,IAAI,EAAE,KAAK,CAAC,uBAAuB,CAAC,EACpC,MAAM,EAAE,gBAAgB,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC,EACxD,SAAS,EAAE,IAAI;IAejB,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,uBAAuB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,EAAE,GAAG,MAAM,EAAE;CAqB5F"}
|
|
@@ -1,22 +1,6 @@
|
|
|
1
|
-
//
|
|
2
|
-
//
|
|
3
|
-
//
|
|
4
|
-
// of this software and associated documentation files (the "Software"), to deal
|
|
5
|
-
// in the Software without restriction, including without limitation the rights
|
|
6
|
-
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
7
|
-
// copies of the Software, and to permit persons to whom the Software is
|
|
8
|
-
// furnished to do so, subject to the following conditions:
|
|
9
|
-
//
|
|
10
|
-
// The above copyright notice and this permission notice shall be included in
|
|
11
|
-
// all copies or substantial portions of the Software.
|
|
12
|
-
//
|
|
13
|
-
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
14
|
-
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
15
|
-
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
16
|
-
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
17
|
-
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
18
|
-
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
19
|
-
// THE SOFTWARE.
|
|
1
|
+
// deck.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// Copyright (c) vis.gl contributors
|
|
20
4
|
import { LayerExtension, _mergeShaders as mergeShaders } from '@deck.gl/core';
|
|
21
5
|
import { vec3 } from '@math.gl/core';
|
|
22
6
|
import { dashShaders, offsetShaders } from "./shaders.glsl.js";
|
|
@@ -46,7 +30,18 @@ class PathStyleExtension extends LayerExtension {
|
|
|
46
30
|
if (extension.opts.offset) {
|
|
47
31
|
result = mergeShaders(result, offsetShaders);
|
|
48
32
|
}
|
|
49
|
-
|
|
33
|
+
const { inject } = result;
|
|
34
|
+
const pathStyle = {
|
|
35
|
+
name: 'pathStyle',
|
|
36
|
+
inject,
|
|
37
|
+
uniformTypes: {
|
|
38
|
+
dashAlignMode: 'f32',
|
|
39
|
+
dashGapPickable: 'i32'
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
return {
|
|
43
|
+
modules: [pathStyle]
|
|
44
|
+
};
|
|
50
45
|
}
|
|
51
46
|
initializeState(context, extension) {
|
|
52
47
|
const attributeManager = this.getAttributeManager();
|
|
@@ -82,12 +77,13 @@ class PathStyleExtension extends LayerExtension {
|
|
|
82
77
|
if (!extension.isEnabled(this)) {
|
|
83
78
|
return;
|
|
84
79
|
}
|
|
85
|
-
const uniforms = {};
|
|
86
80
|
if (extension.opts.dash) {
|
|
87
|
-
|
|
88
|
-
|
|
81
|
+
const pathStyleProps = {
|
|
82
|
+
dashAlignMode: this.props.dashJustified ? 1 : 0,
|
|
83
|
+
dashGapPickable: Boolean(this.props.dashGapPickable)
|
|
84
|
+
};
|
|
85
|
+
this.setShaderModuleProps({ pathStyle: pathStyleProps });
|
|
89
86
|
}
|
|
90
|
-
this.state.model?.setUniforms(uniforms);
|
|
91
87
|
}
|
|
92
88
|
getDashOffsets(path) {
|
|
93
89
|
const result = [0];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shaders.glsl.d.ts","sourceRoot":"","sources":["../../src/path-style/shaders.glsl.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"shaders.glsl.d.ts","sourceRoot":"","sources":["../../src/path-style/shaders.glsl.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,WAAW;;;;;;;CAsEvB,CAAC;AAEF,eAAO,MAAM,aAAa;;;;;;;CAwBzB,CAAC"}
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
// deck.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// Copyright (c) vis.gl contributors
|
|
1
4
|
export const dashShaders = {
|
|
2
5
|
inject: {
|
|
3
6
|
'vs:#decl': `
|
|
@@ -11,9 +14,10 @@ vDashArray = instanceDashArrays;
|
|
|
11
14
|
vDashOffset = instanceDashOffsets / width.x;
|
|
12
15
|
`,
|
|
13
16
|
'fs:#decl': `
|
|
14
|
-
uniform
|
|
15
|
-
|
|
16
|
-
|
|
17
|
+
uniform pathStyleUniforms {
|
|
18
|
+
float dashAlignMode;
|
|
19
|
+
bool dashGapPickable;
|
|
20
|
+
} pathStyle;
|
|
17
21
|
in vec2 vDashArray;
|
|
18
22
|
in float vDashOffset;
|
|
19
23
|
`,
|
|
@@ -31,7 +35,7 @@ float gapLength = vDashArray.y;
|
|
|
31
35
|
float unitLength = solidLength + gapLength;
|
|
32
36
|
float offset;
|
|
33
37
|
if (unitLength > 0.0) {
|
|
34
|
-
if (dashAlignMode == 0.0) {
|
|
38
|
+
if (pathStyle.dashAlignMode == 0.0) {
|
|
35
39
|
offset = vDashOffset;
|
|
36
40
|
} else {
|
|
37
41
|
unitLength = vPathLength / round(vPathLength / unitLength);
|
|
@@ -39,8 +43,8 @@ offset = solidLength / 2.0;
|
|
|
39
43
|
}
|
|
40
44
|
float unitOffset = mod(vPathPosition.y + offset, unitLength);
|
|
41
45
|
if (gapLength > 0.0 && unitOffset > solidLength) {
|
|
42
|
-
if (capType <= 0.5) {
|
|
43
|
-
if (!(dashGapPickable && bool(picking.isActive))) {
|
|
46
|
+
if (path.capType <= 0.5) {
|
|
47
|
+
if (!(pathStyle.dashGapPickable && bool(picking.isActive))) {
|
|
44
48
|
discard;
|
|
45
49
|
}
|
|
46
50
|
} else {
|
|
@@ -49,7 +53,7 @@ min(unitOffset - solidLength, unitLength - unitOffset),
|
|
|
49
53
|
vPathPosition.x
|
|
50
54
|
));
|
|
51
55
|
if (distToEnd > 1.0) {
|
|
52
|
-
if (!(dashGapPickable && bool(picking.isActive))) {
|
|
56
|
+
if (!(pathStyle.dashGapPickable && bool(picking.isActive))) {
|
|
53
57
|
discard;
|
|
54
58
|
}
|
|
55
59
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"height-map-builder.d.ts","sourceRoot":"","sources":["../../src/terrain/height-map-builder.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"height-map-builder.d.ts","sourceRoot":"","sources":["../../src/terrain/height-map-builder.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,MAAM,EAAE,WAAW,EAAC,MAAM,eAAe,CAAC;AAClD,OAAO,EAAiD,MAAM,EAAC,qCAAkC;AAGjG,OAAO,KAAK,EAAC,QAAQ,EAAE,KAAK,EAAC,MAAM,eAAe,CAAC;AAInD;;;;;;GAMG;AACH,qBAAa,gBAAgB;IAC3B,6CAA6C;IAC7C,cAAc,EAAE,QAAQ,GAAG,IAAI,CAAQ;IACvC,2DAA2D;IAC3D,MAAM,EAAE,MAAM,GAAG,IAAI,CAAQ;IAE7B,SAAS,CAAC,GAAG,CAAC,EAAE,WAAW,CAAC;IAC5B,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;IACzB,2BAA2B;IAC3B,OAAO,CAAC,MAAM,CAAe;IAC7B,6BAA6B;IAC7B,OAAO,CAAC,YAAY,CAAuC;IAC3D,mDAAmD;IACnD,OAAO,CAAC,kBAAkB,CAAuB;IACjD,OAAO,CAAC,YAAY,CAAyB;IAE7C,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;gBAI/B,MAAM,EAAE,MAAM;IAI1B;;OAEG;IACH,oBAAoB,IAAI,WAAW,GAAG,IAAI;IAU1C,yEAAyE;IACzE,YAAY,CAAC,EAAC,MAAM,EAAE,QAAQ,EAAC,EAAE;QAAC,MAAM,EAAE,KAAK,EAAE,CAAC;QAAC,QAAQ,EAAE,QAAQ,CAAA;KAAC,GAAG,OAAO;IAiEhF,MAAM;CAMP"}
|