@codexo/exojs 0.6.4 → 0.6.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/CHANGELOG.md +122 -0
  2. package/dist/esm/core/Application.d.ts +0 -1
  3. package/dist/esm/core/Application.js +0 -1
  4. package/dist/esm/core/Application.js.map +1 -1
  5. package/dist/esm/core/SceneManager.js +11 -12
  6. package/dist/esm/core/SceneManager.js.map +1 -1
  7. package/dist/esm/index.js +0 -5
  8. package/dist/esm/index.js.map +1 -1
  9. package/dist/esm/input/InputManager.d.ts +8 -0
  10. package/dist/esm/input/InputManager.js +43 -5
  11. package/dist/esm/input/InputManager.js.map +1 -1
  12. package/dist/esm/math/geometry.d.ts +12 -8
  13. package/dist/esm/math/geometry.js +119 -72
  14. package/dist/esm/math/geometry.js.map +1 -1
  15. package/dist/esm/rendering/index.d.ts +0 -5
  16. package/dist/esm/rendering/primitives/Graphics.d.ts +3 -2
  17. package/dist/esm/rendering/primitives/Graphics.js +33 -25
  18. package/dist/esm/rendering/primitives/Graphics.js.map +1 -1
  19. package/dist/esm/rendering/webgl2/WebGl2Backend.js +1 -4
  20. package/dist/esm/rendering/webgl2/WebGl2Backend.js.map +1 -1
  21. package/dist/esm/rendering/webgpu/WebGpuBackend.js +0 -3
  22. package/dist/esm/rendering/webgpu/WebGpuBackend.js.map +1 -1
  23. package/dist/esm/rendering/webgpu/WebGpuMaskCompositor.js +1 -2
  24. package/dist/esm/rendering/webgpu/WebGpuMaskCompositor.js.map +1 -1
  25. package/dist/exo.esm.js +618 -1268
  26. package/dist/exo.esm.js.map +1 -1
  27. package/package.json +1 -1
  28. package/dist/esm/rendering/primitives/CircleGeometry.d.ts +0 -4
  29. package/dist/esm/rendering/primitives/CircleGeometry.js +0 -21
  30. package/dist/esm/rendering/primitives/CircleGeometry.js.map +0 -1
  31. package/dist/esm/rendering/primitives/DrawableShape.d.ts +0 -11
  32. package/dist/esm/rendering/primitives/DrawableShape.js +0 -21
  33. package/dist/esm/rendering/primitives/DrawableShape.js.map +0 -1
  34. package/dist/esm/rendering/primitives/Geometry.d.ts +0 -13
  35. package/dist/esm/rendering/primitives/Geometry.js +0 -16
  36. package/dist/esm/rendering/primitives/Geometry.js.map +0 -1
  37. package/dist/esm/rendering/webgl2/WebGl2PrimitiveRenderer.d.ts +0 -26
  38. package/dist/esm/rendering/webgl2/WebGl2PrimitiveRenderer.js +0 -222
  39. package/dist/esm/rendering/webgl2/WebGl2PrimitiveRenderer.js.map +0 -1
  40. package/dist/esm/rendering/webgl2/glsl/primitive.frag.js +0 -4
  41. package/dist/esm/rendering/webgl2/glsl/primitive.frag.js.map +0 -1
  42. package/dist/esm/rendering/webgl2/glsl/primitive.vert.js +0 -4
  43. package/dist/esm/rendering/webgl2/glsl/primitive.vert.js.map +0 -1
  44. package/dist/esm/rendering/webgpu/WebGpuPrimitiveRenderer.d.ts +0 -38
  45. package/dist/esm/rendering/webgpu/WebGpuPrimitiveRenderer.js +0 -488
  46. package/dist/esm/rendering/webgpu/WebGpuPrimitiveRenderer.js.map +0 -1
