@flighthq/particleemitter 0.2.1-next.451.d9a4a4e → 0.2.1-next.530.a223ca9

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.
@@ -1,4 +1,4 @@
1
- import type { AabbLike, ParticleEmitter3D, ParticleEmitter3DRuntime, PartialNode, Vector3Like } from '@flighthq/types';
1
+ import type { AabbLike, Matrix4Like, ParticleEmitter3D, ParticleEmitter3DRuntime, PartialNode, Vector3Like } from '@flighthq/types';
2
2
  export declare const PARTICLE_EMITTER_3D_DELETED_ID = 65535;
3
3
  export declare function appendParticleEmitter3DParticle(target: ParticleEmitter3D, id: number, x: number, y: number, z: number, rotation: number, scale: number): number;
4
4
  export declare function clearParticleEmitter3D(target: ParticleEmitter3D): void;
@@ -20,4 +20,5 @@ export declare function setParticleEmitter3DParticle(target: ParticleEmitter3D,
20
20
  export declare function setParticleEmitter3DParticleAlpha(target: ParticleEmitter3D, index: number, alpha: number): void;
21
21
  export declare function setParticleEmitter3DParticleColor(target: ParticleEmitter3D, index: number, r: number, g: number, b: number): void;
22
22
  export declare function setParticleEmitter3DParticleVelocity(target: ParticleEmitter3D, index: number, vx: number, vy: number, vz: number): void;
23
+ export declare function sortParticleEmitter3DIndicesByViewDepth(outIndices: Uint32Array, outViewDepths: Float64Array, source: Readonly<ParticleEmitter3D>, positionToView: Readonly<Matrix4Like>): boolean;
23
24
  //# sourceMappingURL=particleEmitter3D.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"particleEmitter3D.d.ts","sourceRoot":"","sources":["../src/particleEmitter3D.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,QAAQ,EACR,iBAAiB,EACjB,wBAAwB,EAExB,WAAW,EAEX,WAAW,EACZ,MAAM,iBAAiB,CAAC;AAWzB,eAAO,MAAM,8BAA8B,QAAS,CAAC;AAErD,wBAAgB,+BAA+B,CAC7C,MAAM,EAAE,iBAAiB,EACzB,EAAE,EAAE,MAAM,EACV,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,GACZ,MAAM,CAyBR;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAEtE;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,QAAQ,CAAC,iBAAiB,CAAC,GAAG,iBAAiB,CAgB7F;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI,CA8BxE;AAED,wBAAgB,uCAAuC,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAuChH;AAED,wBAAgB,uBAAuB,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,GAAG,iBAAiB,CAKzG;AAED,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,QAAQ,CAAC,iBAAiB,CAAC,GAAG,MAAM,CAIxF;AAED,wBAAgB,iCAAiC,CAAC,MAAM,EAAE,QAAQ,CAAC,iBAAiB,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAG5G;AAED,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,QAAQ,CAAC,iBAAiB,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAGzG;AAED,wBAAgB,oCAAoC,CAClD,GAAG,EAAE,WAAW,EAChB,MAAM,EAAE,QAAQ,CAAC,iBAAiB,CAAC,EACnC,KAAK,EAAE,MAAM,GACZ,OAAO,CAOT;AAED,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,QAAQ,CAAC,iBAAiB,CAAC,GAAG,QAAQ,CAAC,wBAAwB,CAAC,CAEnH;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,IAAI,IAAI,iBAAiB,CAE/F;AAED,wBAAgB,+BAA+B,CAAC,MAAM,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CA0B9F;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAS1F;AAED,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,iBAAiB,EACzB,KAAK,EAAE,MAAM,EACb,EAAE,EAAE,MAAM,EACV,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,GACZ,IAAI,CAUN;AAED,wBAAgB,iCAAiC,CAAC,MAAM,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAG/G;AAED,wBAAgB,iCAAiC,CAC/C,MAAM,EAAE,iBAAiB,EACzB,KAAK,EAAE,MAAM,EACb,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,GACR,IAAI,CAMN;AAED,wBAAgB,oCAAoC,CAClD,MAAM,EAAE,iBAAiB,EACzB,KAAK,EAAE,MAAM,EACb,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,GACT,IAAI,CAMN"}
1
+ {"version":3,"file":"particleEmitter3D.d.ts","sourceRoot":"","sources":["../src/particleEmitter3D.ts"],"names":[],"mappings":"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"}
@@ -141,8 +141,10 @@ export function createParticleEmitter3D(obj) {
141
141
  }
142
142
  export function getParticleEmitter3DCapacity(source) {
143
143
  const data = source.data;
144
+ const colorCapacity = (data.colors.length / PARTICLE_COLOR_STRIDE) | 0;
144
145
  const transformCapacity = (data.transforms.length / PARTICLE_TRANSFORM_STRIDE) | 0;
145
- return Math.min(data.ids.length, data.alphas.length, transformCapacity);
146
+ const velocityCapacity = (data.velocities.length / PARTICLE_VELOCITY_STRIDE) | 0;
147
+ return Math.min(data.ids.length, data.alphas.length, data.positionsZ.length, colorCapacity, transformCapacity, velocityCapacity);
146
148
  }
147
149
  export function getParticleEmitter3DParticleAlpha(source, index) {
148
150
  if (index < 0 || index >= source.data.particleCount)
@@ -241,4 +243,64 @@ export function setParticleEmitter3DParticleVelocity(target, index, vx, vy, vz)
241
243
  target.data.velocities[vt + 1] = vy;
242
244
  target.data.velocities[vt + 2] = vz;
243
245
  }
246
+ // Writes particle indices in back-to-front view-depth order without reordering simulation storage.
247
+ // `positionToView` maps the emitter's stored XYZ positions directly into view space: pass the view
248
+ // matrix for world-space data, or view * emitter-world for local-space data. `outViewDepths` is
249
+ // caller-owned comparison scratch and retains each source particle's view Z at its source index.
250
+ // Returns false without touching either output when one is too small or source storage is incomplete.
251
+ export function sortParticleEmitter3DIndicesByViewDepth(outIndices, outViewDepths, source, positionToView) {
252
+ const count = source.data.particleCount;
253
+ if (!Number.isInteger(count) ||
254
+ count < 0 ||
255
+ getParticleEmitter3DCapacity(source) < count ||
256
+ outIndices.length < count ||
257
+ outViewDepths.length < count) {
258
+ return false;
259
+ }
260
+ const matrix = positionToView.m;
261
+ const transforms = source.data.transforms;
262
+ const positionsZ = source.data.positionsZ;
263
+ for (let index = 0; index < count; index++) {
264
+ const transformOffset = index * PARTICLE_TRANSFORM_STRIDE;
265
+ const x = transforms[transformOffset];
266
+ const y = transforms[transformOffset + 1];
267
+ const z = positionsZ[index];
268
+ outIndices[index] = index;
269
+ outViewDepths[index] = matrix[2] * x + matrix[6] * y + matrix[10] * z + matrix[14];
270
+ }
271
+ // In-place heap sort using view Z ascending: in Flight's right-handed camera space, farther
272
+ // particles have more-negative Z and therefore precede nearer particles for alpha blending.
273
+ for (let start = (count >> 1) - 1; start >= 0; start--) {
274
+ siftParticleDepthMaxHeap(outIndices, outViewDepths, start, count);
275
+ }
276
+ for (let end = count - 1; end > 0; end--) {
277
+ const first = outIndices[0];
278
+ outIndices[0] = outIndices[end];
279
+ outIndices[end] = first;
280
+ siftParticleDepthMaxHeap(outIndices, outViewDepths, 0, end);
281
+ }
282
+ return true;
283
+ }
284
+ function isParticleDepthGreater(a, b, depths) {
285
+ const aDepth = depths[a];
286
+ const bDepth = depths[b];
287
+ return aDepth > bDepth || (aDepth === bDepth && a > b);
288
+ }
289
+ function siftParticleDepthMaxHeap(indices, depths, root, length) {
290
+ while (true) {
291
+ const left = root * 2 + 1;
292
+ if (left >= length)
293
+ return;
294
+ const right = left + 1;
295
+ let greater = left;
296
+ if (right < length && isParticleDepthGreater(indices[right], indices[left], depths))
297
+ greater = right;
298
+ if (!isParticleDepthGreater(indices[greater], indices[root], depths))
299
+ return;
300
+ const swap = indices[root];
301
+ indices[root] = indices[greater];
302
+ indices[greater] = swap;
303
+ root = greater;
304
+ }
305
+ }
244
306
  //# sourceMappingURL=particleEmitter3D.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"particleEmitter3D.js","sourceRoot":"","sources":["../src/particleEmitter3D.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"particleEmitter3D.js","sourceRoot":"","sources":["../src/particleEmitter3D.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flighthq/particleemitter",
3
- "version": "0.2.1-next.451.d9a4a4e",
3
+ "version": "0.2.1-next.530.a223ca9",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/flighthq/flight.git",
@@ -32,12 +32,12 @@
32
32
  "clean:dist": "tsx ../../scripts/clean-package-dist.ts"
33
33
  },
