@deck.gl/aggregation-layers 9.4.0-alpha.1 → 9.4.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 (210) hide show
  1. package/dist/common/aggregator/gpu-aggregator/webgl-aggregation-transform.d.ts.map +1 -1
  2. package/dist/common/aggregator/gpu-aggregator/webgl-aggregation-transform.js +1 -3
  3. package/dist/common/aggregator/gpu-aggregator/webgl-aggregation-transform.js.map +1 -1
  4. package/dist/common/aggregator/gpu-aggregator/webgl-bin-sorter.js +0 -1
  5. package/dist/common/aggregator/gpu-aggregator/webgl-bin-sorter.js.map +1 -1
  6. package/dist/dist.dev.js +642 -38
  7. package/dist/grid-layer/grid-cell-layer.d.ts.map +1 -1
  8. package/dist/grid-layer/grid-cell-layer.js +3 -2
  9. package/dist/grid-layer/grid-cell-layer.js.map +1 -1
  10. package/dist/grid-layer/grid-cell-layer.wgsl.d.ts +3 -0
  11. package/dist/grid-layer/grid-cell-layer.wgsl.d.ts.map +1 -0
  12. package/dist/grid-layer/grid-cell-layer.wgsl.js +114 -0
  13. package/dist/grid-layer/grid-cell-layer.wgsl.js.map +1 -0
  14. package/dist/grid-layer/grid-layer-uniforms.d.ts +1 -0
  15. package/dist/grid-layer/grid-layer-uniforms.d.ts.map +1 -1
  16. package/dist/grid-layer/grid-layer-uniforms.js +14 -0
  17. package/dist/grid-layer/grid-layer-uniforms.js.map +1 -1
  18. package/dist/heatmap-layer/heatmap-layer-uniforms.d.ts +2 -0
  19. package/dist/heatmap-layer/heatmap-layer-uniforms.d.ts.map +1 -1
  20. package/dist/heatmap-layer/heatmap-layer-uniforms.js +19 -0
  21. package/dist/heatmap-layer/heatmap-layer-uniforms.js.map +1 -1
  22. package/dist/heatmap-layer/heatmap-layer.d.ts.map +1 -1
  23. package/dist/heatmap-layer/heatmap-layer.js +59 -12
  24. package/dist/heatmap-layer/heatmap-layer.js.map +1 -1
  25. package/dist/heatmap-layer/max.wgsl.d.ts +3 -0
  26. package/dist/heatmap-layer/max.wgsl.d.ts.map +1 -0
  27. package/dist/heatmap-layer/max.wgsl.js +48 -0
  28. package/dist/heatmap-layer/max.wgsl.js.map +1 -0
  29. package/dist/heatmap-layer/triangle-layer-uniforms.d.ts +1 -0
  30. package/dist/heatmap-layer/triangle-layer-uniforms.d.ts.map +1 -1
  31. package/dist/heatmap-layer/triangle-layer-uniforms.js +16 -0
  32. package/dist/heatmap-layer/triangle-layer-uniforms.js.map +1 -1
  33. package/dist/heatmap-layer/triangle-layer.d.ts.map +1 -1
  34. package/dist/heatmap-layer/triangle-layer.js +3 -2
  35. package/dist/heatmap-layer/triangle-layer.js.map +1 -1
  36. package/dist/heatmap-layer/triangle-layer.wgsl.d.ts +3 -0
  37. package/dist/heatmap-layer/triangle-layer.wgsl.d.ts.map +1 -0
  38. package/dist/heatmap-layer/triangle-layer.wgsl.js +65 -0
  39. package/dist/heatmap-layer/triangle-layer.wgsl.js.map +1 -0
  40. package/dist/heatmap-layer/weights.wgsl.d.ts +3 -0
  41. package/dist/heatmap-layer/weights.wgsl.d.ts.map +1 -0
  42. package/dist/heatmap-layer/weights.wgsl.js +64 -0
  43. package/dist/heatmap-layer/weights.wgsl.js.map +1 -0
  44. package/dist/hexagon-layer/hexagon-cell-layer.d.ts.map +1 -1
  45. package/dist/hexagon-layer/hexagon-cell-layer.js +2 -2
  46. package/dist/hexagon-layer/hexagon-cell-layer.js.map +1 -1
  47. package/dist/hexagon-layer/hexagon-cell-layer.wgsl.d.ts +3 -0
  48. package/dist/hexagon-layer/hexagon-cell-layer.wgsl.d.ts.map +1 -0
  49. package/dist/hexagon-layer/hexagon-cell-layer.wgsl.js +120 -0
  50. package/dist/hexagon-layer/hexagon-cell-layer.wgsl.js.map +1 -0
  51. package/dist/hexagon-layer/hexagon-layer-uniforms.d.ts +1 -0
  52. package/dist/hexagon-layer/hexagon-layer-uniforms.d.ts.map +1 -1
  53. package/dist/hexagon-layer/hexagon-layer-uniforms.js +13 -0
  54. package/dist/hexagon-layer/hexagon-layer-uniforms.js.map +1 -1
  55. package/dist/index.cjs +13268 -1488
  56. package/dist/index.cjs.map +3 -4
  57. package/dist/screen-grid-layer/screen-grid-cell-layer.d.ts +1 -6
  58. package/dist/screen-grid-layer/screen-grid-cell-layer.d.ts.map +1 -1
  59. package/dist/screen-grid-layer/screen-grid-cell-layer.js +3 -2
  60. package/dist/screen-grid-layer/screen-grid-cell-layer.js.map +1 -1
  61. package/dist/screen-grid-layer/screen-grid-cell-layer.wgsl.d.ts +3 -0
  62. package/dist/screen-grid-layer/screen-grid-cell-layer.wgsl.d.ts.map +1 -0
  63. package/dist/screen-grid-layer/screen-grid-cell-layer.wgsl.js +76 -0
  64. package/dist/screen-grid-layer/screen-grid-cell-layer.wgsl.js.map +1 -0
  65. package/dist/screen-grid-layer/screen-grid-layer-uniforms.d.ts +1 -0
  66. package/dist/screen-grid-layer/screen-grid-layer-uniforms.d.ts.map +1 -1
  67. package/dist/screen-grid-layer/screen-grid-layer-uniforms.js +12 -0
  68. package/dist/screen-grid-layer/screen-grid-layer-uniforms.js.map +1 -1
  69. package/dist.min.js +545 -35
  70. package/dist.webgl-only/common/aggregation-layer.js +68 -0
  71. package/dist.webgl-only/common/aggregation-layer.js.map +1 -0
  72. package/dist.webgl-only/common/aggregator/aggregator.js +5 -0
  73. package/dist.webgl-only/common/aggregator/aggregator.js.map +1 -0
  74. package/dist.webgl-only/common/aggregator/cpu-aggregator/aggregate.js +69 -0
  75. package/dist.webgl-only/common/aggregator/cpu-aggregator/aggregate.js.map +1 -0
  76. package/dist.webgl-only/common/aggregator/cpu-aggregator/cpu-aggregator.js +141 -0
  77. package/dist.webgl-only/common/aggregator/cpu-aggregator/cpu-aggregator.js.map +1 -0
  78. package/dist.webgl-only/common/aggregator/cpu-aggregator/sort-bins.js +44 -0
  79. package/dist.webgl-only/common/aggregator/cpu-aggregator/sort-bins.js.map +1 -0
  80. package/dist.webgl-only/common/aggregator/cpu-aggregator/vertex-accessor.js +56 -0
  81. package/dist.webgl-only/common/aggregator/cpu-aggregator/vertex-accessor.js.map +1 -0
  82. package/dist.webgl-only/common/aggregator/gpu-aggregator/aggregation-transform-uniforms.js +22 -0
  83. package/dist.webgl-only/common/aggregator/gpu-aggregator/aggregation-transform-uniforms.js.map +1 -0
  84. package/dist.webgl-only/common/aggregator/gpu-aggregator/bin-sorter-uniforms.js +18 -0
  85. package/dist.webgl-only/common/aggregator/gpu-aggregator/bin-sorter-uniforms.js.map +1 -0
  86. package/dist.webgl-only/common/aggregator/gpu-aggregator/utils.js +24 -0
  87. package/dist.webgl-only/common/aggregator/gpu-aggregator/utils.js.map +1 -0
  88. package/dist.webgl-only/common/aggregator/gpu-aggregator/webgl-aggregation-transform.js +222 -0
  89. package/dist.webgl-only/common/aggregator/gpu-aggregator/webgl-aggregation-transform.js.map +1 -0
  90. package/dist.webgl-only/common/aggregator/gpu-aggregator/webgl-aggregator.js +203 -0
  91. package/dist.webgl-only/common/aggregator/gpu-aggregator/webgl-aggregator.js.map +1 -0
  92. package/dist.webgl-only/common/aggregator/gpu-aggregator/webgl-bin-sorter.js +225 -0
  93. package/dist.webgl-only/common/aggregator/gpu-aggregator/webgl-bin-sorter.js.map +1 -0
  94. package/dist.webgl-only/common/aggregator/index.js +6 -0
  95. package/dist.webgl-only/common/aggregator/index.js.map +1 -0
  96. package/dist.webgl-only/common/types.js +5 -0
  97. package/dist.webgl-only/common/types.js.map +1 -0
  98. package/dist.webgl-only/common/utils/bounds-utils.js +21 -0
  99. package/dist.webgl-only/common/utils/bounds-utils.js.map +1 -0
  100. package/dist.webgl-only/common/utils/color-utils.js +65 -0
  101. package/dist.webgl-only/common/utils/color-utils.js.map +1 -0
  102. package/dist.webgl-only/common/utils/prop-utils.js +13 -0
  103. package/dist.webgl-only/common/utils/prop-utils.js.map +1 -0
  104. package/dist.webgl-only/common/utils/scale-utils.js +181 -0
  105. package/dist.webgl-only/common/utils/scale-utils.js.map +1 -0
  106. package/dist.webgl-only/contour-layer/bin-options-uniforms.js +18 -0
  107. package/dist.webgl-only/contour-layer/bin-options-uniforms.js.map +1 -0
  108. package/dist.webgl-only/contour-layer/contour-layer.js +282 -0
  109. package/dist.webgl-only/contour-layer/contour-layer.js.map +1 -0
  110. package/dist.webgl-only/contour-layer/contour-utils.js +60 -0
  111. package/dist.webgl-only/contour-layer/contour-utils.js.map +1 -0
  112. package/dist.webgl-only/contour-layer/marching-squares-codes.js +341 -0
  113. package/dist.webgl-only/contour-layer/marching-squares-codes.js.map +1 -0
  114. package/dist.webgl-only/contour-layer/marching-squares.js +151 -0
  115. package/dist.webgl-only/contour-layer/marching-squares.js.map +1 -0
  116. package/dist.webgl-only/contour-layer/value-reader.js +47 -0
  117. package/dist.webgl-only/contour-layer/value-reader.js.map +1 -0
  118. package/dist.webgl-only/grid-layer/bin-options-uniforms.js +18 -0
  119. package/dist.webgl-only/grid-layer/bin-options-uniforms.js.map +1 -0
  120. package/dist.webgl-only/grid-layer/grid-cell-layer-vertex.glsl.js +51 -0
  121. package/dist.webgl-only/grid-layer/grid-cell-layer-vertex.glsl.js.map +1 -0
  122. package/dist.webgl-only/grid-layer/grid-cell-layer.js +95 -0
  123. package/dist.webgl-only/grid-layer/grid-cell-layer.js.map +1 -0
  124. package/dist.webgl-only/grid-layer/grid-cell-layer.wgsl.js +5 -0
  125. package/dist.webgl-only/grid-layer/grid-cell-layer.wgsl.js.map +1 -0
  126. package/dist.webgl-only/grid-layer/grid-layer-uniforms.js +26 -0
  127. package/dist.webgl-only/grid-layer/grid-layer-uniforms.js.map +1 -0
  128. package/dist.webgl-only/grid-layer/grid-layer.js +362 -0
  129. package/dist.webgl-only/grid-layer/grid-layer.js.map +1 -0
  130. package/dist.webgl-only/heatmap-layer/aggregation-layer.js +140 -0
  131. package/dist.webgl-only/heatmap-layer/aggregation-layer.js.map +1 -0
  132. package/dist.webgl-only/heatmap-layer/heatmap-layer-uniforms.js +36 -0
  133. package/dist.webgl-only/heatmap-layer/heatmap-layer-uniforms.js.map +1 -0
  134. package/dist.webgl-only/heatmap-layer/heatmap-layer-utils.js +67 -0
  135. package/dist.webgl-only/heatmap-layer/heatmap-layer-utils.js.map +1 -0
  136. package/dist.webgl-only/heatmap-layer/heatmap-layer.js +513 -0
  137. package/dist.webgl-only/heatmap-layer/heatmap-layer.js.map +1 -0
  138. package/dist.webgl-only/heatmap-layer/max-fs.glsl.js +13 -0
  139. package/dist.webgl-only/heatmap-layer/max-fs.glsl.js.map +1 -0
  140. package/dist.webgl-only/heatmap-layer/max-vs.glsl.js +18 -0
  141. package/dist.webgl-only/heatmap-layer/max-vs.glsl.js.map +1 -0
  142. package/dist.webgl-only/heatmap-layer/max.wgsl.js +5 -0
  143. package/dist.webgl-only/heatmap-layer/max.wgsl.js.map +1 -0
  144. package/dist.webgl-only/heatmap-layer/triangle-layer-fragment.glsl.js +34 -0
  145. package/dist.webgl-only/heatmap-layer/triangle-layer-fragment.glsl.js.map +1 -0
  146. package/dist.webgl-only/heatmap-layer/triangle-layer-uniforms.js +25 -0
  147. package/dist.webgl-only/heatmap-layer/triangle-layer-uniforms.js.map +1 -0
  148. package/dist.webgl-only/heatmap-layer/triangle-layer-vertex.glsl.js +28 -0
  149. package/dist.webgl-only/heatmap-layer/triangle-layer-vertex.glsl.js.map +1 -0
  150. package/dist.webgl-only/heatmap-layer/triangle-layer.js +49 -0
  151. package/dist.webgl-only/heatmap-layer/triangle-layer.js.map +1 -0
  152. package/dist.webgl-only/heatmap-layer/triangle-layer.wgsl.js +5 -0
  153. package/dist.webgl-only/heatmap-layer/triangle-layer.wgsl.js.map +1 -0
  154. package/dist.webgl-only/heatmap-layer/weights-fs.glsl.js +21 -0
  155. package/dist.webgl-only/heatmap-layer/weights-fs.glsl.js.map +1 -0
  156. package/dist.webgl-only/heatmap-layer/weights-vs.glsl.js +21 -0
  157. package/dist.webgl-only/heatmap-layer/weights-vs.glsl.js.map +1 -0
  158. package/dist.webgl-only/heatmap-layer/weights.wgsl.js +5 -0
  159. package/dist.webgl-only/heatmap-layer/weights.wgsl.js.map +1 -0
  160. package/dist.webgl-only/hexagon-layer/bin-options-uniforms.js +18 -0
  161. package/dist.webgl-only/hexagon-layer/bin-options-uniforms.js.map +1 -0
  162. package/dist.webgl-only/hexagon-layer/hexagon-cell-layer-vertex.glsl.js +55 -0
  163. package/dist.webgl-only/hexagon-layer/hexagon-cell-layer-vertex.glsl.js.map +1 -0
  164. package/dist.webgl-only/hexagon-layer/hexagon-cell-layer.js +90 -0
  165. package/dist.webgl-only/hexagon-layer/hexagon-cell-layer.js.map +1 -0
  166. package/dist.webgl-only/hexagon-layer/hexagon-cell-layer.wgsl.js +5 -0
  167. package/dist.webgl-only/hexagon-layer/hexagon-cell-layer.wgsl.js.map +1 -0
  168. package/dist.webgl-only/hexagon-layer/hexagon-layer-uniforms.js +24 -0
  169. package/dist.webgl-only/hexagon-layer/hexagon-layer-uniforms.js.map +1 -0
  170. package/dist.webgl-only/hexagon-layer/hexagon-layer.js +360 -0
  171. package/dist.webgl-only/hexagon-layer/hexagon-layer.js.map +1 -0
  172. package/dist.webgl-only/hexagon-layer/hexbin.js +70 -0
  173. package/dist.webgl-only/hexagon-layer/hexbin.js.map +1 -0
  174. package/dist.webgl-only/index.cjs +15625 -0
  175. package/dist.webgl-only/index.cjs.map +6 -0
  176. package/dist.webgl-only/index.js +11 -0
  177. package/dist.webgl-only/index.js.map +1 -0
  178. package/dist.webgl-only/screen-grid-layer/bin-options-uniforms.js +16 -0
  179. package/dist.webgl-only/screen-grid-layer/bin-options-uniforms.js.map +1 -0
  180. package/dist.webgl-only/screen-grid-layer/screen-grid-cell-layer.js +88 -0
  181. package/dist.webgl-only/screen-grid-layer/screen-grid-cell-layer.js.map +1 -0
  182. package/dist.webgl-only/screen-grid-layer/screen-grid-cell-layer.wgsl.js +5 -0
  183. package/dist.webgl-only/screen-grid-layer/screen-grid-cell-layer.wgsl.js.map +1 -0
  184. package/dist.webgl-only/screen-grid-layer/screen-grid-layer-fragment.glsl.js +16 -0
  185. package/dist.webgl-only/screen-grid-layer/screen-grid-layer-fragment.glsl.js.map +1 -0
  186. package/dist.webgl-only/screen-grid-layer/screen-grid-layer-uniforms.js +22 -0
  187. package/dist.webgl-only/screen-grid-layer/screen-grid-layer-uniforms.js.map +1 -0
  188. package/dist.webgl-only/screen-grid-layer/screen-grid-layer-vertex.glsl.js +31 -0
  189. package/dist.webgl-only/screen-grid-layer/screen-grid-layer-vertex.glsl.js.map +1 -0
  190. package/dist.webgl-only/screen-grid-layer/screen-grid-layer.js +194 -0
  191. package/dist.webgl-only/screen-grid-layer/screen-grid-layer.js.map +1 -0
  192. package/package.json +14 -5
  193. package/src/common/aggregator/gpu-aggregator/webgl-aggregation-transform.ts +1 -3
  194. package/src/common/aggregator/gpu-aggregator/webgl-bin-sorter.ts +0 -1
  195. package/src/grid-layer/grid-cell-layer.ts +3 -2
  196. package/src/grid-layer/grid-cell-layer.wgsl.ts +114 -0
  197. package/src/grid-layer/grid-layer-uniforms.ts +15 -0
  198. package/src/heatmap-layer/heatmap-layer-uniforms.ts +20 -0
  199. package/src/heatmap-layer/heatmap-layer.ts +67 -13
  200. package/src/heatmap-layer/max.wgsl.ts +48 -0
  201. package/src/heatmap-layer/triangle-layer-uniforms.ts +17 -0
  202. package/src/heatmap-layer/triangle-layer.ts +3 -2
  203. package/src/heatmap-layer/triangle-layer.wgsl.ts +65 -0
  204. package/src/heatmap-layer/weights.wgsl.ts +64 -0
  205. package/src/hexagon-layer/hexagon-cell-layer.ts +2 -3
  206. package/src/hexagon-layer/hexagon-cell-layer.wgsl.ts +120 -0
  207. package/src/hexagon-layer/hexagon-layer-uniforms.ts +14 -0
  208. package/src/screen-grid-layer/screen-grid-cell-layer.ts +4 -4
  209. package/src/screen-grid-layer/screen-grid-cell-layer.wgsl.ts +76 -0
  210. package/src/screen-grid-layer/screen-grid-layer-uniforms.ts +13 -0
