easycomponentstools 1.2.3 → 1.2.5

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