34
34
  "dependencies": {
35
- "@flighthq/displayobject": "0.2.1-next.451.d9a4a4e",
36
- "@flighthq/geometry": "0.2.1-next.451.d9a4a4e",
37
- "@flighthq/node": "0.2.1-next.451.d9a4a4e",
38
- "@flighthq/particles": "0.2.1-next.451.d9a4a4e",
39
- "@flighthq/scene": "0.2.1-next.451.d9a4a4e",
40
- "@flighthq/types": "0.2.1-next.451.d9a4a4e"
35
+ "@flighthq/displayobject": "0.2.1-next.530.a223ca9",
36
+ "@flighthq/geometry": "0.2.1-next.530.a223ca9",
37
+ "@flighthq/node": "0.2.1-next.530.a223ca9",
38
+ "@flighthq/particles": "0.2.1-next.530.a223ca9",
39
+ "@flighthq/scene": "0.2.1-next.530.a223ca9",
40
+ "@flighthq/types": "0.2.1-next.530.a223ca9"
41
41
  },
42
42
  "devDependencies": {
43
43
  "@flighthq/math": "*",
@@ -1,4 +1,4 @@
1
- import { createAabb } from '@flighthq/geometry';
1
+ import { createAabb, createMatrix4 } from '@flighthq/geometry';
2
2
  import { getNodeLocalMatrix4 } from '@flighthq/node';
3
3
  import { ParticleEmitter3DKind } from '@flighthq/types';
4
4
  import { describe, expect, it } from 'vitest';
@@ -23,6 +23,7 @@ import {
23
23
  setParticleEmitter3DParticleAlpha,
24
24
  setParticleEmitter3DParticleColor,
25
25
  setParticleEmitter3DParticleVelocity,
26
+ sortParticleEmitter3DIndicesByViewDepth,
26
27
  } from './particleEmitter3D';
27
28
 
28
29
  describe('appendParticleEmitter3DParticle', () => {
@@ -182,6 +183,14 @@ describe('getParticleEmitter3DCapacity', () => {
182
183
  reserveParticleEmitter3D(emitter, 64);
183
184
  expect(getParticleEmitter3DCapacity(emitter)).toBe(64);
184
185
  });
186
+
187
+ it('is bounded by every per-particle storage lane', () => {
188
+ const emitter = createParticleEmitter3D();
189
+ reserveParticleEmitter3D(emitter, 8);
190
+ emitter.data.positionsZ = new Float32Array(3);
191
+ emitter.data.colors = new Float32Array(2 * 3);
192
+ expect(getParticleEmitter3DCapacity(emitter)).toBe(2);
193
+ });
185
194
  });
186
195
 
187
196
  describe('getParticleEmitter3DParticleAlpha', () => {
@@ -293,6 +302,18 @@ describe('reserveParticleEmitter3D', () => {
293
302
  reserveParticleEmitter3D(emitter, 50);
294
303
  expect(getParticleEmitter3DCapacity(emitter)).toBe(100);
295
304
  });
305
+
306
+ it('repairs a short storage lane even when the other lanes already have capacity', () => {
307
+ const emitter = createParticleEmitter3D();
308
+ reserveParticleEmitter3D(emitter, 8);
309
+ emitter.data.positionsZ = new Float32Array(0);
310
+ emitter.data.velocities = new Float32Array(0);
311
+
312
+ reserveParticleEmitter3D(emitter, 8);
313
+
314
+ expect(emitter.data.positionsZ.length).toBeGreaterThanOrEqual(8);
315
+ expect(emitter.data.velocities.length).toBeGreaterThanOrEqual(8 * 3);
316
+ });
296
317
  });
297
318
 
298
319
  describe('setParticleEmitter3DParticle', () => {
@@ -358,3 +379,60 @@ describe('setParticleEmitter3DParticleVelocity', () => {
358
379
  expect(emitter.data.particleCount).toBe(0);
359
380
  });
360
381
  });
382
+
383
+ describe('sortParticleEmitter3DIndicesByViewDepth', () => {
384
+ it('writes stable back-to-front indices without reordering particle storage', () => {
385
+ const emitter = createParticleEmitter3D();
386
+ appendParticleEmitter3DParticle(emitter, 10, 0, 0, -2, 0, 1);
387
+ appendParticleEmitter3DParticle(emitter, 11, 0, 0, -10, 0, 1);
388
+ appendParticleEmitter3DParticle(emitter, 12, 0, 0, -5, 0, 1);
389
+ appendParticleEmitter3DParticle(emitter, 13, 0, 0, -5, 0, 1);
390
+ const indices = new Uint32Array(4);
391
+ const depths = new Float64Array(4);
392
+
393
+ expect(sortParticleEmitter3DIndicesByViewDepth(indices, depths, emitter, createMatrix4())).toBe(true);
394
+
395
+ expect(Array.from(indices)).toEqual([1, 2, 3, 0]);
396
+ expect(Array.from(emitter.data.ids.slice(0, 4))).toEqual([10, 11, 12, 13]);
397
+ });
398
+
399
+ it('applies the caller-supplied stored-position-to-view matrix', () => {
400
+ const emitter = createParticleEmitter3D();
401
+ appendParticleEmitter3DParticle(emitter, 10, 2, 0, 0, 0, 1);
402
+ appendParticleEmitter3DParticle(emitter, 11, -3, 0, 0, 0, 1);
403
+ const positionToView = createMatrix4();
404
+ positionToView.m[2] = 1;
405
+ positionToView.m[10] = 0;
406
+ const indices = new Uint32Array(2);
407
+
408
+ sortParticleEmitter3DIndicesByViewDepth(indices, new Float64Array(2), emitter, positionToView);
409
+
410
+ expect(Array.from(indices)).toEqual([1, 0]);
411
+ });
412
+
413
+ it('leaves caller outputs untouched when either scratch lane is too small', () => {
414
+ const emitter = createParticleEmitter3D();
415
+ appendParticleEmitter3DParticle(emitter, 10, 0, 0, -2, 0, 1);
416
+ appendParticleEmitter3DParticle(emitter, 11, 0, 0, -10, 0, 1);
417
+ const indices = new Uint32Array([99]);
418
+ const depths = new Float64Array([88, 77]);
419
+
420
+ expect(sortParticleEmitter3DIndicesByViewDepth(indices, depths, emitter, createMatrix4())).toBe(false);
421
+
422
+ expect(Array.from(indices)).toEqual([99]);
423
+ expect(Array.from(depths)).toEqual([88, 77]);
424
+ });
425
+
426
+ it('rejects incomplete particle storage before touching outputs', () => {
427
+ const emitter = createParticleEmitter3D();
428
+ appendParticleEmitter3DParticle(emitter, 10, 0, 0, -2, 0, 1);
429
+ emitter.data.positionsZ = new Float32Array(0);
430
+ const indices = new Uint32Array([99]);
431
+ const depths = new Float64Array([88]);
432
+
433
+ expect(sortParticleEmitter3DIndicesByViewDepth(indices, depths, emitter, createMatrix4())).toBe(false);
434
+
435
+ expect(Array.from(indices)).toEqual([99]);
436
+ expect(Array.from(depths)).toEqual([88]);
437
+ });
438
+ });