@codexo/exojs 2.1.0 → 2.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/README.md +1 -3
  3. package/dist/esm/particles/emitters/ParticleOptions.d.ts +11 -0
  4. package/dist/esm/particles/emitters/ParticleOptions.js +11 -0
  5. package/dist/esm/particles/emitters/ParticleOptions.js.map +1 -1
  6. package/dist/esm/rendering/Container.d.ts +1 -1
  7. package/dist/esm/rendering/Container.js +5 -2
  8. package/dist/esm/rendering/Container.js.map +1 -1
  9. package/dist/esm/rendering/webgl2/WebGl2ShaderRuntime.js +7 -0
  10. package/dist/esm/rendering/webgl2/WebGl2ShaderRuntime.js.map +1 -1
  11. package/dist/esm/rendering/webgpu/WebGpuParticleRenderer.js +66 -43
  12. package/dist/esm/rendering/webgpu/WebGpuParticleRenderer.js.map +1 -1
  13. package/dist/esm/rendering/webgpu/WebGpuPrimitiveRenderer.d.ts +2 -6
  14. package/dist/esm/rendering/webgpu/WebGpuPrimitiveRenderer.js +160 -93
  15. package/dist/esm/rendering/webgpu/WebGpuPrimitiveRenderer.js.map +1 -1
  16. package/dist/esm/rendering/webgpu/WebGpuRenderManager.js +50 -39
  17. package/dist/esm/rendering/webgpu/WebGpuRenderManager.js.map +1 -1
  18. package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.js +75 -32
  19. package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.js.map +1 -1
  20. package/dist/exo.d.ts +14 -7
  21. package/dist/exo.esm.js +374 -209
  22. package/dist/exo.esm.js.map +1 -1
  23. package/dist/exo.esm.min.js +1 -1
  24. package/dist/exo.esm.min.js.map +1 -1
  25. package/dist/exo.global.js +374 -209
  26. package/dist/exo.global.js.map +1 -1
  27. package/dist/exo.global.min.js +1 -1
  28. package/dist/exo.global.min.js.map +1 -1
  29. package/package.json +3 -4
