mapicgc-gl-js 1.0.7 → 1.0.8

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 (52) hide show
  1. package/README.md +2 -4
  2. package/dist/array-utils-flat-DeB-J5jn.mjs +1523 -0
  3. package/dist/assets/maplibre-gl-worker-HMCkgiD4.js +10 -0
  4. package/dist/buffer-transform-CH0poqqn.mjs +941 -0
  5. package/dist/expression-CtaQKvTZ.mjs +3444 -0
  6. package/dist/get-attribute-from-layouts-DqvACIaG.mjs +936 -0
  7. package/dist/{html2canvas-DhrjCa5K-6_3CwS_m.mjs → html2canvas-Cgp0Hyhk-HIw4n-A9.mjs} +105 -109
  8. package/dist/{index.es-D_FsJY9H-CO3QIBGM.mjs → index.es-lgdlL0gw-Bl7I-U5B.mjs} +176 -176
  9. package/dist/mapicgc-gl-js.css +1 -1
  10. package/dist/mapicgc-gl.css +199 -0
  11. package/dist/mapicgc-gl.js +5079 -856
  12. package/dist/mapicgc-gl.mjs +85573 -61841
  13. package/dist/purify.es-DNpVkA56-DxzGf9c8.mjs +769 -0
  14. package/dist/{chunk-efA98nb6-Dfm7IivL.mjs → rolldown-runtime-3b4jIN3o-CmciV3xi.mjs} +2 -2
  15. package/dist/{typeof-CTd55yxz-BxqQpTq1.mjs → typeof-C3azmBUr-9LkZMuan.mjs} +1 -1
  16. package/dist/webgl-Cep-x0-T.mjs +784 -0
  17. package/package.json +20 -15
  18. package/public/mapicgc-gl.css +199 -0
  19. package/src/controls/ApiTerritorialControl.js +222 -0
  20. package/src/index.js +18 -1
  21. package/src/map/Map.js +245 -144
  22. package/src/mapicgc-config.json +1303 -8
  23. package/src/plugins/CompareMaps.js +2 -1
  24. package/src/territorial/ApiTerritorialControl.js +1 -0
  25. package/src/territorial/mostraPanellInfo.js +250 -0
  26. package/src/territorial/searchApiTerritorialICGC.js +250 -0
  27. package/test/exemples/addApiTerritorialICGC.html +113 -0
  28. package/test/exemples/addBasemap.html +4 -4
  29. package/test/exemples/addCompare.html +7 -6
  30. package/test/exemples/addControl.html +12 -6
  31. package/test/exemples/addFeatureQuery.html +5 -4
  32. package/test/exemples/addGeocoderICGC.html +5 -4
  33. package/test/exemples/addICGCTerrain.html +5 -4
  34. package/test/exemples/addICGCTerrainCustomStyle.html +5 -4
  35. package/test/exemples/addImageLayerICGC.html +5 -4
  36. package/test/exemples/addLayerGeojson.html +5 -4
  37. package/test/exemples/addLayerTree.html +5 -4
  38. package/test/exemples/addLogo.html +5 -3
  39. package/test/exemples/addMapStyle.html +5 -4
  40. package/test/exemples/addMarker.html +5 -4
  41. package/test/exemples/addMouseCoordinateControl.html +5 -4
  42. package/test/exemples/addReliefStyle.html +6 -5
  43. package/test/exemples/addVectorLayerICGC.html +5 -4
  44. package/test/exemples/advancedExemple.html +5 -4
  45. package/test/exemples/fetchData.html +6 -5
  46. package/test/exemples/fetchDataAndMenu.html +5 -4
  47. package/test/exemples/styleOrto3D.html +8 -4
  48. package/test/vitest/ApiTerritorialControl.test.js +76 -0
  49. package/vite.config.mjs +16 -5
  50. package/dist/purify.es-DVGU85zV-CJOZ7ABI.mjs +0 -549
  51. package/dist/webgl-device-B1jTrfKA.mjs +0 -6880
  52. package/dist/webgl-device-D8jkwRzb.mjs +0 -2