@@ -1,488 +0,0 @@
1
- import { Matrix } from '../../math/Matrix.js';
2
- import { AbstractWebGpuRenderer } from './AbstractWebGpuRenderer.js';
3
- import { RenderingPrimitives } from '../types.js';
4
- import { getWebGpuBlendState } from './WebGpuBlendState.js';
5
-
6
- /// <reference types="@webgpu/types" />
7
- const primitiveShaderSource = `
8
- struct VertexInput {
9
- @location(0) position: vec4<f32>,
10
- @location(1) color: vec4<f32>,
11
- };
12
-
13
- struct VertexOutput {
14
- @builtin(position) position: vec4<f32>,
15
- @location(0) color: vec4<f32>,
16
- };
17
-
18
- @vertex
19
- fn vertexMain(input: VertexInput) -> VertexOutput {
20
- var output: VertexOutput;
21
-
22
- output.position = input.position;
23
- output.color = vec4<f32>(input.color.rgb * input.color.a, input.color.a);
24
-
25
- return output;
26
- }
27
-
28
- @fragment
29
- fn fragmentMain(input: VertexOutput) -> @location(0) vec4<f32> {
30
- return input.color;
31
- }
32
- `;
33
- // 4 floats (pre-transformed clip-space position) + 1 u32 (color) = 20 bytes.
34
- // The CPU applies (view * shape.globalTransform) to each vertex before writing
35
- // it into the vertex buffer, so the shader outputs the position as-is. This
36
- // matches the sprite renderer's approach and eliminates the need for a per-
37
- // drawcall uniform binding.
38
- const vertexStrideBytes = 20;
39
- const wordsPerVertex = vertexStrideBytes / Uint32Array.BYTES_PER_ELEMENT;
40
- class WebGpuPrimitiveRenderer extends AbstractWebGpuRenderer {
41
- _combinedTransform = new Matrix();
42
- _drawCalls = [];
43
- _drawCallCount = 0;
44
- _pipelines = new Map();
45
- _device = null;
46
- _shaderModule = null;
47
- _pipelineLayout = null;
48
- _vertexBuffer = null;
49
- _indexBuffer = null;
50
- _vertexBufferCapacity = 0;
51
- _indexBufferCapacity = 0;
52
- _vertexData = new ArrayBuffer(0);
53
- _float32View = new Float32Array(this._vertexData);
54
- _uint32View = new Uint32Array(this._vertexData);
55
- _packedIndexData = new Uint16Array(0);
56
- _generatedIndexData = new Uint16Array(0);
57
- _sequentialIndexData = new Uint16Array(0);
58
- render(shape) {
59
- const backend = this._backend;
60
- if (backend === null) {
61
- throw new Error('Renderer not connected');
62
- }
63
- if (shape.drawMode !== RenderingPrimitives.Points
64
- && shape.drawMode !== RenderingPrimitives.Lines
65
- && shape.drawMode !== RenderingPrimitives.LineLoop
66
- && shape.drawMode !== RenderingPrimitives.LineStrip
67
- && shape.drawMode !== RenderingPrimitives.Triangles
68
- && shape.drawMode !== RenderingPrimitives.TriangleFan
69
- && shape.drawMode !== RenderingPrimitives.TriangleStrip) {
70
- throw new Error(`WebGPU primitive renderer does not support draw mode "${shape.drawMode}" yet.`);
71
- }
72
- backend.setBlendMode(shape.blendMode);
73
- if (shape.geometry.vertices.length === 0) {
74
- return;
75
- }
76
- const drawCallIndex = this._drawCallCount++;
77
- const drawCall = this._drawCalls[drawCallIndex];
78
- if (drawCall) {
79
- drawCall.shape = shape;
80
- drawCall.blendMode = shape.blendMode;
81
- }
82
- else {
83
- this._drawCalls.push({
84
- shape,
85
- blendMode: shape.blendMode,
86
- });
87
- }
88
- }
89
- flush() {
90
- const backend = this._backend;
91
- const device = this._device;
92
- if (!backend || !device) {
93
- return;
94
- }
95
- if (this._drawCallCount === 0 && !backend.clearRequested) {
96
- return;
97
- }
98
- const scissor = backend.getScissorRect();
99
- const maskClipsAll = scissor !== null && (scissor.width <= 0 || scissor.height <= 0);
100
- // Phase 1: resolve drawcalls and record each one's offsets into the
101
- // shared packed buffers. Transform gets baked into the vertex data
102
- // during phase 2 so no per-drawcall uniform binding is needed.
103
- const plan = [];
104
- const resolvedDrawCalls = [];
105
- let totalVertices = 0;
106
- let totalIndices = 0;
107
- if (this._drawCallCount > 0 && !maskClipsAll) {
108
- for (let drawCallIndex = 0; drawCallIndex < this._drawCallCount; drawCallIndex++) {
109
- const drawCall = this._drawCalls[drawCallIndex];
110
- const shape = drawCall.shape;
111
- const resolved = this._resolveDrawCall(shape);
112
- resolvedDrawCalls.push(resolved);
113
- if (resolved === null) {
114
- continue;
115
- }
116
- const pipeline = this._getPipeline({
117
- topology: resolved.topology,
118
- usesStripIndex: resolved.usesStripIndex,
119
- blendMode: drawCall.blendMode,
120
- format: backend.renderTargetFormat,
121
- });
122
- plan.push({
123
- pipeline,
124
- vertexByteOffset: totalVertices * vertexStrideBytes,
125
- vertexCount: resolved.vertexCount,
126
- indexByteOffset: totalIndices * Uint16Array.BYTES_PER_ELEMENT,
127
- indexCount: resolved.indexCount,
128
- });
129
- totalVertices += resolved.vertexCount;
130
- totalIndices += resolved.indexCount;
131
- }
132
- }
133
- // If nothing will actually render, still honor a pending clear with
134
- // a single empty pass so createColorAttachment consumes the clear
135
- // state exactly once.
136
- if (plan.length === 0) {
137
- if (backend.clearRequested) {
138
- const encoder = device.createCommandEncoder();
139
- const pass = encoder.beginRenderPass({
140
- colorAttachments: [backend.createColorAttachment()],
141
- });
142
- backend.stats.renderPasses++;
143
- pass.end();
144
- backend.submit(encoder.finish());
145
- }
146
- this._drawCallCount = 0;
147
- return;
148
- }
149
- // Phase 2: size GPU buffers for the whole-frame totals, then pack
150
- // every drawcall's CPU-side data. _writeShapeVertices applies
151
- // (view * shape.globalTransform) per-vertex so the shader simply
152
- // outputs input.position unchanged.
153
- this._ensureVertexCapacity(totalVertices);
154
- if (totalIndices > 0) {
155
- this._ensureIndexCapacity(totalIndices);
156
- if (this._packedIndexData.length < totalIndices) {
157
- this._packedIndexData = new Uint16Array(Math.max(totalIndices, this._packedIndexData.length === 0 ? 1 : this._packedIndexData.length * 2));
158
- }
159
- }
160
- {
161
- let vOffset = 0;
162
- let iOffset = 0;
163
- for (let i = 0; i < this._drawCallCount; i++) {
164
- const resolved = resolvedDrawCalls[i];
165
- if (resolved === null) {
166
- continue;
167
- }
168
- const drawCall = this._drawCalls[i];
169
- const shape = drawCall.shape;
170
- this._writeShapeVertices(backend, shape, vOffset);
171
- if (resolved.indices !== null && resolved.indexCount > 0) {
172
- this._packedIndexData.set(resolved.indices.subarray(0, resolved.indexCount), iOffset);
173
- iOffset += resolved.indexCount;
174
- }
175
- vOffset += resolved.vertexCount;
176
- }
177
- }
178
- // Phase 3: single writeBuffer per GPU buffer covers the whole frame.
179
- device.queue.writeBuffer(this._vertexBuffer, 0, this._vertexData, 0, totalVertices * vertexStrideBytes);
180
- if (totalIndices > 0) {
181
- device.queue.writeBuffer(this._indexBuffer, 0, this._packedIndexData.buffer, this._packedIndexData.byteOffset, totalIndices * Uint16Array.BYTES_PER_ELEMENT);
182
- }
183
- // Phase 4: single render pass. Per-draw state is just pipeline and
184
- // vertex/index subrange offsets — the transform has already been
185
- // baked into the vertex data.
186
- const encoder = device.createCommandEncoder();
187
- const pass = encoder.beginRenderPass({
188
- colorAttachments: [backend.createColorAttachment()],
189
- });
190
- backend.stats.renderPasses++;
191
- if (scissor !== null) {
192
- pass.setScissorRect(scissor.x, scissor.y, scissor.width, scissor.height);
193
- }
194
- for (const planned of plan) {
195
- pass.setPipeline(planned.pipeline);
196
- pass.setVertexBuffer(0, this._vertexBuffer, planned.vertexByteOffset);
197
- if (planned.indexCount > 0) {
198
- pass.setIndexBuffer(this._indexBuffer, 'uint16', planned.indexByteOffset);
199
- pass.drawIndexed(planned.indexCount);
200
- }
201
- else {
202
- pass.draw(planned.vertexCount);
203
- }
204
- backend.stats.batches++;
205
- backend.stats.drawCalls++;
206
- }
207
- pass.end();
208
- backend.submit(encoder.finish());
209
- this._drawCallCount = 0;
210
- }
211
- destroy() {
212
- this.disconnect();
213
- this._combinedTransform.destroy();
214
- }
215
- onConnect(backend) {
216
- this._backend = backend;
217
- this._device = this._backend.device;
218
- this._shaderModule = this._device.createShaderModule({ code: primitiveShaderSource });
219
- // Transform is applied per-vertex on the CPU, so no uniform binding
220
- // is needed — the shader outputs input.position directly.
221
- this._pipelineLayout = this._device.createPipelineLayout({
222
- bindGroupLayouts: [],
223
- });
224
- }
225
- onDisconnect() {
226
- this.flush();
227
- this._destroyBuffers();
228
- this._pipelines.clear();
229
- this._pipelineLayout = null;
230
- this._shaderModule = null;
231
- this._device = null;
232
- this._backend = null;
233
- this._drawCallCount = 0;
234
- }
235
- _writeShapeVertices(backend, shape, vertexStart) {
236
- // Matrix.combine is `other * this` (see Matrix.rotate and
237
- // SceneNode.getGlobalTransform, both of which chain via
238
- // local.combine(parent.global) to yield parent.global * local).
239
- //
240
- // We need view * global applied to a local vertex, so start with
241
- // global and combine with view — that gives
242
- // _combinedTransform = view * global.
243
- const matrix = this._combinedTransform
244
- .copy(shape.getGlobalTransform())
245
- .combine(backend.view.getTransform());
246
- // Match the original uniform-based WGSL layout exactly.
247
- //
248
- // The shader packs the Matrix's 9 fields into a 4x4 mat (column-major
249
- // in WGSL):
250
- // col 0 = [a, c, 0, 0]
251
- // col 1 = [b, d, 0, 0]
252
- // col 2 = [0, 0, 1, 0]
253
- // col 3 = [x, y, 0, z]
254
- //
255
- // Multiplied by vec4(px, py, 0, 1):
256
- // out = col0*px + col1*py + col2*0 + col3*1
257
- // out.x = a*px + b*py + x
258
- // out.y = c*px + d*py + y
259
- // out.z = 0
260
- // out.w = z
261
- //
262
- // The Matrix class represents the affine matrix in the order
263
- // [a b x]
264
- // [c d y]
265
- // [e f z]
266
- // so a/b/c/d are rotation+scale (note: b on the TOP row, c on the
267
- // LEFT column, not the other way around) and x/y/z the translation /
268
- // w component. Matrix.toArray(false) confirms this layout.
269
- const a = matrix.a;
270
- const b = matrix.b;
271
- const c = matrix.c;
272
- const d = matrix.d;
273
- const tx = matrix.x;
274
- const ty = matrix.y;
275
- const tw = matrix.z;
276
- const color = shape.color.toRgba();
277
- const vertices = shape.geometry.vertices;
278
- const vertexCount = vertices.length / 2;
279
- for (let i = 0; i < vertexCount; i++) {
280
- const sourceIndex = i * 2;
281
- const targetIndex = (vertexStart + i) * wordsPerVertex;
282
- const px = vertices[sourceIndex];
283
- const py = vertices[sourceIndex + 1];
284
- this._float32View[targetIndex + 0] = a * px + b * py + tx;
285
- this._float32View[targetIndex + 1] = c * px + d * py + ty;
286
- this._float32View[targetIndex + 2] = 0;
287
- this._float32View[targetIndex + 3] = tw;
288
- this._uint32View[targetIndex + 4] = color;
289
- }
290
- }
291
- _ensureVertexCapacity(vertexCount) {
292
- const requiredBytes = vertexCount * vertexStrideBytes;
293
- if (requiredBytes > this._vertexData.byteLength) {
294
- const byteLength = Math.max(requiredBytes, this._vertexData.byteLength === 0 ? vertexStrideBytes : this._vertexData.byteLength * 2);
295
- this._vertexData = new ArrayBuffer(byteLength);
296
- this._float32View = new Float32Array(this._vertexData);
297
- this._uint32View = new Uint32Array(this._vertexData);
298
- }
299
- if (requiredBytes > this._vertexBufferCapacity) {
300
- this._vertexBuffer?.destroy();
301
- this._vertexBufferCapacity = Math.max(requiredBytes, this._vertexBufferCapacity === 0 ? vertexStrideBytes : this._vertexBufferCapacity * 2);
302
- this._vertexBuffer = this._device.createBuffer({
303
- size: this._vertexBufferCapacity,
304
- usage: GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST,
305
- });
306
- }
307
- }
308
- _ensureIndexCapacity(indexCount) {
309
- const requiredBytes = indexCount * Uint16Array.BYTES_PER_ELEMENT;
310
- if (requiredBytes > this._indexBufferCapacity) {
311
- this._indexBuffer?.destroy();
312
- this._indexBufferCapacity = Math.max(requiredBytes, this._indexBufferCapacity === 0 ? Uint16Array.BYTES_PER_ELEMENT : this._indexBufferCapacity * 2);
313
- this._indexBuffer = this._device.createBuffer({
314
- size: this._indexBufferCapacity,
315
- usage: GPUBufferUsage.INDEX | GPUBufferUsage.COPY_DST,
316
- });
317
- }
318
- }
319
- _getPipeline(key) {
320
- const pipelineKey = `${key.topology}:${key.usesStripIndex ? 1 : 0}:${key.blendMode}:${key.format}`;
321
- const existingPipeline = this._pipelines.get(pipelineKey);
322
- if (existingPipeline) {
323
- return existingPipeline;
324
- }
325
- const pipeline = this._device.createRenderPipeline({
326
- layout: this._pipelineLayout,
327
- vertex: {
328
- module: this._shaderModule,
329
- entryPoint: 'vertexMain',
330
- buffers: [{
331
- arrayStride: vertexStrideBytes,
332
- attributes: [{
333
- shaderLocation: 0,
334
- offset: 0,
335
- format: 'float32x4',
336
- }, {
337
- shaderLocation: 1,
338
- offset: 16,
339
- format: 'unorm8x4',
340
- }],
341
- }],
342
- },
343
- fragment: {
344
- module: this._shaderModule,
345
- entryPoint: 'fragmentMain',
346
- targets: [{
347
- format: key.format,
348
- blend: getWebGpuBlendState(key.blendMode),
349
- writeMask: GPUColorWrite.ALL,
350
- }],
351
- },
352
- primitive: {
353
- topology: key.topology,
354
- stripIndexFormat: key.usesStripIndex ? 'uint16' : undefined,
355
- },
356
- });
357
- this._pipelines.set(pipelineKey, pipeline);
358
- return pipeline;
359
- }
360
- _getTopology(drawMode) {
361
- switch (drawMode) {
362
- case RenderingPrimitives.Points:
363
- return 'point-list';
364
- case RenderingPrimitives.Lines:
365
- return 'line-list';
366
- case RenderingPrimitives.LineLoop:
367
- case RenderingPrimitives.LineStrip:
368
- return 'line-strip';
369
- case RenderingPrimitives.Triangles:
370
- case RenderingPrimitives.TriangleFan:
371
- return 'triangle-list';
372
- case RenderingPrimitives.TriangleStrip:
373
- return 'triangle-strip';
374
- default:
375
- throw new Error(`WebGPU primitive renderer does not support draw mode "${drawMode}" yet.`);
376
- }
377
- }
378
- _resolveDrawCall(shape) {
379
- const vertices = shape.geometry.vertices;
380
- const vertexCount = vertices.length / 2;
381
- if (vertexCount === 0) {
382
- return null;
383
- }
384
- switch (shape.drawMode) {
385
- case RenderingPrimitives.LineLoop:
386
- return this._resolveLineLoopDrawCall(shape.geometry.indices, vertexCount);
387
- case RenderingPrimitives.TriangleFan:
388
- return this._resolveTriangleFanDrawCall(shape.geometry.indices, vertexCount);
389
- default: {
390
- const indices = shape.geometry.indices;
391
- const topology = this._getTopology(shape.drawMode);
392
- const indexCount = indices.length;
393
- const usesStripIndex = indexCount > 0 && (shape.drawMode === RenderingPrimitives.LineStrip
394
- || shape.drawMode === RenderingPrimitives.TriangleStrip);
395
- if (indexCount > 0) {
396
- return {
397
- topology,
398
- usesStripIndex,
399
- vertexCount,
400
- indices,
401
- indexCount,
402
- };
403
- }
404
- return {
405
- topology,
406
- usesStripIndex,
407
- vertexCount,
408
- indices: null,
409
- indexCount: 0,
410
- };
411
- }
412
- }
413
- }
414
- _resolveLineLoopDrawCall(indices, vertexCount) {
415
- const sourceIndices = indices.length > 0 ? indices : this._getSequentialIndices(vertexCount);
416
- const sourceCount = sourceIndices.length;
417
- if (sourceCount < 2) {
418
- return null;
419
- }
420
- const loopIndexCount = sourceCount + 1;
421
- const generatedIndices = this._ensureGeneratedIndexCapacity(loopIndexCount);
422
- generatedIndices.set(sourceIndices.subarray(0, sourceCount), 0);
423
- generatedIndices[sourceCount] = sourceIndices[0];
424
- return {
425
- topology: 'line-strip',
426
- usesStripIndex: true,
427
- vertexCount,
428
- indices: generatedIndices,
429
- indexCount: loopIndexCount,
430
- };
431
- }
432
- _resolveTriangleFanDrawCall(indices, vertexCount) {
433
- const sourceIndices = indices.length > 0 ? indices : this._getSequentialIndices(vertexCount);
434
- const sourceCount = sourceIndices.length;
435
- if (sourceCount < 3) {
436
- return null;
437
- }
438
- const indexCount = (sourceCount - 2) * 3;
439
- const generatedIndices = this._ensureGeneratedIndexCapacity(indexCount);
440
- let targetIndex = 0;
441
- for (let index = 1; index < sourceCount - 1; index++) {
442
- generatedIndices[targetIndex++] = sourceIndices[0];
443
- generatedIndices[targetIndex++] = sourceIndices[index];
444
- generatedIndices[targetIndex++] = sourceIndices[index + 1];
445
- }
446
- return {
447
- topology: 'triangle-list',
448
- usesStripIndex: false,
449
- vertexCount,
450
- indices: generatedIndices,
451
- indexCount,
452
- };
453
- }
454
- _getSequentialIndices(vertexCount) {
455
- if (vertexCount > this._sequentialIndexData.length) {
456
- let nextLength = Math.max(1, this._sequentialIndexData.length);
457
- while (nextLength < vertexCount) {
458
- nextLength *= 2;
459
- }
460
- this._sequentialIndexData = new Uint16Array(nextLength);
461
- }
462
- for (let index = 0; index < vertexCount; index++) {
463
- this._sequentialIndexData[index] = index;
464
- }
465
- return this._sequentialIndexData.subarray(0, vertexCount);
466
- }
467
- _ensureGeneratedIndexCapacity(indexCount) {
468
- if (indexCount > this._generatedIndexData.length) {
469
- let nextLength = Math.max(1, this._generatedIndexData.length);
470
- while (nextLength < indexCount) {
471
- nextLength *= 2;
472
- }
473
- this._generatedIndexData = new Uint16Array(nextLength);
474
- }
475
- return this._generatedIndexData.subarray(0, indexCount);
476
- }
477
- _destroyBuffers() {
478
- this._vertexBuffer?.destroy();
479
- this._indexBuffer?.destroy();
480
- this._vertexBuffer = null;
481
- this._indexBuffer = null;
482
- this._vertexBufferCapacity = 0;
483
- this._indexBufferCapacity = 0;
484
- }
485
- }
486
-
487
- export { WebGpuPrimitiveRenderer };
488
- //# sourceMappingURL=WebGpuPrimitiveRenderer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"WebGpuPrimitiveRenderer.js","sources":["../../../../../src/rendering/webgpu/WebGpuPrimitiveRenderer.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}