@@ -8,7 +8,7 @@ const spriteShaderSource = `
8
8
  struct ProjectionUniforms {
9
9
  matrix: mat4x4<f32>,
10
10
  };
11
-
11
+
12
12
  @group(0) @binding(0)
13
13
  var<uniform> projection: ProjectionUniforms;
14
14
 
@@ -45,7 +45,7 @@ var spriteSampler5: sampler;
45
45
  var spriteSampler6: sampler;
46
46
  @group(1) @binding(15)
47
47
  var spriteSampler7: sampler;
48
-
48
+
49
49
  struct VertexInput {
50
50
  @location(0) position: vec2<f32>,
51
51
  @location(1) texcoord: vec2<f32>,
@@ -53,7 +53,7 @@ struct VertexInput {
53
53
  @location(3) premultiplySample: u32,
54
54
  @location(4) textureSlot: u32,
55
55
  };
56
-
56
+
57
57
  struct VertexOutput {
58
58
  @builtin(position) position: vec4<f32>,
59
59
  @location(0) texcoord: vec2<f32>,
@@ -61,12 +61,12 @@ struct VertexOutput {
61
61
  @location(2) @interpolate(flat) premultiplySample: u32,
62
62
  @location(3) @interpolate(flat) textureSlot: u32,
63
63
  };
64
-
65
- @vertex
66
- fn vertexMain(input: VertexInput) -> VertexOutput {
67
- var output: VertexOutput;
68
-
69
- output.position = projection.matrix * vec4<f32>(input.position, 0.0, 1.0);
64
+
65
+ @vertex
66
+ fn vertexMain(input: VertexInput) -> VertexOutput {
67
+ var output: VertexOutput;
68
+
69
+ output.position = projection.matrix * vec4<f32>(input.position, 0.0, 1.0);
70
70
  output.texcoord = input.texcoord;
71
71
  output.color = vec4(input.color.rgb * input.color.a, input.color.a);
72
72
  output.premultiplySample = input.premultiplySample;
@@ -75,38 +75,46 @@ fn vertexMain(input: VertexInput) -> VertexOutput {
75
75
  return output;
76
76
  }
77
77
 
78
- fn sampleTexture(slot: u32, uv: vec2<f32>) -> vec4<f32> {
78
+ fn sampleTexture(slot: u32, uv: vec2<f32>, ddx: vec2<f32>, ddy: vec2<f32>) -> vec4<f32> {
79
79
  switch slot {
80
80
  case 0u: {
81
- return textureSample(spriteTexture0, spriteSampler0, uv);
81
+ return textureSampleGrad(spriteTexture0, spriteSampler0, uv, ddx, ddy);
82
82
  }
83
83
  case 1u: {
84
- return textureSample(spriteTexture1, spriteSampler1, uv);
84
+ return textureSampleGrad(spriteTexture1, spriteSampler1, uv, ddx, ddy);
85
85
  }
86
86
  case 2u: {
87
- return textureSample(spriteTexture2, spriteSampler2, uv);
87
+ return textureSampleGrad(spriteTexture2, spriteSampler2, uv, ddx, ddy);
88
88
  }
89
89
  case 3u: {
90
- return textureSample(spriteTexture3, spriteSampler3, uv);
90
+ return textureSampleGrad(spriteTexture3, spriteSampler3, uv, ddx, ddy);
91
91
  }
92
92
  case 4u: {
93
- return textureSample(spriteTexture4, spriteSampler4, uv);
93
+ return textureSampleGrad(spriteTexture4, spriteSampler4, uv, ddx, ddy);
94
94
  }
95
95
  case 5u: {
96
- return textureSample(spriteTexture5, spriteSampler5, uv);
96
+ return textureSampleGrad(spriteTexture5, spriteSampler5, uv, ddx, ddy);
97
97
  }
98
98
  case 6u: {
99
- return textureSample(spriteTexture6, spriteSampler6, uv);
99
+ return textureSampleGrad(spriteTexture6, spriteSampler6, uv, ddx, ddy);
100
100
  }
101
101
  default: {
102
- return textureSample(spriteTexture7, spriteSampler7, uv);
102
+ return textureSampleGrad(spriteTexture7, spriteSampler7, uv, ddx, ddy);
103
103
  }
104
104
  }
105
105
  }
106
106
 
107
107
  @fragment
108
108
  fn fragmentMain(input: VertexOutput) -> @location(0) vec4<f32> {
109
- let sample = sampleTexture(input.textureSlot, input.texcoord);
109
+ // Compute screen-space derivatives in uniform control flow before the
110
+ // per-slot switch. WGSL requires textureSample (implicit LOD) to run in
111
+ // uniform control flow, which multi-texture batching breaks because the
112
+ // slot varies per fragment. textureSampleGrad takes explicit derivatives
113
+ // and is valid regardless of control-flow uniformity, while preserving
114
+ // mipmap-correct LOD when sprites use mipmapped textures.
115
+ let ddx = dpdx(input.texcoord);
116
+ let ddy = dpdy(input.texcoord);
117
+ let sample = sampleTexture(input.textureSlot, input.texcoord, ddx, ddy);
110
118
  let resolvedSample = select(sample, vec4(sample.rgb * sample.a, sample.a), input.premultiplySample == 1u);
111
119
 
112
120
  return resolvedSample * input.color;
@@ -256,6 +264,44 @@ class WebGpuSpriteRenderer extends AbstractWebGpuRenderer {
256
264
  if (this._drawCallCount === 0 && !renderManager.clearRequested) {
257
265
  return;
258
266
  }
267
+ // Grow vertex/index buffers up front for the TOTAL sprite count. Two
268
+ // reasons this must happen before the render pass begins:
269
+ // 1. _ensureBatchCapacity destroys old buffers and creates new ones
270
+ // when capacity grows, so running it after setVertexBuffer /
271
+ // setIndexBuffer would leave the pass bound to destroyed buffers.
272
+ // 2. All batches are packed into the vertex buffer at distinct
273
+ // sprite offsets, so the buffer must hold every sprite in the
274
+ // flush, not just one batch worth.
275
+ if (this._drawCallCount > 0) {
276
+ this._ensureBatchCapacity(this._drawCallCount);
277
+ }
278
+ // Walk the batches once, packing each batch's vertex data into the
279
+ // CPU-side buffer at its own sprite-aligned offset. Each batch's
280
+ // metadata is recorded for the draw loop below.
281
+ //
282
+ // This replaces an earlier per-batch queue.writeBuffer(..., offset: 0)
283
+ // pattern where every writeBuffer targeted the same GPU offset. All
284
+ // writeBuffers in a frame execute before queue.submit(commandBuffer),
285
+ // so only the last batch's vertex data survived — which meant any
286
+ // flush containing more than one batch rendered every batch using
287
+ // the LAST batch's vertices (background vanished, sprites duplicated
288
+ // at wrong sizes, etc. whenever blend mode / texture slot / pipeline
289
+ // caused a split into multiple batches).
290
+ const batchPlan = [];
291
+ let packedSpriteCount = 0;
292
+ for (let start = 0; start < this._drawCallCount;) {
293
+ const batch = this._getBatchRange(start);
294
+ const spriteCount = batch.end - batch.start;
295
+ this._writeBatchVertexData(batch, packedSpriteCount);
296
+ batchPlan.push({
297
+ firstSprite: packedSpriteCount,
298
+ spriteCount,
299
+ blendMode: batch.blendMode,
300
+ textures: batch.textures,
301
+ });
302
+ packedSpriteCount += spriteCount;
303
+ start = batch.end;
304
+ }
259
305
  const viewMatrix = renderManager.view.getTransform();
260
306
  this._projectionData.set([
261
307
  viewMatrix.a, viewMatrix.c, 0, 0,
@@ -275,23 +321,20 @@ class WebGpuSpriteRenderer extends AbstractWebGpuRenderer {
275
321
  pass.setScissorRect(scissor.x, scissor.y, scissor.width, scissor.height);
276
322
  }
277
323
  if (this._drawCallCount > 0 && !maskClipsAll) {
324
+ // Single upload for the whole packed vertex buffer — every batch
325
+ // reads from its own sprite range via drawIndexed's firstIndex.
326
+ device.queue.writeBuffer(this._vertexBuffer, 0, this._vertexData, 0, packedSpriteCount * spriteVertexCount * vertexStrideBytes);
278
327
  pass.setBindGroup(0, uniformBindGroup);
279
328
  pass.setVertexBuffer(0, this._vertexBuffer);
280
329
  pass.setIndexBuffer(this._indexBuffer, 'uint32');
281
- for (let start = 0; start < this._drawCallCount;) {
282
- const batch = this._getBatchRange(start);
283
- const pipeline = this._getPipeline(batch.blendMode, renderManager.renderTargetFormat);
284
- const spriteCount = batch.end - batch.start;
285
- this._ensureBatchCapacity(spriteCount);
286
- this._writeBatchVertexData(batch);
287
- device.queue.writeBuffer(this._vertexBuffer, 0, this._vertexData, 0, spriteCount * spriteVertexCount * vertexStrideBytes);
288
- const textureBindGroup = this._createTextureBindGroup(device, renderManager, batch.textures);
330
+ for (const plan of batchPlan) {
331
+ const pipeline = this._getPipeline(plan.blendMode, renderManager.renderTargetFormat);
332
+ const textureBindGroup = this._createTextureBindGroup(device, renderManager, plan.textures);
289
333
  pass.setPipeline(pipeline);
290
334
  pass.setBindGroup(1, textureBindGroup);
291
- pass.drawIndexed(batch.spriteCount * spriteIndexCount, 1, 0, 0, 0);
335
+ pass.drawIndexed(plan.spriteCount * spriteIndexCount, 1, plan.firstSprite * spriteIndexCount, 0, 0);
292
336
  renderManager.stats.batches++;
293
337
  renderManager.stats.drawCalls++;
294
- start = batch.end;
295
338
  }
296
339
  }
297
340
  pass.end();
@@ -316,7 +359,7 @@ class WebGpuSpriteRenderer extends AbstractWebGpuRenderer {
316
359
  });
317
360
  const indexData = new Uint32Array(nextCapacity * spriteIndexCount);
318
361
  const indexBuffer = this._device.createBuffer({
319
- size: indexData.byteLength * Uint32Array.BYTES_PER_ELEMENT,
362
+ size: indexData.byteLength,
320
363
  usage: GPUBufferUsage.INDEX | GPUBufferUsage.COPY_DST,
321
364
  });
322
365
  for (let spriteIndex = 0; spriteIndex < nextCapacity; spriteIndex++) {
@@ -339,12 +382,12 @@ class WebGpuSpriteRenderer extends AbstractWebGpuRenderer {
339
382
  this._vertexBuffer = vertexBuffer;
340
383
  this._indexBuffer = indexBuffer;
341
384
  }
342
- _writeBatchVertexData(batch) {
385
+ _writeBatchVertexData(batch, firstSprite) {
343
386
  const renderManager = this._renderManager;
344
387
  if (!renderManager) {
345
388
  return;
346
389
  }
347
- let vertexOffset = 0;
390
+ let vertexOffset = firstSprite * spriteVertexCount * wordsPerVertex;
348
391
  for (let drawCallIndex = batch.start; drawCallIndex < batch.end; drawCallIndex++) {
349
392
  const drawCall = this._drawCalls[drawCallIndex];
350
393
  const textureSlot = batch.textureSlots.get(drawCall.texture) ?? 0;
@@ -1 +1 @@
1
- {"version":3,"file":"WebGpuSpriteRenderer.js","sources":["../../../../../src/rendering/webgpu/WebGpuSpriteRenderer.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WebGpuSpriteRenderer.js","sources":["../../../../../src/rendering/webgpu/WebGpuSpriteRenderer.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
package/dist/exo.d.ts CHANGED
@@ -1031,7 +1031,7 @@ declare module "rendering/Container" {
1031
1031
  get top(): number;
1032
1032
  get right(): number;
1033
1033
  get bottom(): number;
1034
- addChild(child: SceneNode): this;
1034
+ addChild(...children: Array<SceneNode>): this;
1035
1035
  addChildAt(child: SceneNode, index: number): this;
1036
1036
  swapChildren(firstChild: SceneNode, secondChild: SceneNode): this;
1037
1037
  getChildIndex(child: SceneNode): number;
@@ -2726,6 +2726,17 @@ declare module "particles/emitters/ParticleOptions" {
2726
2726
  set totalLifetime(totalLifetime: Time);
2727
2727
  get elapsedLifetime(): Time;
2728
2728
  set elapsedLifetime(elapsedLifetime: Time);
2729
+ /**
2730
+ * Spawn position for particles emitted with these options, expressed in
2731
+ * the owning ParticleSystem's LOCAL coordinate space — the system's own
2732
+ * `getGlobalTransform()` is applied on top during rendering (both the
2733
+ * WebGL2 and WebGPU shaders do `projection * translation * rotated`).
2734
+ *
2735
+ * Setting a world-space value here (e.g. `system.x + offset`) will
2736
+ * double-translate the emitter because the shader will translate again.
2737
+ * For an emitter anchored at the system origin, use small offsets around
2738
+ * `(0, 0)` and position the system itself via `system.setPosition(...)`.
2739
+ */
2729
2740
  get position(): Vector;
2730
2741
  set position(position: Vector);
2731
2742
  get velocity(): Vector;
@@ -3089,15 +3100,11 @@ declare module "rendering/webgpu/WebGpuPrimitiveRenderer" {
3089
3100
  private readonly _combinedTransform;
3090
3101
  private readonly _drawCalls;
3091
3102
  private _drawCallCount;
3092
- private readonly _transformData;
3093
3103
  private readonly _pipelines;
3094
3104
  private _renderManager;
3095
3105
  private _device;
3096
3106
  private _shaderModule;
3097
- private _bindGroupLayout;
3098
3107
  private _pipelineLayout;
3099
- private _uniformBuffer;
3100
- private _bindGroup;
3101
3108
  private _vertexBuffer;
3102
3109
  private _indexBuffer;
3103
3110
  private _vertexBufferCapacity;
@@ -3105,6 +3112,7 @@ declare module "rendering/webgpu/WebGpuPrimitiveRenderer" {
3105
3112
  private _vertexData;
3106
3113
  private _float32View;
3107
3114
  private _uint32View;
3115
+ private _packedIndexData;
3108
3116
  private _generatedIndexData;
3109
3117
  private _sequentialIndexData;
3110
3118
  render(shape: DrawableShape): void;
@@ -3112,8 +3120,7 @@ declare module "rendering/webgpu/WebGpuPrimitiveRenderer" {
3112
3120
  destroy(): void;
3113
3121
  protected onConnect(runtime: WebGpuRendererRuntime): void;
3114
3122
  protected onDisconnect(): void;
3115
- private _writeTransformData;
3116
- private _writeVertexData;
3123
+ private _writeShapeVertices;
3117
3124
  private _ensureVertexCapacity;
3118
3125
  private _ensureIndexCapacity;
3119
3126
  private _getPipeline;