@@ -0,0 +1,3444 @@
1
+ import { _ as e, a as t, b as n, c as r, f as i, g as a, i as o, l as s, m as c, n as l, r as u, s as d, v as f, y as p } from "./array-utils-flat-DeB-J5jn.mjs";
2
+ //#region node_modules/@math.gl/types/dist/is-array.js
3
+ function m(e) {
4
+ return ArrayBuffer.isView(e) && !(e instanceof DataView);
5
+ }
6
+ function h(e) {
7
+ return Array.isArray(e) ? e.length === 0 || typeof e[0] == "number" : !1;
8
+ }
9
+ function g(e) {
10
+ return m(e) || h(e);
11
+ }
12
+ //#endregion
13
+ //#region node_modules/@luma.gl/shadertools/dist/lib/shader-assembly/wgsl-binding-scan.js
14
+ var _ = "(?:var<\\s*(uniform|storage(?:\\s*,\\s*[A-Za-z_][A-Za-z0-9_]*)?)\\s*>|var)\\s+([A-Za-z_][A-Za-z0-9_]*)", v = "\\s*", y = [RegExp(`@binding\\(\\s*(auto|\\d+)\\s*\\)${v}@group\\(\\s*(\\d+)\\s*\\)${v}${_}`, "g"), RegExp(`@group\\(\\s*(\\d+)\\s*\\)${v}@binding\\(\\s*(auto|\\d+)\\s*\\)${v}${_}`, "g")], b = [RegExp(`@binding\\(\\s*(auto|\\d+)\\s*\\)${v}@group\\(\\s*(\\d+)\\s*\\)${v}${_}`, "g"), RegExp(`@group\\(\\s*(\\d+)\\s*\\)${v}@binding\\(\\s*(auto|\\d+)\\s*\\)${v}${_}`, "g")], x = [RegExp(`@binding\\(\\s*(\\d+)\\s*\\)${v}@group\\(\\s*(\\d+)\\s*\\)${v}${_}`, "g"), RegExp(`@group\\(\\s*(\\d+)\\s*\\)${v}@binding\\(\\s*(\\d+)\\s*\\)${v}${_}`, "g")], S = [
15
+ RegExp(`@binding\\(\\s*(auto)\\s*\\)\\s*@group\\(\\s*(\\d+)\\s*\\)\\s*${_}`, "g"),
16
+ RegExp(`@group\\(\\s*(\\d+)\\s*\\)\\s*@binding\\(\\s*(auto)\\s*\\)\\s*${_}`, "g"),
17
+ RegExp(`@binding\\(\\s*(auto)\\s*\\)\\s*@group\\(\\s*(\\d+)\\s*\\)(?:[\\s\\n\\r]*@[A-Za-z_][^\\n\\r]*)*[\\s\\n\\r]*${_}`, "g"),
18
+ RegExp(`@group\\(\\s*(\\d+)\\s*\\)\\s*@binding\\(\\s*(auto)\\s*\\)(?:[\\s\\n\\r]*@[A-Za-z_][^\\n\\r]*)*[\\s\\n\\r]*${_}`, "g")
19
+ ];
20
+ function C(e) {
21
+ let t = e.split(""), n = 0, r = 0, i = !1, a = !1, o = !1;
22
+ for (; n < e.length;) {
23
+ let s = e[n], c = e[n + 1];
24
+ if (a) {
25
+ o ? o = !1 : s === "\\" ? o = !0 : s === "\"" && (a = !1), n++;
26
+ continue;
27
+ }
28
+ if (i) {
29
+ s === "\n" || s === "\r" ? i = !1 : t[n] = " ", n++;
30
+ continue;
31
+ }
32
+ if (r > 0) {
33
+ if (s === "/" && c === "*") {
34
+ t[n] = " ", t[n + 1] = " ", r++, n += 2;
35
+ continue;
36
+ }
37
+ if (s === "*" && c === "/") {
38
+ t[n] = " ", t[n + 1] = " ", r--, n += 2;
39
+ continue;
40
+ }
41
+ s !== "\n" && s !== "\r" && (t[n] = " "), n++;
42
+ continue;
43
+ }
44
+ if (s === "\"") {
45
+ a = !0, n++;
46
+ continue;
47
+ }
48
+ if (s === "/" && c === "/") {
49
+ t[n] = " ", t[n + 1] = " ", i = !0, n += 2;
50
+ continue;
51
+ }
52
+ if (s === "/" && c === "*") {
53
+ t[n] = " ", t[n + 1] = " ", r = 1, n += 2;
54
+ continue;
55
+ }
56
+ n++;
57
+ }
58
+ return t.join("");
59
+ }
60
+ function w(e, t) {
61
+ let n = C(e), r = [];
62
+ for (let i of t) {
63
+ i.lastIndex = 0;
64
+ let a;
65
+ for (a = i.exec(n); a;) {
66
+ let o = i === t[0], s = a.index, c = a[0].length;
67
+ r.push({
68
+ match: e.slice(s, s + c),
69
+ index: s,
70
+ length: c,
71
+ bindingToken: a[o ? 1 : 2],
72
+ groupToken: a[o ? 2 : 1],
73
+ accessDeclaration: a[3]?.trim(),
74
+ name: a[4]
75
+ }), a = i.exec(n);
76
+ }
77
+ }
78
+ return r.sort((e, t) => e.index - t.index);
79
+ }
80
+ function ee(e, t, n) {
81
+ let r = w(e, t);
82
+ if (!r.length) return e;
83
+ let i = "", a = 0;
84
+ for (let t of r) i += e.slice(a, t.index), i += n(t), a = t.index + t.length;
85
+ return i += e.slice(a), i;
86
+ }
87
+ function T(e) {
88
+ return /@binding\(\s*auto\s*\)/.test(C(e));
89
+ }
90
+ function te(e, t) {
91
+ return w(e, t === y || t === b ? S : t).find((e) => e.bindingToken === "auto");
92
+ }
93
+ //#endregion
94
+ //#region node_modules/@luma.gl/shadertools/dist/lib/shader-assembly/wgsl-interface-scan.js
95
+ function ne(e, t = {}) {
96
+ let n = re(e), r = ie(n);
97
+ if (!r) return null;
98
+ let i = ae(n, r);
99
+ if (!i) return null;
100
+ let a = se(n, r, i);
101
+ if (!a) return null;
102
+ if (t.scanVertexAttributes === !1) return {
103
+ attributes: [],
104
+ bindings: a
105
+ };
106
+ let o = oe(n, r);
107
+ if (!o) return null;
108
+ let s = fe(n, r, i, o, t.vertexEntryPoint);
109
+ return s ? {
110
+ attributes: s,
111
+ bindings: a
112
+ } : null;
113
+ }
114
+ function re(e) {
115
+ let t = C(e), n = /[A-Za-z_][A-Za-z0-9_]*|(?:0[xX][0-9A-Fa-f]+|\d+)|[@(){}<>\[\]:,;=]/g, r = [], i = n.exec(t);
116
+ for (; i;) r.push({
117
+ value: i[0],
118
+ index: i.index
119
+ }), i = n.exec(t);
120
+ return r;
121
+ }
122
+ function ie(e) {
123
+ let t = [], n = 0;
124
+ for (let r of e) {
125
+ if (r.value === "}" && n === 0) return null;
126
+ t.push(n), r.value === "{" ? n++ : r.value === "}" && n--;
127
+ }
128
+ return n === 0 ? t : null;
129
+ }
130
+ function ae(e, t) {
131
+ let n = /* @__PURE__ */ new Map();
132
+ for (let r = 0; r < e.length; r++) {
133
+ if (t[r] !== 0 || e[r].value !== "alias") continue;
134
+ let i = e[r + 1]?.value;
135
+ if (!O(i) || e[r + 2]?.value !== "=" || n.has(i)) return null;
136
+ let a = Ce(e, t, r + 3, ";");
137
+ if (a < 0 || a === r + 3) return null;
138
+ n.set(i, D(e.slice(r + 3, a))), r = a;
139
+ }
140
+ return n;
141
+ }
142
+ function oe(e, t) {
143
+ let n = /* @__PURE__ */ new Map();
144
+ for (let r = 0; r < e.length; r++) {
145
+ if (t[r] !== 0 || e[r].value !== "struct") continue;
146
+ let i = e[r + 1]?.value, a = r + 2;
147
+ if (!O(i) || n.has(i) || e[a]?.value !== "{") return null;
148
+ let o = xe(e, a, "{", "}");
149
+ if (o < 0) return null;
150
+ n.set(i, e.slice(a + 1, o)), r = o;
151
+ }
152
+ return n;
153
+ }
154
+ function se(e, t, n) {
155
+ let r = [], i = /* @__PURE__ */ new Set(), a = /* @__PURE__ */ new Set();
156
+ for (let o = 0; o < e.length; o++) {
157
+ if (t[o] !== 0 || e[o].value !== "var") continue;
158
+ let s = we(e, t, o), c = e.slice(s, o), l = ve(c, "group"), u = ve(c, "binding");
159
+ if (l === null || u === null || l === void 0 != (u === void 0)) return null;
160
+ if (l === void 0 || u === void 0) continue;
161
+ let d = o + 1, f = [];
162
+ if (e[d]?.value === "<") {
163
+ let t = xe(e, d, "<", ">");
164
+ if (t < 0) return null;
165
+ let n = E(e.slice(d + 1, t), ",");
166
+ if (!n) return null;
167
+ f = n.map(D), d = t + 1;
168
+ }
169
+ let p = e[d]?.value;
170
+ if (!O(p) || e[d + 1]?.value !== ":") return null;
171
+ let m = Ce(e, t, d + 2, ";");
172
+ if (m < 0 || m === d + 2) return null;
173
+ let h = he(D(e.slice(d + 2, m)), n);
174
+ if (!h) return null;
175
+ let g = ce({
176
+ name: p,
177
+ group: l,
178
+ location: u,
179
+ addressSpace: f,
180
+ resourceType: h
181
+ }), _ = `${l}:${u}`;
182
+ if (!g || i.has(_) || a.has(p)) return null;
183
+ r.push(g), i.add(_), a.add(p), o = m;
184
+ }
185
+ return de(r), r.sort((e, t) => e.group - t.group || e.location - t.location || e.name.localeCompare(t.name));
186
+ }
187
+ function ce(e) {
188
+ let { name: t, group: n, location: r, addressSpace: i, resourceType: a } = e, o = {
189
+ name: t,
190
+ group: n,
191
+ location: r
192
+ };
193
+ if (i[0] === "uniform" && i.length === 1) return {
194
+ ...o,
195
+ type: "uniform"
196
+ };
197
+ if (i[0] === "storage" && i.length <= 2) {
198
+ let e = i[1] || "read";
199
+ return e === "read" ? {
200
+ ...o,
201
+ type: "read-only-storage"
202
+ } : e === "read_write" ? {
203
+ ...o,
204
+ type: "storage"
205
+ } : null;
206
+ }
207
+ return i.length > 0 ? null : a === "sampler" || a === "sampler_comparison" ? {
208
+ ...o,
209
+ type: "sampler",
210
+ ...a === "sampler_comparison" ? { samplerType: "comparison" } : {}
211
+ } : a === "texture_external" ? {
212
+ ...o,
213
+ type: "external-texture"
214
+ } : le(o, a) || ue(o, a);
215
+ }
216
+ function le(e, t) {
217
+ let n = /^texture_storage_(1d|2d|2d_array|3d)<([A-Za-z0-9_]+),(read|write|read_write)>$/.exec(t);
218
+ if (!n) return null;
219
+ let r = {
220
+ read: "read-only",
221
+ write: "write-only",
222
+ read_write: "read-write"
223
+ }[n[3]];
224
+ return {
225
+ ...e,
226
+ type: "storage",
227
+ format: n[2],
228
+ access: r,
229
+ viewDimension: be(n[1])
230
+ };
231
+ }
232
+ function ue(e, t) {
233
+ let n = /^texture_(multisampled_)?(1d|2d|2d_array|cube|cube_array|3d)<(f32|i32|u32)>$/.exec(t);
234
+ if (n) {
235
+ if (n[1] && n[2] !== "2d") return null;
236
+ let t = {
237
+ f32: "float",
238
+ i32: "sint",
239
+ u32: "uint"
240
+ }[n[3]];
241
+ return {
242
+ ...e,
243
+ type: "texture",
244
+ viewDimension: be(n[2]),
245
+ sampleType: t,
246
+ multisampled: !!n[1]
247
+ };
248
+ }
249
+ let r = /^texture_depth_(multisampled_)?(2d|2d_array|cube|cube_array)$/.exec(t);
250
+ return !r || r[1] && r[2] !== "2d" ? null : {
251
+ ...e,
252
+ type: "texture",
253
+ viewDimension: be(r[2]),
254
+ sampleType: "depth",
255
+ multisampled: !!r[1]
256
+ };
257
+ }
258
+ function de(e) {
259
+ for (let t of e) {
260
+ if (t.type !== "sampler" || t.samplerType || !t.name.endsWith("Sampler")) continue;
261
+ let n = t.name.slice(0, -7);
262
+ e.find((e) => e.type === "texture" && e.name === n && e.group === t.group)?.sampleType === "depth" && (t.samplerType = "non-filtering");
263
+ }
264
+ }
265
+ function fe(e, t, n, r, i) {
266
+ let a = pe(e, t);
267
+ if (!a) return null;
268
+ let o = a.filter((e) => e.vertex), s = i ? o.find((e) => e.name === i) : o.length === 1 ? o[0] : void 0;
269
+ if (!s) return o.length === 0 && !i ? [] : null;
270
+ let c = E(s.parameters, ",");
271
+ if (!c) return null;
272
+ let l = [], u = /* @__PURE__ */ new Set(), d = /* @__PURE__ */ new Set(), f = /* @__PURE__ */ new Set();
273
+ for (let e of c) if (e.length > 0 && !me({
274
+ declaration: e,
275
+ aliases: n,
276
+ structures: r,
277
+ attributes: l,
278
+ attributeLocations: u,
279
+ attributeNames: d,
280
+ visitedStructures: f
281
+ })) return null;
282
+ return l.sort((e, t) => e.location - t.location || e.name.localeCompare(t.name));
283
+ }
284
+ function pe(e, t) {
285
+ let n = [], r = /* @__PURE__ */ new Set();
286
+ for (let i = 0; i < e.length; i++) {
287
+ if (t[i] !== 0 || e[i].value !== "fn") continue;
288
+ let a = e[i + 1]?.value, o = i + 2;
289
+ if (!O(a) || r.has(a) || e[o]?.value !== "(") return null;
290
+ let s = xe(e, o, "(", ")");
291
+ if (s < 0) return null;
292
+ let c = we(e, t, i);
293
+ n.push({
294
+ name: a,
295
+ vertex: ye(e.slice(c, i), "vertex"),
296
+ parameters: e.slice(o + 1, s)
297
+ }), r.add(a), i = s;
298
+ }
299
+ return n;
300
+ }
301
+ function me(e) {
302
+ let { declaration: t, aliases: n, structures: r, attributes: i, attributeLocations: a, attributeNames: o, visitedStructures: s } = e, c = Se(t, ":");
303
+ if (c < 1 || c === t.length - 1) return !1;
304
+ let l = Te(t.slice(0, c)), u = ve(t.slice(0, c), "location"), d = ye(t.slice(0, c), "builtin"), f = he(D(t.slice(c + 1)), n);
305
+ if (!l || u === null || !f || u !== void 0 && d) return !1;
306
+ if (u !== void 0) {
307
+ let e = _e(f);
308
+ return !e || a.has(u) || o.has(l) ? !1 : (i.push({
309
+ name: l,
310
+ location: u,
311
+ type: e
312
+ }), a.add(u), o.add(l), !0);
313
+ }
314
+ if (d) return !0;
315
+ let p = r.get(f);
316
+ if (!p || s.has(f)) return !1;
317
+ let m = E(p, ",");
318
+ if (!m) return !1;
319
+ s.add(f);
320
+ for (let t of m) if (t.length > 0 && !me({
321
+ ...e,
322
+ declaration: t
323
+ })) return !1;
324
+ return s.delete(f), !0;
325
+ }
326
+ function he(e, t, n = /* @__PURE__ */ new Set()) {
327
+ let r = re(e), i = "";
328
+ for (let e of r) {
329
+ let r = t.get(e.value);
330
+ if (!r) {
331
+ i += ge(e.value);
332
+ continue;
333
+ }
334
+ if (n.has(e.value)) return null;
335
+ let a = new Set(n);
336
+ a.add(e.value);
337
+ let o = he(r, t, a);
338
+ if (!o) return null;
339
+ i += o;
340
+ }
341
+ return i;
342
+ }
343
+ function ge(e) {
344
+ let t = /^(vec[234]|mat[234]x[234])([fiuh])$/.exec(e);
345
+ if (!t) return e;
346
+ let n = {
347
+ f: "f32",
348
+ i: "i32",
349
+ u: "u32",
350
+ h: "f16"
351
+ }[t[2]];
352
+ return `${t[1]}<${n}>`;
353
+ }
354
+ function _e(e) {
355
+ return /^(?:i32|u32|f32|f16|vec[234]<(?:i32|u32|f32|f16)>)$/.test(e) ? e : null;
356
+ }
357
+ function ve(e, t) {
358
+ let n;
359
+ for (let r = 0; r < e.length; r++) if (e[r].value === "@" && e[r + 1]?.value === t) {
360
+ if (n !== void 0 || e[r + 2]?.value !== "(" || !/^\d+$/.test(e[r + 3]?.value || "") || e[r + 4]?.value !== ")") return null;
361
+ n = Number(e[r + 3].value);
362
+ }
363
+ return n;
364
+ }
365
+ function ye(e, t) {
366
+ return e.some((n, r) => n.value === "@" && e[r + 1]?.value === t);
367
+ }
368
+ function be(e) {
369
+ return e.replace("_", "-");
370
+ }
371
+ function xe(e, t, n, r) {
372
+ let i = 0;
373
+ for (let a = t; a < e.length; a++) if (e[a].value === n) i++;
374
+ else if (e[a].value === r && --i === 0) return a;
375
+ return -1;
376
+ }
377
+ function E(e, t) {
378
+ let n = [], r = 0, i = {
379
+ "(": 0,
380
+ "<": 0,
381
+ "[": 0,
382
+ "{": 0
383
+ }, a = Object.keys(i), o = {
384
+ ")": "(",
385
+ ">": "<",
386
+ "]": "[",
387
+ "}": "{"
388
+ };
389
+ for (let s = 0; s < e.length; s++) {
390
+ let c = e[s].value;
391
+ if (c === t && a.every((e) => i[e] === 0)) {
392
+ n.push(e.slice(r, s)), r = s + 1;
393
+ continue;
394
+ }
395
+ if (c in i) i[c]++;
396
+ else if (c in o) {
397
+ let e = o[c];
398
+ if (i[e]--, i[e] < 0) return null;
399
+ }
400
+ }
401
+ return a.every((e) => i[e] === 0) ? (n.push(e.slice(r)), n) : null;
402
+ }
403
+ function Se(e, t) {
404
+ let n = E(e, t);
405
+ return n && n.length === 2 ? n[0].length : -1;
406
+ }
407
+ function Ce(e, t, n, r) {
408
+ for (let i = n; i < e.length; i++) if (t[i] === 0 && e[i].value === r) return i;
409
+ return -1;
410
+ }
411
+ function we(e, t, n) {
412
+ for (let r = n - 1; r >= 0; r--) if (e[r].value === ";" && t[r] === 0 || e[r].value === "}" && t[r] === 1) return r + 1;
413
+ return 0;
414
+ }
415
+ function Te(e) {
416
+ for (let t = e.length - 1; t >= 0; t--) if (O(e[t].value)) return e[t].value;
417
+ return null;
418
+ }
419
+ function D(e) {
420
+ return e.map((e) => e.value).join("");
421
+ }
422
+ function O(e) {
423
+ return !!(e && /^[A-Za-z_][A-Za-z0-9_]*$/.test(e));
424
+ }
425
+ //#endregion
426
+ //#region node_modules/@luma.gl/shadertools/dist/lib/utils/assert.js
427
+ function k(e, t) {
428
+ if (!e) {
429
+ let e = Error(t || "shadertools: assertion failed.");
430
+ throw Error.captureStackTrace?.(e, k), e;
431
+ }
432
+ }
433
+ //#endregion
434
+ //#region node_modules/@luma.gl/shadertools/dist/lib/filters/prop-types.js
435
+ var Ee = {
436
+ number: {
437
+ type: "number",
438
+ validate(e, t) {
439
+ return Number.isFinite(e) && typeof t == "object" && (t.max === void 0 || e <= t.max) && (t.min === void 0 || e >= t.min);
440
+ }
441
+ },
442
+ array: {
443
+ type: "array",
444
+ validate(e, t) {
445
+ return Array.isArray(e) || ArrayBuffer.isView(e);
446
+ }
447
+ }
448
+ };
449
+ function De(e) {
450
+ let t = {};
451
+ for (let [n, r] of Object.entries(e)) t[n] = Oe(r);
452
+ return t;
453
+ }
454
+ function Oe(e) {
455
+ let t = ke(e);
456
+ if (t !== "object") return {
457
+ value: e,
458
+ ...Ee[t],
459
+ type: t
460
+ };
461
+ if (typeof e == "object") return e ? e.type === void 0 ? e.value === void 0 ? {
462
+ type: "object",
463
+ value: e
464
+ } : (t = ke(e.value), {
465
+ ...e,
466
+ ...Ee[t],
467
+ type: t
468
+ }) : {
469
+ ...e,
470
+ ...Ee[e.type],
471
+ type: e.type
472
+ } : {
473
+ type: "object",
474
+ value: null
475
+ };
476
+ throw Error("props");
477
+ }
478
+ function ke(e) {
479
+ return Array.isArray(e) || ArrayBuffer.isView(e) ? "array" : typeof e;
480
+ }
481
+ //#endregion
482
+ //#region node_modules/@luma.gl/shadertools/dist/lib/shader-assembly/shader-injections.js
483
+ var Ae = {
484
+ vertex: "#ifdef MODULE_LOGDEPTH\n logdepth_adjustPosition(gl_Position);\n#endif\n",
485
+ fragment: "#ifdef MODULE_MATERIAL\n fragColor = material_filterColor(fragColor);\n#endif\n\n#ifdef MODULE_LIGHTING\n fragColor = lighting_filterColor(fragColor);\n#endif\n\n#ifdef MODULE_FOG\n fragColor = fog_filterColor(fragColor);\n#endif\n\n#ifdef MODULE_PICKING\n fragColor = picking_filterHighlightColor(fragColor);\n fragColor = picking_filterPickingColor(fragColor);\n#endif\n\n#ifdef MODULE_LOGDEPTH\n logdepth_setFragDepth();\n#endif\n"
486
+ }, je = /void\s+main\s*\([^)]*\)\s*\{\n?/, Me = /}\n?[^{}]*$/, Ne = [], A = "__LUMA_INJECT_DECLARATIONS__";
487
+ function Pe(e) {
488
+ let t = {
489
+ vertex: {},
490
+ fragment: {}
491
+ };
492
+ for (let n in e) {
493
+ let r = e[n], i = Fe(n);
494
+ typeof r == "string" && (r = {
495
+ order: 0,
496
+ injection: r
497
+ }), t[i][n] = r;
498
+ }
499
+ return t;
500
+ }
501
+ function Fe(e) {
502
+ let t = e.slice(0, 2);
503
+ switch (t) {
504
+ case "vs": return "vertex";
505
+ case "fs": return "fragment";
506
+ default: throw Error(t);
507
+ }
508
+ }
509
+ function j(e, t, n, r = !1, i = "glsl", a = {}) {
510
+ let o = t === "vertex";
511
+ for (let t in n) {
512
+ let r = n[t];
513
+ r.sort((e, t) => e.order - t.order), Ne.length = r.length;
514
+ for (let e = 0, t = r.length; e < t; ++e) Ne[e] = r[e].injection;
515
+ let s = `${Ne.join("\n")}\n`;
516
+ switch (t) {
517
+ case "vs:#decl":
518
+ (i === "wgsl" || o) && (e = e.replace(A, s));
519
+ break;
520
+ case "vs:#main-start":
521
+ (i === "wgsl" || o) && (e = i === "wgsl" ? M(e, "vertex", s, "start", a.vertex) : e.replace(je, (e) => e + s));
522
+ break;
523
+ case "vs:#main-end":
524
+ (i === "wgsl" || o) && (e = i === "wgsl" ? M(e, "vertex", s, "end", a.vertex) : e.replace(Me, (e) => s + e));
525
+ break;
526
+ case "fs:#decl":
527
+ (i === "wgsl" || !o) && (e = e.replace(A, s));
528
+ break;
529
+ case "fs:#main-start":
530
+ (i === "wgsl" || !o) && (e = i === "wgsl" ? M(e, "fragment", s, "start", a.fragment) : e.replace(je, (e) => e + s));
531
+ break;
532
+ case "fs:#main-end":
533
+ (i === "wgsl" || !o) && (e = i === "wgsl" ? M(e, "fragment", s, "end", a.fragment) : e.replace(Me, (e) => s + e));
534
+ break;
535
+ default: e = e.replace(t, (e) => e + s);
536
+ }
537
+ }
538
+ return e = e.replace(A, ""), r && (e = e.replace(/\}\s*$/, (e) => e + Ae[t])), e;
539
+ }
540
+ function M(e, t, n, r, i) {
541
+ let a = Ie(e, t, i);
542
+ if (!a) return e;
543
+ if (r === "start") {
544
+ let t = a.openBraceIndex + 1;
545
+ return `${e.slice(0, t)}\n${n}${e.slice(t)}`;
546
+ }
547
+ return `${e.slice(0, a.closeBraceIndex)}${n}${e.slice(a.closeBraceIndex)}`;
548
+ }
549
+ function Ie(e, t, n) {
550
+ let r = t === "vertex" ? "@vertex" : "@fragment", i = e.indexOf(r);
551
+ if (i < 0) return null;
552
+ let a = n ? e.search(RegExp(`\\bfn\\s+${Le(n)}\\s*\\(`)) : e.indexOf("fn", i);
553
+ if (a < 0) return null;
554
+ let o = e.indexOf("{", a);
555
+ if (o < 0) return null;
556
+ let s = 0;
557
+ for (let t = o; t < e.length; t++) {
558
+ let n = e[t];
559
+ if (n === "{") s++;
560
+ else if (n === "}" && (s--, s === 0)) return {
561
+ openBraceIndex: o,
562
+ closeBraceIndex: t
563
+ };
564
+ }
565
+ return null;
566
+ }
567
+ function Le(e) {
568
+ return e.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
569
+ }
570
+ //#endregion
571
+ //#region node_modules/@luma.gl/shadertools/dist/lib/shader-module/shader-module.js
572
+ function N(e) {
573
+ e.map((e) => Re(e));
574
+ }
575
+ function Re(e) {
576
+ if (e.instance) return;
577
+ N(e.dependencies || []);
578
+ let { propTypes: t = {}, deprecations: n = [], inject: r = {} } = e, i = {
579
+ normalizedInjections: Pe(r),
580
+ parsedDeprecations: Be(n)
581
+ };
582
+ t && (i.propValidators = De(t)), e.instance = i;
583
+ let a = {};
584
+ t && (a = Object.entries(t).reduce((e, [t, n]) => {
585
+ let r = n?.value;
586
+ return r && (e[t] = r), e;
587
+ }, {})), e.defaultUniforms = {
588
+ ...e.defaultUniforms,
589
+ ...a
590
+ };
591
+ }
592
+ function ze(e, t, n) {
593
+ e.deprecations?.forEach((e) => {
594
+ e.regex?.test(t) && (e.deprecated ? n.deprecated(e.old, e.new)() : n.removed(e.old, e.new)());
595
+ });
596
+ }
597
+ function Be(e) {
598
+ return e.forEach((e) => {
599
+ switch (e.type) {
600
+ case "function":
601
+ e.regex = RegExp(`\\b${e.old}\\(`);
602
+ break;
603
+ default: e.regex = RegExp(`${e.type} ${e.old};`);
604
+ }
605
+ }), e;
606
+ }
607
+ //#endregion
608
+ //#region node_modules/@luma.gl/shadertools/dist/lib/shader-module/shader-module-dependencies.js
609
+ function P(e) {
610
+ N(e);
611
+ let t = {}, n = {};
612
+ Ve({
613
+ modules: e,
614
+ level: 0,
615
+ moduleMap: t,
616
+ moduleDepth: n
617
+ });
618
+ let r = Object.keys(n).sort((e, t) => n[t] - n[e]).map((e) => t[e]);
619
+ return N(r), r;
620
+ }
621
+ function Ve(e) {
622
+ let { modules: t, level: n, moduleMap: r, moduleDepth: i } = e;
623
+ if (n >= 5) throw Error("Possible loop in shader dependency graph");
624
+ for (let e of t) r[e.name] = e, (i[e.name] === void 0 || i[e.name] < n) && (i[e.name] = n);
625
+ for (let e of t) e.dependencies && Ve({
626
+ modules: e.dependencies,
627
+ level: n + 1,
628
+ moduleMap: r,
629
+ moduleDepth: i
630
+ });
631
+ }
632
+ //#endregion
633
+ //#region node_modules/@luma.gl/core/dist/adapter/resources/compute-pipeline.js
634
+ var He = class e extends f {
635
+ get [Symbol.toStringTag]() {
636
+ return "ComputePipeline";
637
+ }
638
+ hash = "";
639
+ shaderLayout;
640
+ constructor(t, n) {
641
+ super(t, n, e.defaultProps), this.shaderLayout = n.shaderLayout;
642
+ }
643
+ static defaultProps = {
644
+ ...f.defaultProps,
645
+ shader: void 0,
646
+ entryPoint: void 0,
647
+ constants: {},
648
+ shaderLayout: void 0
649
+ };
650
+ }, Ue = class e {
651
+ static defaultProps = { ...r.defaultProps };
652
+ static getDefaultPipelineFactory(t) {
653
+ let n = t.getModuleData("@luma.gl/core");
654
+ return n.defaultPipelineFactory ||= new e(t), n.defaultPipelineFactory;
655
+ }
656
+ device;
657
+ _hashCounter = 0;
658
+ _hashes = {};
659
+ _renderPipelineCache = {};
660
+ _computePipelineCache = {};
661
+ _sharedRenderPipelineCache = {};
662
+ get [Symbol.toStringTag]() {
663
+ return "PipelineFactory";
664
+ }
665
+ toString() {
666
+ return `PipelineFactory(${this.device.id})`;
667
+ }
668
+ constructor(e) {
669
+ this.device = e;
670
+ }
671
+ createRenderPipeline(e) {
672
+ if (!this.device.props._cachePipelines) return this.device.createRenderPipeline(e);
673
+ let t = {
674
+ ...r.defaultProps,
675
+ ...e
676
+ }, i = this._renderPipelineCache, a = this._hashRenderPipeline(t), o = i[a]?.resource;
677
+ if (o) i[a].useCount++, this.device.props.debugFactories && n.log(3, `${this}: ${i[a].resource} reused, count=${i[a].useCount}, (id=${e.id})`)();
678
+ else {
679
+ let e = this.device.type === "webgl" && this.device.props._sharePipelines ? this.createSharedRenderPipeline(t) : void 0;
680
+ o = this.device.createRenderPipeline({
681
+ ...t,
682
+ id: t.id ? `${t.id}-cached` : p("unnamed-cached"),
683
+ _sharedRenderPipeline: e
684
+ }), o.hash = a, i[a] = {
685
+ resource: o,
686
+ useCount: 1
687
+ }, this.device.props.debugFactories && n.log(3, `${this}: ${o} created, count=${i[a].useCount}`)();
688
+ }
689
+ return o;
690
+ }
691
+ createComputePipeline(e) {
692
+ if (!this.device.props._cachePipelines) return this.device.createComputePipeline(e);
693
+ let t = {
694
+ ...He.defaultProps,
695
+ ...e
696
+ }, r = this._computePipelineCache, i = this._hashComputePipeline(t), a = r[i]?.resource;
697
+ return a ? (r[i].useCount++, this.device.props.debugFactories && n.log(3, `${this}: ${r[i].resource} reused, count=${r[i].useCount}, (id=${e.id})`)()) : (a = this.device.createComputePipeline({
698
+ ...t,
699
+ id: t.id ? `${t.id}-cached` : void 0
700
+ }), a.hash = i, r[i] = {
701
+ resource: a,
702
+ useCount: 1
703
+ }, this.device.props.debugFactories && n.log(3, `${this}: ${a} created, count=${r[i].useCount}`)()), a;
704
+ }
705
+ release(e) {
706
+ if (!this.device.props._cachePipelines) {
707
+ e.destroy();
708
+ return;
709
+ }
710
+ let t = this._getCache(e), r = e.hash;
711
+ t[r].useCount--, t[r].useCount === 0 ? (this._destroyPipeline(e), this.device.props.debugFactories && n.log(3, `${this}: ${e} released and destroyed`)()) : t[r].useCount < 0 ? (n.error(`${this}: ${e} released, useCount < 0, resetting`)(), t[r].useCount = 0) : this.device.props.debugFactories && n.log(3, `${this}: ${e} released, count=${t[r].useCount}`)();
712
+ }
713
+ createSharedRenderPipeline(e) {
714
+ let t = this._hashSharedRenderPipeline(e), n = this._sharedRenderPipelineCache[t];
715
+ return n || (n = {
716
+ resource: this.device._createSharedRenderPipelineWebGL(e),
717
+ useCount: 0
718
+ }, this._sharedRenderPipelineCache[t] = n), n.useCount++, n.resource;
719
+ }
720
+ releaseSharedRenderPipeline(e) {
721
+ if (!e.sharedRenderPipeline) return;
722
+ let t = this._hashSharedRenderPipeline(e.sharedRenderPipeline.props), n = this._sharedRenderPipelineCache[t];
723
+ n && (n.useCount--, n.useCount === 0 && (n.resource.destroy(), delete this._sharedRenderPipelineCache[t]));
724
+ }
725
+ _destroyPipeline(e) {
726
+ let t = this._getCache(e);
727
+ return this.device.props._destroyPipelines ? (delete t[e.hash], e.destroy(), e instanceof r && this.releaseSharedRenderPipeline(e), !0) : !1;
728
+ }
729
+ _getCache(e) {
730
+ let t;
731
+ if (e instanceof He && (t = this._computePipelineCache), e instanceof r && (t = this._renderPipelineCache), !t) throw Error(`${this}`);
732
+ if (!t[e.hash]) throw Error(`${this}: ${e} matched incorrect entry`);
733
+ return t;
734
+ }
735
+ _hashComputePipeline(e) {
736
+ let { type: t } = this.device;
737
+ return `${t}/C/${this._getHash(e.shader.source)}SL${this._getHash(JSON.stringify(e.shaderLayout))}`;
738
+ }
739
+ _hashRenderPipeline(e) {
740
+ let t = e.vs ? this._getHash(e.vs.source) : 0, n = e.fs ? this._getHash(e.fs.source) : 0, r = this._getWebGLVaryingHash(e), i = this._getHash(JSON.stringify(e.shaderLayout)), a = this._getHash(JSON.stringify(e._uniformBlockLayouts)), o = this._getHash(JSON.stringify(e.bufferLayout)), { type: s } = this.device;
741
+ switch (s) {
742
+ case "webgl":
743
+ let c = this._getHash(JSON.stringify(e.parameters));
744
+ return `${s}/R/${t}/${n}V${r}T${e.topology}P${c}SL${i}UBL${a}BL${o}`;
745
+ default:
746
+ let l = this._getHash(JSON.stringify({
747
+ vertexEntryPoint: e.vertexEntryPoint,
748
+ fragmentEntryPoint: e.fragmentEntryPoint
749
+ })), u = this._getHash(JSON.stringify(e.parameters)), d = this._getWebGPUAttachmentHash(e);
750
+ return `${s}/R/${t}/${n}V${r}T${e.topology}EP${l}P${u}SL${i}BL${o}A${d}`;
751
+ }
752
+ }
753
+ _hashSharedRenderPipeline(e) {
754
+ return `webgl/S/${e.vs ? this._getHash(e.vs.source) : 0}/${e.fs ? this._getHash(e.fs.source) : 0}V${this._getWebGLVaryingHash(e)}`;
755
+ }
756
+ _getHash(e) {
757
+ return this._hashes[e] === void 0 && (this._hashes[e] = this._hashCounter++), this._hashes[e];
758
+ }
759
+ _getWebGLVaryingHash(e) {
760
+ let { varyings: t = [], bufferMode: n = null } = e;
761
+ return this._getHash(JSON.stringify({
762
+ varyings: t,
763
+ bufferMode: n
764
+ }));
765
+ }
766
+ _getWebGPUAttachmentHash(e) {
767
+ let t = e.colorAttachmentFormats ?? [this.device.preferredColorFormat], n = e.depthStencilAttachmentFormat ?? (e.parameters?.depthWriteEnabled ? this.device.preferredDepthFormat : null);
768
+ return this._getHash(JSON.stringify({
769
+ colorAttachmentFormats: t,
770
+ depthStencilAttachmentFormat: n
771
+ }));
772
+ }
773
+ }, We = class e {
774
+ static defaultProps = { ...s.defaultProps };
775
+ static getDefaultShaderFactory(t) {
776
+ let n = t.getModuleData("@luma.gl/core");
777
+ return n.defaultShaderFactory ||= new e(t), n.defaultShaderFactory;
778
+ }
779
+ device;
780
+ _cache = {};
781
+ get [Symbol.toStringTag]() {
782
+ return "ShaderFactory";
783
+ }
784
+ toString() {
785
+ return `${this[Symbol.toStringTag]}(${this.device.id})`;
786
+ }
787
+ constructor(e) {
788
+ this.device = e;
789
+ }
790
+ createShader(e) {
791
+ if (!this.device.props._cacheShaders) return this.device.createShader(e);
792
+ let t = this._hashShader(e), r = this._cache[t];
793
+ if (r) r.useCount++, this.device.props.debugFactories && n.log(3, `${this}: Reusing shader ${r.resource.id} count=${r.useCount}`)();
794
+ else {
795
+ let i = this.device.createShader({
796
+ ...e,
797
+ id: e.id ? `${e.id}-cached` : void 0
798
+ });
799
+ this._cache[t] = r = {
800
+ resource: i,
801
+ useCount: 1
802
+ }, this.device.props.debugFactories && n.log(3, `${this}: Created new shader ${i.id}`)();
803
+ }
804
+ return r.resource;
805
+ }
806
+ release(e) {
807
+ if (!this.device.props._cacheShaders) {
808
+ e.destroy();
809
+ return;
810
+ }
811
+ let t = this._hashShader(e), r = this._cache[t];
812
+ if (r) {
813
+ if (r.useCount--, r.useCount === 0) this.device.props._destroyShaders && (delete this._cache[t], r.resource.destroy(), this.device.props.debugFactories && n.log(3, `${this}: Releasing shader ${e.id}, destroyed`)());
814
+ else if (r.useCount < 0) throw Error(`ShaderFactory: Shader ${e.id} released too many times`);
815
+ else this.device.props.debugFactories && n.log(3, `${this}: Releasing shader ${e.id} count=${r.useCount}`)();
816
+ }
817
+ }
818
+ _hashShader(e) {
819
+ return `${e.stage}:${e.source}`;
820
+ }
821
+ };
822
+ //#endregion
823
+ //#region node_modules/@luma.gl/core/dist/utils/is-array.js
824
+ function Ge(e) {
825
+ return ArrayBuffer.isView(e) && !(e instanceof DataView);
826
+ }
827
+ function F(e) {
828
+ return Array.isArray(e) ? e.length === 0 || typeof e[0] == "number" : Ge(e);
829
+ }
830
+ //#endregion
831
+ //#region node_modules/@luma.gl/core/dist/portable/shader-block-writer.js
832
+ var Ke = class {
833
+ layout;
834
+ constructor(e) {
835
+ this.layout = e;
836
+ }
837
+ has(e) {
838
+ return !!this.layout.fields[e];
839
+ }
840
+ get(e) {
841
+ let t = this.layout.fields[e];
842
+ return t ? {
843
+ offset: t.offset,
844
+ size: t.size
845
+ } : void 0;
846
+ }
847
+ getFlatUniformValues(e) {
848
+ let t = {};
849
+ for (let [n, r] of Object.entries(e)) {
850
+ let e = this.layout.uniformTypes[n];
851
+ e ? this._flattenCompositeValue(t, n, e, r) : this.layout.fields[n] && (t[n] = r);
852
+ }
853
+ return t;
854
+ }
855
+ getData(e) {
856
+ let t = l(this.layout.byteLength);
857
+ new Uint8Array(t, 0, this.layout.byteLength).fill(0);
858
+ let n = {
859
+ i32: new Int32Array(t),
860
+ u32: new Uint32Array(t),
861
+ f32: new Float32Array(t),
862
+ f16: new Uint16Array(t)
863
+ }, r = this.getFlatUniformValues(e);
864
+ for (let [e, t] of Object.entries(r)) this._writeLeafValue(n, e, t);
865
+ return new Uint8Array(t, 0, this.layout.byteLength);
866
+ }
867
+ _flattenCompositeValue(e, t, r, i) {
868
+ if (i !== void 0) {
869
+ if (typeof r == "string" || this.layout.fields[t]) {
870
+ e[t] = i;
871
+ return;
872
+ }
873
+ if (Array.isArray(r)) {
874
+ let a = r[0], o = r[1];
875
+ if (Array.isArray(a)) throw Error(`Nested arrays are not supported for ${t}`);
876
+ if (typeof a == "string" && F(i)) {
877
+ this._flattenPackedArray(e, t, a, o, i);
878
+ return;
879
+ }
880
+ if (!Array.isArray(i)) {
881
+ n.warn(`Unsupported uniform array value for ${t}:`, i)();
882
+ return;
883
+ }
884
+ for (let n = 0; n < Math.min(i.length, o); n++) {
885
+ let r = i[n];
886
+ r !== void 0 && this._flattenCompositeValue(e, `${t}[${n}]`, a, r);
887
+ }
888
+ return;
889
+ }
890
+ if (o(r) && qe(i)) {
891
+ for (let [n, a] of Object.entries(i)) {
892
+ if (a === void 0) continue;
893
+ let i = `${t}.${n}`;
894
+ this._flattenCompositeValue(e, i, r[n], a);
895
+ }
896
+ return;
897
+ }
898
+ n.warn(`Unsupported uniform value for ${t}:`, i)();
899
+ }
900
+ }
901
+ _flattenPackedArray(e, t, n, r, i) {
902
+ let a = i, o = u(n, this.layout.layout).components;
903
+ for (let n = 0; n < r; n++) {
904
+ let r = n * o;
905
+ if (r >= a.length) break;
906
+ o === 1 ? e[`${t}[${n}]`] = Number(a[r]) : e[`${t}[${n}]`] = Je(i, r, r + o);
907
+ }
908
+ }
909
+ _writeLeafValue(e, t, r) {
910
+ let i = this.layout.fields[t];
911
+ if (!i) {
912
+ n.warn(`Uniform ${t} not found in layout`)();
913
+ return;
914
+ }
915
+ let { type: a, components: o, columns: s, rows: c, offset: l, columnStride: u } = i, d = e[a];
916
+ if (o === 1) {
917
+ d[l] = Number(r);
918
+ return;
919
+ }
920
+ let f = r;
921
+ if (s === 1) {
922
+ for (let e = 0; e < o; e++) d[l + e] = Number(f[e] ?? 0);
923
+ return;
924
+ }
925
+ let p = 0;
926
+ for (let e = 0; e < s; e++) {
927
+ let t = l + e * u;
928
+ for (let e = 0; e < c; e++) d[t + e] = Number(f[p++] ?? 0);
929
+ }
930
+ }
931
+ };
932
+ function qe(e) {
933
+ return !!e && typeof e == "object" && !Array.isArray(e) && !ArrayBuffer.isView(e);
934
+ }
935
+ function Je(e, t, n) {
936
+ return Array.prototype.slice.call(e, t, n);
937
+ }
938
+ //#endregion
939
+ //#region node_modules/@luma.gl/core/dist/utils/array-equal.js
940
+ var Ye = 128;
941
+ function Xe(e, t, n = 16) {
942
+ if (e === t) return !0;
943
+ let r = e, i = t;
944
+ if (!F(r) || !F(i) || r.length !== i.length) return !1;
945
+ let a = Math.min(n, Ye);
946
+ if (r.length > a) return !1;
947
+ for (let e = 0; e < r.length; ++e) if (i[e] !== r[e]) return !1;
948
+ return !0;
949
+ }
950
+ function Ze(e) {
951
+ return F(e) ? e.slice() : e;
952
+ }
953
+ //#endregion
954
+ //#region node_modules/@luma.gl/core/dist/portable/uniform-block.js
955
+ var Qe = class {
956
+ name;
957
+ uniforms = {};
958
+ modifiedUniforms = {};
959
+ modified = !0;
960
+ bindingLayout = {};
961
+ needsRedraw = "initialized";
962
+ constructor(e) {
963
+ if (this.name = e?.name || "unnamed", e?.name && e?.shaderLayout) {
964
+ let t = e?.shaderLayout.bindings?.find((t) => t.type === "uniform" && t.name === e?.name);
965
+ if (!t) throw Error(e?.name);
966
+ let n = t;
967
+ for (let e of n.uniforms || []) this.bindingLayout[e.name] = e;
968
+ }
969
+ }
970
+ setUniforms(e) {
971
+ for (let [t, n] of Object.entries(e)) this._setUniform(t, n) && !this.needsRedraw && this.setNeedsRedraw(`${this.name}.${t}=${n}`);
972
+ }
973
+ setNeedsRedraw(e) {
974
+ this.needsRedraw = this.needsRedraw || e;
975
+ }
976
+ getAllUniforms() {
977
+ return this.modifiedUniforms = {}, this.needsRedraw = !1, this.uniforms || {};
978
+ }
979
+ _setUniform(e, t) {
980
+ return !Xe(this.uniforms[e], t) && (this.uniforms[e] = Ze(t), this.modifiedUniforms[e] = !0, this.modified = !0, !0);
981
+ }
982
+ }, $e = 1024, et = class {
983
+ device;
984
+ uniformBlocks = /* @__PURE__ */ new Map();
985
+ shaderBlockLayouts = /* @__PURE__ */ new Map();
986
+ shaderBlockWriters = /* @__PURE__ */ new Map();
987
+ uniformBuffers = /* @__PURE__ */ new Map();
988
+ constructor(e, n) {
989
+ this.device = e;
990
+ for (let [r, i] of Object.entries(n)) {
991
+ let n = r, a = t(i.uniformTypes ?? {}, { layout: i.layout ?? tt(e) }), o = new Ke(a);
992
+ this.shaderBlockLayouts.set(n, a), this.shaderBlockWriters.set(n, o);
993
+ let s = new Qe({ name: r });
994
+ s.setUniforms(o.getFlatUniformValues(i.defaultUniforms || {})), this.uniformBlocks.set(n, s);
995
+ }
996
+ }
997
+ destroy() {
998
+ for (let e of this.uniformBuffers.values()) e.destroy();
999
+ }
1000
+ setUniforms(e, t) {
1001
+ for (let [t, n] of Object.entries(e)) {
1002
+ let e = t, r = this.shaderBlockWriters.get(e)?.getFlatUniformValues(n || {});
1003
+ this.uniformBlocks.get(e)?.setUniforms(r || {});
1004
+ }
1005
+ this.updateUniformBuffers(t);
1006
+ }
1007
+ getUniformBufferByteLength(e) {
1008
+ let t = this.shaderBlockLayouts.get(e)?.byteLength || 0;
1009
+ return Math.max(t, $e);
1010
+ }
1011
+ getUniformBufferData(e) {
1012
+ let t = this.uniformBlocks.get(e)?.getAllUniforms() || {};
1013
+ return this.shaderBlockWriters.get(e)?.getData(t) || /* @__PURE__ */ new Uint8Array();
1014
+ }
1015
+ createUniformBuffer(t, n) {
1016
+ n && this.setUniforms(n);
1017
+ let r = this.getUniformBufferByteLength(t), i = this.device.createBuffer({
1018
+ usage: e.UNIFORM | e.COPY_DST,
1019
+ byteLength: r
1020
+ }), a = this.getUniformBufferData(t);
1021
+ return i.write(a), i;
1022
+ }
1023
+ getManagedUniformBuffer(t) {
1024
+ if (!this.uniformBuffers.get(t)) {
1025
+ let n = this.getUniformBufferByteLength(t), r = this.device.createBuffer({
1026
+ usage: e.UNIFORM | e.COPY_DST,
1027
+ byteLength: n
1028
+ });
1029
+ this.uniformBuffers.set(t, r);
1030
+ }
1031
+ return this.uniformBuffers.get(t);
1032
+ }
1033
+ updateUniformBuffers(e) {
1034
+ let t = !1;
1035
+ for (let n of this.uniformBlocks.keys()) {
1036
+ let r = this.updateUniformBuffer(n, e);
1037
+ t ||= r;
1038
+ }
1039
+ return t && n.log(3, `UniformStore.updateUniformBuffers(): ${t}`)(), t;
1040
+ }
1041
+ updateUniformBuffer(e, t) {
1042
+ let r = this.uniformBlocks.get(e), i = this.uniformBuffers.get(e), a = !1;
1043
+ if (i && r?.needsRedraw) {
1044
+ a ||= r.needsRedraw;
1045
+ let o = this.getUniformBufferData(e);
1046
+ i = this.uniformBuffers.get(e), i && (t ? this.device.writeBufferViaCommandEncoder(t, i, o) : i.write(o));
1047
+ let s = this.uniformBlocks.get(e)?.getAllUniforms();
1048
+ n.log(4, `Writing to uniform buffer ${String(e)}`, o, s)();
1049
+ }
1050
+ return a;
1051
+ }
1052
+ };
1053
+ function tt(e) {
1054
+ return e.type === "webgpu" ? "wgsl-uniform" : "std140";
1055
+ }
1056
+ //#endregion
1057
+ //#region node_modules/@luma.gl/shadertools/dist/lib/shader-plugin.js
1058
+ var nt = /^(vs|fs):(?:#(?:decl|main-start|main-end)|[A-Za-z_][\w-]*)$/;
1059
+ function rt(e = [], t) {
1060
+ let n = [], r = {}, i = {}, a = {}, o = {};
1061
+ for (let s of e) at({
1062
+ modules: n,
1063
+ defines: r,
1064
+ injections: i,
1065
+ vertexInputs: a,
1066
+ varyings: o
1067
+ }, s), at({
1068
+ modules: n,
1069
+ defines: r,
1070
+ injections: i,
1071
+ vertexInputs: a,
1072
+ varyings: o
1073
+ }, s[t]);
1074
+ for (let e of Object.keys(o)) if (a[e]) throw Error(`ShaderPlugin name "${e}" cannot be both a vertex input and a varying`);
1075
+ return {
1076
+ modules: n,
1077
+ defines: r,
1078
+ injections: i,
1079
+ vertexInputs: a,
1080
+ varyings: o
1081
+ };
1082
+ }
1083
+ function it(e = [], t = []) {
1084
+ let n = [...e], r = new Set(n.map((e) => e.name));
1085
+ for (let e of t) r.has(e.name) || (n.push(e), r.add(e.name));
1086
+ return n;
1087
+ }
1088
+ function at(e, t) {
1089
+ if (t) {
1090
+ t.modules?.length && e.modules.push(...t.modules), t.defines && Object.assign(e.defines, t.defines);
1091
+ for (let [n, r] of Object.entries(t.vertexInputs || {})) {
1092
+ ot(n, "vertex input");
1093
+ let t = e.vertexInputs[n];
1094
+ if (t && t !== r) throw Error(`ShaderPlugin vertex input "${n}" has conflicting types "${t}" and "${r}"`);
1095
+ e.vertexInputs[n] = r;
1096
+ }
1097
+ for (let [n, r] of Object.entries(t.varyings || {})) {
1098
+ ot(n, "varying");
1099
+ let t = st(n, r), i = e.varyings[n];
1100
+ if (i && (i.type !== t.type || i.interpolation !== t.interpolation)) throw Error(`ShaderPlugin varying "${n}" has conflicting declarations "${i.type}/${i.interpolation}" and "${t.type}/${t.interpolation}"`);
1101
+ e.varyings[n] = t;
1102
+ }
1103
+ for (let n of t.injections || []) ct(n.target), e.injections[n.target] || (e.injections[n.target] = []), e.injections[n.target].push({
1104
+ injection: n.injection,
1105
+ order: n.order ?? 0
1106
+ });
1107
+ }
1108
+ }
1109
+ function ot(e, t) {
1110
+ if (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(e) || e.startsWith("_luma_")) throw Error(`ShaderPlugin ${t} "${e}" must be a valid non-reserved identifier`);
1111
+ }
1112
+ function st(e, t) {
1113
+ let { primitiveType: n } = d.getAttributeShaderTypeInfo(t.type), r = n === "i32" || n === "u32", i = t.interpolation || (r ? "flat" : "smooth");
1114
+ if (r && i === "smooth") throw Error(`ShaderPlugin integer varying "${e}" must use flat interpolation`);
1115
+ return {
1116
+ type: t.type,
1117
+ interpolation: i
1118
+ };
1119
+ }
1120
+ function ct(e) {
1121
+ if (!nt.test(e)) throw Error(`ShaderPlugin injection target "${e}" must be a named shader anchor or hook`);
1122
+ }
1123
+ //#endregion
1124
+ //#region node_modules/@luma.gl/shadertools/dist/lib/shader-module/shader-module-uniform-layout.js
1125
+ var lt = /^(?:uniform\s+)?(?:(?:lowp|mediump|highp)\s+)?[A-Za-z0-9_]+(?:<[^>]+>)?\s+([A-Za-z0-9_]+)(?:\s*\[[^\]]+\])?\s*;/, ut = /((?:layout\s*\([^)]*\)\s*)*)uniform\s+([A-Za-z_][A-Za-z0-9_]*)\s*\{([\s\S]*?)\}\s*([A-Za-z_][A-Za-z0-9_]*)?\s*;/g;
1126
+ function dt(e) {
1127
+ return `${e.name}Uniforms`;
1128
+ }
1129
+ function ft(e, t) {
1130
+ let n = t === "wgsl" ? e.source : t === "vertex" ? e.vs : e.fs;
1131
+ if (!n) return null;
1132
+ let r = dt(e);
1133
+ return _t(n, t === "wgsl" ? "wgsl" : "glsl", r);
1134
+ }
1135
+ function pt(e, t) {
1136
+ let n = Object.keys(e.uniformTypes || {});
1137
+ if (!n.length) return null;
1138
+ let r = ft(e, t);
1139
+ return r ? {
1140
+ moduleName: e.name,
1141
+ uniformBlockName: dt(e),
1142
+ stage: t,
1143
+ expectedUniformNames: n,
1144
+ actualUniformNames: r,
1145
+ matches: bt(n, r)
1146
+ } : null;
1147
+ }
1148
+ function mt(e, t, n = {}) {
1149
+ let r = pt(e, t);
1150
+ if (!r || r.matches) return r;
1151
+ let i = xt(r);
1152
+ return n.log?.error?.(i, r)(), n.throwOnError !== !1 && k(!1, i), r;
1153
+ }
1154
+ function ht(e) {
1155
+ let t = [], n = St(e);
1156
+ for (let e of n.matchAll(ut)) {
1157
+ let n = e[1]?.trim() || null;
1158
+ t.push({
1159
+ blockName: e[2],
1160
+ body: e[3],
1161
+ instanceName: e[4] || null,
1162
+ layoutQualifier: n,
1163
+ hasLayoutQualifier: !!n,
1164
+ isStd140: !!(n && /\blayout\s*\([^)]*\bstd140\b[^)]*\)/.exec(n))
1165
+ });
1166
+ }
1167
+ return t;
1168
+ }
1169
+ function gt(e, t, n, r) {
1170
+ let i = ht(e).filter((e) => !e.isStd140), a = /* @__PURE__ */ new Set();
1171
+ for (let e of i) {
1172
+ if (a.has(e.blockName)) continue;
1173
+ a.add(e.blockName);
1174
+ let i = r?.label ? `${r.label} ` : "", o = e.hasLayoutQualifier ? `declares ${Ct(e.layoutQualifier)} instead of layout(std140)` : "does not declare layout(std140)", s = `${i}${t} shader uniform block ${e.blockName} ${o}. luma.gl host-side shader block packing assumes explicit layout(std140) for GLSL uniform blocks. Add \`layout(std140)\` to the block declaration.`;
1175
+ n?.warn?.(s, e)();
1176
+ }
1177
+ return i;
1178
+ }
1179
+ function _t(e, t, n) {
1180
+ let r = t === "wgsl" ? vt(e, n) : yt(e, n);
1181
+ if (!r) return null;
1182
+ let i = [];
1183
+ for (let e of r.split("\n")) {
1184
+ let n = e.replace(/\/\/.*$/, "").trim();
1185
+ if (!n || n.startsWith("#")) continue;
1186
+ let r = t === "wgsl" ? n.match(/^([A-Za-z0-9_]+)\s*:/) : n.match(lt);
1187
+ r && i.push(r[1]);
1188
+ }
1189
+ return i;
1190
+ }
1191
+ function vt(e, t) {
1192
+ let n = RegExp(`\\bstruct\\s+${t}\\b`, "m").exec(e);
1193
+ if (!n) return null;
1194
+ let r = e.indexOf("{", n.index);
1195
+ if (r < 0) return null;
1196
+ let i = 0;
1197
+ for (let t = r; t < e.length; t++) {
1198
+ let n = e[t];
1199
+ if (n === "{") {
1200
+ i++;
1201
+ continue;
1202
+ }
1203
+ if (n === "}" && (i--, i === 0)) return e.slice(r + 1, t);
1204
+ }
1205
+ return null;
1206
+ }
1207
+ function yt(e, t) {
1208
+ return ht(e).find((e) => e.blockName === t)?.body || null;
1209
+ }
1210
+ function bt(e, t) {
1211
+ if (e.length !== t.length) return !1;
1212
+ for (let n = 0; n < e.length; n++) if (e[n] !== t[n]) return !1;
1213
+ return !0;
1214
+ }
1215
+ function xt(e) {
1216
+ let { expectedUniformNames: t, actualUniformNames: n } = e, r = t.filter((e) => !n.includes(e)), i = n.filter((e) => !t.includes(e)), a = [`Expected ${t.length} fields, found ${n.length}.`], o = wt(t, n);
1217
+ return o && a.push(o), r.length && a.push(`Missing from shader block (${r.length}): ${Tt(r)}.`), i.length && a.push(`Unexpected in shader block (${i.length}): ${Tt(i)}.`), t.length <= 12 && n.length <= 12 && (r.length || i.length) && (a.push(`Expected: ${t.join(", ")}.`), a.push(`Actual: ${n.join(", ")}.`)), `${e.moduleName}: ${e.stage} shader uniform block ${e.uniformBlockName} does not match module.uniformTypes. ${a.join(" ")}`;
1218
+ }
1219
+ function St(e) {
1220
+ return e.replace(/\/\*[\s\S]*?\*\//g, "").replace(/\/\/.*$/gm, "");
1221
+ }
1222
+ function Ct(e) {
1223
+ return e.replace(/\s+/g, " ").trim();
1224
+ }
1225
+ function wt(e, t) {
1226
+ let n = Math.min(e.length, t.length);
1227
+ for (let r = 0; r < n; r++) if (e[r] !== t[r]) return `First mismatch at field ${r + 1}: expected ${e[r]}, found ${t[r]}.`;
1228
+ return e.length > t.length ? `Shader block ends after field ${t.length}; expected next field ${e[t.length]}.` : t.length > e.length ? `Shader block has extra field ${t.length}: ${t[e.length]}.` : null;
1229
+ }
1230
+ function Tt(e, t = 8) {
1231
+ if (e.length <= t) return e.join(", ");
1232
+ let n = e.length - t;
1233
+ return `${e.slice(0, t).join(", ")}, ... (${n} more)`;
1234
+ }
1235
+ //#endregion
1236
+ //#region node_modules/@luma.gl/shadertools/dist/lib/shader-assembly/platform-defines.js
1237
+ function Et(e) {
1238
+ switch (e?.gpu.toLowerCase()) {
1239
+ case "apple": return "#define APPLE_GPU\n// Apple optimizes away the calculation necessary for emulated fp64\n#define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1\n#define LUMA_FP32_TAN_PRECISION_WORKAROUND 1\n// Intel GPU doesn't have full 32 bits precision in same cases, causes overflow\n#define LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND 1\n";
1240
+ case "nvidia": return "#define NVIDIA_GPU\n// Nvidia optimizes away the calculation necessary for emulated fp64\n#define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1\n";
1241
+ case "intel": return "#define INTEL_GPU\n// Intel optimizes away the calculation necessary for emulated fp64\n#define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1\n// Intel's built-in 'tan' function doesn't have acceptable precision\n#define LUMA_FP32_TAN_PRECISION_WORKAROUND 1\n// Intel GPU doesn't have full 32 bits precision in same cases, causes overflow\n#define LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND 1\n";
1242
+ case "amd": return "#define AMD_GPU\n";
1243
+ default: return "#define DEFAULT_GPU\n// Prevent driver from optimizing away the calculation necessary for emulated fp64\n#define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1\n// Headless Chrome's software shader 'tan' function doesn't have acceptable precision\n#define LUMA_FP32_TAN_PRECISION_WORKAROUND 1\n// If the GPU doesn't have full 32 bits precision, will causes overflow\n#define LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND 1\n";
1244
+ }
1245
+ }
1246
+ //#endregion
1247
+ //#region node_modules/@luma.gl/shadertools/dist/lib/shader-transpiler/transpile-glsl-shader.js
1248
+ function Dt(e, t) {
1249
+ if (Number(e.match(/^#version[ \t]+(\d+)/m)?.[1] || 100) !== 300) throw Error("luma.gl v9 only supports GLSL 3.00 shader sources");
1250
+ switch (t) {
1251
+ case "vertex": return e = jt(e, kt), e;
1252
+ case "fragment": return e = jt(e, At), e;
1253
+ default: throw Error(t);
1254
+ }
1255
+ }
1256
+ var Ot = [
1257
+ [/^(#version[ \t]+(100|300[ \t]+es))?[ \t]*\n/, "#version 300 es\n"],
1258
+ [/\btexture(2D|2DProj|Cube)Lod(EXT)?\(/g, "textureLod("],
1259
+ [/\btexture(2D|2DProj|Cube)(EXT)?\(/g, "texture("]
1260
+ ], kt = [
1261
+ ...Ot,
1262
+ [Mt("attribute"), "in $1"],
1263
+ [Mt("varying"), "out $1"]
1264
+ ], At = [...Ot, [Mt("varying"), "in $1"]];
1265
+ function jt(e, t) {
1266
+ for (let [n, r] of t) e = e.replace(n, r);
1267
+ return e;
1268
+ }
1269
+ function Mt(e) {
1270
+ return RegExp(`\\b${e}[ \\t]+(\\w+[ \\t]+\\w+(\\[\\w+\\])?;)`, "g");
1271
+ }
1272
+ //#endregion
1273
+ //#region node_modules/@luma.gl/shadertools/dist/lib/shader-assembly/shader-hooks.js
1274
+ function Nt(e, t, n = "glsl") {
1275
+ let r = "";
1276
+ for (let i in e) {
1277
+ let a = e[i];
1278
+ if (r += `${n === "wgsl" ? "fn" : "void"} ${a.signature} {\n`, a.header && (r += ` ${a.header}`), t[i]) {
1279
+ let e = t[i];
1280
+ e.sort((e, t) => e.order - t.order);
1281
+ for (let t of e) r += ` ${t.injection}\n`;
1282
+ }
1283
+ a.footer && (r += ` ${a.footer}`), r += "}\n";
1284
+ }
1285
+ return r;
1286
+ }
1287
+ function Pt(e) {
1288
+ let t = {
1289
+ vertex: {},
1290
+ fragment: {}
1291
+ };
1292
+ for (let n of e) {
1293
+ let e, r;
1294
+ typeof n == "string" ? (e = {}, r = n) : (e = n, r = e.hook), r = r.trim();
1295
+ let i = r.indexOf(":"), a = r.slice(0, i), o = r.slice(i + 1), s = r.replace(/\(.+/, ""), c = Object.assign(e, { signature: o });
1296
+ switch (a) {
1297
+ case "vs":
1298
+ t.vertex[s] = c;
1299
+ break;
1300
+ case "fs":
1301
+ t.fragment[s] = c;
1302
+ break;
1303
+ default: throw Error(a);
1304
+ }
1305
+ }
1306
+ return t;
1307
+ }
1308
+ //#endregion
1309
+ //#region node_modules/@luma.gl/shadertools/dist/lib/glsl-utils/get-shader-info.js
1310
+ function Ft(e, t) {
1311
+ return {
1312
+ name: It(e, t),
1313
+ language: "glsl",
1314
+ version: Lt(e)
1315
+ };
1316
+ }
1317
+ function It(e, t = "unnamed") {
1318
+ let n = /#define[^\S\r\n]*SHADER_NAME[^\S\r\n]*([A-Za-z0-9_-]+)\s*/.exec(e);
1319
+ return n ? n[1] : t;
1320
+ }
1321
+ function Lt(e) {
1322
+ let t = 100, n = e.match(/[^\s]+/g);
1323
+ if (n && n.length >= 2 && n[0] === "#version") {
1324
+ let e = parseInt(n[1], 10);
1325
+ Number.isFinite(e) && (t = e);
1326
+ }
1327
+ if (t !== 100 && t !== 300) throw Error(`Invalid GLSL version ${t}`);
1328
+ return t;
1329
+ }
1330
+ //#endregion
1331
+ //#region node_modules/@luma.gl/shadertools/dist/lib/shader-assembly/wgsl-binding-debug.js
1332
+ var Rt = [RegExp(`@binding\\(\\s*(\\d+)\\s*\\)\\s*@group\\(\\s*(\\d+)\\s*\\)\\s*${_}\\s*:\\s*([^;]+);`, "g"), RegExp(`@group\\(\\s*(\\d+)\\s*\\)\\s*@binding\\(\\s*(\\d+)\\s*\\)\\s*${_}\\s*:\\s*([^;]+);`, "g")];
1333
+ function zt(e, t = []) {
1334
+ let n = C(e), r = /* @__PURE__ */ new Map();
1335
+ for (let e of t) r.set(Vt(e.name, e.group, e.location), e.moduleName);
1336
+ let i = [];
1337
+ for (let e of Rt) {
1338
+ e.lastIndex = 0;
1339
+ let t;
1340
+ for (t = e.exec(n); t;) {
1341
+ let a = e === Rt[0], o = Number(t[a ? 1 : 2]), s = Number(t[a ? 2 : 1]), c = t[3]?.trim(), l = t[4], u = t[5].trim(), d = r.get(Vt(l, s, o));
1342
+ i.push(Bt({
1343
+ name: l,
1344
+ group: s,
1345
+ binding: o,
1346
+ owner: d ? "module" : "application",
1347
+ moduleName: d,
1348
+ accessDeclaration: c,
1349
+ resourceType: u
1350
+ })), t = e.exec(n);
1351
+ }
1352
+ }
1353
+ return i.sort((e, t) => e.group === t.group ? e.binding === t.binding ? e.name.localeCompare(t.name) : e.binding - t.binding : e.group - t.group);
1354
+ }
1355
+ function Bt(e) {
1356
+ let t = {
1357
+ name: e.name,
1358
+ group: e.group,
1359
+ binding: e.binding,
1360
+ owner: e.owner,
1361
+ kind: "unknown",
1362
+ moduleName: e.moduleName,
1363
+ resourceType: e.resourceType
1364
+ };
1365
+ if (e.accessDeclaration) {
1366
+ let n = e.accessDeclaration.split(",").map((e) => e.trim());
1367
+ if (n[0] === "uniform") return {
1368
+ ...t,
1369
+ kind: "uniform",
1370
+ access: "uniform"
1371
+ };
1372
+ if (n[0] === "storage") {
1373
+ let e = n[1] || "read_write";
1374
+ return {
1375
+ ...t,
1376
+ kind: e === "read" ? "read-only-storage" : "storage",
1377
+ access: e
1378
+ };
1379
+ }
1380
+ }
1381
+ return e.resourceType === "sampler" || e.resourceType === "sampler_comparison" ? {
1382
+ ...t,
1383
+ kind: "sampler",
1384
+ samplerKind: e.resourceType === "sampler_comparison" ? "comparison" : "filtering"
1385
+ } : e.resourceType.startsWith("texture_storage_") ? {
1386
+ ...t,
1387
+ kind: "storage-texture",
1388
+ access: Wt(e.resourceType),
1389
+ viewDimension: Ht(e.resourceType)
1390
+ } : e.resourceType.startsWith("texture_") ? {
1391
+ ...t,
1392
+ kind: "texture",
1393
+ viewDimension: Ht(e.resourceType),
1394
+ sampleType: Ut(e.resourceType),
1395
+ multisampled: e.resourceType.startsWith("texture_multisampled_")
1396
+ } : t;
1397
+ }
1398
+ function Vt(e, t, n) {
1399
+ return `${t}:${n}:${e}`;
1400
+ }
1401
+ function Ht(e) {
1402
+ if (e.includes("cube_array")) return "cube-array";
1403
+ if (e.includes("2d_array")) return "2d-array";
1404
+ if (e.includes("cube")) return "cube";
1405
+ if (e.includes("3d")) return "3d";
1406
+ if (e.includes("2d")) return "2d";
1407
+ if (e.includes("1d")) return "1d";
1408
+ }
1409
+ function Ut(e) {
1410
+ if (e.startsWith("texture_depth_")) return "depth";
1411
+ if (e.includes("<i32>")) return "sint";
1412
+ if (e.includes("<u32>")) return "uint";
1413
+ if (e.includes("<f32>")) return "float";
1414
+ }
1415
+ function Wt(e) {
1416
+ return /,\s*([A-Za-z_][A-Za-z0-9_]*)\s*>$/.exec(e)?.[1];
1417
+ }
1418
+ //#endregion
1419
+ //#region node_modules/@luma.gl/shadertools/dist/lib/preprocessor/preprocessor.js
1420
+ var I = "([a-zA-Z_][a-zA-Z0-9_]*)", Gt = /^\s*\#\s*if\s+(.+?)\s*(?:\/\/.*)?$/, Kt = RegExp(`^\\s*\\#\\s*ifdef\\s*${I}\\s*$`), qt = RegExp(`^\\s*\\#\\s*ifndef\\s*${I}\\s*(?:\\/\\/.*)?$`), Jt = /^\s*\#\s*else\s*(?:\/\/.*)?$/, Yt = /^\s*\#\s*endif\s*$/, Xt = RegExp(`^\\s*\\#\\s*ifdef\\s*${I}\\s*(?:\\/\\/.*)?$`), Zt = /^\s*\#\s*endif\s*(?:\/\/.*)?$/;
1421
+ function L(e, t) {
1422
+ let n = e.split("\n"), r = [], i = [], a = !0;
1423
+ for (let e of n) {
1424
+ let n = e.match(Gt), o = e.match(Xt) || e.match(Kt), s = e.match(qt), c = e.match(Jt), l = e.match(Zt) || e.match(Yt);
1425
+ if (n) {
1426
+ let e = Qt(n[1], t?.defines || {}), r = a && e;
1427
+ i.push({
1428
+ parentActive: a,
1429
+ branchTaken: e,
1430
+ active: r
1431
+ }), a = r;
1432
+ } else if (o || s) {
1433
+ let e = (o || s)?.[1], n = !!t?.defines?.[e], r = o ? n : !n, c = a && r;
1434
+ i.push({
1435
+ parentActive: a,
1436
+ branchTaken: r,
1437
+ active: c
1438
+ }), a = c;
1439
+ } else if (c) {
1440
+ let e = i[i.length - 1];
1441
+ if (!e) throw Error("Encountered #else without matching #if, #ifdef or #ifndef");
1442
+ e.active = e.parentActive && !e.branchTaken, e.branchTaken = !0, a = e.active;
1443
+ } else l ? (i.pop(), a = !i.length || i[i.length - 1].active) : a && r.push(e);
1444
+ }
1445
+ if (i.length > 0) throw Error("Unterminated conditional block in shader source");
1446
+ return r.join("\n");
1447
+ }
1448
+ function Qt(e, t) {
1449
+ let n = e.trim();
1450
+ if (/^[+-]?\d+(?:\.\d+)?$/.test(n)) return Number(n) !== 0;
1451
+ if (n === "true") return !0;
1452
+ if (n === "false") return !1;
1453
+ let r = n.match(RegExp(`^!\\s*${I}$`));
1454
+ if (r) return !t[r[1]];
1455
+ let i = n.match(RegExp(`^${I}$`));
1456
+ if (i) return !!t[i[1]];
1457
+ let a = n.match(RegExp(`^defined\\s*\\(\\s*${I}\\s*\\)$`));
1458
+ if (a) return t[a[1]] !== void 0;
1459
+ let o = n.match(RegExp(`^!\\s*defined\\s*\\(\\s*${I}\\s*\\)$`));
1460
+ if (o) return t[o[1]] === void 0;
1461
+ throw Error(`Unsupported #if expression "${e}"`);
1462
+ }
1463
+ //#endregion
1464
+ //#region node_modules/@luma.gl/shadertools/dist/lib/shader-assembly/shader-plugin-vertex-inputs.js
1465
+ function $t(e, t) {
1466
+ let n = [];
1467
+ for (let [r, i] of Object.entries(t)) nn(e, r), n.push(`in ${tn(i)} ${r};`);
1468
+ return n.join("\n");
1469
+ }
1470
+ function en(e, t, n) {
1471
+ let r = Object.entries(n);
1472
+ if (r.length === 0) return {
1473
+ source: e,
1474
+ declarations: "",
1475
+ initialization: ""
1476
+ };
1477
+ let i = rn(e, t), a = e.slice(i.openParenthesis + 1, i.closeParenthesis), o = an(e, a), s = new Set(o.locations), c = [], l = [], u = [];
1478
+ for (let [t, n] of r) {
1479
+ if (o.names.has(t) || un(e, t)) throw Error(`ShaderPlugin vertex input "${t}" conflicts with an existing WGSL shader input or variable`);
1480
+ let r = dn(s);
1481
+ s.add(r);
1482
+ let i = `_luma_${t}`;
1483
+ c.push(`@location(${r}) ${i}: ${n}`), l.push(`var<private> ${t}: ${n};`), u.push(`${t} = ${i};`);
1484
+ }
1485
+ let d = a.trim() ? ",\n " : "\n ", f = a.trim() ? "" : "\n", p = `${a}${d}${c.join(",\n ")}${f}`;
1486
+ return {
1487
+ source: e.slice(0, i.openParenthesis + 1) + p + e.slice(i.closeParenthesis),
1488
+ declarations: l.join("\n"),
1489
+ initialization: u.join("\n")
1490
+ };
1491
+ }
1492
+ function tn(e) {
1493
+ let { primitiveType: t, components: n } = d.getAttributeShaderTypeInfo(e), r = t === "i32" ? "int" : t === "u32" ? "uint" : "float";
1494
+ return n === 1 ? r : `${r === "int" ? "i" : r === "uint" ? "u" : ""}vec${n}`;
1495
+ }
1496
+ function nn(e, t) {
1497
+ let n = R(t);
1498
+ if (RegExp(`\\b(?:in|attribute)\\s+(?:(?:lowp|mediump|highp)\\s+)?[A-Za-z_][A-Za-z0-9_]*\\s+${n}\\s*(?:\\[|;)`).test(e)) throw Error(`ShaderPlugin vertex input "${t}" conflicts with an existing GLSL input`);
1499
+ }
1500
+ function rn(e, t) {
1501
+ let n = RegExp(`\\bfn\\s+${R(t)}\\s*\\(`, "g").exec(e);
1502
+ if (!n) throw Error(`ShaderPlugin vertex inputs require WGSL vertex entry point "${t}"`);
1503
+ let r = e.indexOf("(", n.index), i = fn(e, r, "(", ")");
1504
+ if (i < 0) throw Error(`Unable to parse WGSL vertex entry point "${t}" parameters`);
1505
+ return {
1506
+ openParenthesis: r,
1507
+ closeParenthesis: i
1508
+ };
1509
+ }
1510
+ function an(e, t) {
1511
+ let n = on(t), r = new Set(sn(t)), i = cn(t);
1512
+ for (let t of i) {
1513
+ let i = ln(e, t);
1514
+ if (i !== null) {
1515
+ n.push(...on(i));
1516
+ for (let e of sn(i)) r.add(e);
1517
+ }
1518
+ }
1519
+ return {
1520
+ locations: n,
1521
+ names: r
1522
+ };
1523
+ }
1524
+ function on(e) {
1525
+ let t = [], n = /@location\s*\(\s*(\d+)\s*\)/g, r = n.exec(e);
1526
+ for (; r;) t.push(Number(r[1])), r = n.exec(e);
1527
+ return t;
1528
+ }
1529
+ function sn(e) {
1530
+ let t = [], n = /(?:^|,)\s*(?:@[A-Za-z_][\w]*(?:\([^)]*\))?\s*)*([A-Za-z_][\w]*)\s*:/gm, r = n.exec(e);
1531
+ for (; r;) t.push(r[1]), r = n.exec(e);
1532
+ return t;
1533
+ }
1534
+ function cn(e) {
1535
+ let t = [], n = /:\s*([A-Za-z_][\w]*)\b/g, r = n.exec(e);
1536
+ for (; r;) t.push(r[1]), r = n.exec(e);
1537
+ return t;
1538
+ }
1539
+ function ln(e, t) {
1540
+ let n = RegExp(`\\bstruct\\s+${R(t)}\\s*\\{`, "g").exec(e);
1541
+ if (!n) return null;
1542
+ let r = e.indexOf("{", n.index), i = fn(e, r, "{", "}");
1543
+ return i < 0 ? null : e.slice(r + 1, i);
1544
+ }
1545
+ function un(e, t) {
1546
+ let n = R(t), r = RegExp(`\\b(?:var(?:<[^>]+>)?|let|const)\\s+${n}\\b`, "g"), i = r.exec(e);
1547
+ for (; i;) {
1548
+ if (pn(e, i.index) === 0) return !0;
1549
+ i = r.exec(e);
1550
+ }
1551
+ return !1;
1552
+ }
1553
+ function dn(e) {
1554
+ let t = 0;
1555
+ for (; e.has(t);) t++;
1556
+ return t;
1557
+ }
1558
+ function fn(e, t, n, r) {
1559
+ let i = 0, a = 0, o = !1;
1560
+ for (let s = t; s < e.length; s++) {
1561
+ let t = e[s], c = e[s + 1];
1562
+ if (o) {
1563
+ t === "\n" && (o = !1);
1564
+ continue;
1565
+ }
1566
+ if (a > 0) {
1567
+ t === "/" && c === "*" ? (a++, s++) : t === "*" && c === "/" && (a--, s++);
1568
+ continue;
1569
+ }
1570
+ if (t === "/" && c === "/") {
1571
+ o = !0, s++;
1572
+ continue;
1573
+ }
1574
+ if (t === "/" && c === "*") {
1575
+ a = 1, s++;
1576
+ continue;
1577
+ }
1578
+ if (t === n && i++, t === r && --i === 0) return s;
1579
+ }
1580
+ return -1;
1581
+ }
1582
+ function pn(e, t) {
1583
+ let n = 0, r = 0, i = !1;
1584
+ for (let a = 0; a < t; a++) {
1585
+ let t = e[a], o = e[a + 1];
1586
+ if (i) {
1587
+ t === "\n" && (i = !1);
1588
+ continue;
1589
+ }
1590
+ if (r > 0) {
1591
+ t === "/" && o === "*" ? (r++, a++) : t === "*" && o === "/" && (r--, a++);
1592
+ continue;
1593
+ }
1594
+ t === "/" && o === "/" ? (i = !0, a++) : t === "/" && o === "*" ? (r = 1, a++) : t === "{" ? n++ : t === "}" && n--;
1595
+ }
1596
+ return n;
1597
+ }
1598
+ function R(e) {
1599
+ return e.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
1600
+ }
1601
+ //#endregion
1602
+ //#region node_modules/@luma.gl/shadertools/dist/lib/shader-assembly/shader-plugin-varyings.js
1603
+ function mn(e, t, n) {
1604
+ let r = [], i = [];
1605
+ for (let [a, o] of Object.entries(n)) {
1606
+ Mn(e, a);
1607
+ let n = o.interpolation === "flat" ? "flat " : "", s = t === "vertex" ? "out" : "in";
1608
+ r.push(`${n}${s} ${tn(o.type)} ${a};`), t === "vertex" && i.push(`${a} = ${An(o.type)};`);
1609
+ }
1610
+ return {
1611
+ declarations: r.join("\n"),
1612
+ initialization: i.join("\n")
1613
+ };
1614
+ }
1615
+ function hn(e, t, n, r) {
1616
+ let i = Object.entries(r);
1617
+ if (i.length === 0) return {
1618
+ source: e,
1619
+ declarations: "",
1620
+ vertexInitialization: "",
1621
+ fragmentInitialization: ""
1622
+ };
1623
+ let a = e, o = z(a, t, "vertex"), s = gn(a, o), c = z(a, n, "fragment"), l = _n(a, c), u = vn(a, s), d = vn(a, l.type), f = /* @__PURE__ */ new Set([
1624
+ ...B(o.parameters),
1625
+ ...B(u.body),
1626
+ ...B(c.parameters),
1627
+ ...B(d.body)
1628
+ ]), p = /* @__PURE__ */ new Set([...Dn(u.body), ...Dn(d.body)]), m = [], h = [], g = [], _ = [];
1629
+ for (let [e, t] of i) {
1630
+ if (f.has(e) || On(a, e)) throw Error(`ShaderPlugin varying "${e}" conflicts with existing WGSL stage I/O or a module variable`);
1631
+ let n = kn(p);
1632
+ p.add(n);
1633
+ let r = t.interpolation === "flat" ? " @interpolate(flat)" : "";
1634
+ m.push(` @location(${n})${r} ${e}: ${t.type},`), h.push(`var<private> ${e}: ${t.type};`), g.push(`${e} = ${jn(t.type)};`), _.push(`${e} = ${l.name}.${e};`);
1635
+ }
1636
+ bn(a, s, o.openBrace, o.closeBrace), a = xn(a, s, o, i.map(([e]) => e)), o = z(a, t, "vertex"), a = Sn(a, o, i.map(([e]) => e));
1637
+ let v = (s === l.type ? [s] : [s, l.type]).map((e) => vn(a, e).closeBrace).sort((e, t) => t - e);
1638
+ for (let e of v) a = a.slice(0, e) + `${m.join("\n")}\n` + a.slice(e);
1639
+ if (c = z(a, n, "fragment"), !RegExp(`\\b${H(l.name)}\\s*:`).test(c.parameters)) throw Error(`Unable to preserve WGSL fragment input "${l.name}"`);
1640
+ return {
1641
+ source: a,
1642
+ declarations: h.join("\n"),
1643
+ vertexInitialization: g.join("\n"),
1644
+ fragmentInitialization: _.join("\n")
1645
+ };
1646
+ }
1647
+ function z(e, t, n) {
1648
+ let r = RegExp(`\\bfn\\s+${H(t)}\\s*\\(`, "g").exec(e);
1649
+ if (!r) throw Error(`ShaderPlugin varyings require WGSL ${n} entry point "${t}"`);
1650
+ let i = e.indexOf("(", r.index), a = V(e, i, "(", ")"), o = e.indexOf("{", a), s = V(e, o, "{", "}");
1651
+ if (a < 0 || o < 0 || s < 0) throw Error(`Unable to parse WGSL ${n} entry point "${t}"`);
1652
+ return {
1653
+ openParenthesis: i,
1654
+ closeParenthesis: a,
1655
+ openBrace: o,
1656
+ closeBrace: s,
1657
+ parameters: e.slice(i + 1, a)
1658
+ };
1659
+ }
1660
+ function gn(e, t) {
1661
+ let n = e.slice(t.closeParenthesis + 1, t.openBrace), r = /->\s*([A-Za-z_][\w]*)\s*$/.exec(n.trim());
1662
+ if (!r || yn(e, r[1]) === null) throw Error("ShaderPlugin varyings require the WGSL vertex entry point to return a named struct");
1663
+ return r[1];
1664
+ }
1665
+ function _n(e, t) {
1666
+ let n = [];
1667
+ for (let r of En(t.parameters, ",")) {
1668
+ let t = /(?:@[A-Za-z_][\w]*(?:\([^)]*\))?\s*)*([A-Za-z_][\w]*)\s*:\s*([A-Za-z_][\w]*)\s*$/.exec(r.trim());
1669
+ t && yn(e, t[2]) && n.push({
1670
+ name: t[1],
1671
+ type: t[2]
1672
+ });
1673
+ }
1674
+ if (n.length !== 1) throw Error(`ShaderPlugin varyings require exactly one named WGSL fragment input struct; found ${n.length}`);
1675
+ return n[0];
1676
+ }
1677
+ function vn(e, t) {
1678
+ let n = yn(e, t);
1679
+ if (!n) throw Error(`Unable to find WGSL stage I/O struct "${t}"`);
1680
+ return n;
1681
+ }
1682
+ function yn(e, t) {
1683
+ let n = RegExp(`\\bstruct\\s+${H(t)}\\s*\\{`, "g").exec(e);
1684
+ if (!n) return null;
1685
+ let r = e.indexOf("{", n.index), i = V(e, r, "{", "}");
1686
+ return i < 0 ? null : {
1687
+ openBrace: r,
1688
+ closeBrace: i,
1689
+ body: e.slice(r + 1, i)
1690
+ };
1691
+ }
1692
+ function bn(e, t, n, r) {
1693
+ let i = RegExp(`\\b${H(t)}\\s*\\(`, "g"), a = i.exec(e);
1694
+ for (; a;) {
1695
+ if (a.index < n || a.index > r) throw Error(`ShaderPlugin varying output struct "${t}" is constructed outside the selected vertex entry point`);
1696
+ a = i.exec(e);
1697
+ }
1698
+ }
1699
+ function xn(e, t, n, r) {
1700
+ let i = RegExp(`\\b${H(t)}\\s*\\(`, "g"), a = [], o = i.exec(e);
1701
+ for (; o;) {
1702
+ if (o.index > n.openBrace && o.index < n.closeBrace) {
1703
+ let r = e.indexOf("(", o.index), i = V(e, r, "(", ")");
1704
+ if (i < 0 || i > n.closeBrace) throw Error(`Unable to parse WGSL output constructor "${t}"`);
1705
+ a.push({
1706
+ openParenthesis: r,
1707
+ closeParenthesis: i
1708
+ });
1709
+ }
1710
+ o = i.exec(e);
1711
+ }
1712
+ for (let t of a.sort((e, t) => t.closeParenthesis - e.closeParenthesis)) {
1713
+ let n = e.slice(t.openParenthesis + 1, t.closeParenthesis).trim() ? ", " : "";
1714
+ e = e.slice(0, t.closeParenthesis) + n + r.join(", ") + e.slice(t.closeParenthesis);
1715
+ }
1716
+ return e;
1717
+ }
1718
+ function Sn(e, t, n) {
1719
+ let r = Cn(e, t.openBrace + 1, t.closeBrace);
1720
+ for (let t = r.length - 1; t >= 0; t--) {
1721
+ let i = r[t], a = e.slice(i.expressionStart, i.semicolon).trim();
1722
+ if (!a) throw Error("ShaderPlugin varying vertex entry point cannot use an empty return");
1723
+ let o = `_luma_vertexOutput${t}`, s = `{\nvar ${o} = ${a};\n${n.map((e) => `${o}.${e} = ${e};`).join("\n")}\nreturn ${o};\n}`;
1724
+ e = e.slice(0, i.start) + s + e.slice(i.semicolon + 1);
1725
+ }
1726
+ return e;
1727
+ }
1728
+ function Cn(e, t, n) {
1729
+ let r = [], i = t;
1730
+ for (; i < n;) if (i = Tn(e, i, n), e.slice(i, i + 6) === "return" && !/[A-Za-z0-9_]/.test(e[i + 6] || "")) {
1731
+ let t = i + 6, a = wn(e, t, n);
1732
+ if (a < 0) throw Error("Unable to parse WGSL return statement in selected vertex entry point");
1733
+ r.push({
1734
+ start: i,
1735
+ expressionStart: t,
1736
+ semicolon: a
1737
+ }), i = a + 1;
1738
+ } else i++;
1739
+ return r;
1740
+ }
1741
+ function wn(e, t, n) {
1742
+ let r = 0, i = 0;
1743
+ for (let a = t; a < n; a++) {
1744
+ let t = Tn(e, a, n);
1745
+ if (t !== a) {
1746
+ a = t - 1;
1747
+ continue;
1748
+ }
1749
+ let o = e[a];
1750
+ if (o === "(" && r++, o === ")" && r--, o === "[" && i++, o === "]" && i--, o === ";" && r === 0 && i === 0) return a;
1751
+ }
1752
+ return -1;
1753
+ }
1754
+ function Tn(e, t, n) {
1755
+ let r = t;
1756
+ if (e[r] === "/" && e[r + 1] === "/") {
1757
+ let t = e.indexOf("\n", r + 2);
1758
+ return t < 0 || t > n ? n : t + 1;
1759
+ }
1760
+ if (e[r] === "/" && e[r + 1] === "*") {
1761
+ let t = 1;
1762
+ for (r += 2; r < n && t > 0;) e[r] === "/" && e[r + 1] === "*" ? (t++, r += 2) : e[r] === "*" && e[r + 1] === "/" ? (t--, r += 2) : r++;
1763
+ }
1764
+ return r;
1765
+ }
1766
+ function En(e, t) {
1767
+ let n = [], r = 0, i = 0, a = 0;
1768
+ for (let o = 0; o < e.length; o++) {
1769
+ let s = e[o];
1770
+ s === "(" && i++, s === ")" && i--, s === "<" && a++, s === ">" && a--, s === t && i === 0 && a === 0 && (n.push(e.slice(r, o)), r = o + 1);
1771
+ }
1772
+ return n.push(e.slice(r)), n;
1773
+ }
1774
+ function Dn(e) {
1775
+ let t = [], n = /@location\s*\(\s*(\d+)\s*\)/g, r = n.exec(e);
1776
+ for (; r;) t.push(Number(r[1])), r = n.exec(e);
1777
+ return t;
1778
+ }
1779
+ function B(e) {
1780
+ let t = [], n = /(?:^|,)\s*(?:@[A-Za-z_][\w]*(?:\([^)]*\))?\s*)*([A-Za-z_][\w]*)\s*:/gm, r = n.exec(e);
1781
+ for (; r;) t.push(r[1]), r = n.exec(e);
1782
+ return t;
1783
+ }
1784
+ function On(e, t) {
1785
+ let n = RegExp(`\\b(?:var(?:<[^>]+>)?|let|const)\\s+${H(t)}\\b`, "g"), r = n.exec(e);
1786
+ for (; r;) {
1787
+ if (Nn(e, r.index) === 0) return !0;
1788
+ r = n.exec(e);
1789
+ }
1790
+ return !1;
1791
+ }
1792
+ function kn(e) {
1793
+ let t = 0;
1794
+ for (; e.has(t);) t++;
1795
+ return t;
1796
+ }
1797
+ function An(e) {
1798
+ let { primitiveType: t, components: n } = d.getAttributeShaderTypeInfo(e), r = t === "u32" ? "0u" : t === "i32" ? "0" : "0.0";
1799
+ return n === 1 ? r : `${tn(e)}(${r})`;
1800
+ }
1801
+ function jn(e) {
1802
+ let { primitiveType: t, components: n } = d.getAttributeShaderTypeInfo(e), r = `${t}(0)`;
1803
+ return n === 1 ? r : `${e}(${r})`;
1804
+ }
1805
+ function Mn(e, t) {
1806
+ if (RegExp(`\\b(?:flat\\s+|smooth\\s+)?(?:in|out|varying)\\s+(?:(?:lowp|mediump|highp)\\s+)?[A-Za-z_][A-Za-z0-9_]*\\s+${H(t)}\\s*(?:\\[|;)`).test(e)) throw Error(`ShaderPlugin varying "${t}" conflicts with existing GLSL stage I/O`);
1807
+ }
1808
+ function V(e, t, n, r) {
1809
+ let i = 0, a = 0, o = !1;
1810
+ for (let s = t; s < e.length; s++) {
1811
+ let t = e[s], c = e[s + 1];
1812
+ if (o) {
1813
+ t === "\n" && (o = !1);
1814
+ continue;
1815
+ }
1816
+ if (a > 0) {
1817
+ t === "/" && c === "*" ? (a++, s++) : t === "*" && c === "/" && (a--, s++);
1818
+ continue;
1819
+ }
1820
+ if (t === "/" && c === "/") {
1821
+ o = !0, s++;
1822
+ continue;
1823
+ }
1824
+ if (t === "/" && c === "*") {
1825
+ a = 1, s++;
1826
+ continue;
1827
+ }
1828
+ if (t === n && i++, t === r && --i === 0) return s;
1829
+ }
1830
+ return -1;
1831
+ }
1832
+ function Nn(e, t) {
1833
+ let n = 0;
1834
+ for (let r = 0; r < t; r++) {
1835
+ let i = Tn(e, r, t);
1836
+ if (i !== r) {
1837
+ r = i - 1;
1838
+ continue;
1839
+ }
1840
+ e[r] === "{" && n++, e[r] === "}" && n--;
1841
+ }
1842
+ return n;
1843
+ }
1844
+ function H(e) {
1845
+ return e.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
1846
+ }
1847
+ //#endregion
1848
+ //#region node_modules/@luma.gl/shadertools/dist/lib/shader-assembly/assemble-shaders.js
1849
+ var Pn = `\n\n${A}\n`, U = 100, Fn = "precision highp float;\n";
1850
+ function In(e) {
1851
+ let t = P(e.modules || []), { source: n, bindingAssignments: r } = Rn(e.platformInfo, {
1852
+ ...e,
1853
+ source: e.source,
1854
+ stage: "vertex",
1855
+ modules: t
1856
+ });
1857
+ return {
1858
+ source: n,
1859
+ getUniforms: Bn(t),
1860
+ bindingAssignments: r,
1861
+ bindingTable: zt(n, r),
1862
+ shaderLayout: ne(n, {
1863
+ vertexEntryPoint: e.vertexEntryPoint,
1864
+ scanVertexAttributes: e.scanVertexAttributes
1865
+ })
1866
+ };
1867
+ }
1868
+ function Ln(e) {
1869
+ let { vs: t, fs: n } = e, r = P(e.modules || []);
1870
+ return {
1871
+ vs: zn(e.platformInfo, {
1872
+ ...e,
1873
+ source: t,
1874
+ stage: "vertex",
1875
+ modules: r
1876
+ }),
1877
+ fs: zn(e.platformInfo, {
1878
+ ...e,
1879
+ source: n,
1880
+ stage: "fragment",
1881
+ modules: r
1882
+ }),
1883
+ getUniforms: Bn(r)
1884
+ };
1885
+ }
1886
+ function Rn(e, t) {
1887
+ let { source: n, stage: r, modules: i, defines: a = {}, hookFunctions: o = [], inject: s = {}, pluginInjections: c = {}, pluginVertexInputs: l = {}, pluginVaryings: u = {}, vertexEntryPoint: d = "vertexMain", fragmentEntryPoint: f = "fragmentMain", log: p } = t;
1888
+ k(typeof n == "string", "shader source must be a string");
1889
+ let m = en(L(n, { defines: a }), d, l), h = hn(m.source, d, f, u), g = h.source, _ = "", v = Pt(o), y = {}, b = {}, x = {};
1890
+ Vn(c, y, b, x);
1891
+ for (let e in s) {
1892
+ let t = typeof s[e] == "string" ? {
1893
+ injection: s[e],
1894
+ order: 0
1895
+ } : s[e], n = /^(v|f)s:(#)?([\w-]+)$/.exec(e);
1896
+ if (n) {
1897
+ let r = n[2], i = n[3];
1898
+ r ? i === "decl" ? b[e] = [t] : x[e] = [t] : y[e] = [t];
1899
+ } else x[e] = [t];
1900
+ }
1901
+ Hn(m.declarations, m.initialization, b, x), Un(h, b, x);
1902
+ let S = i, C = Xn(g), w = Yn(C.source), ee = er(S, t._bindingRegistry, w, a), T = [];
1903
+ for (let e of S) {
1904
+ p && ze(e, g, p);
1905
+ let n = Zn(L(Jn(e, "wgsl", p), { defines: a }), e, {
1906
+ usedBindingsByGroup: w,
1907
+ bindingRegistry: t._bindingRegistry,
1908
+ reservedBindingKeysByGroup: ee
1909
+ });
1910
+ T.push(...n.bindingAssignments);
1911
+ let r = n.source;
1912
+ _ += r;
1913
+ let i = Wn(e);
1914
+ for (let e in i) {
1915
+ let t = /^(v|f)s:#([\w-]+)$/.exec(e);
1916
+ if (t) {
1917
+ let n = t[2] === "decl" ? b : x;
1918
+ n[e] = n[e] || [], n[e].push(i[e]);
1919
+ } else y[e] = y[e] || [], y[e].push(i[e]);
1920
+ }
1921
+ }
1922
+ return _ += Pn, _ = j(_, r, Gn(b), !1, "wgsl", {
1923
+ vertex: d,
1924
+ fragment: f
1925
+ }), _ += Kn(v, y), _ += cr(T), _ += C.source, _ = j(_, r, x, !1, "wgsl", {
1926
+ vertex: d,
1927
+ fragment: f
1928
+ }), sr(_), {
1929
+ source: _,
1930
+ bindingAssignments: T
1931
+ };
1932
+ }
1933
+ function zn(e, t) {
1934
+ let { source: n, stage: r, language: i = "glsl", modules: a, defines: o = {}, hookFunctions: s = [], inject: c = {}, pluginInjections: l = {}, pluginVertexInputs: u = {}, pluginVaryings: d = {}, prologue: f = !0, log: p } = t;
1935
+ k(typeof n == "string", "shader source must be a string");
1936
+ let m = i === "glsl" ? Ft(n).version : -1, h = e.shaderLanguageVersion, g = m === 100 ? "#version 100" : "#version 300 es", _ = n.split("\n").slice(1).join("\n"), v = {};
1937
+ a.forEach((e) => {
1938
+ Object.assign(v, e.defines);
1939
+ }), Object.assign(v, o);
1940
+ let y = "";
1941
+ switch (i) {
1942
+ case "wgsl": break;
1943
+ case "glsl": y = f ? `\
1944
+ ${g}
1945
+
1946
+ // ----- PROLOGUE -------------------------
1947
+ ${`#define SHADER_TYPE_${r.toUpperCase()}`}
1948
+
1949
+ ${Et(e)}
1950
+ ${r === "fragment" ? Fn : ""}
1951
+
1952
+ // ----- APPLICATION DEFINES -------------------------
1953
+
1954
+ ${qn(v)}
1955
+
1956
+ ` : `${g}
1957
+ `;
1958
+ }
1959
+ let b = Pt(s), x = {}, S = {}, C = {};
1960
+ Vn(l, x, S, C);
1961
+ for (let e in c) {
1962
+ let t = typeof c[e] == "string" ? {
1963
+ injection: c[e],
1964
+ order: 0
1965
+ } : c[e], n = /^(v|f)s:(#)?([\w-]+)$/.exec(e);
1966
+ if (n) {
1967
+ let r = n[2], i = n[3];
1968
+ r ? i === "decl" ? S[e] = [t] : C[e] = [t] : x[e] = [t];
1969
+ } else C[e] = [t];
1970
+ }
1971
+ if (r === "vertex") {
1972
+ let e = $t(_, u);
1973
+ e && (S["vs:#decl"] = S["vs:#decl"] || [], S["vs:#decl"].push({
1974
+ injection: e,
1975
+ order: -(2 ** 53 - 1)
1976
+ }));
1977
+ }
1978
+ let w = mn(_, r, d);
1979
+ if (w.declarations) {
1980
+ let e = r === "vertex" ? "vs:#decl" : "fs:#decl";
1981
+ S[e] = S[e] || [], S[e].push({
1982
+ injection: w.declarations,
1983
+ order: -(2 ** 53 - 1)
1984
+ });
1985
+ }
1986
+ w.initialization && (C["vs:#main-start"] = C["vs:#main-start"] || [], C["vs:#main-start"].push({
1987
+ injection: w.initialization,
1988
+ order: -(2 ** 53 - 1)
1989
+ }));
1990
+ for (let e of a) {
1991
+ p && ze(e, _, p);
1992
+ let t = Jn(e, r, p);
1993
+ y += t;
1994
+ let n = e.instance?.normalizedInjections[r] || {};
1995
+ for (let e in n) {
1996
+ let t = /^(v|f)s:#([\w-]+)$/.exec(e);
1997
+ if (t) {
1998
+ let r = t[2] === "decl" ? S : C;
1999
+ r[e] = r[e] || [], r[e].push(n[e]);
2000
+ } else x[e] = x[e] || [], x[e].push(n[e]);
2001
+ }
2002
+ }
2003
+ return y += "// ----- MAIN SHADER SOURCE -------------------------", y += Pn, y = j(y, r, S), y += Nt(b[r], x), y += _, y = j(y, r, C), i === "glsl" && m !== h && (y = Dt(y, r)), i === "glsl" && gt(y, r, p), y.trim();
2004
+ }
2005
+ function Bn(e) {
2006
+ return function(t) {
2007
+ let n = {};
2008
+ for (let r of e) {
2009
+ let e = r.getUniforms?.(t, n);
2010
+ Object.assign(n, e);
2011
+ }
2012
+ return n;
2013
+ };
2014
+ }
2015
+ function Vn(e, t, n, r) {
2016
+ for (let i in e) {
2017
+ let a = /^(v|f)s:(#)?([\w-]+)$/.exec(i);
2018
+ if (a) {
2019
+ let o = a[2], s = a[3], c = o ? s === "decl" ? n : r : t;
2020
+ c[i] = c[i] || [], c[i].push(...e[i]);
2021
+ } else r[i] = r[i] || [], r[i].push(...e[i]);
2022
+ }
2023
+ }
2024
+ function Hn(e, t, n, r) {
2025
+ e && (n["vs:#decl"] = n["vs:#decl"] || [], n["vs:#decl"].push({
2026
+ injection: e,
2027
+ order: -(2 ** 53 - 1)
2028
+ })), t && (r["vs:#main-start"] = r["vs:#main-start"] || [], r["vs:#main-start"].push({
2029
+ injection: t,
2030
+ order: -(2 ** 53 - 1)
2031
+ }));
2032
+ }
2033
+ function Un(e, t, n) {
2034
+ e.declarations && (t["vs:#decl"] = t["vs:#decl"] || [], t["vs:#decl"].push({
2035
+ injection: e.declarations,
2036
+ order: -(2 ** 53 - 1)
2037
+ })), e.vertexInitialization && (n["vs:#main-start"] = n["vs:#main-start"] || [], n["vs:#main-start"].push({
2038
+ injection: e.vertexInitialization,
2039
+ order: -(2 ** 53 - 1)
2040
+ })), e.fragmentInitialization && (n["fs:#main-start"] = n["fs:#main-start"] || [], n["fs:#main-start"].push({
2041
+ injection: e.fragmentInitialization,
2042
+ order: -(2 ** 53 - 1)
2043
+ }));
2044
+ }
2045
+ function Wn(e) {
2046
+ return {
2047
+ ...e.instance?.normalizedInjections.vertex || {},
2048
+ ...e.instance?.normalizedInjections.fragment || {}
2049
+ };
2050
+ }
2051
+ function Gn(e) {
2052
+ let t = [...e["vs:#decl"] || [], ...e["fs:#decl"] || []];
2053
+ return t.length ? { "vs:#decl": t } : {};
2054
+ }
2055
+ function Kn(e, t) {
2056
+ return Nt(e.vertex, t, "wgsl") + Nt(e.fragment, t, "wgsl");
2057
+ }
2058
+ function qn(e = {}) {
2059
+ let t = "";
2060
+ for (let n in e) {
2061
+ let r = e[n];
2062
+ (r || Number.isFinite(r)) && (t += `#define ${n.toUpperCase()} ${e[n]}\n`);
2063
+ }
2064
+ return t;
2065
+ }
2066
+ function Jn(e, t, n) {
2067
+ let r;
2068
+ switch (t) {
2069
+ case "vertex":
2070
+ r = e.vs || "";
2071
+ break;
2072
+ case "fragment":
2073
+ r = e.fs || "";
2074
+ break;
2075
+ case "wgsl":
2076
+ r = e.source || "";
2077
+ break;
2078
+ default: k(!1);
2079
+ }
2080
+ if (!e.name) throw Error("Shader module must have a name");
2081
+ mt(e, t, { log: n });
2082
+ let i = e.name.toUpperCase().replace(/[^0-9a-z]/gi, "_"), a = `\
2083
+ // ----- MODULE ${e.name} ---------------
2084
+
2085
+ `;
2086
+ return t !== "wgsl" && (a += `#define MODULE_${i}\n`), a += `${r}\n`, a;
2087
+ }
2088
+ function Yn(e) {
2089
+ let t = /* @__PURE__ */ new Map();
2090
+ for (let n of w(e, x)) {
2091
+ let e = Number(n.bindingToken), r = Number(n.groupToken);
2092
+ rr(r, e, n.name), W(t, r, e, `application binding "${n.name}"`);
2093
+ }
2094
+ return t;
2095
+ }
2096
+ function Xn(e) {
2097
+ let t = w(e, b), n = /* @__PURE__ */ new Map();
2098
+ for (let e of t) {
2099
+ if (e.bindingToken === "auto") continue;
2100
+ let t = Number(e.bindingToken), r = Number(e.groupToken);
2101
+ rr(r, t, e.name), W(n, r, t, `application binding "${e.name}"`);
2102
+ }
2103
+ let r = { sawSupportedBindingDeclaration: t.length > 0 }, i = ee(e, b, (e) => $n(e, n, r));
2104
+ if (T(e) && !r.sawSupportedBindingDeclaration) throw Error("Unsupported @binding(auto) declaration form in application WGSL. Use adjacent \"@group(N)\" and \"@binding(auto)\" decorators followed by a bindable \"var\" declaration.");
2105
+ return { source: i };
2106
+ }
2107
+ function Zn(e, t, n) {
2108
+ let r = [], i = {
2109
+ sawSupportedBindingDeclaration: w(e, y).length > 0,
2110
+ nextHintedBindingLocation: typeof t.firstBindingSlot == "number" ? t.firstBindingSlot : null
2111
+ }, a = ee(e, y, (e) => Qn(e, {
2112
+ module: t,
2113
+ context: n,
2114
+ bindingAssignments: r,
2115
+ relocationState: i
2116
+ }));
2117
+ if (T(e) && !i.sawSupportedBindingDeclaration) throw Error(`Unsupported @binding(auto) declaration form in module "${t.name}". Use adjacent "@group(N)" and "@binding(auto)" decorators followed by a bindable "var" declaration.`);
2118
+ return {
2119
+ source: a,
2120
+ bindingAssignments: r
2121
+ };
2122
+ }
2123
+ function Qn(e, t) {
2124
+ let { module: n, context: r, bindingAssignments: i, relocationState: a } = t, { match: o, bindingToken: s, groupToken: c, name: l } = e, u = Number(c);
2125
+ if (s === "auto") {
2126
+ let e = lr(u, n.name, l), t = r.bindingRegistry?.get(e), s = t === void 0 ? ar(u, r.usedBindingsByGroup, n.name, a.nextHintedBindingLocation ?? void 0, r.bindingRegistry) : t;
2127
+ return ir(n.name, u, s, l), t !== void 0 && tr(r.reservedBindingKeysByGroup, u, s, e) ? (i.push({
2128
+ moduleName: n.name,
2129
+ name: l,
2130
+ group: u,
2131
+ location: s
2132
+ }), o.replace(/@binding\(\s*auto\s*\)/, `@binding(${s})`)) : (W(r.usedBindingsByGroup, u, s, `module "${n.name}" binding "${l}"`), r.bindingRegistry?.set(e, s), i.push({
2133
+ moduleName: n.name,
2134
+ name: l,
2135
+ group: u,
2136
+ location: s
2137
+ }), a.nextHintedBindingLocation !== null && t === void 0 && (a.nextHintedBindingLocation = s + 1), o.replace(/@binding\(\s*auto\s*\)/, `@binding(${s})`));
2138
+ }
2139
+ let d = Number(s);
2140
+ return ir(n.name, u, d, l), W(r.usedBindingsByGroup, u, d, `module "${n.name}" binding "${l}"`), i.push({
2141
+ moduleName: n.name,
2142
+ name: l,
2143
+ group: u,
2144
+ location: d
2145
+ }), o;
2146
+ }
2147
+ function $n(e, t, n) {
2148
+ let { match: r, bindingToken: i, groupToken: a, name: o } = e, s = Number(a);
2149
+ if (i === "auto") {
2150
+ let e = or(s, t);
2151
+ return rr(s, e, o), W(t, s, e, `application binding "${o}"`), r.replace(/@binding\(\s*auto\s*\)/, `@binding(${e})`);
2152
+ }
2153
+ return n.sawSupportedBindingDeclaration = !0, r;
2154
+ }
2155
+ function er(e, t, n, r) {
2156
+ let i = /* @__PURE__ */ new Map();
2157
+ if (!t) return i;
2158
+ for (let a of e) for (let e of nr(a, r)) {
2159
+ let r = lr(e.group, a.name, e.name), o = t.get(r);
2160
+ if (o !== void 0) {
2161
+ let t = i.get(e.group) || /* @__PURE__ */ new Map(), a = t.get(o);
2162
+ if (a && a !== r) throw Error(`Duplicate WGSL binding reservation for modules "${a}" and "${r}": group ${e.group}, binding ${o}.`);
2163
+ W(n, e.group, o, `registered module binding "${r}"`), t.set(o, r), i.set(e.group, t);
2164
+ }
2165
+ }
2166
+ return i;
2167
+ }
2168
+ function tr(e, t, n, r) {
2169
+ let i = e.get(t);
2170
+ if (!i) return !1;
2171
+ let a = i.get(n);
2172
+ if (!a) return !1;
2173
+ if (a !== r) throw Error(`Registered module binding "${r}" collided with "${a}": group ${t}, binding ${n}.`);
2174
+ return !0;
2175
+ }
2176
+ function nr(e, t) {
2177
+ let n = [], r = L(e.source || "", { defines: t });
2178
+ for (let e of w(r, y)) n.push({
2179
+ name: e.name,
2180
+ group: Number(e.groupToken)
2181
+ });
2182
+ return n;
2183
+ }
2184
+ function rr(e, t, n) {
2185
+ if (e === 0 && t >= U) throw Error(`Application binding "${n}" in group 0 uses reserved binding ${t}. Application-owned explicit group-0 bindings must stay below ${U}.`);
2186
+ }
2187
+ function ir(e, t, n, r) {
2188
+ if (t === 0 && n < U) throw Error(`Module "${e}" binding "${r}" in group 0 uses reserved application binding ${n}. Module-owned explicit group-0 bindings must be ${U} or higher.`);
2189
+ }
2190
+ function W(e, t, n, r) {
2191
+ let i = e.get(t) || /* @__PURE__ */ new Set();
2192
+ if (i.has(n)) throw Error(`Duplicate WGSL binding assignment for ${r}: group ${t}, binding ${n}.`);
2193
+ i.add(n), e.set(t, i);
2194
+ }
2195
+ function ar(e, t, n, r, i) {
2196
+ let a = t.get(e) || /* @__PURE__ */ new Set(), o = /* @__PURE__ */ new Set(), s = `${e}:`, c = `${s}${n}:`;
2197
+ for (let [e, t] of i || []) e.startsWith(c) && o.add(t);
2198
+ let l = r ?? (e === 0 ? U : a.size > 0 ? Math.max(...a) + 1 : 0);
2199
+ for (; a.has(l) || o.has(l);) l++;
2200
+ for (let [e, t] of i || []) t === l && e.startsWith(s) && i?.delete(e);
2201
+ return l;
2202
+ }
2203
+ function or(e, t) {
2204
+ let n = t.get(e) || /* @__PURE__ */ new Set(), r = 0;
2205
+ for (; n.has(r);) r++;
2206
+ return r;
2207
+ }
2208
+ function sr(e) {
2209
+ let t = te(e, y);
2210
+ if (!t) return;
2211
+ let n = ur(e, t.index);
2212
+ throw n ? Error(`Unresolved @binding(auto) for module "${n}" binding "${t.name}" remained in assembled WGSL source.`) : dr(e, t.index) ? Error(`Unresolved @binding(auto) for application binding "${t.name}" remained in assembled WGSL source.`) : Error(`Unresolved @binding(auto) remained in assembled WGSL source near "${fr(t.match)}".`);
2213
+ }
2214
+ function cr(e) {
2215
+ if (e.length === 0) return "";
2216
+ let t = "// ----- MODULE WGSL BINDING ASSIGNMENTS ---------------\n";
2217
+ for (let n of e) t += `// ${n.moduleName}.${n.name} -> @group(${n.group}) @binding(${n.location})\n`;
2218
+ return t += "\n", t;
2219
+ }
2220
+ function lr(e, t, n) {
2221
+ return `${e}:${t}:${n}`;
2222
+ }
2223
+ function ur(e, t) {
2224
+ let n = /^\/\/ ----- MODULE ([^\n]+) ---------------$/gm, r, i;
2225
+ for (i = n.exec(e); i && i.index <= t;) r = i[1], i = n.exec(e);
2226
+ return r;
2227
+ }
2228
+ function dr(e, t) {
2229
+ let n = e.indexOf(Pn);
2230
+ return n >= 0 ? t > n : !0;
2231
+ }
2232
+ function fr(e) {
2233
+ return e.replace(/\s+/g, " ").trim();
2234
+ }
2235
+ //#endregion
2236
+ //#region node_modules/@luma.gl/shadertools/dist/lib/shader-assembler.js
2237
+ var pr = class e {
2238
+ static defaultShaderAssemblers = {};
2239
+ _hookFunctions = [];
2240
+ _defaultModules = [];
2241
+ static getDefaultShaderAssembler(t) {
2242
+ return k(t === "glsl" || t === "wgsl"), t === "wgsl" ? (e.defaultShaderAssemblers.wgsl = e.defaultShaderAssemblers.wgsl || new hr(), e.defaultShaderAssemblers.wgsl) : (e.defaultShaderAssemblers.glsl = e.defaultShaderAssemblers.glsl || new mr(), e.defaultShaderAssemblers.glsl);
2243
+ }
2244
+ addDefaultModule(e) {
2245
+ this._defaultModules.find((t) => t.name === (typeof e == "string" ? e : e.name)) || this._defaultModules.push(e);
2246
+ }
2247
+ removeDefaultModule(e) {
2248
+ let t = typeof e == "string" ? e : e.name;
2249
+ this._defaultModules = this._defaultModules.filter((e) => e.name !== t);
2250
+ }
2251
+ addShaderHook(e, t) {
2252
+ t && (e = Object.assign(t, { hook: e })), this._hookFunctions.push(e);
2253
+ }
2254
+ _getModuleList(e = []) {
2255
+ let t = Array(this._defaultModules.length + e.length), n = {}, r = 0;
2256
+ for (let e = 0, i = this._defaultModules.length; e < i; ++e) {
2257
+ let i = this._defaultModules[e], a = i.name;
2258
+ t[r++] = i, n[a] = !0;
2259
+ }
2260
+ for (let i = 0, a = e.length; i < a; ++i) {
2261
+ let a = e[i], o = a.name;
2262
+ n[o] || (t[r++] = a, n[o] = !0);
2263
+ }
2264
+ return t.length = r, N(t), t;
2265
+ }
2266
+ }, mr = class extends pr {
2267
+ shaderLanguage = "glsl";
2268
+ assembleGLSLShaderPair(e) {
2269
+ let t = this._getModuleList(e.modules), n = this._hookFunctions;
2270
+ return {
2271
+ ...Ln({
2272
+ ...e,
2273
+ vs: e.vs,
2274
+ fs: e.fs,
2275
+ modules: t,
2276
+ hookFunctions: n
2277
+ }),
2278
+ modules: t
2279
+ };
2280
+ }
2281
+ }, hr = class e extends pr {
2282
+ shaderLanguage = "wgsl";
2283
+ _wgslBindingRegistry = /* @__PURE__ */ new Map();
2284
+ assembleWGSLShader(t) {
2285
+ let n = this._getModuleList(t.modules), r = this._hookFunctions, i = e.getShaderPreprocessorDefines(t, n), a = t.platformInfo.shaderLanguage === "wgsl" && t.source ? L(t.source, { defines: i }) : t.source, { source: o, getUniforms: s, bindingAssignments: c } = In({
2286
+ ...t,
2287
+ source: a,
2288
+ defines: i,
2289
+ _bindingRegistry: this._wgslBindingRegistry,
2290
+ modules: n,
2291
+ hookFunctions: r
2292
+ }), l = t.platformInfo.shaderLanguage === "wgsl" ? L(o, { defines: i }) : o;
2293
+ return {
2294
+ source: l,
2295
+ getUniforms: s,
2296
+ modules: n,
2297
+ bindingAssignments: c,
2298
+ bindingTable: zt(l, c),
2299
+ shaderLayout: ne(l, {
2300
+ vertexEntryPoint: t.vertexEntryPoint,
2301
+ scanVertexAttributes: t.scanVertexAttributes
2302
+ })
2303
+ };
2304
+ }
2305
+ static getShaderPreprocessorDefines(t, n) {
2306
+ return {
2307
+ ...e.getPlatformPreprocessorDefines(t.platformInfo),
2308
+ ...n.reduce((e, t) => (Object.assign(e, t.defines), e), {}),
2309
+ ...t.defines
2310
+ };
2311
+ }
2312
+ static getPlatformPreprocessorDefines(e) {
2313
+ let t = e.limits || {};
2314
+ return {
2315
+ LUMA_SUPPORTS_VERTEX_STORAGE_BUFFERS: e.type === "webgpu" && (t.maxStorageBuffersInVertexStage || 0) > 0,
2316
+ LUMA_FP32_TAN_PRECISION_WORKAROUND: e.type === "webgpu" && e.gpu.toLowerCase() !== "nvidia" && e.gpu.toLowerCase() !== "amd",
2317
+ LUMA_FP64_INTEGER_ARITHMETIC: e.type === "webgpu" && e.gpu.toLowerCase() === "apple"
2318
+ };
2319
+ }
2320
+ }, gr = {
2321
+ name: "fp32",
2322
+ source: "#ifdef LUMA_FP32_TAN_PRECISION_WORKAROUND\nconst FP32_TWO_PI: f32 = 6.2831854820251465;\nconst FP32_PI_2: f32 = 1.5707963705062866;\nconst FP32_PI_16: f32 = 0.1963495463132858;\n\nconst FP32_SIN_TABLE_0: f32 = 0.19509032368659973;\nconst FP32_SIN_TABLE_1: f32 = 0.3826834261417389;\nconst FP32_SIN_TABLE_2: f32 = 0.5555702447891235;\nconst FP32_SIN_TABLE_3: f32 = 0.7071067690849304;\n\nconst FP32_COS_TABLE_0: f32 = 0.9807852506637573;\nconst FP32_COS_TABLE_1: f32 = 0.9238795042037964;\nconst FP32_COS_TABLE_2: f32 = 0.8314695954322815;\nconst FP32_COS_TABLE_3: f32 = 0.7071067690849304;\n\nconst FP32_INVERSE_FACTORIAL_3: f32 = 1.666666716337204e-01;\nconst FP32_INVERSE_FACTORIAL_5: f32 = 8.333333767950535e-03;\nconst FP32_INVERSE_FACTORIAL_7: f32 = 1.9841270113829523e-04;\nconst FP32_INVERSE_FACTORIAL_9: f32 = 2.75573188446287533e-06;\nconst FP32_OVERFLOW: f32 = 3.402823466e+38;\n\nfn sin_taylor_fp32(a: f32) -> f32 {\n if (a == 0.0) {\n return 0.0;\n }\n\n let x = -a * a;\n var sum = a;\n var term = a;\n\n term = term * x;\n sum = sum + term * FP32_INVERSE_FACTORIAL_3;\n term = term * x;\n sum = sum + term * FP32_INVERSE_FACTORIAL_5;\n term = term * x;\n sum = sum + term * FP32_INVERSE_FACTORIAL_7;\n term = term * x;\n sum = sum + term * FP32_INVERSE_FACTORIAL_9;\n\n return sum;\n}\n\nfn tan_taylor_fp32(a: f32) -> f32 {\n if (a == 0.0) {\n return 0.0;\n }\n\n let z = floor(a / FP32_TWO_PI);\n let reduced = a - FP32_TWO_PI * z;\n\n var quadrantValue = floor(reduced / FP32_PI_2 + 0.5);\n let quadrant = i32(quadrantValue);\n if (quadrant < -2 || quadrant > 2) {\n return FP32_OVERFLOW;\n }\n\n var angle = reduced - FP32_PI_2 * quadrantValue;\n quadrantValue = floor(angle / FP32_PI_16 + 0.5);\n let tableIndex = i32(quadrantValue);\n let absoluteTableIndex = abs(tableIndex);\n if (absoluteTableIndex > 4) {\n return FP32_OVERFLOW;\n }\n\n angle = angle - FP32_PI_16 * quadrantValue;\n let sinAngle = sin_taylor_fp32(angle);\n let cosAngle = sqrt(1.0 - sinAngle * sinAngle);\n\n var tableCos = 0.0;\n var tableSin = 0.0;\n if (absoluteTableIndex == 1) {\n tableCos = FP32_COS_TABLE_0;\n tableSin = FP32_SIN_TABLE_0;\n } else if (absoluteTableIndex == 2) {\n tableCos = FP32_COS_TABLE_1;\n tableSin = FP32_SIN_TABLE_1;\n } else if (absoluteTableIndex == 3) {\n tableCos = FP32_COS_TABLE_2;\n tableSin = FP32_SIN_TABLE_2;\n } else if (absoluteTableIndex == 4) {\n tableCos = FP32_COS_TABLE_3;\n tableSin = FP32_SIN_TABLE_3;\n }\n\n var sinReduced = sinAngle;\n var cosReduced = cosAngle;\n if (tableIndex > 0) {\n sinReduced = tableCos * sinAngle + tableSin * cosAngle;\n cosReduced = tableCos * cosAngle - tableSin * sinAngle;\n } else if (tableIndex < 0) {\n sinReduced = tableCos * sinAngle - tableSin * cosAngle;\n cosReduced = tableCos * cosAngle + tableSin * sinAngle;\n }\n\n var sinValue = 0.0;\n var cosValue = 0.0;\n if (quadrant == 0) {\n sinValue = sinReduced;\n cosValue = cosReduced;\n } else if (quadrant == 1) {\n sinValue = cosReduced;\n cosValue = -sinReduced;\n } else if (quadrant == -1) {\n sinValue = -cosReduced;\n cosValue = sinReduced;\n } else {\n sinValue = -sinReduced;\n cosValue = -cosReduced;\n }\n\n return sinValue / cosValue;\n}\n\nfn tan_fp32(a: f32) -> f32 {\n return tan_taylor_fp32(a);\n}\n#else\nfn tan_fp32(a: f32) -> f32 {\n return tan(a);\n}\n#endif\n",
2323
+ vs: "#ifdef LUMA_FP32_TAN_PRECISION_WORKAROUND\n\n// All these functions are for substituting tan() function from Intel GPU only\nconst float TWO_PI = 6.2831854820251465;\nconst float PI_2 = 1.5707963705062866;\nconst float PI_16 = 0.1963495463132858;\n\nconst float SIN_TABLE_0 = 0.19509032368659973;\nconst float SIN_TABLE_1 = 0.3826834261417389;\nconst float SIN_TABLE_2 = 0.5555702447891235;\nconst float SIN_TABLE_3 = 0.7071067690849304;\n\nconst float COS_TABLE_0 = 0.9807852506637573;\nconst float COS_TABLE_1 = 0.9238795042037964;\nconst float COS_TABLE_2 = 0.8314695954322815;\nconst float COS_TABLE_3 = 0.7071067690849304;\n\nconst float INVERSE_FACTORIAL_3 = 1.666666716337204e-01; // 1/3!\nconst float INVERSE_FACTORIAL_5 = 8.333333767950535e-03; // 1/5!\nconst float INVERSE_FACTORIAL_7 = 1.9841270113829523e-04; // 1/7!\nconst float INVERSE_FACTORIAL_9 = 2.75573188446287533e-06; // 1/9!\n\nfloat sin_taylor_fp32(float a) {\n float r, s, t, x;\n\n if (a == 0.0) {\n return 0.0;\n }\n\n x = -a * a;\n s = a;\n r = a;\n\n r = r * x;\n t = r * INVERSE_FACTORIAL_3;\n s = s + t;\n\n r = r * x;\n t = r * INVERSE_FACTORIAL_5;\n s = s + t;\n\n r = r * x;\n t = r * INVERSE_FACTORIAL_7;\n s = s + t;\n\n r = r * x;\n t = r * INVERSE_FACTORIAL_9;\n s = s + t;\n\n return s;\n}\n\nvoid sincos_taylor_fp32(float a, out float sin_t, out float cos_t) {\n if (a == 0.0) {\n sin_t = 0.0;\n cos_t = 1.0;\n }\n sin_t = sin_taylor_fp32(a);\n cos_t = sqrt(1.0 - sin_t * sin_t);\n}\n\nfloat tan_taylor_fp32(float a) {\n float sin_a;\n float cos_a;\n\n if (a == 0.0) {\n return 0.0;\n }\n\n // 2pi range reduction\n float z = floor(a / TWO_PI);\n float r = a - TWO_PI * z;\n\n float t;\n float q = floor(r / PI_2 + 0.5);\n int j = int(q);\n\n if (j < -2 || j > 2) {\n return 1.0 / 0.0;\n }\n\n t = r - PI_2 * q;\n\n q = floor(t / PI_16 + 0.5);\n int k = int(q);\n int abs_k = int(abs(float(k)));\n\n if (abs_k > 4) {\n return 1.0 / 0.0;\n } else {\n t = t - PI_16 * q;\n }\n\n float u = 0.0;\n float v = 0.0;\n\n float sin_t, cos_t;\n float s, c;\n sincos_taylor_fp32(t, sin_t, cos_t);\n\n if (k == 0) {\n s = sin_t;\n c = cos_t;\n } else {\n if (abs(float(abs_k) - 1.0) < 0.5) {\n u = COS_TABLE_0;\n v = SIN_TABLE_0;\n } else if (abs(float(abs_k) - 2.0) < 0.5) {\n u = COS_TABLE_1;\n v = SIN_TABLE_1;\n } else if (abs(float(abs_k) - 3.0) < 0.5) {\n u = COS_TABLE_2;\n v = SIN_TABLE_2;\n } else if (abs(float(abs_k) - 4.0) < 0.5) {\n u = COS_TABLE_3;\n v = SIN_TABLE_3;\n }\n if (k > 0) {\n s = u * sin_t + v * cos_t;\n c = u * cos_t - v * sin_t;\n } else {\n s = u * sin_t - v * cos_t;\n c = u * cos_t + v * sin_t;\n }\n }\n\n if (j == 0) {\n sin_a = s;\n cos_a = c;\n } else if (j == 1) {\n sin_a = c;\n cos_a = -s;\n } else if (j == -1) {\n sin_a = -c;\n cos_a = s;\n } else {\n sin_a = -s;\n cos_a = -c;\n }\n return sin_a / cos_a;\n}\n#endif\n\nfloat tan_fp32(float a) {\n#ifdef LUMA_FP32_TAN_PRECISION_WORKAROUND\n return tan_taylor_fp32(a);\n#else\n return tan(a);\n#endif\n}\n"
2324
+ }, _r = {};
2325
+ function vr(e = "id") {
2326
+ return _r[e] = _r[e] || 1, `${e}-${_r[e]++}`;
2327
+ }
2328
+ //#endregion
2329
+ //#region node_modules/@luma.gl/engine/dist/utils/shader-module-utils.js
2330
+ function yr(e, t) {
2331
+ if (!e || !t.some((e) => e.bindingLayout?.length)) return e;
2332
+ let n = {
2333
+ ...e,
2334
+ bindings: e.bindings.map((e) => ({ ...e }))
2335
+ };
2336
+ "attributes" in (e || {}) && (n.attributes = e?.attributes || []);
2337
+ for (let e of t) for (let t of e.bindingLayout || []) for (let e of wr(t.name)) {
2338
+ let r = n.bindings.find((t) => t.name === e);
2339
+ r?.group === 0 && (r.group = t.group), r && t.visibility !== void 0 && (r.visibility = t.visibility);
2340
+ }
2341
+ return n;
2342
+ }
2343
+ function br(e, t, n = []) {
2344
+ return e ? t ? {
2345
+ ...e,
2346
+ attributes: e.attributes.length ? Dr(e.attributes, t.attributes.filter((e) => n.includes(e.name))) : t.attributes,
2347
+ bindings: Er(e.bindings, t.bindings)
2348
+ } : e : t;
2349
+ }
2350
+ function xr(e) {
2351
+ return !(!e.uniformTypes || Tr(e.uniformTypes));
2352
+ }
2353
+ function Sr(e) {
2354
+ let t = [];
2355
+ for (let n of e) {
2356
+ let e = dt(n), r = new Set([n.vs, n.fs].flatMap((e) => e ? ht(e).filter((e) => e.isStd140).map((e) => e.blockName) : [])), i = r.has(e) ? e : r.size === 1 ? r.values().next().value : void 0;
2357
+ xr(n) && i && t.push({
2358
+ name: i,
2359
+ uniformTypes: n.uniformTypes
2360
+ });
2361
+ }
2362
+ return t;
2363
+ }
2364
+ function Cr(e, t) {
2365
+ let n = [], r = /* @__PURE__ */ new Set();
2366
+ for (let i of [...e || [], ...t || []]) r.has(i.name) || (r.add(i.name), n.push(i));
2367
+ return n;
2368
+ }
2369
+ function wr(e) {
2370
+ let t = /* @__PURE__ */ new Set([e, `${e}Uniforms`]);
2371
+ return e.endsWith("Uniforms") || t.add(`${e}Sampler`), [...t];
2372
+ }
2373
+ function Tr(e) {
2374
+ for (let t in e) return !1;
2375
+ return !0;
2376
+ }
2377
+ function Er(e, t) {
2378
+ let n = e.map((e) => ({ ...e })), r = new Set(e.map((e) => e.name)), i = new Set(e.map((e) => `${e.group}:${e.location}`));
2379
+ for (let e of t) {
2380
+ let t = `${e.group}:${e.location}`;
2381
+ !r.has(e.name) && !i.has(t) && n.push({ ...e });
2382
+ }
2383
+ return n;
2384
+ }
2385
+ function Dr(e, t) {
2386
+ let n = e.map((e) => ({ ...e })), r = new Map(e.map((e) => [e.name, e])), i = new Map(e.map((e) => [e.location, e]));
2387
+ for (let e of t) {
2388
+ let t = r.get(e.name);
2389
+ if (t) {
2390
+ if (t.type !== e.type || t.location !== e.location) throw Error(`Shader attribute "${e.name}" conflicts with its inferred type or location`);
2391
+ continue;
2392
+ }
2393
+ let a = i.get(e.location);
2394
+ if (a) throw Error(`Shader attributes "${a.name}" and "${e.name}" both use location ${e.location}`);
2395
+ n.push({ ...e });
2396
+ }
2397
+ return n;
2398
+ }
2399
+ //#endregion
2400
+ //#region node_modules/@luma.gl/engine/dist/model/split-uniforms-and-bindings.js
2401
+ function Or(e) {
2402
+ return g(e) || typeof e == "number" || typeof e == "boolean";
2403
+ }
2404
+ function kr(e, t = {}) {
2405
+ let n = {
2406
+ bindings: {},
2407
+ uniforms: {}
2408
+ };
2409
+ return Object.keys(e).forEach((r) => {
2410
+ let i = e[r];
2411
+ Object.prototype.hasOwnProperty.call(t, r) || Or(i) ? n.uniforms[r] = i : n.bindings[r] = i;
2412
+ }), n;
2413
+ }
2414
+ //#endregion
2415
+ //#region node_modules/@luma.gl/engine/dist/shader-inputs.js
2416
+ var Ar = class {
2417
+ options = { disableWarnings: !1 };
2418
+ modules;
2419
+ moduleUniforms;
2420
+ moduleBindings;
2421
+ directBindings = {};
2422
+ constructor(e, t) {
2423
+ Object.assign(this.options, t);
2424
+ let r = P(Object.values(e).filter(Fr));
2425
+ for (let t of r) e[t.name] = t;
2426
+ n.log(1, "Creating ShaderInputs with modules", Object.keys(e))(), this.modules = e, this.moduleUniforms = {}, this.moduleBindings = {};
2427
+ for (let [t, r] of Object.entries(e)) r && (this._addModule(r), r.name && t !== r.name && !this.options.disableWarnings && n.warn(`Module name: ${t} vs ${r.name}`)());
2428
+ }
2429
+ destroy() {}
2430
+ setProps(e) {
2431
+ e.bindings && Object.assign(this.directBindings, e.bindings);
2432
+ for (let t of Object.keys(e)) {
2433
+ if (t === "bindings") continue;
2434
+ let r = t, i = e[r] || {}, a = this.modules[r];
2435
+ if (!a) this.options.disableWarnings || n.warn(`Module ${t} not found`)();
2436
+ else {
2437
+ let e = this.moduleUniforms[r], t = this.moduleBindings[r], { uniforms: n, bindings: o } = kr(a.getUniforms?.(i, e) || i, a.uniformTypes);
2438
+ this.moduleUniforms[r] = jr(e, n, a.uniformTypes), this.moduleBindings[r] = {
2439
+ ...t,
2440
+ ...o
2441
+ };
2442
+ }
2443
+ }
2444
+ }
2445
+ getModules() {
2446
+ return Object.values(this.modules);
2447
+ }
2448
+ addModules(e) {
2449
+ let t = P(e);
2450
+ for (let e of t) {
2451
+ let t = e.name;
2452
+ this.modules[t] || (this.modules[t] = e, this._addModule(e));
2453
+ }
2454
+ }
2455
+ getUniformValues() {
2456
+ return this.moduleUniforms;
2457
+ }
2458
+ getBindingValues() {
2459
+ let e = {};
2460
+ for (let t of Object.values(this.moduleBindings)) Object.assign(e, t);
2461
+ return Object.assign(e, this.directBindings), e;
2462
+ }
2463
+ getModuleBindingValues(e) {
2464
+ let t = this.moduleBindings[e];
2465
+ return t ? { ...t } : {};
2466
+ }
2467
+ getDebugTable() {
2468
+ let e = {};
2469
+ for (let [t, n] of Object.entries(this.moduleUniforms)) for (let [r, i] of Object.entries(n)) e[`${t}.${r}`] = {
2470
+ type: this.modules[t].uniformTypes?.[r],
2471
+ value: String(i)
2472
+ };
2473
+ return e;
2474
+ }
2475
+ _addModule(e) {
2476
+ let t = e.name;
2477
+ this.moduleUniforms[t] = jr({}, e.defaultUniforms || {}, e.uniformTypes), this.moduleBindings[t] = {};
2478
+ }
2479
+ };
2480
+ function jr(e = {}, t = {}, n = {}) {
2481
+ let r = { ...e };
2482
+ for (let [i, a] of Object.entries(t)) a !== void 0 && (r[i] = Mr(e[i], a, n[i]));
2483
+ return r;
2484
+ }
2485
+ function Mr(e, t, n) {
2486
+ if (!n || typeof n == "string") return G(t);
2487
+ if (Array.isArray(n)) {
2488
+ if (Nr(t) || !Array.isArray(t)) return G(t);
2489
+ let r = Array.isArray(e) && !Nr(e) ? [...e] : [], i = r.slice();
2490
+ for (let e = 0; e < t.length; e++) {
2491
+ let a = t[e];
2492
+ a !== void 0 && (i[e] = Mr(r[e], a, n[0]));
2493
+ }
2494
+ return i;
2495
+ }
2496
+ if (!Pr(t)) return G(t);
2497
+ let r = n, i = Pr(e) ? e : {}, a = { ...i };
2498
+ for (let [e, n] of Object.entries(t)) n !== void 0 && (a[e] = Mr(i[e], n, r[e]));
2499
+ return a;
2500
+ }
2501
+ function G(e) {
2502
+ return ArrayBuffer.isView(e) ? Array.prototype.slice.call(e) : Array.isArray(e) ? Nr(e) ? e.slice() : e.map((e) => e === void 0 ? void 0 : G(e)) : Pr(e) ? Object.fromEntries(Object.entries(e).map(([e, t]) => [e, t === void 0 ? void 0 : G(t)])) : e;
2503
+ }
2504
+ function Nr(e) {
2505
+ return ArrayBuffer.isView(e) || Array.isArray(e) && (e.length === 0 || typeof e[0] == "number");
2506
+ }
2507
+ function Pr(e) {
2508
+ return !!e && typeof e == "object" && !Array.isArray(e) && !ArrayBuffer.isView(e);
2509
+ }
2510
+ function Fr(e) {
2511
+ return !!e?.dependencies;
2512
+ }
2513
+ //#endregion
2514
+ //#region node_modules/@luma.gl/engine/dist/dynamic-buffer/dynamic-buffer.js
2515
+ var Ir = e.DEBUG_DATA_MAX_LENGTH, K = class {
2516
+ device;
2517
+ id;
2518
+ ready;
2519
+ usage;
2520
+ props;
2521
+ isReady = !0;
2522
+ destroyed = !1;
2523
+ generation = 0;
2524
+ updateTimestamp;
2525
+ debugData = /* @__PURE__ */ new ArrayBuffer(0);
2526
+ _debugDataEnabled;
2527
+ _maxDebugDataByteLength;
2528
+ _ownsBuffer;
2529
+ _buffer;
2530
+ get buffer() {
2531
+ return this._buffer;
2532
+ }
2533
+ get byteLength() {
2534
+ return this._buffer.byteLength;
2535
+ }
2536
+ get [Symbol.toStringTag]() {
2537
+ return "DynamicBuffer";
2538
+ }
2539
+ toString() {
2540
+ return `DynamicBuffer:"${this.id}":${this.byteLength}B`;
2541
+ }
2542
+ toJSON() {
2543
+ return this.toString();
2544
+ }
2545
+ constructor(t, n) {
2546
+ let { debugData: r = !1, buffer: i, ownsBuffer: a = !0, ...o } = n;
2547
+ if (i && i.device !== t) throw Error("DynamicBuffer adopted buffers must belong to the supplied device");
2548
+ if (i && (o.byteLength !== void 0 || o.data !== void 0)) throw Error("DynamicBuffer cannot combine an adopted buffer with byteLength or data");
2549
+ let s = n.id || i?.id || vr("dynamic-buffer"), c = {
2550
+ ...o,
2551
+ id: s,
2552
+ usage: o.usage ?? i?.usage,
2553
+ indexType: o.indexType ?? i?.indexType
2554
+ };
2555
+ (c.usage || 0) & e.INDEX && !c.indexType && (o.data instanceof Uint32Array ? c.indexType = "uint32" : o.data instanceof Uint16Array ? c.indexType = "uint16" : o.data instanceof Uint8Array && (c.indexType = "uint8")), delete c.data, delete c.byteOffset, this.device = t, this.id = s, this.props = c, this.usage = c.usage || 0, this._debugDataEnabled = !!r, this._maxDebugDataByteLength = typeof r == "object" && r.maxByteLength !== void 0 ? r.maxByteLength : Ir, this._ownsBuffer = a, this._buffer = i ?? this.device.createBuffer({
2556
+ ...o,
2557
+ id: s
2558
+ }), this.ready = Promise.resolve(this._buffer), this.updateTimestamp = this._buffer.updateTimestamp, this._resetDebugData(this._buffer.byteLength), o.data && this._writeDebugData(o.data, o.byteOffset || 0);
2559
+ }
2560
+ write(e, t = 0) {
2561
+ this._buffer.write(e, t), this._touch(), this._writeDebugData(e, t);
2562
+ }
2563
+ async mapAndWriteAsync(e, t = 0, n = this.byteLength - t) {
2564
+ let r = null;
2565
+ await this._buffer.mapAndWriteAsync(async (t, i) => {
2566
+ await e(t, i), r = new Uint8Array(t.slice(0, n));
2567
+ }, t, n), this._touch(), r && this._writeDebugData(r, t);
2568
+ }
2569
+ async readAsync(e = 0, t = this.byteLength - e) {
2570
+ let n = await this._buffer.readAsync(e, t);
2571
+ return this._writeDebugData(n, e) && this._touch(), n;
2572
+ }
2573
+ async mapAndReadAsync(e, t = 0, n = this.byteLength - t) {
2574
+ let r = null, i = await this._buffer.mapAndReadAsync(async (t, n) => (r = new Uint8Array(t.slice(0)), await e(t, n)), t, n);
2575
+ return r && this._writeDebugData(r, t) && this._touch(), i;
2576
+ }
2577
+ resize(e) {
2578
+ let { byteLength: t, preserveData: n = !1 } = e;
2579
+ if (t === this.byteLength) return !1;
2580
+ let r = Math.min(e.copyByteLength ?? Math.min(this.byteLength, t), this.byteLength, t), i = this._buffer, a = this.debugData.slice(0), { data: o, byteOffset: s, ...c } = this.props, l = this.device.createBuffer({
2581
+ ...c,
2582
+ byteLength: t
2583
+ });
2584
+ return n && r > 0 && this._copyBufferContents(i, l, r), this._buffer = l, this._resetDebugData(t), n && a.byteLength > 0 && this._writeDebugData(a, 0), this._ownsBuffer && i.destroy(), this._ownsBuffer = !0, this.generation++, this._touch(), !0;
2585
+ }
2586
+ ensureSize(e, t) {
2587
+ return e <= this.byteLength ? !1 : this.resize({
2588
+ byteLength: e,
2589
+ preserveData: t?.preserveData
2590
+ });
2591
+ }
2592
+ getBinding(e) {
2593
+ return e?.offset === void 0 && e?.size === void 0 ? this._buffer : {
2594
+ buffer: this._buffer,
2595
+ offset: e?.offset,
2596
+ size: e?.size
2597
+ };
2598
+ }
2599
+ destroy() {
2600
+ this.destroyed || (this._ownsBuffer && this._buffer.destroy(), this.destroyed = !0, this.debugData = /* @__PURE__ */ new ArrayBuffer(0));
2601
+ }
2602
+ _copyBufferContents(e, t, n) {
2603
+ let r = this.device.type === "webgpu" ? Math.ceil(n / 4) * 4 : n, i = this.device.createCommandEncoder();
2604
+ i.copyBufferToBuffer({
2605
+ sourceBuffer: e,
2606
+ destinationBuffer: t,
2607
+ size: r
2608
+ }), this.device.submit(i.finish());
2609
+ }
2610
+ _touch() {
2611
+ this.updateTimestamp = this.device.incrementTimestamp();
2612
+ }
2613
+ _resetDebugData(e) {
2614
+ if (!this._debugDataEnabled) {
2615
+ this.debugData = /* @__PURE__ */ new ArrayBuffer(0);
2616
+ return;
2617
+ }
2618
+ this.debugData = new ArrayBuffer(Math.min(e, this._maxDebugDataByteLength));
2619
+ }
2620
+ _writeDebugData(e, t) {
2621
+ if (!this._debugDataEnabled || this.debugData.byteLength === 0 || t >= this.debugData.byteLength) return !1;
2622
+ let n = ArrayBuffer.isView(e) ? new Uint8Array(e.buffer, e.byteOffset, e.byteLength) : new Uint8Array(e), r = new Uint8Array(this.debugData), i = Math.min(n.byteLength, r.byteLength - t);
2623
+ return r.set(n.subarray(0, i), t), i > 0;
2624
+ }
2625
+ };
2626
+ function Lr(e) {
2627
+ return typeof e == "object" && !!e && "buffer" in e;
2628
+ }
2629
+ function Rr(e) {
2630
+ return e instanceof K ? e : Lr(e) && e.buffer instanceof K ? e.buffer : null;
2631
+ }
2632
+ function zr(e) {
2633
+ return e instanceof K ? e.buffer : e;
2634
+ }
2635
+ function Br(e) {
2636
+ return {
2637
+ buffer: zr(e.buffer),
2638
+ offset: e.offset,
2639
+ size: e.size
2640
+ };
2641
+ }
2642
+ //#endregion
2643
+ //#region node_modules/@luma.gl/gpgpu/dist/gpu-data/gpu-vector-format.js
2644
+ var Vr = /^vertex-list<([^<>]+)>$/, Hr = /^value-list<([^<>]+)>$/;
2645
+ function Ur(e) {
2646
+ return Vr.test(e);
2647
+ }
2648
+ function Wr(e) {
2649
+ return Hr.test(e);
2650
+ }
2651
+ function Gr(e) {
2652
+ let t = Vr.exec(e), n = Hr.exec(e), r = t?.[1] ?? n?.[1] ?? e;
2653
+ try {
2654
+ i.getVertexFormatInfo(r);
2655
+ } catch {
2656
+ throw Error(`Unsupported GPUVector format ${e}`);
2657
+ }
2658
+ return r;
2659
+ }
2660
+ function q(e) {
2661
+ let t = Gr(e), n = Ur(e), r = Wr(e), a = i.getVertexFormatInfo(t), o = a.type, s = a.normalized, c = Kr(o, s);
2662
+ return {
2663
+ format: e,
2664
+ elementFormat: t,
2665
+ vertexList: n,
2666
+ valueList: r,
2667
+ type: o,
2668
+ signedDataType: qr(t, o),
2669
+ primitiveType: c,
2670
+ components: a.components,
2671
+ byteLength: a.byteLength,
2672
+ integer: a.integer,
2673
+ signed: a.signed,
2674
+ normalized: s,
2675
+ ...a.webglOnly ? { webglOnly: !0 } : {}
2676
+ };
2677
+ }
2678
+ function Kr(e, t) {
2679
+ if (t) return "f32";
2680
+ switch (e) {
2681
+ case "float32": return "f32";
2682
+ case "float16": return "f16";
2683
+ case "uint8":
2684
+ case "uint16":
2685
+ case "uint32": return "u32";
2686
+ case "sint8":
2687
+ case "sint16":
2688
+ case "sint32": return "i32";
2689
+ default: throw Error(`Unsupported GPUVector component type ${e}`);
2690
+ }
2691
+ }
2692
+ function qr(e, t) {
2693
+ if (e === "unorm10-10-10-2") return "uint32";
2694
+ switch (t) {
2695
+ case "unorm8": return "uint8";
2696
+ case "snorm8": return "sint8";
2697
+ case "unorm16": return "uint16";
2698
+ case "snorm16": return "sint16";
2699
+ default: return t;
2700
+ }
2701
+ }
2702
+ //#endregion
2703
+ //#region node_modules/@luma.gl/gpgpu/dist/gpu-data/gpu-data-view.js
2704
+ var J = class {
2705
+ buffer;
2706
+ format;
2707
+ length;
2708
+ byteOffset;
2709
+ byteStride;
2710
+ constructor(e) {
2711
+ let t = i.getVertexFormatInfo(e.format).byteLength, n = e.byteOffset ?? 0, r = e.byteStride ?? t;
2712
+ if (Jr(e.length, "GPUDataView length"), Jr(n, "GPUDataView byteOffset"), Jr(r, "GPUDataView byteStride"), r < t) throw Error(`GPUDataView byteStride ${r} is smaller than ${e.format} byte length ${t}`);
2713
+ let a = e.length === 0 ? 0 : (e.length - 1) * r + t, o = n + a;
2714
+ if (!Number.isSafeInteger(a) || !Number.isSafeInteger(o)) throw Error("GPUDataView byte range must use safe integers");
2715
+ if (o > e.buffer.byteLength) throw Error("GPUDataView exceeds its backing buffer byte length");
2716
+ this.buffer = e.buffer, this.format = e.format, this.length = e.length, this.byteOffset = n, this.byteStride = r;
2717
+ }
2718
+ get elementByteLength() {
2719
+ return i.getVertexFormatInfo(this.format).byteLength;
2720
+ }
2721
+ get byteLength() {
2722
+ return this.length === 0 ? 0 : (this.length - 1) * this.byteStride + this.elementByteLength;
2723
+ }
2724
+ };
2725
+ function Jr(e, t) {
2726
+ if (!Number.isSafeInteger(e) || e < 0) throw Error(`${t} must be a non-negative safe integer`);
2727
+ }
2728
+ //#endregion
2729
+ //#region node_modules/@luma.gl/gpgpu/dist/gpu-data/gpu-data-format.js
2730
+ function Yr(e) {
2731
+ return !!(e && typeof e == "object" && e.type === "struct");
2732
+ }
2733
+ function Xr(e, t) {
2734
+ let n = Object.entries(e);
2735
+ if (n.length === 0) throw Error("GPUData struct format must declare at least one field");
2736
+ return t === "packed" ? Zr(n) : Qr(n);
2737
+ }
2738
+ function Zr(e) {
2739
+ let t = [], n = 0, r = 0;
2740
+ for (let [a, o] of e) {
2741
+ let e = i.getVertexFormatInfo(o);
2742
+ if (e.webglOnly) throw Error(`Packed GPUData struct field "${a}" uses WebGL-only format ${o}`);
2743
+ n = ei(n, Math.min(4, e.byteLength)), t.push([a, Object.freeze({
2744
+ format: o,
2745
+ byteOffset: n,
2746
+ byteLength: e.byteLength
2747
+ })]), n += e.byteLength, r += e.components;
2748
+ }
2749
+ return Object.freeze({
2750
+ type: "struct",
2751
+ layout: "packed",
2752
+ fields: Object.freeze(Object.fromEntries(t)),
2753
+ components: r,
2754
+ byteStride: ei(n, 4),
2755
+ rowByteLength: n
2756
+ });
2757
+ }
2758
+ function Qr(e) {
2759
+ let n = Object.fromEntries(e.map(([e, t]) => [e, $r(t)])), r = t(n, { layout: "wgsl-storage" }), a = [], o = 0, s = 0;
2760
+ for (let [t, n] of e) {
2761
+ let e = i.getVertexFormatInfo(n), c = r.fields[t].offset * 4;
2762
+ a.push([t, Object.freeze({
2763
+ format: n,
2764
+ byteOffset: c,
2765
+ byteLength: e.byteLength
2766
+ })]), o = Math.max(o, c + e.byteLength), s += e.components;
2767
+ }
2768
+ return Object.freeze({
2769
+ type: "struct",
2770
+ layout: "wgsl-storage",
2771
+ fields: Object.freeze(Object.fromEntries(a)),
2772
+ components: s,
2773
+ byteStride: r.byteLength,
2774
+ rowByteLength: o
2775
+ });
2776
+ }
2777
+ function $r(e) {
2778
+ let t = i.getVertexFormatInfo(e);
2779
+ switch (t.type) {
2780
+ case "float32": return Y("f32", t.components);
2781
+ case "sint32": return Y("i32", t.components);
2782
+ case "uint32": return Y("u32", t.components);
2783
+ default: return Y("u32", Math.ceil(t.byteLength / 4));
2784
+ }
2785
+ }
2786
+ function Y(e, t) {
2787
+ return t === 1 ? e : `vec${t}<${e}>`;
2788
+ }
2789
+ function ei(e, t) {
2790
+ return Math.ceil(e / t) * t;
2791
+ }
2792
+ //#endregion
2793
+ //#region node_modules/@luma.gl/gpgpu/dist/gpu-data/gpu-data.js
2794
+ var ti = class {
2795
+ buffer;
2796
+ ownsDataBuffer;
2797
+ constructor(e, t) {
2798
+ this.buffer = e, this.ownsDataBuffer = t;
2799
+ }
2800
+ get ownsBuffer() {
2801
+ return this.ownsDataBuffer;
2802
+ }
2803
+ transferBufferOwnership(e) {
2804
+ if (e.buffer !== this.buffer) throw Error("GPUData ownership can only be transferred to the same buffer");
2805
+ e.ownsDataBuffer = this.ownsDataBuffer, this.ownsDataBuffer = !1;
2806
+ }
2807
+ destroy() {
2808
+ this.ownsDataBuffer &&= (this.buffer.destroy(), !1);
2809
+ }
2810
+ }, ni = class extends ti {
2811
+ dataType;
2812
+ format;
2813
+ length;
2814
+ valueLength;
2815
+ stride;
2816
+ byteOffset;
2817
+ byteStride;
2818
+ rowByteLength;
2819
+ readbackMetadata;
2820
+ valueOffsets;
2821
+ nullBitmap;
2822
+ valueByteLength;
2823
+ constructor(e) {
2824
+ let { buffer: t, format: n, length: r, valueLength: i, stride: a, byteOffset: o = 0, byteStride: s, rowByteLength: c, ownsBuffer: l = !1, readbackMetadata: u, valueOffsets: d, nullBitmap: f, valueByteLength: p, dataType: m } = e;
2825
+ super(t, l);
2826
+ let h;
2827
+ h = n ? typeof n == "string" ? n : Xr(n, e.layout ?? "wgsl-storage") : void 0;
2828
+ let g = Yr(h) ? h : void 0, _ = typeof h == "string" ? q(h) : void 0;
2829
+ if (this.dataType = m, this.format = h, this.length = r, this.valueLength = i ?? r, this.stride = a ?? _?.components ?? g?.components ?? s ?? c ?? 1, this.byteOffset = o, this.rowByteLength = c ?? g?.rowByteLength ?? _?.byteLength ?? s ?? this.stride, this.byteStride = s ?? g?.byteStride ?? this.rowByteLength, g) {
2830
+ if (this.rowByteLength < g.rowByteLength) throw Error(`GPUData rowByteLength ${this.rowByteLength} is smaller than struct format row byte length ${g.rowByteLength}`);
2831
+ if (this.byteStride < Math.max(g.byteStride, this.rowByteLength)) throw Error(`GPUData byteStride ${this.byteStride} is smaller than its struct row layout`);
2832
+ }
2833
+ this.readbackMetadata = u, this.valueOffsets = d, this.nullBitmap = f, this.valueByteLength = p;
2834
+ }
2835
+ getChild(e) {
2836
+ if (!Yr(this.format)) return null;
2837
+ let t = this.format.fields[e];
2838
+ return t ? new J({
2839
+ buffer: this.buffer,
2840
+ format: t.format,
2841
+ length: this.length,
2842
+ byteOffset: this.byteOffset + t.byteOffset,
2843
+ byteStride: this.byteStride
2844
+ }) : null;
2845
+ }
2846
+ getChildAt(e) {
2847
+ if (!Yr(this.format)) return null;
2848
+ let t = Object.values(this.format.fields)[e];
2849
+ return t ? new J({
2850
+ buffer: this.buffer,
2851
+ format: t.format,
2852
+ length: this.length,
2853
+ byteOffset: this.byteOffset + t.byteOffset,
2854
+ byteStride: this.byteStride
2855
+ }) : null;
2856
+ }
2857
+ }, X = class {
2858
+ name;
2859
+ dataType;
2860
+ format;
2861
+ length;
2862
+ valueLength;
2863
+ stride;
2864
+ byteOffset;
2865
+ byteStride;
2866
+ rowByteLength;
2867
+ bufferLayout;
2868
+ data = [];
2869
+ device;
2870
+ bufferProps;
2871
+ isAppendable = !1;
2872
+ ownsDataChunks = !0;
2873
+ ownedVectors = [];
2874
+ appendableByteLength = 0;
2875
+ constructor(e) {
2876
+ switch (e.type) {
2877
+ case "buffer": {
2878
+ let { name: t, buffer: n, format: r, length: i, valueLength: a = i, byteOffset: o = 0, ownsBuffer: s = !1 } = e, { stride: c, byteStride: l, rowByteLength: u } = ri(e);
2879
+ this.name = t, this.dataType = e.dataType, this.format = r, this.length = i, this.valueLength = a, this.stride = c, this.byteOffset = o, this.byteStride = l, this.rowByteLength = u, this.data.push(new ni({
2880
+ buffer: n,
2881
+ format: r,
2882
+ length: i,
2883
+ valueLength: a,
2884
+ stride: c,
2885
+ byteOffset: o,
2886
+ byteStride: l,
2887
+ rowByteLength: u,
2888
+ ownsBuffer: s,
2889
+ dataType: e.dataType
2890
+ }));
2891
+ return;
2892
+ }
2893
+ case "interleaved": {
2894
+ let { name: t, buffer: n, format: r, length: i, valueLength: a = i, byteOffset: o = 0, byteStride: s, attributes: c, ownsBuffer: l = !1 } = e;
2895
+ this.name = t, this.dataType = e.dataType, this.format = r, this.length = i, this.valueLength = a, this.stride = s, this.byteOffset = o, this.byteStride = s, this.rowByteLength = s, this.bufferLayout = {
2896
+ name: t,
2897
+ byteStride: s,
2898
+ attributes: c
2899
+ }, this.data.push(new ni({
2900
+ buffer: n,
2901
+ format: r,
2902
+ length: i,
2903
+ valueLength: a,
2904
+ stride: s,
2905
+ byteOffset: o,
2906
+ byteStride: s,
2907
+ rowByteLength: s,
2908
+ ownsBuffer: l,
2909
+ dataType: e.dataType
2910
+ }));
2911
+ return;
2912
+ }
2913
+ case "data": {
2914
+ let t = e.format ?? ii(e.data), n = t ? q(t) : void 0, { name: r, data: i, stride: a = i[0]?.stride ?? n?.components ?? 1, valueLength: o = i.reduce((e, t) => e + t.valueLength, 0), byteStride: s = i[0]?.byteStride ?? n?.byteLength, rowByteLength: c = i[0]?.rowByteLength ?? n?.byteLength, bufferLayout: l, ownsData: u = !1 } = e;
2915
+ if (s === void 0 || c === void 0) throw Error("GPUVector requires format or explicit byte layout metadata");
2916
+ t && ai(i, t), this.name = r, this.dataType = e.dataType, this.format = t, this.length = i.reduce((e, t) => e + t.length, 0), this.valueLength = o, this.stride = a, this.byteOffset = i.length === 1 ? i[0].byteOffset : 0, this.byteStride = s, this.rowByteLength = c, this.bufferLayout = l, this.ownsDataChunks = u, this.data.push(...i);
2917
+ return;
2918
+ }
2919
+ case "appendable": {
2920
+ let { name: t, device: n, format: r, valueLength: i = 0, bufferProps: a } = e, { stride: o, byteStride: s, rowByteLength: c } = ri(e);
2921
+ this.name = t, this.dataType = e.dataType, this.format = r, this.length = 0, this.valueLength = i, this.stride = o, this.byteOffset = 0, this.byteStride = s, this.rowByteLength = c, this.device = n, this.bufferProps = a, this.isAppendable = !0;
2922
+ return;
2923
+ }
2924
+ }
2925
+ }
2926
+ get ownsBuffer() {
2927
+ return this.ownsDataChunks && this.data.some((e) => e.ownsBuffer) || this.ownedVectors.some((e) => e.ownsBuffer);
2928
+ }
2929
+ get capacityRows() {
2930
+ return this.isAppendable ? this.length : void 0;
2931
+ }
2932
+ get appendedByteLength() {
2933
+ return this.appendableByteLength;
2934
+ }
2935
+ addData(e) {
2936
+ if (this.format && e.format !== this.format) throw Error("GPUVector.addData() requires matching formats");
2937
+ if (e.byteStride !== this.byteStride) throw Error("GPUVector.addData() requires matching byteStride");
2938
+ if (e.rowByteLength !== this.rowByteLength) throw Error("GPUVector.addData() requires matching rowByteLength");
2939
+ return this.data.push(e), this.length += e.length, this.valueLength += e.valueLength, this;
2940
+ }
2941
+ appendDataChunk(e, t = this.appendableByteLength + e.buffer.byteLength) {
2942
+ if (!this.isAppendable) throw Error("GPUVector.appendDataChunk() requires appendable vector storage");
2943
+ if (this.format && e.format !== this.format) throw Error("GPUVector.appendDataChunk() requires matching formats");
2944
+ if (e.byteStride !== this.byteStride || e.rowByteLength !== this.rowByteLength) throw Error("GPUVector.appendDataChunk() requires matching byte layout metadata");
2945
+ return this.data.push(e), this.length += e.length, this.valueLength += e.valueLength, this.appendableByteLength = t, this;
2946
+ }
2947
+ resetLastBatch() {
2948
+ if (!this.isAppendable) throw Error("GPUVector.resetLastBatch() requires appendable vector storage");
2949
+ for (let e of this.data.splice(0)) e.destroy();
2950
+ return this.length = 0, this.valueLength = 0, this.appendableByteLength = 0, this;
2951
+ }
2952
+ retainOwnedVectors(e) {
2953
+ return this.ownedVectors.push(...e), this;
2954
+ }
2955
+ transferBufferOwnership(e) {
2956
+ let t = this.data[0], n = e.data[0];
2957
+ if (!t || !n || t.buffer !== n.buffer) throw Error("GPUVector ownership can only be transferred to the same buffer");
2958
+ t.transferBufferOwnership(n);
2959
+ }
2960
+ destroy() {
2961
+ if (this.ownsDataChunks) for (let e of this.data) e.destroy();
2962
+ for (let e of this.ownedVectors.splice(0)) e.destroy();
2963
+ }
2964
+ };
2965
+ function ri(e) {
2966
+ let t = e.format ? q(e.format) : void 0, n = e.rowByteLength ?? e.byteStride ?? t?.byteLength;
2967
+ if (n === void 0) throw Error("GPUVector requires format or explicit rowByteLength");
2968
+ return {
2969
+ stride: e.stride ?? t?.components ?? 1,
2970
+ byteStride: e.byteStride ?? n,
2971
+ rowByteLength: n
2972
+ };
2973
+ }
2974
+ function ii(e) {
2975
+ return e[0]?.format;
2976
+ }
2977
+ function ai(e, t) {
2978
+ if (e.find((e) => e.format !== t)) throw Error("GPUVector data chunks must share the declared format");
2979
+ }
2980
+ var Z = new class {
2981
+ poolSize = 20;
2982
+ bufferPools;
2983
+ constructor() {
2984
+ this.bufferPools = /* @__PURE__ */ new Map();
2985
+ }
2986
+ createOrReuse(t, n) {
2987
+ if (n > t.limits.maxBufferSize) throw Error(`Buffer pool cannot allocate ${n} bytes: device.limits.maxBufferSize is ${t.limits.maxBufferSize}`);
2988
+ let r = this.bufferPools.get(t), i = r ? r.findIndex((e) => e.byteLength >= n) : -1;
2989
+ if (i < 0) return t.createBuffer({
2990
+ usage: e.VERTEX | e.STORAGE | e.COPY_DST | e.COPY_SRC,
2991
+ byteLength: n
2992
+ });
2993
+ let [a] = r.splice(i, 1);
2994
+ return a;
2995
+ }
2996
+ recycle(e) {
2997
+ let t = e.device;
2998
+ this.bufferPools.has(t) || this.bufferPools.set(t, []);
2999
+ let n = this.bufferPools.get(t), r = n.findIndex((t) => t.byteLength > e.byteLength);
3000
+ r < 0 ? n.push(e) : n.splice(r, 0, e), this.purge();
3001
+ }
3002
+ purge() {
3003
+ for (let [e, t] of this.bufferPools) {
3004
+ let n = e.isLost ? 0 : this.poolSize;
3005
+ for (; t.length > n;) t.shift().destroy();
3006
+ t.length === 0 && this.bufferPools.delete(e);
3007
+ }
3008
+ }
3009
+ }(), Q = class e {
3010
+ static get bufferPoolSize() {
3011
+ return Z.poolSize;
3012
+ }
3013
+ static set bufferPoolSize(e) {
3014
+ if (!Number.isSafeInteger(e) || e < 0) throw Error("GPUDataEvaluator.bufferPoolSize must be a non-negative safe integer");
3015
+ Z.poolSize = e, Z.purge();
3016
+ }
3017
+ type;
3018
+ size;
3019
+ get offset() {
3020
+ return this._offset;
3021
+ }
3022
+ get stride() {
3023
+ return this._stride;
3024
+ }
3025
+ normalized;
3026
+ isConstant;
3027
+ length;
3028
+ get byteLength() {
3029
+ return this._byteLength;
3030
+ }
3031
+ ValueType;
3032
+ source = null;
3033
+ format;
3034
+ _id;
3035
+ _destroyed = !1;
3036
+ _value;
3037
+ _offset;
3038
+ _stride;
3039
+ _byteLength;
3040
+ _gpuVector;
3041
+ _bufferOwnership = "owned";
3042
+ _targetBuffer;
3043
+ static fromArray(t, { type: n, size: r = 1, offset: i = 0, stride: o = 0, normalized: s = !1 }) {
3044
+ let l = n, u;
3045
+ Array.isArray(t) ? (l ||= "float32", u = new (a(l))(t)) : t instanceof Float64Array ? (l = "uint32", r *= 2, i *= 2, o *= 2, u = new Uint32Array(t.buffer, t.byteOffset, t.byteLength / 4)) : (l ||= c(t), u = t);
3046
+ let d = `<${l} * ${r}>`;
3047
+ return new e({
3048
+ id: d,
3049
+ type: l,
3050
+ size: r,
3051
+ offset: i,
3052
+ stride: o,
3053
+ normalized: s,
3054
+ value: u
3055
+ });
3056
+ }
3057
+ static fromConstant(t, n = "float32") {
3058
+ let r = a(n), i;
3059
+ return Array.isArray(t) ? i = `[${t.join(",")}]` : (i = String(t), t = [t]), new e({
3060
+ id: i,
3061
+ isConstant: !0,
3062
+ type: n,
3063
+ size: t.length,
3064
+ value: new r(t)
3065
+ });
3066
+ }
3067
+ static fromGPUData(t, n = {}) {
3068
+ ci(t);
3069
+ let r = new J({
3070
+ buffer: t.buffer,
3071
+ format: t.format,
3072
+ length: t.length,
3073
+ byteOffset: t.byteOffset,
3074
+ byteStride: t.byteStride
3075
+ });
3076
+ return new e({
3077
+ ...li(r),
3078
+ id: n.id,
3079
+ gpuData: t
3080
+ });
3081
+ }
3082
+ static fromGPUDataView(t, n = {}) {
3083
+ return new e({
3084
+ ...li(t),
3085
+ id: n.id,
3086
+ buffer: t.buffer
3087
+ });
3088
+ }
3089
+ constructor(t) {
3090
+ let { id: n, value: r, buffer: i, gpuData: o, format: s, source: c = null, isConstant: l = !1 } = t;
3091
+ if (!c && !r && !i && !o) throw Error("GPUDataEvaluator must have a value source");
3092
+ let { type: u, size: d, offset: f, stride: p, normalized: m, length: h } = t;
3093
+ if (c instanceof e ? (u ??= c.type, d ??= c.size, f ??= c.offset, p ??= c.stride, m ??= c.normalized, h ??= c.length) : (d ??= 1, f ??= 0, m ??= !1, h = l ? 1 : h), !u) throw Error("GPUDataEvaluator: type not defined");
3094
+ if (this._id = n, this.type = u, this.size = d, this.ValueType = a(this.type), this._offset = f, this._stride = p || this.ValueType.BYTES_PER_ELEMENT * d, this.normalized = m, this.source = c, this.format = s, h === void 0) {
3095
+ if (l) h = 1;
3096
+ else {
3097
+ if (!r) throw Error("GPUDataEvaluator: length not defined");
3098
+ h = Math.ceil(r.byteLength / this.stride);
3099
+ }
3100
+ }
3101
+ this.isConstant = l, this.length = h;
3102
+ let g = this.ValueType.BYTES_PER_ELEMENT * this.size;
3103
+ this._byteLength = h === 0 ? 0 : (h - 1) * this.stride + g, this._value = r, this._bufferOwnership = c instanceof e || i || o ? "borrowed" : "owned", o ? this._gpuVector = new X({
3104
+ type: "data",
3105
+ name: this._id ?? "data",
3106
+ format: o.format,
3107
+ data: [o],
3108
+ stride: o.stride,
3109
+ byteStride: o.byteStride,
3110
+ rowByteLength: o.rowByteLength
3111
+ }) : i && (this._gpuVector = this.createGPUVectorView({
3112
+ buffer: i,
3113
+ name: this._id,
3114
+ format: this.format
3115
+ }));
3116
+ }
3117
+ get value() {
3118
+ return this._value || (this.source instanceof e ? this.source.value : void 0);
3119
+ }
3120
+ get evaluated() {
3121
+ return !!this._gpuVector;
3122
+ }
3123
+ get id() {
3124
+ return this._id;
3125
+ }
3126
+ get gpuVector() {
3127
+ if (!this._gpuVector) throw Error(`${this} not evaluated`);
3128
+ return this._gpuVector;
3129
+ }
3130
+ get buffer() {
3131
+ return $(this.gpuVector);
3132
+ }
3133
+ setTargetBuffer({ buffer: t, byteOffset: n = 0, byteStride: r = this.stride }) {
3134
+ if (this._destroyed) throw Error(`GPUDataEvaluator ${this} already destroyed`);
3135
+ if (this._gpuVector) throw Error(`GPUDataEvaluator ${this} already evaluated`);
3136
+ if (!this.source || this.source instanceof e) throw Error("GPUDataEvaluator target buffers require a deferred operation source");
3137
+ this._targetBuffer = {
3138
+ buffer: t,
3139
+ byteOffset: n,
3140
+ byteStride: r
3141
+ };
3142
+ }
3143
+ async evaluate(t, n = {}) {
3144
+ if (this._destroyed) throw Error(`GPUDataEvaluator ${this} already destroyed`);
3145
+ if (this._gpuVector) return this._gpuVector;
3146
+ let r;
3147
+ if (this.source instanceof e) {
3148
+ let e = await this.source.evaluate(t);
3149
+ return this._gpuVector = this.createGPUVectorView({
3150
+ ...n,
3151
+ buffer: $(e)
3152
+ }), this._gpuVector;
3153
+ }
3154
+ if (r = this._getEvaluationBuffer(t), this._value) r.write(this._value);
3155
+ else {
3156
+ let e = await this.source.execute(t, r);
3157
+ if (!e.success) throw e.error || /* @__PURE__ */ Error(`${this.source} evaluation failed`);
3158
+ e.value && (this._value = e.value);
3159
+ }
3160
+ return this._gpuVector = this.createGPUVectorView({
3161
+ ...n,
3162
+ buffer: r
3163
+ }), this._gpuVector;
3164
+ }
3165
+ evaluateSync(t, n = {}) {
3166
+ if (this._destroyed) throw Error(`GPUDataEvaluator ${this} already destroyed`);
3167
+ if (this._gpuVector) return this._gpuVector;
3168
+ let r;
3169
+ if (this.source instanceof e) {
3170
+ let e = this.source.evaluateSync(t);
3171
+ return this._gpuVector = this.createGPUVectorView({
3172
+ ...n,
3173
+ buffer: $(e)
3174
+ }), this._gpuVector;
3175
+ }
3176
+ if (r = this._getEvaluationBuffer(t), this._value) r.write(this._value);
3177
+ else {
3178
+ let e = this.source.executeSync(t, r);
3179
+ if (!e.success) throw e.error || /* @__PURE__ */ Error(`${this.source} evaluation failed`);
3180
+ e.value && (this._value = e.value);
3181
+ }
3182
+ return this._gpuVector = this.createGPUVectorView({
3183
+ ...n,
3184
+ buffer: r
3185
+ }), this._gpuVector;
3186
+ }
3187
+ createGPUVectorView(e) {
3188
+ let t = e.name ?? this._id ?? "vector", n = e.format ?? this.format ?? mi(this.type, this.size, this.normalized);
3189
+ if (e.interleaved) {
3190
+ let n = typeof e.interleaved == "object" && e.interleaved.attributes ? e.interleaved.attributes : di(this);
3191
+ return new X({
3192
+ type: "interleaved",
3193
+ name: t,
3194
+ buffer: e.buffer,
3195
+ format: e.format ?? this.format,
3196
+ length: this.length,
3197
+ byteOffset: this.offset,
3198
+ byteStride: this.stride,
3199
+ attributes: n,
3200
+ ownsBuffer: !1
3201
+ });
3202
+ }
3203
+ return new X({
3204
+ type: "buffer",
3205
+ name: t,
3206
+ buffer: e.buffer,
3207
+ format: n,
3208
+ length: this.length,
3209
+ stride: this.size,
3210
+ byteOffset: this.offset,
3211
+ byteStride: this.stride,
3212
+ rowByteLength: this.ValueType.BYTES_PER_ELEMENT * this.size,
3213
+ ownsBuffer: !1
3214
+ });
3215
+ }
3216
+ _getEvaluationBuffer(e) {
3217
+ let t = this._targetBuffer;
3218
+ if (!t) return Z.createOrReuse(e, this.byteLength);
3219
+ if (t.buffer.device !== e) throw Error("GPUDataEvaluator target buffer belongs to a different device");
3220
+ let n = this.ValueType.BYTES_PER_ELEMENT * this.size, r = this.length === 0 ? 0 : (this.length - 1) * t.byteStride + n;
3221
+ if (t.byteOffset + r > t.buffer.byteLength) throw Error("GPUDataEvaluator target buffer is too small for the output layout");
3222
+ return this._offset = t.byteOffset, this._stride = t.byteStride, this._byteLength = r, this._bufferOwnership = "borrowed", this._targetBuffer = void 0, t.buffer;
3223
+ }
3224
+ async readValue(e = 0, t) {
3225
+ let { ValueType: n } = this, { size: r, offset: i, stride: a, length: o } = this, s = n.BYTES_PER_ELEMENT * r;
3226
+ if (t ??= o, e = Math.max(0, Math.min(o, e)), t = Math.max(e, Math.min(o, t)), this._value) return oi(this, this._value, e, t);
3227
+ let c = t - e;
3228
+ if (c === 0) return new n(0);
3229
+ let l = i + e * a, u = a === s ? c * s : (c - 1) * a + s, d = await this.buffer.readAsync(l, u), f = new n(d.buffer, d.byteOffset, d.byteLength / n.BYTES_PER_ELEMENT);
3230
+ if (a === s) return f;
3231
+ let p = new Uint8Array(s * c);
3232
+ for (let e = 0; e < c; e++) {
3233
+ let t = e * a;
3234
+ p.set(d.subarray(t, t + s), e * s);
3235
+ }
3236
+ return new n(p.buffer);
3237
+ }
3238
+ async ensureCPUValue() {
3239
+ let e = this.value;
3240
+ if (e) return e;
3241
+ let t = await this.buffer.readAsync(0, this.offset + this.byteLength);
3242
+ if (t.byteLength % this.ValueType.BYTES_PER_ELEMENT !== 0) throw Error(`${this} backing buffer byte length is not aligned to its scalar type`);
3243
+ let n = t.slice();
3244
+ return this._value = new this.ValueType(n.buffer, n.byteOffset, n.byteLength / this.ValueType.BYTES_PER_ELEMENT), this._value;
3245
+ }
3246
+ ensureCPUValueSync() {
3247
+ let e = this.value;
3248
+ if (e) return e;
3249
+ throw Error(`${this} CPU value is not available for synchronous evaluation`);
3250
+ }
3251
+ toString() {
3252
+ return this._id ?? this.source?.toString() ?? this.constructor.name;
3253
+ }
3254
+ destroy() {
3255
+ this._gpuVector &&= (this._bufferOwnership === "owned" && Z.recycle($(this._gpuVector)), void 0), this._targetBuffer = void 0, this._destroyed = !0;
3256
+ }
3257
+ };
3258
+ function oi(e, t, n, r) {
3259
+ let { ValueType: i, size: a, offset: o, stride: s } = e, c = s / i.BYTES_PER_ELEMENT, l = o / i.BYTES_PER_ELEMENT, u = r - n;
3260
+ if (c === a) {
3261
+ let e = l + n * c;
3262
+ return t.subarray(e, e + u * a);
3263
+ }
3264
+ let d = new i(u * a);
3265
+ for (let e = 0; e < u; e++) {
3266
+ let r = l + (n + e) * c;
3267
+ d.set(t.subarray(r, r + a), e * a);
3268
+ }
3269
+ return d;
3270
+ }
3271
+ function si(e) {
3272
+ if (e instanceof Q) return e;
3273
+ if (typeof e == "number" || Array.isArray(e)) return Q.fromConstant(e);
3274
+ if (e instanceof ni) return Q.fromGPUData(e);
3275
+ if (e instanceof J) return Q.fromGPUDataView(e);
3276
+ throw Error("getGPUDataEvaluator() requires GPUDataEvaluator, GPUData, GPUDataView, number, or number[]");
3277
+ }
3278
+ function ci(e) {
3279
+ if (!e.format) throw Error("GPUDataEvaluator.fromGPUData() requires GPUData format metadata");
3280
+ if (Ur(e.format) || Wr(e.format)) throw Error("GPUDataEvaluator.fromGPUData() does not support variable-length input");
3281
+ let t = q(e.format).byteLength;
3282
+ if (e.rowByteLength !== t) throw Error(`GPUDataEvaluator.fromGPUData() requires rowByteLength ${t} for GPUData`);
3283
+ }
3284
+ function li(e) {
3285
+ let t = q(e.format), n = a(t.signedDataType), r = n.BYTES_PER_ELEMENT * t.components;
3286
+ if (t.byteLength !== r) throw Error(`GPUDataEvaluator does not support packed vertex format ${e.format}: ${t.byteLength} physical bytes cannot expose ${t.components} ${t.signedDataType} components`);
3287
+ if (e.byteOffset % n.BYTES_PER_ELEMENT !== 0 || e.byteStride % n.BYTES_PER_ELEMENT !== 0) throw Error(`GPUDataEvaluator requires ${e.format} offset and stride aligned to ${n.BYTES_PER_ELEMENT} bytes`);
3288
+ return {
3289
+ type: t.signedDataType,
3290
+ size: t.components,
3291
+ offset: e.byteOffset,
3292
+ stride: e.byteStride,
3293
+ normalized: t.normalized,
3294
+ length: e.length,
3295
+ format: e.format
3296
+ };
3297
+ }
3298
+ function $(e) {
3299
+ let t = ui(e).buffer;
3300
+ return t instanceof K ? t.buffer : t;
3301
+ }
3302
+ function ui(e) {
3303
+ let [t, ...n] = e.data;
3304
+ if (!t || n.length > 0) throw Error(`GPUDataEvaluator requires exactly one GPUData chunk for "${e.name}"`);
3305
+ return t;
3306
+ }
3307
+ function di(e) {
3308
+ let t = [];
3309
+ return fi(e, t, { byteOffset: 0 }), t;
3310
+ }
3311
+ function fi(e, t, n) {
3312
+ let r = e.source;
3313
+ if (r && !(r instanceof Q) && r.name === "interleave") {
3314
+ for (let e of Object.values(r.inputs)) e instanceof Q && fi(e, t, n);
3315
+ return;
3316
+ }
3317
+ t.push({
3318
+ attribute: e.id ?? e.toString(),
3319
+ format: pi(e.type, e.size, e.normalized),
3320
+ byteOffset: n.byteOffset
3321
+ }), n.byteOffset += e.ValueType.BYTES_PER_ELEMENT * e.size;
3322
+ }
3323
+ function pi(e, t, n = !1) {
3324
+ if (t < 1 || t > 4) throw Error(`Cannot synthesize a GPUVector vertex format with ${t} components`);
3325
+ let r = e;
3326
+ if (n) switch (e) {
3327
+ case "uint8":
3328
+ r = "unorm8";
3329
+ break;
3330
+ case "sint8":
3331
+ r = "snorm8";
3332
+ break;
3333
+ case "uint16":
3334
+ r = "unorm16";
3335
+ break;
3336
+ case "sint16":
3337
+ r = "snorm16";
3338
+ break;
3339
+ case "float32":
3340
+ r = "float32";
3341
+ break;
3342
+ default: throw Error(`Unsupported normalized vertex format for ${e}`);
3343
+ }
3344
+ return (r === "uint8" || r === "sint8" || r === "uint16" || r === "sint16" || r === "unorm8" || r === "snorm8" || r === "unorm16" || r === "snorm16") && t === 3 ? `${r}x3-webgl` : `${r}${t === 1 ? "" : `x${t}`}`;
3345
+ }
3346
+ function mi(e, t, n = !1) {
3347
+ return t >= 1 && t <= 4 ? pi(e, t, n) : void 0;
3348
+ }
3349
+ //#endregion
3350
+ //#region node_modules/@luma.gl/gpgpu/dist/operations/arithmetic-expression.js
3351
+ var hi = {
3352
+ add: {
3353
+ arity: 2,
3354
+ symbol: "arithmetic_add"
3355
+ },
3356
+ subtract: {
3357
+ arity: 2,
3358
+ symbol: "arithmetic_subtract"
3359
+ },
3360
+ multiply: {
3361
+ arity: 2,
3362
+ symbol: "arithmetic_multiply"
3363
+ },
3364
+ divide: {
3365
+ arity: 2,
3366
+ symbol: "arithmetic_divide"
3367
+ },
3368
+ pow: {
3369
+ arity: 2,
3370
+ symbol: "pow"
3371
+ },
3372
+ sqrt: {
3373
+ arity: 1,
3374
+ symbol: "sqrt"
3375
+ },
3376
+ abs: {
3377
+ arity: 1,
3378
+ symbol: "abs"
3379
+ },
3380
+ sin: {
3381
+ arity: 1,
3382
+ symbol: "sin"
3383
+ },
3384
+ cos: {
3385
+ arity: 1,
3386
+ symbol: "cos"
3387
+ },
3388
+ tan: {
3389
+ arity: 1,
3390
+ symbol: "arithmetic_tan"
3391
+ },
3392
+ exp: {
3393
+ arity: 1,
3394
+ symbol: "exp"
3395
+ },
3396
+ log: {
3397
+ arity: 1,
3398
+ symbol: "log"
3399
+ }
3400
+ };
3401
+ //#endregion
3402
+ //#region node_modules/@luma.gl/gpgpu/dist/utils/expression.js
3403
+ function gi(e, { operations: t, inputs: n }) {
3404
+ switch (e.kind) {
3405
+ case "input":
3406
+ if (!(e.name in n)) throw Error(`Unknown expression input '${e.name}'`);
3407
+ return;
3408
+ case "literal":
3409
+ if (Array.isArray(e.value)) {
3410
+ for (let t of e.value) if (!Number.isFinite(t)) throw Error(`Expression literal array must contain only finite values, got ${t}`);
3411
+ } else if (!Number.isFinite(e.value)) throw Error(`Expression literal must be finite, got ${e.value}`);
3412
+ return;
3413
+ case "call": {
3414
+ let r = t[e.op];
3415
+ if (!r) throw Error(`Unknown expression op '${e.op}'`);
3416
+ if (e.args.length !== r.arity) throw Error(`Expression op '${e.op}' expects ${r.arity} args, got ${e.args.length}`);
3417
+ for (let r of e.args) gi(r, {
3418
+ operations: t,
3419
+ inputs: n
3420
+ });
3421
+ return;
3422
+ }
3423
+ default: throw Error(`Unsupported expression node ${e.kind}`);
3424
+ }
3425
+ }
3426
+ function _i(e, t) {
3427
+ return gi(e, t), vi(e, t);
3428
+ }
3429
+ function vi(e, t) {
3430
+ switch (e.kind) {
3431
+ case "input": {
3432
+ let n = t.inputs[e.name];
3433
+ return t.laneIndex < n.size ? t.formatInput(e.name) : t.formatOutOfBoundsInput(e.name);
3434
+ }
3435
+ case "literal": return t.formatLiteral(e.value);
3436
+ case "call": {
3437
+ let n = t.operations[e.op], r = e.args.map((e) => vi(e, t));
3438
+ return t.formatCall(n.symbol, r);
3439
+ }
3440
+ default: throw Error(`Unsupported expression node ${e.kind}`);
3441
+ }
3442
+ }
3443
+ //#endregion
3444
+ export { rt as C, He as D, Ue as E, g as O, it as S, We as T, vr as _, Z as a, pr as b, Rr as c, Ar as d, Sr as f, xr as g, Cr as h, si as i, Lr as l, yr as m, hi as n, X as o, br as p, Q as r, K as s, _i as t, Br as u, gr as v, et as w, hr as x, mr as y };