@@ -1,6 +1,21 @@
1
1
  // deck.gl
2
2
  // SPDX-License-Identifier: MIT
3
3
  // Copyright (c) vis.gl contributors
4
+ const uniformBlockWGSL = /* wgsl */ `\
5
+ struct triangleUniforms {
6
+ aggregationMode: f32,
7
+ colorDomain: vec2<f32>,
8
+ intensity: f32,
9
+ threshold: f32,
10
+ };
11
+
12
+ @group(0) @binding(auto) var<uniform> triangle: triangleUniforms;
13
+ @group(0) @binding(auto) var colorTexture: texture_2d<f32>;
14
+ @group(0) @binding(auto) var colorTextureSampler: sampler;
15
+ @group(0) @binding(auto) var maxTexture: texture_2d<f32>;
16
+ @group(0) @binding(auto) var weightsTexture: texture_2d<f32>;
17
+ @group(0) @binding(auto) var weightsTextureSampler: sampler;
18
+ `;
4
19
  const uniformBlock = `\
5
20
  layout(std140) uniform triangleUniforms {
6
21
  float aggregationMode;
@@ -11,6 +26,7 @@ layout(std140) uniform triangleUniforms {
11
26
  `;
12
27
  export const triangleUniforms = {
13
28
  name: 'triangle',
29
+ source: uniformBlockWGSL,
14
30
  vs: uniformBlock,
15
31
  fs: uniformBlock,
16
32
  uniformTypes: {
@@ -1 +1 @@
1
- {"version":3,"file":"triangle-layer-uniforms.js","sourceRoot":"","sources":["../../src/heatmap-layer/triangle-layer-uniforms.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAKpC,MAAM,YAAY,GAAG;;;;;;;CAOpB,CAAC;AAYF,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,IAAI,EAAE,UAAU;IAChB,EAAE,EAAE,YAAY;IAChB,EAAE,EAAE,YAAY;IAChB,YAAY,EAAE;QACZ,eAAe,EAAE,KAAK;QACtB,WAAW,EAAE,WAAW;QACxB,SAAS,EAAE,KAAK;QAChB,SAAS,EAAE,KAAK;KACjB;CAC6C,CAAC"}
1
+ {"version":3,"file":"triangle-layer-uniforms.js","sourceRoot":"","sources":["../../src/heatmap-layer/triangle-layer-uniforms.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAKpC,MAAM,gBAAgB,GAAG,UAAU,CAAC;;;;;;;;;;;;;;CAcnC,CAAC;AAEF,MAAM,YAAY,GAAG;;;;;;;CAOpB,CAAC;AAYF,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,IAAI,EAAE,UAAU;IAChB,MAAM,EAAE,gBAAgB;IACxB,EAAE,EAAE,YAAY;IAChB,EAAE,EAAE,YAAY;IAChB,YAAY,EAAE;QACZ,eAAe,EAAE,KAAK;QACtB,WAAW,EAAE,WAAW;QACxB,SAAS,EAAE,KAAK;QAChB,SAAS,EAAE,KAAK;KACjB;CAC6C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"triangle-layer.d.ts","sourceRoot":"","sources":["../../src/heatmap-layer/triangle-layer.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAC,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAC,KAAK,EAAC,MAAM,iBAAiB,CAAC;AACtC,OAAO,EAAC,KAAK,EAAE,YAAY,EAAY,MAAM,eAAe,CAAC;AAK7D,KAAK,mBAAmB,GAAG;IACzB,IAAI,EAAE;QAAC,UAAU,EAAE;YAAC,SAAS,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,MAAM,CAAA;SAAC,CAAA;KAAC,CAAC;IAC3D,WAAW,EAAE,QAAQ,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACxC,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,OAAO,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;IACpB,cAAc,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,KAAK,CAAC,mBAAmB,CAAC;IACnE,MAAM,CAAC,SAAS,SAAmB;IAEnC,KAAK,EAAG;QACN,KAAK,EAAE,KAAK,CAAC;QACb,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IAEF,UAAU;IAIV,eAAe,CAAC,EAAC,MAAM,EAAC,EAAE,YAAY,GAAG,IAAI;IAI7C,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK;IAgBhC,IAAI,IAAI,IAAI;CAuBb"}
1
+ {"version":3,"file":"triangle-layer.d.ts","sourceRoot":"","sources":["../../src/heatmap-layer/triangle-layer.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAC,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAC,KAAK,EAAC,MAAM,iBAAiB,CAAC;AACtC,OAAO,EAAC,KAAK,EAAE,YAAY,EAAmB,MAAM,eAAe,CAAC;AAMpE,KAAK,mBAAmB,GAAG;IACzB,IAAI,EAAE;QAAC,UAAU,EAAE;YAAC,SAAS,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,MAAM,CAAA;SAAC,CAAA;KAAC,CAAC;IAC3D,WAAW,EAAE,QAAQ,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACxC,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,OAAO,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;IACpB,cAAc,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,KAAK,CAAC,mBAAmB,CAAC;IACnE,MAAM,CAAC,SAAS,SAAmB;IAEnC,KAAK,EAAG;QACN,KAAK,EAAE,KAAK,CAAC;QACb,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IAEF,UAAU;IAIV,eAAe,CAAC,EAAC,MAAM,EAAC,EAAE,YAAY,GAAG,IAAI;IAI7C,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK;IAgBhC,IAAI,IAAI,IAAI;CAuBb"}
@@ -2,13 +2,14 @@
2
2
  // SPDX-License-Identifier: MIT
3
3
  // Copyright (c) vis.gl contributors
4
4
  import { Model } from '@luma.gl/engine';
5
- import { Layer, project32 } from '@deck.gl/core';
5
+ import { Layer, color, project32 } from '@deck.gl/core';
6
+ import source from "./triangle-layer.wgsl.js";
6
7
  import vs from "./triangle-layer-vertex.glsl.js";
7
8
  import fs from "./triangle-layer-fragment.glsl.js";
8
9
  import { triangleUniforms } from "./triangle-layer-uniforms.js";
9
10
  class TriangleLayer extends Layer {
10
11
  getShaders() {
11
- return super.getShaders({ vs, fs, modules: [project32, triangleUniforms] });
12
+ return super.getShaders({ source, vs, fs, modules: [project32, color, triangleUniforms] });
12
13
  }
13
14
  initializeState({ device }) {
14
15
  this.setState({ model: this._getModel(device) });
@@ -1 +1 @@
1
- {"version":3,"file":"triangle-layer.js","sourceRoot":"","sources":["../../src/heatmap-layer/triangle-layer.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAGpC,OAAO,EAAC,KAAK,EAAC,MAAM,iBAAiB,CAAC;AACtC,OAAO,EAAC,KAAK,EAAgB,SAAS,EAAC,MAAM,eAAe,CAAC;AAC7D,OAAO,EAAE,wCAAqC;AAC9C,OAAO,EAAE,0CAAuC;AAChD,OAAO,EAAgB,gBAAgB,EAAC,qCAAkC;AAc1E,MAAqB,aAAc,SAAQ,KAA0B;IASnE,UAAU;QACR,OAAO,KAAK,CAAC,UAAU,CAAC,EAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,SAAS,EAAE,gBAAgB,CAAC,EAAC,CAAC,CAAC;IAC5E,CAAC;IAED,eAAe,CAAC,EAAC,MAAM,EAAe;QACpC,IAAI,CAAC,QAAQ,CAAC,EAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAC,CAAC,CAAC;IACjD,CAAC;IAED,SAAS,CAAC,MAAc;QACtB,MAAM,EAAC,WAAW,EAAE,IAAI,EAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QAEvC,OAAO,IAAI,KAAK,CAAC,MAAM,EAAE;YACvB,GAAG,IAAI,CAAC,UAAU,EAAE;YACpB,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE;YACjB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,YAAY,EAAE;gBACZ,EAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAC;gBACxC,EAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAC;aACzC;YACD,QAAQ,EAAE,gBAAgB;YAC1B,WAAW;SACZ,CAAC,CAAC;IACL,CAAC;IAED,IAAI;QACF,MAAM,EAAC,KAAK,EAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QAC3B,MAAM,EACJ,eAAe,EACf,WAAW,EACX,SAAS,EACT,SAAS,EACT,YAAY,EACZ,UAAU,EACV,cAAc,EACf,GAAG,IAAI,CAAC,KAAK,CAAC;QACf,MAAM,aAAa,GAAkB;YACnC,eAAe;YACf,WAAW;YACX,SAAS;YACT,SAAS;YACT,YAAY;YACZ,UAAU;YACV,cAAc;SACf,CAAC;QACF,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAC,QAAQ,EAAE,aAAa,EAAC,CAAC,CAAC;QACvD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACtC,CAAC;;AAtDM,uBAAS,GAAG,eAAe,CAAC;eADhB,aAAa"}
1
+ {"version":3,"file":"triangle-layer.js","sourceRoot":"","sources":["../../src/heatmap-layer/triangle-layer.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAGpC,OAAO,EAAC,KAAK,EAAC,MAAM,iBAAiB,CAAC;AACtC,OAAO,EAAC,KAAK,EAAgB,KAAK,EAAE,SAAS,EAAC,MAAM,eAAe,CAAC;AACpE,OAAO,MAAM,iCAA8B;AAC3C,OAAO,EAAE,wCAAqC;AAC9C,OAAO,EAAE,0CAAuC;AAChD,OAAO,EAAgB,gBAAgB,EAAC,qCAAkC;AAc1E,MAAqB,aAAc,SAAQ,KAA0B;IASnE,UAAU;QACR,OAAO,KAAK,CAAC,UAAU,CAAC,EAAC,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,gBAAgB,CAAC,EAAC,CAAC,CAAC;IAC3F,CAAC;IAED,eAAe,CAAC,EAAC,MAAM,EAAe;QACpC,IAAI,CAAC,QAAQ,CAAC,EAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAC,CAAC,CAAC;IACjD,CAAC;IAED,SAAS,CAAC,MAAc;QACtB,MAAM,EAAC,WAAW,EAAE,IAAI,EAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QAEvC,OAAO,IAAI,KAAK,CAAC,MAAM,EAAE;YACvB,GAAG,IAAI,CAAC,UAAU,EAAE;YACpB,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE;YACjB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,YAAY,EAAE;gBACZ,EAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAC;gBACxC,EAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAC;aACzC;YACD,QAAQ,EAAE,gBAAgB;YAC1B,WAAW;SACZ,CAAC,CAAC;IACL,CAAC;IAED,IAAI;QACF,MAAM,EAAC,KAAK,EAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QAC3B,MAAM,EACJ,eAAe,EACf,WAAW,EACX,SAAS,EACT,SAAS,EACT,YAAY,EACZ,UAAU,EACV,cAAc,EACf,GAAG,IAAI,CAAC,KAAK,CAAC;QACf,MAAM,aAAa,GAAkB;YACnC,eAAe;YACf,WAAW;YACX,SAAS;YACT,SAAS;YACT,YAAY;YACZ,UAAU;YACV,cAAc;SACf,CAAC;QACF,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAC,QAAQ,EAAE,aAAa,EAAC,CAAC,CAAC;QACvD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACtC,CAAC;;AAtDM,uBAAS,GAAG,eAAe,CAAC;eADhB,aAAa"}
@@ -0,0 +1,3 @@
1
+ declare const _default: "struct TriangleAttributes {\n @location(0) positions: vec3<f32>,\n @location(1) texCoords: vec2<f32>,\n};\n\nstruct TriangleVaryings {\n @builtin(position) position: vec4<f32>,\n @location(0) textureCoordinates: vec2<f32>,\n @location(1) intensityMinimum: f32,\n @location(2) intensityMaximum: f32,\n};\n\n@vertex\nfn vertexMain(attributes: TriangleAttributes) -> TriangleVaryings {\n var output: TriangleVaryings;\n output.position = project_position_to_clipspace(\n attributes.positions,\n vec3<f32>(0.0),\n vec3<f32>(0.0)\n );\n // WebGPU render-target textures use a top-left origin.\n output.textureCoordinates = vec2<f32>(attributes.texCoords.x, 1.0 - attributes.texCoords.y);\n\n let maxWeights = textureLoad(maxTexture, vec2<i32>(0), 0);\n var maximumValue = select(maxWeights.r, maxWeights.g, triangle.aggregationMode > 0.5);\n var minimumValue = maximumValue * triangle.threshold;\n\n if (triangle.colorDomain.y > 0.0) {\n maximumValue = triangle.colorDomain.y;\n minimumValue = triangle.colorDomain.x;\n }\n\n output.intensityMaximum = triangle.intensity / maximumValue;\n output.intensityMinimum = triangle.intensity / minimumValue;\n return output;\n}\n\n@fragment\nfn fragmentMain(varyings: TriangleVaryings) -> @location(0) vec4<f32> {\n let weights = textureSample(weightsTexture, weightsTextureSampler, varyings.textureCoordinates);\n var weight = weights.r;\n\n if (triangle.aggregationMode > 0.5) {\n weight /= max(1.0, weights.a);\n }\n\n let colorCoordinates = vec2<f32>(\n clamp(weight * varyings.intensityMaximum, 0.0, 1.0),\n 0.5\n );\n var color = textureSample(colorTexture, colorTextureSampler, colorCoordinates);\n\n if (weight <= 0.0) {\n discard;\n }\n\n color.a *= min(weight * varyings.intensityMinimum, 1.0) * layer.opacity;\n return deckgl_premultiplied_alpha(color);\n}\n";
2
+ export default _default;
3
+ //# sourceMappingURL=triangle-layer.wgsl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"triangle-layer.wgsl.d.ts","sourceRoot":"","sources":["../../src/heatmap-layer/triangle-layer.wgsl.ts"],"names":[],"mappings":";AAIA,wBA4DE"}
@@ -0,0 +1,65 @@
1
+ // deck.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ export default /* wgsl */ `\
5
+ struct TriangleAttributes {
6
+ @location(0) positions: vec3<f32>,
7
+ @location(1) texCoords: vec2<f32>,
8
+ };
9
+
10
+ struct TriangleVaryings {
11
+ @builtin(position) position: vec4<f32>,
12
+ @location(0) textureCoordinates: vec2<f32>,
13
+ @location(1) intensityMinimum: f32,
14
+ @location(2) intensityMaximum: f32,
15
+ };
16
+
17
+ @vertex
18
+ fn vertexMain(attributes: TriangleAttributes) -> TriangleVaryings {
19
+ var output: TriangleVaryings;
20
+ output.position = project_position_to_clipspace(
21
+ attributes.positions,
22
+ vec3<f32>(0.0),
23
+ vec3<f32>(0.0)
24
+ );
25
+ // WebGPU render-target textures use a top-left origin.
26
+ output.textureCoordinates = vec2<f32>(attributes.texCoords.x, 1.0 - attributes.texCoords.y);
27
+
28
+ let maxWeights = textureLoad(maxTexture, vec2<i32>(0), 0);
29
+ var maximumValue = select(maxWeights.r, maxWeights.g, triangle.aggregationMode > 0.5);
30
+ var minimumValue = maximumValue * triangle.threshold;
31
+
32
+ if (triangle.colorDomain.y > 0.0) {
33
+ maximumValue = triangle.colorDomain.y;
34
+ minimumValue = triangle.colorDomain.x;
35
+ }
36
+
37
+ output.intensityMaximum = triangle.intensity / maximumValue;
38
+ output.intensityMinimum = triangle.intensity / minimumValue;
39
+ return output;
40
+ }
41
+
42
+ @fragment
43
+ fn fragmentMain(varyings: TriangleVaryings) -> @location(0) vec4<f32> {
44
+ let weights = textureSample(weightsTexture, weightsTextureSampler, varyings.textureCoordinates);
45
+ var weight = weights.r;
46
+
47
+ if (triangle.aggregationMode > 0.5) {
48
+ weight /= max(1.0, weights.a);
49
+ }
50
+
51
+ let colorCoordinates = vec2<f32>(
52
+ clamp(weight * varyings.intensityMaximum, 0.0, 1.0),
53
+ 0.5
54
+ );
55
+ var color = textureSample(colorTexture, colorTextureSampler, colorCoordinates);
56
+
57
+ if (weight <= 0.0) {
58
+ discard;
59
+ }
60
+
61
+ color.a *= min(weight * varyings.intensityMinimum, 1.0) * layer.opacity;
62
+ return deckgl_premultiplied_alpha(color);
63
+ }
64
+ `;
65
+ //# sourceMappingURL=triangle-layer.wgsl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"triangle-layer.wgsl.js","sourceRoot":"","sources":["../../src/heatmap-layer/triangle-layer.wgsl.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAEpC,eAAe,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4DzB,CAAC"}
@@ -0,0 +1,3 @@
1
+ declare const _default: "struct WeightAttributes {\n @builtin(vertex_index) vertexIndex: u32,\n @location(0) instancePositions: vec3<f32>,\n @location(1) instancePositions64Low: vec3<f32>,\n @location(2) instanceWeights: f32,\n};\n\nstruct WeightVaryings {\n @builtin(position) position: vec4<f32>,\n @location(0) pointCoordinates: vec2<f32>,\n @location(1) weights: vec4<f32>,\n};\n\nconst WEIGHT_QUAD_POSITIONS = array<vec2<f32>, 6>(\n vec2<f32>(-1.0, -1.0),\n vec2<f32>(1.0, -1.0),\n vec2<f32>(-1.0, 1.0),\n vec2<f32>(-1.0, 1.0),\n vec2<f32>(1.0, -1.0),\n vec2<f32>(1.0, 1.0)\n);\n\n@vertex\nfn vertexMain(attributes: WeightAttributes) -> WeightVaryings {\n var output: WeightVaryings;\n let commonPosition = project_position_vec3_f64(\n attributes.instancePositions,\n attributes.instancePositions64Low\n );\n let clipPosition =\n (commonPosition.xy - weight.commonBounds.xy) /\n (weight.commonBounds.zw - weight.commonBounds.xy) * 2.0 - vec2<f32>(1.0);\n let radiusTexels =\n project_pixel_size_float(weight.radiusPixels) * weight.textureWidth /\n (weight.commonBounds.z - weight.commonBounds.x);\n let offset = WEIGHT_QUAD_POSITIONS[attributes.vertexIndex];\n\n output.position = vec4<f32>(\n clipPosition + offset * radiusTexels * 2.0 / weight.textureWidth,\n 0.0,\n 1.0\n );\n output.pointCoordinates = (offset + vec2<f32>(1.0)) * 0.5;\n output.weights = vec4<f32>(attributes.instanceWeights * weight.weightsScale, 0.0, 0.0, 1.0);\n return output;\n}\n\n@fragment\nfn fragmentMain(varyings: WeightVaryings) -> @location(0) vec4<f32> {\n let distanceFromCenter = length(varyings.pointCoordinates - vec2<f32>(0.5));\n if (distanceFromCenter > 0.5) {\n discard;\n }\n\n let gaussian = exp(-pow(2.0 * distanceFromCenter, 2.0) / 0.05555) /\n (1.77245385 * 0.166666);\n return varyings.weights * gaussian;\n}\n";
2
+ export default _default;
3
+ //# sourceMappingURL=weights.wgsl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"weights.wgsl.d.ts","sourceRoot":"","sources":["../../src/heatmap-layer/weights.wgsl.ts"],"names":[],"mappings":";AAIA,wBA2DE"}
@@ -0,0 +1,64 @@
1
+ // deck.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ export default /* wgsl */ `\
5
+ struct WeightAttributes {
6
+ @builtin(vertex_index) vertexIndex: u32,
7
+ @location(0) instancePositions: vec3<f32>,
8
+ @location(1) instancePositions64Low: vec3<f32>,
9
+ @location(2) instanceWeights: f32,
10
+ };
11
+
12
+ struct WeightVaryings {
13
+ @builtin(position) position: vec4<f32>,
14
+ @location(0) pointCoordinates: vec2<f32>,
15
+ @location(1) weights: vec4<f32>,
16
+ };
17
+
18
+ const WEIGHT_QUAD_POSITIONS = array<vec2<f32>, 6>(
19
+ vec2<f32>(-1.0, -1.0),
20
+ vec2<f32>(1.0, -1.0),
21
+ vec2<f32>(-1.0, 1.0),
22
+ vec2<f32>(-1.0, 1.0),
23
+ vec2<f32>(1.0, -1.0),
24
+ vec2<f32>(1.0, 1.0)
25
+ );
26
+
27
+ @vertex
28
+ fn vertexMain(attributes: WeightAttributes) -> WeightVaryings {
29
+ var output: WeightVaryings;
30
+ let commonPosition = project_position_vec3_f64(
31
+ attributes.instancePositions,
32
+ attributes.instancePositions64Low
33
+ );
34
+ let clipPosition =
35
+ (commonPosition.xy - weight.commonBounds.xy) /
36
+ (weight.commonBounds.zw - weight.commonBounds.xy) * 2.0 - vec2<f32>(1.0);
37
+ let radiusTexels =
38
+ project_pixel_size_float(weight.radiusPixels) * weight.textureWidth /
39
+ (weight.commonBounds.z - weight.commonBounds.x);
40
+ let offset = WEIGHT_QUAD_POSITIONS[attributes.vertexIndex];
41
+
42
+ output.position = vec4<f32>(
43
+ clipPosition + offset * radiusTexels * 2.0 / weight.textureWidth,
44
+ 0.0,
45
+ 1.0
46
+ );
47
+ output.pointCoordinates = (offset + vec2<f32>(1.0)) * 0.5;
48
+ output.weights = vec4<f32>(attributes.instanceWeights * weight.weightsScale, 0.0, 0.0, 1.0);
49
+ return output;
50
+ }
51
+
52
+ @fragment
53
+ fn fragmentMain(varyings: WeightVaryings) -> @location(0) vec4<f32> {
54
+ let distanceFromCenter = length(varyings.pointCoordinates - vec2<f32>(0.5));
55
+ if (distanceFromCenter > 0.5) {
56
+ discard;
57
+ }
58
+
59
+ let gaussian = exp(-pow(2.0 * distanceFromCenter, 2.0) / 0.05555) /
60
+ (1.77245385 * 0.166666);
61
+ return varyings.weights * gaussian;
62
+ }
63
+ `;
64
+ //# sourceMappingURL=weights.wgsl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"weights.wgsl.js","sourceRoot":"","sources":["../../src/heatmap-layer/weights.wgsl.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAEpC,eAAe,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2DzB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"hexagon-cell-layer.d.ts","sourceRoot":"","sources":["../../src/hexagon-layer/hexagon-cell-layer.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,OAAO,EAAC,MAAM,eAAe,CAAC;AACtC,OAAO,EAAC,gBAAgB,EAAE,KAAK,EAAC,MAAM,eAAe,CAAC;AACtD,OAAO,EAAC,WAAW,EAAC,MAAM,iBAAiB,CAAC;AAI5C,OAAO,KAAK,EAAC,SAAS,EAAC,2BAAwB;AAE/C,2CAA2C;AAC3C,MAAM,MAAM,sBAAsB,GAAG;IACnC,eAAe,EAAE,QAAQ,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC5C,WAAW,EAAE,QAAQ,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACxC,WAAW,EAAE,QAAQ,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC;IAC/C,UAAU,EAAE,KAAK,EAAE,CAAC;IACpB,cAAc,EAAE,SAAS,CAAC;IAC1B,eAAe,EAAE,QAAQ,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC5C,eAAe,EAAE,QAAQ,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC;IACnD,cAAc,EAAE,QAAQ,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAC5C,CAAC;AAEF,MAAM,CAAC,OAAO,OAAO,gBAAgB,CAAC,WAAW,SAAS,EAAE,GAAG,EAAE,CAAE,SAAQ,WAAW,CACpF,IAAI,EACJ,WAAW,GAAG,QAAQ,CAAC,sBAAsB,CAAC,CAC/C;IACC,MAAM,CAAC,SAAS,SAAsB;IAEtC,KAAK,EAAG,WAAW,CAAC,OAAO,CAAC,GAAG;QAC7B,YAAY,EAAE,OAAO,CAAC;KACvB,CAAC;IAEF,UAAU;IAMV,eAAe;IA6Bf,WAAW,CAAC,MAAM,EAAE,gBAAgB,CAAC,IAAI,CAAC;IAoB1C,aAAa,CAAC,OAAO,KAAA;IAMrB,IAAI,CAAC,EAAC,QAAQ,EAAC;;KAAA;CAwChB"}
1
+ {"version":3,"file":"hexagon-cell-layer.d.ts","sourceRoot":"","sources":["../../src/hexagon-layer/hexagon-cell-layer.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,OAAO,EAAC,MAAM,eAAe,CAAC;AACtC,OAAO,EAAC,gBAAgB,EAAE,KAAK,EAAC,MAAM,eAAe,CAAC;AACtD,OAAO,EAAC,WAAW,EAAC,MAAM,iBAAiB,CAAC;AAK5C,OAAO,KAAK,EAAC,SAAS,EAAC,2BAAwB;AAE/C,2CAA2C;AAC3C,MAAM,MAAM,sBAAsB,GAAG;IACnC,eAAe,EAAE,QAAQ,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC5C,WAAW,EAAE,QAAQ,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACxC,WAAW,EAAE,QAAQ,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC;IAC/C,UAAU,EAAE,KAAK,EAAE,CAAC;IACpB,cAAc,EAAE,SAAS,CAAC;IAC1B,eAAe,EAAE,QAAQ,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC5C,eAAe,EAAE,QAAQ,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC;IACnD,cAAc,EAAE,QAAQ,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAC5C,CAAC;AAEF,MAAM,CAAC,OAAO,OAAO,gBAAgB,CAAC,WAAW,SAAS,EAAE,GAAG,EAAE,CAAE,SAAQ,WAAW,CACpF,IAAI,EACJ,WAAW,GAAG,QAAQ,CAAC,sBAAsB,CAAC,CAC/C;IACC,MAAM,CAAC,SAAS,SAAsB;IAEtC,KAAK,EAAG,WAAW,CAAC,OAAO,CAAC,GAAG;QAC7B,YAAY,EAAE,OAAO,CAAC;KACvB,CAAC;IAEF,UAAU;IAMV,eAAe;IA6Bf,WAAW,CAAC,MAAM,EAAE,gBAAgB,CAAC,IAAI,CAAC;IAoB1C,aAAa,CAAC,OAAO,KAAA;IAMrB,IAAI,CAAC,EAAC,QAAQ,EAAC;;KAAA;CAsChB"}
@@ -3,13 +3,14 @@
3
3
  // Copyright (c) vis.gl contributors
4
4
  import { ColumnLayer } from '@deck.gl/layers';
5
5
  import { createColorRangeTexture, updateColorRangeTexture } from "../common/utils/color-utils.js";
6
+ import source from "./hexagon-cell-layer.wgsl.js";
6
7
  import vs from "./hexagon-cell-layer-vertex.glsl.js";
7
8
  import { hexagonUniforms } from "./hexagon-layer-uniforms.js";
8
9
  class HexagonCellLayer extends ColumnLayer {
9
10
  getShaders() {
10
11
  const shaders = super.getShaders();
11
12
  shaders.modules.push(hexagonUniforms);
12
- return { ...shaders, vs };
13
+ return { ...shaders, source, vs };
13
14
  }
14
15
  initializeState() {
15
16
  super.initializeState();
@@ -61,7 +62,6 @@ class HexagonCellLayer extends ColumnLayer {
61
62
  const colorCutoff = this.props.colorCutoff || [-Infinity, Infinity];
62
63
  const elevationCutoff = this.props.elevationCutoff || [-Infinity, Infinity];
63
64
  const fillModel = this.state.fillModel;
64
- fillModel.setVertexCount(this.state.fillVertexCount);
65
65
  const hexagonProps = {
66
66
  colorDomain: [
67
67
  Math.max(colorDomain[0], colorCutoff[0]), // instanceColorValue that maps to colorRange[0]
@@ -1 +1 @@
1
- {"version":3,"file":"hexagon-cell-layer.js","sourceRoot":"","sources":["../../src/hexagon-layer/hexagon-cell-layer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hexagon-cell-layer.js","sourceRoot":"","sources":["../../src/hexagon-layer/hexagon-cell-layer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ declare const _default: "const HEXBIN_DISTANCE: vec2<f32> = vec2<f32>(1.7320508, 1.5);\n\nstruct Attributes {\n @builtin(instance_index) instanceIndex: u32,\n @location(0) positions: vec3<f32>,\n @location(1) normals: vec3<f32>,\n @location(2) instancePositions: vec2<f32>,\n @location(3) instanceColorValues: f32,\n @location(4) instanceElevationValues: f32,\n};\n\nstruct Varyings {\n @builtin(position) position: vec4<f32>,\n @location(0) color: vec4<f32>,\n @location(1) pickingColor: vec3<f32>,\n};\n\nfn hexbinCentroid(binId: vec2<f32>, radius: f32) -> vec2<f32> {\n var adjustedBinId = binId;\n adjustedBinId.x += fract(adjustedBinId.y * 0.5);\n return adjustedBinId * HEXBIN_DISTANCE * radius;\n}\n\nfn interpolate(value: f32, domain: vec2<f32>, range: vec2<f32>) -> f32 {\n let ratio = clamp((value - domain.x) / (domain.y - domain.x), 0.0, 1.0);\n return mix(range.x, range.y, ratio);\n}\n\nfn sampleColorRange(value: f32, domain: vec2<f32>) -> vec4<f32> {\n let ratio = (value - domain.x) / (domain.y - domain.x);\n return textureSampleLevel(colorRange, colorRangeSampler, vec2<f32>(ratio, 0.5), 0.0);\n}\n\n@vertex\nfn vertexMain(attributes: Attributes) -> Varyings {\n var output: Varyings;\n geometry.pickingColor = picking_getPickingColorFromIndex(attributes.instanceIndex);\n output.pickingColor = geometry.pickingColor;\n\n if (\n attributes.instanceColorValues != attributes.instanceColorValues ||\n attributes.instanceColorValues < hexagon.colorDomain.z ||\n attributes.instanceColorValues > hexagon.colorDomain.w ||\n attributes.instanceElevationValues < hexagon.elevationDomain.z ||\n attributes.instanceElevationValues > hexagon.elevationDomain.w\n ) {\n output.position = vec4<f32>(0.0);\n output.color = vec4<f32>(0.0);\n return output;\n }\n\n var commonPosition =\n hexbinCentroid(attributes.instancePositions, column.radius) +\n (hexagon.originCommon - project.commonOrigin.xy);\n commonPosition += attributes.positions.xy * column.radius * column.coverage;\n geometry.position = vec4<f32>(commonPosition, 0.0, 1.0);\n geometry.normal = project_normal(attributes.normals);\n\n if (column.extruded > 0.5) {\n var elevation = interpolate(\n attributes.instanceElevationValues,\n hexagon.elevationDomain.xy,\n hexagon.elevationRange\n );\n elevation = project_size_float(elevation);\n geometry.position.z = (attributes.positions.z + 1.0) / 2.0 * elevation;\n }\n\n output.position = project_common_position_to_clipspace(geometry.position);\n var colorValue = sampleColorRange(attributes.instanceColorValues, hexagon.colorDomain.xy);\n if (column.extruded > 0.5) {\n colorValue = vec4<f32>(\n lighting_getLightColor2(\n colorValue.rgb,\n project.cameraPosition,\n geometry.position.xyz,\n geometry.normal\n ),\n colorValue.a\n );\n }\n output.color = vec4<f32>(colorValue.rgb, colorValue.a * layer.opacity);\n return output;\n}\n\n@fragment\nfn fragmentMain(varyings: Varyings) -> @location(0) vec4<f32> {\n if (picking.isActive > 0.5) {\n if (!picking_isColorValid(varyings.pickingColor)) {\n discard;\n }\n return vec4<f32>(varyings.pickingColor, 1.0);\n }\n\n var color = varyings.color;\n if (picking.isHighlightActive > 0.5) {\n let highlightedObjectColor = picking_normalizeColor(picking.highlightedObjectColor);\n if (picking_isColorZero(abs(varyings.pickingColor - highlightedObjectColor))) {\n let highLightAlpha = picking.highlightColor.a;\n let blendedAlpha = highLightAlpha + color.a * (1.0 - highLightAlpha);\n if (blendedAlpha > 0.0) {\n let highLightRatio = highLightAlpha / blendedAlpha;\n color = vec4<f32>(\n mix(color.rgb, picking.highlightColor.rgb, highLightRatio),\n blendedAlpha\n );\n } else {\n color = vec4<f32>(color.rgb, 0.0);\n }\n }\n }\n\n return deckgl_premultiplied_alpha(color);\n}\n";
2
+ export default _default;
3
+ //# sourceMappingURL=hexagon-cell-layer.wgsl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hexagon-cell-layer.wgsl.d.ts","sourceRoot":"","sources":["../../src/hexagon-layer/hexagon-cell-layer.wgsl.ts"],"names":[],"mappings":";AAIA,wBAmHE"}
@@ -0,0 +1,120 @@
1
+ // deck.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ export default /* wgsl */ `\
5
+ const HEXBIN_DISTANCE: vec2<f32> = vec2<f32>(1.7320508, 1.5);
6
+
7
+ struct Attributes {
8
+ @builtin(instance_index) instanceIndex: u32,
9
+ @location(0) positions: vec3<f32>,
10
+ @location(1) normals: vec3<f32>,
11
+ @location(2) instancePositions: vec2<f32>,
12
+ @location(3) instanceColorValues: f32,
13
+ @location(4) instanceElevationValues: f32,
14
+ };
15
+
16
+ struct Varyings {
17
+ @builtin(position) position: vec4<f32>,
18
+ @location(0) color: vec4<f32>,
19
+ @location(1) pickingColor: vec3<f32>,
20
+ };
21
+
22
+ fn hexbinCentroid(binId: vec2<f32>, radius: f32) -> vec2<f32> {
23
+ var adjustedBinId = binId;
24
+ adjustedBinId.x += fract(adjustedBinId.y * 0.5);
25
+ return adjustedBinId * HEXBIN_DISTANCE * radius;
26
+ }
27
+
28
+ fn interpolate(value: f32, domain: vec2<f32>, range: vec2<f32>) -> f32 {
29
+ let ratio = clamp((value - domain.x) / (domain.y - domain.x), 0.0, 1.0);
30
+ return mix(range.x, range.y, ratio);
31
+ }
32
+
33
+ fn sampleColorRange(value: f32, domain: vec2<f32>) -> vec4<f32> {
34
+ let ratio = (value - domain.x) / (domain.y - domain.x);
35
+ return textureSampleLevel(colorRange, colorRangeSampler, vec2<f32>(ratio, 0.5), 0.0);
36
+ }
37
+
38
+ @vertex
39
+ fn vertexMain(attributes: Attributes) -> Varyings {
40
+ var output: Varyings;
41
+ geometry.pickingColor = picking_getPickingColorFromIndex(attributes.instanceIndex);
42
+ output.pickingColor = geometry.pickingColor;
43
+
44
+ if (
45
+ attributes.instanceColorValues != attributes.instanceColorValues ||
46
+ attributes.instanceColorValues < hexagon.colorDomain.z ||
47
+ attributes.instanceColorValues > hexagon.colorDomain.w ||
48
+ attributes.instanceElevationValues < hexagon.elevationDomain.z ||
49
+ attributes.instanceElevationValues > hexagon.elevationDomain.w
50
+ ) {
51
+ output.position = vec4<f32>(0.0);
52
+ output.color = vec4<f32>(0.0);
53
+ return output;
54
+ }
55
+
56
+ var commonPosition =
57
+ hexbinCentroid(attributes.instancePositions, column.radius) +
58
+ (hexagon.originCommon - project.commonOrigin.xy);
59
+ commonPosition += attributes.positions.xy * column.radius * column.coverage;
60
+ geometry.position = vec4<f32>(commonPosition, 0.0, 1.0);
61
+ geometry.normal = project_normal(attributes.normals);
62
+
63
+ if (column.extruded > 0.5) {
64
+ var elevation = interpolate(
65
+ attributes.instanceElevationValues,
66
+ hexagon.elevationDomain.xy,
67
+ hexagon.elevationRange
68
+ );
69
+ elevation = project_size_float(elevation);
70
+ geometry.position.z = (attributes.positions.z + 1.0) / 2.0 * elevation;
71
+ }
72
+
73
+ output.position = project_common_position_to_clipspace(geometry.position);
74
+ var colorValue = sampleColorRange(attributes.instanceColorValues, hexagon.colorDomain.xy);
75
+ if (column.extruded > 0.5) {
76
+ colorValue = vec4<f32>(
77
+ lighting_getLightColor2(
78
+ colorValue.rgb,
79
+ project.cameraPosition,
80
+ geometry.position.xyz,
81
+ geometry.normal
82
+ ),
83
+ colorValue.a
84
+ );
85
+ }
86
+ output.color = vec4<f32>(colorValue.rgb, colorValue.a * layer.opacity);
87
+ return output;
88
+ }
89
+
90
+ @fragment
91
+ fn fragmentMain(varyings: Varyings) -> @location(0) vec4<f32> {
92
+ if (picking.isActive > 0.5) {
93
+ if (!picking_isColorValid(varyings.pickingColor)) {
94
+ discard;
95
+ }
96
+ return vec4<f32>(varyings.pickingColor, 1.0);
97
+ }
98
+
99
+ var color = varyings.color;
100
+ if (picking.isHighlightActive > 0.5) {
101
+ let highlightedObjectColor = picking_normalizeColor(picking.highlightedObjectColor);
102
+ if (picking_isColorZero(abs(varyings.pickingColor - highlightedObjectColor))) {
103
+ let highLightAlpha = picking.highlightColor.a;
104
+ let blendedAlpha = highLightAlpha + color.a * (1.0 - highLightAlpha);
105
+ if (blendedAlpha > 0.0) {
106
+ let highLightRatio = highLightAlpha / blendedAlpha;
107
+ color = vec4<f32>(
108
+ mix(color.rgb, picking.highlightColor.rgb, highLightRatio),
109
+ blendedAlpha
110
+ );
111
+ } else {
112
+ color = vec4<f32>(color.rgb, 0.0);
113
+ }
114
+ }
115
+ }
116
+
117
+ return deckgl_premultiplied_alpha(color);
118
+ }
119
+ `;
120
+ //# sourceMappingURL=hexagon-cell-layer.wgsl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hexagon-cell-layer.wgsl.js","sourceRoot":"","sources":["../../src/hexagon-layer/hexagon-cell-layer.wgsl.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAEpC,eAAe,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmHzB,CAAC"}
@@ -8,6 +8,7 @@ export type HexagonProps = {
8
8
  };
9
9
  export declare const hexagonUniforms: {
10
10
  readonly name: "hexagon";
11
+ readonly source: "struct HexagonUniforms {\n colorDomain: vec4<f32>,\n elevationDomain: vec4<f32>,\n elevationRange: vec2<f32>,\n originCommon: vec2<f32>,\n};\n\n@group(0) @binding(auto) var<uniform> hexagon: HexagonUniforms;\n@group(0) @binding(auto) var colorRange: texture_2d<f32>;\n@group(0) @binding(auto) var colorRangeSampler: sampler;\n";
11
12
  readonly vs: "layout(std140) uniform hexagonUniforms {\n vec4 colorDomain;\n vec4 elevationDomain;\n vec2 elevationRange;\n vec2 originCommon;\n} hexagon;\n";
12
13
  readonly uniformTypes: {
13
14
  readonly colorDomain: "vec4<f32>";
@@ -1 +1 @@
1
- {"version":3,"file":"hexagon-layer-uniforms.d.ts","sourceRoot":"","sources":["../../src/hexagon-layer/hexagon-layer-uniforms.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,OAAO,EAAC,MAAM,eAAe,CAAC;AAYtC,MAAM,MAAM,YAAY,GAAG;IACzB,WAAW,EAAE,QAAQ,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACxD,UAAU,EAAE,OAAO,CAAC;IACpB,eAAe,EAAE,QAAQ,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC5D,cAAc,EAAE,QAAQ,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC3C,YAAY,EAAE,QAAQ,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAC1C,CAAC;AAEF,eAAO,MAAM,eAAe;;;;;;;;;CASmB,CAAC"}
1
+ {"version":3,"file":"hexagon-layer-uniforms.d.ts","sourceRoot":"","sources":["../../src/hexagon-layer/hexagon-layer-uniforms.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,OAAO,EAAC,MAAM,eAAe,CAAC;AAyBtC,MAAM,MAAM,YAAY,GAAG;IACzB,WAAW,EAAE,QAAQ,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACxD,UAAU,EAAE,OAAO,CAAC;IACpB,eAAe,EAAE,QAAQ,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC5D,cAAc,EAAE,QAAQ,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC3C,YAAY,EAAE,QAAQ,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAC1C,CAAC;AAEF,eAAO,MAAM,eAAe;;;;;;;;;;CAUmB,CAAC"}
@@ -1,6 +1,18 @@
1
1
  // deck.gl
2
2
  // SPDX-License-Identifier: MIT
3
3
  // Copyright (c) vis.gl contributors
4
+ const uniformBlockWGSL = /* wgsl */ `\
5
+ struct HexagonUniforms {
6
+ colorDomain: vec4<f32>,
7
+ elevationDomain: vec4<f32>,
8
+ elevationRange: vec2<f32>,
9
+ originCommon: vec2<f32>,
10
+ };
11
+
12
+ @group(0) @binding(auto) var<uniform> hexagon: HexagonUniforms;
13
+ @group(0) @binding(auto) var colorRange: texture_2d<f32>;
14
+ @group(0) @binding(auto) var colorRangeSampler: sampler;
15
+ `;
4
16
  const uniformBlock = /* glsl */ `\
5
17
  layout(std140) uniform hexagonUniforms {
6
18
  vec4 colorDomain;
@@ -11,6 +23,7 @@ layout(std140) uniform hexagonUniforms {
11
23
  `;
12
24
  export const hexagonUniforms = {
13
25
  name: 'hexagon',
26
+ source: uniformBlockWGSL,
14
27
  vs: uniformBlock,
15
28
  uniformTypes: {
16
29
  colorDomain: 'vec4<f32>',
@@ -1 +1 @@
1
- {"version":3,"file":"hexagon-layer-uniforms.js","sourceRoot":"","sources":["../../src/hexagon-layer/hexagon-layer-uniforms.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAKpC,MAAM,YAAY,GAAG,UAAU,CAAC;;;;;;;CAO/B,CAAC;AAUF,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,IAAI,EAAE,SAAS;IACf,EAAE,EAAE,YAAY;IAChB,YAAY,EAAE;QACZ,WAAW,EAAE,WAAW;QACxB,eAAe,EAAE,WAAW;QAC5B,cAAc,EAAE,WAAW;QAC3B,YAAY,EAAE,WAAW;KAC1B;CAC4C,CAAC"}
1
+ {"version":3,"file":"hexagon-layer-uniforms.js","sourceRoot":"","sources":["../../src/hexagon-layer/hexagon-layer-uniforms.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAKpC,MAAM,gBAAgB,GAAG,UAAU,CAAC;;;;;;;;;;;CAWnC,CAAC;AAEF,MAAM,YAAY,GAAG,UAAU,CAAC;;;;;;;CAO/B,CAAC;AAUF,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,IAAI,EAAE,SAAS;IACf,MAAM,EAAE,gBAAgB;IACxB,EAAE,EAAE,YAAY;IAChB,YAAY,EAAE;QACZ,WAAW,EAAE,WAAW;QACxB,eAAe,EAAE,WAAW;QAC5B,cAAc,EAAE,WAAW;QAC3B,YAAY,EAAE,WAAW;KAC1B;CAC4C,CAAC"}