@deck.gl/extensions 9.0.34 → 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.
Files changed (128) hide show
  1. package/dist/brushing/brushing-extension.d.ts +1 -0
  2. package/dist/brushing/brushing-extension.d.ts.map +1 -1
  3. package/dist/brushing/brushing-extension.js +15 -19
  4. package/dist/brushing/shader-module.d.ts +8 -2
  5. package/dist/brushing/shader-module.d.ts.map +1 -1
  6. package/dist/brushing/shader-module.js +74 -50
  7. package/dist/clip/clip-extension.d.ts +5 -2
  8. package/dist/clip/clip-extension.d.ts.map +1 -1
  9. package/dist/clip/clip-extension.js +36 -42
  10. package/dist/collision-filter/collision-filter-effect.d.ts +4 -4
  11. package/dist/collision-filter/collision-filter-effect.d.ts.map +1 -1
  12. package/dist/collision-filter/collision-filter-effect.js +27 -13
  13. package/dist/collision-filter/collision-filter-extension.d.ts +1 -1
  14. package/dist/collision-filter/collision-filter-extension.d.ts.map +1 -1
  15. package/dist/collision-filter/collision-filter-extension.js +5 -6
  16. package/dist/collision-filter/collision-filter-pass.d.ts +7 -3
  17. package/dist/collision-filter/collision-filter-pass.d.ts.map +1 -1
  18. package/dist/collision-filter/collision-filter-pass.js +8 -3
  19. package/dist/collision-filter/shader-module.d.ts +3 -2
  20. package/dist/collision-filter/shader-module.d.ts.map +1 -1
  21. package/dist/collision-filter/shader-module.js +74 -52
  22. package/dist/data-filter/aggregator.d.ts +4 -10
  23. package/dist/data-filter/aggregator.d.ts.map +1 -1
  24. package/dist/data-filter/aggregator.js +14 -8
  25. package/dist/data-filter/data-filter-extension.d.ts.map +1 -1
  26. package/dist/data-filter/data-filter-extension.js +40 -38
  27. package/dist/data-filter/shader-module.d.ts +11 -4
  28. package/dist/data-filter/shader-module.d.ts.map +1 -1
  29. package/dist/data-filter/shader-module.js +189 -131
  30. package/dist/dist.dev.js +2699 -2028
  31. package/dist/fill-style/fill-style-extension.d.ts.map +1 -1
  32. package/dist/fill-style/fill-style-extension.js +11 -4
  33. package/dist/fill-style/shader-module.d.ts +64 -6
  34. package/dist/fill-style/shader-module.d.ts.map +1 -1
  35. package/dist/fill-style/shader-module.js +73 -51
  36. package/dist/fp64/fp64-extension.d.ts +1 -0
  37. package/dist/fp64/fp64-extension.d.ts.map +1 -1
  38. package/dist/fp64/fp64-extension.js +7 -19
  39. package/dist/fp64/project64.d.ts +2 -2
  40. package/dist/fp64/project64.d.ts.map +1 -1
  41. package/dist/fp64/project64.glsl.d.ts +1 -1
  42. package/dist/fp64/project64.glsl.d.ts.map +1 -1
  43. package/dist/fp64/project64.glsl.js +18 -21
  44. package/dist/fp64/project64.js +24 -24
  45. package/dist/index.cjs +1017 -523
  46. package/dist/index.cjs.map +3 -3
  47. package/dist/index.d.ts +1 -0
  48. package/dist/index.d.ts.map +1 -1
  49. package/dist/index.js +3 -0
  50. package/dist/mask/mask-effect.d.ts +5 -3
  51. package/dist/mask/mask-effect.d.ts.map +1 -1
  52. package/dist/mask/mask-effect.js +12 -5
  53. package/dist/mask/mask-extension.d.ts +1 -1
  54. package/dist/mask/mask-extension.d.ts.map +1 -1
  55. package/dist/mask/mask-extension.js +13 -8
  56. package/dist/mask/mask-pass.d.ts +38 -38
  57. package/dist/mask/mask-pass.d.ts.map +1 -1
  58. package/dist/mask/mask-pass.js +3 -0
  59. package/dist/mask/shader-module.d.ts +60 -3
  60. package/dist/mask/shader-module.d.ts.map +1 -1
  61. package/dist/mask/shader-module.js +73 -46
  62. package/dist/path-style/path-style-extension.d.ts.map +1 -1
  63. package/dist/path-style/path-style-extension.js +20 -24
  64. package/dist/path-style/shaders.glsl.d.ts.map +1 -1
  65. package/dist/path-style/shaders.glsl.js +11 -7
  66. package/dist/terrain/height-map-builder.d.ts.map +1 -1
  67. package/dist/terrain/height-map-builder.js +3 -0
  68. package/dist/terrain/shader-module.d.ts +60 -6
  69. package/dist/terrain/shader-module.d.ts.map +1 -1
  70. package/dist/terrain/shader-module.js +69 -61
  71. package/dist/terrain/terrain-cover.d.ts.map +1 -1
  72. package/dist/terrain/terrain-cover.js +3 -0
  73. package/dist/terrain/terrain-effect.d.ts +4 -2
  74. package/dist/terrain/terrain-effect.d.ts.map +1 -1
  75. package/dist/terrain/terrain-effect.js +31 -18
  76. package/dist/terrain/terrain-extension.d.ts.map +1 -1
  77. package/dist/terrain/terrain-extension.js +3 -0
  78. package/dist/terrain/terrain-pass.d.ts +43 -38
  79. package/dist/terrain/terrain-pass.d.ts.map +1 -1
  80. package/dist/terrain/terrain-pass.js +10 -0
  81. package/dist/terrain/terrain-picking-pass.d.ts +5 -0
  82. package/dist/terrain/terrain-picking-pass.d.ts.map +1 -1
  83. package/dist/terrain/terrain-picking-pass.js +10 -0
  84. package/dist/terrain/utils.d.ts.map +1 -1
  85. package/dist/terrain/utils.js +3 -0
  86. package/dist/utils/debug.d.ts +2 -2
  87. package/dist/utils/debug.d.ts.map +1 -1
  88. package/dist/utils/debug.js +3 -1
  89. package/dist/utils/projection-utils.d.ts.map +1 -1
  90. package/dist/utils/projection-utils.js +3 -0
  91. package/dist.min.js +1102 -817
  92. package/package.json +8 -8
  93. package/src/brushing/brushing-extension.ts +17 -20
  94. package/src/brushing/shader-module.ts +58 -47
  95. package/src/clip/clip-extension.ts +38 -40
  96. package/src/collision-filter/collision-filter-effect.ts +31 -20
  97. package/src/collision-filter/collision-filter-extension.ts +6 -7
  98. package/src/collision-filter/collision-filter-pass.ts +9 -3
  99. package/src/collision-filter/shader-module.ts +40 -22
  100. package/src/data-filter/aggregator.ts +23 -11
  101. package/src/data-filter/data-filter-extension.ts +68 -48
  102. package/src/data-filter/shader-module.ts +144 -84
  103. package/src/fill-style/fill-style-extension.ts +13 -5
  104. package/src/fill-style/shader-module.ts +84 -52
  105. package/src/fp64/fp64-extension.ts +8 -19
  106. package/src/fp64/project64.glsl.ts +18 -21
  107. package/src/fp64/project64.ts +27 -28
  108. package/src/index.ts +5 -0
  109. package/src/mask/mask-effect.ts +17 -7
  110. package/src/mask/mask-extension.ts +16 -9
  111. package/src/mask/mask-pass.ts +4 -0
  112. package/src/mask/shader-module.ts +63 -27
  113. package/src/path-style/path-style-extension.ts +27 -28
  114. package/src/path-style/shaders.glsl.ts +13 -7
  115. package/src/terrain/height-map-builder.ts +4 -0
  116. package/src/terrain/shader-module.ts +62 -44
  117. package/src/terrain/terrain-cover.ts +4 -0
  118. package/src/terrain/terrain-effect.ts +36 -19
  119. package/src/terrain/terrain-extension.ts +4 -0
  120. package/src/terrain/terrain-pass.ts +12 -0
  121. package/src/terrain/terrain-picking-pass.ts +12 -0
  122. package/src/terrain/utils.ts +4 -0
  123. package/src/utils/debug.ts +4 -0
  124. package/src/utils/projection-utils.ts +4 -0
  125. package/dist/utils/syntax-tags.d.ts +0 -6
  126. package/dist/utils/syntax-tags.d.ts.map +0 -1
  127. package/dist/utils/syntax-tags.js +0 -5
  128. 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
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,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"}
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
- getModuleParameters(): {
37
- maskMap: Texture;
38
- maskChannels: Record<string, Mask> | null;
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":"AAAA,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;IAgGtB;;;;;;OAMG;IACH,OAAO,CAAC,iBAAiB;IA4CzB,mBAAmB,IAAI;QACrB,OAAO,EAAE,OAAO,CAAC;QACjB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC;KAC3C;IAOD,OAAO,IAAI,IAAI;CAgBhB"}
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"}
@@ -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
- moduleParameters: {
110
- devicePixelRatio: 1
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
- getModuleParameters() {
177
+ getShaderModuleProps() {
173
178
  return {
174
- maskMap: this.masks ? this.maskMap : this.dummyMaskMap,
175
- maskChannels: this.masks
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>>, { uniforms, context, moduleParameters }: any): void;
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":"AAAA,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,QAAQ,EAAE,OAAO,EAAE,gBAAgB,EAAC,EAAE,GAAG;CA4B3F"}
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({ uniforms, context, moduleParameters }) {
28
- uniforms.mask_maskByInstance = this.state.maskByInstance;
30
+ draw({ context, shaderModuleProps }) {
31
+ const maskProps = {};
32
+ maskProps.maskByInstance = Boolean(this.state.maskByInstance);
29
33
  const { maskId, maskInverted } = this.props;
30
- const { maskChannels } = moduleParameters;
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
- uniforms.mask_enabled = true;
36
- uniforms.mask_channel = index;
37
- uniforms.mask_inverted = maskInverted;
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
- uniforms.mask_bounds = [bl[0], bl[1], tr[0], tr[1]];
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
- uniforms.mask_enabled = false;
56
+ maskProps.enabled = false;
53
57
  }
58
+ this.setShaderModuleProps({ mask: maskProps });
54
59
  }
55
60
  }
56
61
  MaskExtension.defaultProps = defaultProps;
@@ -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 | undefined;
17
- frontFace?: import("@luma.gl/core").FrontFace | undefined;
18
- depthBias?: number | undefined;
19
- depthBiasSlopeScale?: number | undefined;
20
- depthBiasClamp?: number | undefined;
21
- unclippedDepth?: boolean | undefined;
22
- provokingVertex?: "first" | "last" | undefined;
23
- polygonMode?: "fill" | "line" | undefined;
24
- polygonOffsetLine?: boolean | undefined;
25
- clipDistance0?: boolean | undefined;
26
- clipDistance1?: boolean | undefined;
27
- clipDistance2?: boolean | undefined;
28
- clipDistance3?: boolean | undefined;
29
- clipDistance4?: boolean | undefined;
30
- clipDistance5?: boolean | undefined;
31
- clipDistance6?: boolean | undefined;
32
- clipDistance7?: boolean | undefined;
33
- topology?: import("@luma.gl/core").PrimitiveTopology | undefined;
34
- stripIndexFormat?: import("@luma.gl/core").IndexFormat | undefined;
35
- depthWriteEnabled?: boolean | undefined;
36
- depthCompare?: import("@luma.gl/core").CompareFunction | undefined;
37
- depthFormat?: import("@luma.gl/core").DepthStencilTextureFormat | undefined;
38
- stencilReadMask?: number | undefined;
39
- stencilWriteMask?: number | undefined;
40
- stencilCompare?: import("@luma.gl/core").CompareFunction | undefined;
41
- stencilPassOperation?: import("@luma.gl/core").StencilOperation | undefined;
42
- stencilFailOperation?: import("@luma.gl/core").StencilOperation | undefined;
43
- stencilDepthFailOperation?: import("@luma.gl/core").StencilOperation | undefined;
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":"AAAA,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"}
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"}
@@ -1,3 +1,6 @@
1
+ // deck.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
1
4
  import { _LayersPass as LayersPass } from '@deck.gl/core';
2
5
  const MASK_BLENDING = {
3
6
  blendColorOperation: 'subtract',
@@ -1,8 +1,65 @@
1
- import type { ShaderModule } from '@luma.gl/shadertools';
2
1
  import type { Texture } from '@luma.gl/core';
3
- type MaskModuleSettings = {
2
+ type MaskBindingProps = {
4
3
  maskMap?: Texture;
5
4
  };
6
- declare const _default: ShaderModule<MaskModuleSettings>;
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":"AAAA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,sBAAsB,CAAC;AAEvD,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,eAAe,CAAC;AAqE3C,KAAK,kBAAkB,GAAG;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;;AAYF,wBAOsC"}
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
- import { glsl } from "../utils/syntax-tags.js";
3
- const vs = `
4
- uniform vec4 mask_bounds;
5
- uniform bool mask_maskByInstance;
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 - mask_bounds.xy) / (mask_bounds.zw - mask_bounds.xy);
16
+ return (position.xy - mask.bounds.xy) / (mask.bounds.zw - mask.bounds.xy);
8
17
  }
9
18
  `;
10
- const fs = `
19
+ const vs = `
20
+ ${uniformBlock}
21
+ ${vertex}
22
+ `;
23
+ const fragment = /* glsl */ `
11
24
  uniform sampler2D mask_texture;
12
- uniform int mask_channel;
13
- uniform bool mask_enabled;
14
- uniform bool mask_inverted;
25
+
15
26
  bool mask_isInBounds(vec2 texCoords) {
16
- if (!mask_enabled) {
17
- return true;
18
- }
19
- vec4 maskColor = texture(mask_texture, texCoords);
20
- float maskValue = 1.0;
21
- if (mask_channel == 0) {
22
- maskValue = maskColor.r;
23
- } else if (mask_channel == 1) {
24
- maskValue = maskColor.g;
25
- } else if (mask_channel == 2) {
26
- maskValue = maskColor.b;
27
- } else if (mask_channel == 3) {
28
- maskValue = maskColor.a;
29
- }
30
- if (mask_inverted) {
31
- return maskValue >= 0.5;
32
- } else {
33
- return maskValue < 0.5;
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 (mask_maskByInstance) {
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 (mask_enabled) {
55
- bool mask = mask_isInBounds(mask_texCoords);
56
- fragColor = texture(mask_texture, mask_texCoords);
57
- if (!mask) discard;
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":"AAoBA,OAAO,EAAC,cAAc,EAAgC,MAAM,eAAe,CAAC;AAI5E,OAAO,KAAK,EAAC,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,gBAAgB,EAAC,MAAM,eAAe,CAAC;AAUnF,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;IAiBtE,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;IAgBjB,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,uBAAuB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,EAAE,GAAG,MAAM,EAAE;CAqB5F"}
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
- // Copyright (c) 2015 - 2017 Uber Technologies, Inc.
2
- //
3
- // Permission is hereby granted, free of charge, to any person obtaining a copy
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
- return result;
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
- uniforms.dashAlignMode = this.props.dashJustified ? 1 : 0;
88
- uniforms.dashGapPickable = Boolean(this.props.dashGapPickable);
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":"AAAA,eAAO,MAAM,WAAW;;;;;;;CAoEvB,CAAC;AAEF,eAAO,MAAM,aAAa;;;;;;;CAwBzB,CAAC"}
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 float dashAlignMode;
15
- uniform float capType;
16
- uniform bool dashGapPickable;
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":"AAAA,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"}
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"}
@@ -1,3 +1,6 @@
1
+ // deck.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
1
4
  import { joinLayerBounds, getRenderBounds, makeViewport } from "../utils/projection-utils.js";
2
5
  import { createRenderTarget } from "./utils.js";
3
6
  const MAP_MAX_SIZE = 2048;