@nodetool-ai/game-renderer 0.8.4-a24.3 → 0.8.4

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 (175) hide show
  1. package/README.md +13 -0
  2. package/dist/.nodetool-build-stamp +1 -1
  3. package/dist/audio/player.d.ts +1 -0
  4. package/dist/audio/player.d.ts.map +1 -1
  5. package/dist/audio/player.js +13 -2
  6. package/dist/audio/player.js.map +1 -1
  7. package/dist/build-fingerprint.d.ts +3 -0
  8. package/dist/build-fingerprint.d.ts.map +1 -0
  9. package/dist/build-fingerprint.js +9 -0
  10. package/dist/build-fingerprint.js.map +1 -0
  11. package/dist/build-tauri.d.ts +3 -1
  12. package/dist/build-tauri.d.ts.map +1 -1
  13. package/dist/build-tauri.js +54 -8
  14. package/dist/build-tauri.js.map +1 -1
  15. package/dist/build.d.ts +4 -1
  16. package/dist/build.d.ts.map +1 -1
  17. package/dist/build.js +24 -11
  18. package/dist/build.js.map +1 -1
  19. package/dist/build3d.d.ts +2 -0
  20. package/dist/build3d.d.ts.map +1 -1
  21. package/dist/build3d.js +21 -6
  22. package/dist/build3d.js.map +1 -1
  23. package/dist/canvas2d.d.ts +1 -0
  24. package/dist/canvas2d.d.ts.map +1 -1
  25. package/dist/canvas2d.js +15 -10
  26. package/dist/canvas2d.js.map +1 -1
  27. package/dist/export-media.d.ts +7 -0
  28. package/dist/export-media.d.ts.map +1 -0
  29. package/dist/export-media.js +73 -0
  30. package/dist/export-media.js.map +1 -0
  31. package/dist/frame.d.ts +5 -0
  32. package/dist/frame.d.ts.map +1 -1
  33. package/dist/frame.js +7 -1
  34. package/dist/frame.js.map +1 -1
  35. package/dist/game3d-capture-page.js +306 -276
  36. package/dist/game3d-player.js +399 -350
  37. package/dist/index.d.ts +2 -0
  38. package/dist/index.d.ts.map +1 -1
  39. package/dist/index.js +2 -0
  40. package/dist/index.js.map +1 -1
  41. package/dist/lighting.d.ts.map +1 -1
  42. package/dist/lighting.js +4 -3
  43. package/dist/lighting.js.map +1 -1
  44. package/dist/mouse-input.d.ts +18 -0
  45. package/dist/mouse-input.d.ts.map +1 -0
  46. package/dist/mouse-input.js +135 -0
  47. package/dist/mouse-input.js.map +1 -0
  48. package/dist/node.d.ts.map +1 -1
  49. package/dist/node.js +2 -2
  50. package/dist/node.js.map +1 -1
  51. package/dist/node3d.d.ts.map +1 -1
  52. package/dist/node3d.js +5 -3
  53. package/dist/node3d.js.map +1 -1
  54. package/dist/particles/particles3d.d.ts +12 -10
  55. package/dist/particles/particles3d.d.ts.map +1 -1
  56. package/dist/particles/particles3d.js +81 -60
  57. package/dist/particles/particles3d.js.map +1 -1
  58. package/dist/particles/pass3d.d.ts +6 -4
  59. package/dist/particles/pass3d.d.ts.map +1 -1
  60. package/dist/particles/pass3d.js +28 -15
  61. package/dist/particles/pass3d.js.map +1 -1
  62. package/dist/particles/render2d.d.ts +3 -2
  63. package/dist/particles/render2d.d.ts.map +1 -1
  64. package/dist/particles/render2d.js +9 -2
  65. package/dist/particles/render2d.js.map +1 -1
  66. package/dist/particles/simulator.d.ts +13 -1
  67. package/dist/particles/simulator.d.ts.map +1 -1
  68. package/dist/particles/simulator.js +173 -44
  69. package/dist/particles/simulator.js.map +1 -1
  70. package/dist/particles/transparency3d.d.ts +17 -0
  71. package/dist/particles/transparency3d.d.ts.map +1 -0
  72. package/dist/particles/transparency3d.js +117 -0
  73. package/dist/particles/transparency3d.js.map +1 -0
  74. package/dist/player-v1.js +275 -256
  75. package/dist/renderer3d/animation/index.d.ts +2 -0
  76. package/dist/renderer3d/animation/index.d.ts.map +1 -1
  77. package/dist/renderer3d/animation/index.js +24 -10
  78. package/dist/renderer3d/animation/index.js.map +1 -1
  79. package/dist/renderer3d/assets/image-preparation.d.ts +9 -0
  80. package/dist/renderer3d/assets/image-preparation.d.ts.map +1 -1
  81. package/dist/renderer3d/assets/image-preparation.js +14 -4
  82. package/dist/renderer3d/assets/image-preparation.js.map +1 -1
  83. package/dist/renderer3d/assets/instances.d.ts.map +1 -1
  84. package/dist/renderer3d/assets/instances.js +38 -1
  85. package/dist/renderer3d/assets/instances.js.map +1 -1
  86. package/dist/renderer3d/decals/geometry.d.ts +27 -0
  87. package/dist/renderer3d/decals/geometry.d.ts.map +1 -0
  88. package/dist/renderer3d/decals/geometry.js +142 -0
  89. package/dist/renderer3d/decals/geometry.js.map +1 -0
  90. package/dist/renderer3d/decals/index.d.ts +29 -0
  91. package/dist/renderer3d/decals/index.d.ts.map +1 -0
  92. package/dist/renderer3d/decals/index.js +284 -0
  93. package/dist/renderer3d/decals/index.js.map +1 -0
  94. package/dist/renderer3d/environment/height-fog.d.ts +14 -0
  95. package/dist/renderer3d/environment/height-fog.d.ts.map +1 -0
  96. package/dist/renderer3d/environment/height-fog.js +114 -0
  97. package/dist/renderer3d/environment/height-fog.js.map +1 -0
  98. package/dist/renderer3d/environment/index.d.ts.map +1 -1
  99. package/dist/renderer3d/environment/index.js +4 -1
  100. package/dist/renderer3d/environment/index.js.map +1 -1
  101. package/dist/renderer3d/environment/sky.d.ts +1 -0
  102. package/dist/renderer3d/environment/sky.d.ts.map +1 -1
  103. package/dist/renderer3d/environment/sky.js +33 -16
  104. package/dist/renderer3d/environment/sky.js.map +1 -1
  105. package/dist/renderer3d/import.d.ts.map +1 -1
  106. package/dist/renderer3d/import.js +19 -3
  107. package/dist/renderer3d/import.js.map +1 -1
  108. package/dist/renderer3d/index.d.ts.map +1 -1
  109. package/dist/renderer3d/index.js +27 -4
  110. package/dist/renderer3d/index.js.map +1 -1
  111. package/dist/renderer3d/material-hooks.d.ts +8 -0
  112. package/dist/renderer3d/material-hooks.d.ts.map +1 -0
  113. package/dist/renderer3d/material-hooks.js +53 -0
  114. package/dist/renderer3d/material-hooks.js.map +1 -0
  115. package/dist/renderer3d/pipeline.d.ts +1 -0
  116. package/dist/renderer3d/pipeline.d.ts.map +1 -1
  117. package/dist/renderer3d/pipeline.js.map +1 -1
  118. package/dist/renderer3d/preparation.d.ts +1 -0
  119. package/dist/renderer3d/preparation.d.ts.map +1 -1
  120. package/dist/renderer3d/preparation.js +37 -4
  121. package/dist/renderer3d/preparation.js.map +1 -1
  122. package/dist/renderer3d/scene-sync.d.ts.map +1 -1
  123. package/dist/renderer3d/scene-sync.js +16 -1
  124. package/dist/renderer3d/scene-sync.js.map +1 -1
  125. package/dist/renderer3d/shadows/cascades.d.ts +2 -1
  126. package/dist/renderer3d/shadows/cascades.d.ts.map +1 -1
  127. package/dist/renderer3d/shadows/cascades.js +19 -37
  128. package/dist/renderer3d/shadows/cascades.js.map +1 -1
  129. package/dist/renderer3d/shadows/index.d.ts +1 -0
  130. package/dist/renderer3d/shadows/index.d.ts.map +1 -1
  131. package/dist/renderer3d/shadows/index.js +3 -2
  132. package/dist/renderer3d/shadows/index.js.map +1 -1
  133. package/dist/renderer3d/types.d.ts +1 -0
  134. package/dist/renderer3d/types.d.ts.map +1 -1
  135. package/dist/save-storage.d.ts.map +1 -1
  136. package/dist/save-storage.js +23 -7
  137. package/dist/save-storage.js.map +1 -1
  138. package/dist/smoke.d.ts.map +1 -1
  139. package/dist/smoke.js +27 -12
  140. package/dist/smoke.js.map +1 -1
  141. package/dist/standalone-assets.d.ts +25 -0
  142. package/dist/standalone-assets.d.ts.map +1 -0
  143. package/dist/standalone-assets.js +111 -0
  144. package/dist/standalone-assets.js.map +1 -0
  145. package/dist/standalone-frame.d.ts +7 -0
  146. package/dist/standalone-frame.d.ts.map +1 -0
  147. package/dist/standalone-frame.js +2 -0
  148. package/dist/standalone-frame.js.map +1 -0
  149. package/dist/standalone-player.d.ts +3 -2
  150. package/dist/standalone-player.d.ts.map +1 -1
  151. package/dist/standalone-player.js +246 -76
  152. package/dist/standalone-player.js.map +1 -1
  153. package/dist/standalone-player3d.d.ts +4 -3
  154. package/dist/standalone-player3d.d.ts.map +1 -1
  155. package/dist/standalone-player3d.js +193 -115
  156. package/dist/standalone-player3d.js.map +1 -1
  157. package/dist/touch-controls.d.ts +10 -1
  158. package/dist/touch-controls.d.ts.map +1 -1
  159. package/dist/touch-controls.js +98 -10
  160. package/dist/touch-controls.js.map +1 -1
  161. package/dist/touch-input.d.ts +13 -0
  162. package/dist/touch-input.d.ts.map +1 -0
  163. package/dist/touch-input.js +71 -0
  164. package/dist/touch-input.js.map +1 -0
  165. package/dist/ui/controller.d.ts +7 -0
  166. package/dist/ui/controller.d.ts.map +1 -1
  167. package/dist/ui/controller.js +40 -9
  168. package/dist/ui/controller.js.map +1 -1
  169. package/dist/webgpu/lighting.d.ts +1 -1
  170. package/dist/webgpu/lighting.d.ts.map +1 -1
  171. package/dist/webgpu/lighting.js +4 -3
  172. package/dist/webgpu/lighting.js.map +1 -1
  173. package/dist/webgpu.js +1 -1
  174. package/dist/webgpu.js.map +1 -1
  175. package/package.json +5 -5
@@ -7,6 +7,7 @@ import { ParticleSimulator, particleSourcesFromFrame } from "./simulator.js";
7
7
  export class GameParticles3D {
8
8
  simulator;
9
9
  tickSeconds;
10
+ identity = null;
10
11
  constructor(tickRate, maxSceneParticles) {
11
12
  if (!(tickRate > 0)) {
12
13
  throw new Error("Particle tick rate must be positive");
@@ -19,25 +20,31 @@ export class GameParticles3D {
19
20
  return this.simulator.count;
20
21
  }
21
22
  tick(frame, events) {
23
+ const identity = JSON.stringify([frame.gameId, frame.sceneId]);
24
+ if (identity !== this.identity || events.some((event) => event.kind === "sceneTransition")) {
25
+ this.clear();
26
+ this.identity = identity;
27
+ }
22
28
  this.simulator.sync(particleSourcesFromFrame(frame));
23
29
  this.simulator.emit(events);
24
30
  this.simulator.step(this.tickSeconds);
25
31
  }
26
- forEachParticle(visit) {
27
- this.simulator.forEachParticle(visit);
32
+ forEachParticle(visit, interpolation = 1) {
33
+ this.simulator.forEachParticle(visit, interpolation);
28
34
  }
29
35
  clear() {
30
36
  this.simulator.clear();
37
+ this.identity = null;
31
38
  }
32
39
  }
33
40
  /** Copies every live particle of a field, in the field's order. */
34
- export function gameParticleSamples3D(field) {
41
+ export function gameParticleSamples3D(field, interpolation = 1) {
35
42
  const samples = [];
36
43
  field.forEachParticle((particle) => {
37
44
  samples.push({ emitter: particle.emitter, entityId: particle.entityId, emitterId: particle.emitterId, x: particle.x, y: particle.y, z: particle.z,
38
45
  vx: particle.vx, vy: particle.vy, vz: particle.vz, size: particle.size, rotation: particle.rotation,
39
46
  r: particle.r, g: particle.g, b: particle.b, opacity: particle.opacity, life: particle.life });
40
- });
47
+ }, interpolation);
41
48
  return samples;
42
49
  }
43
50
  /**
@@ -46,9 +53,11 @@ export function gameParticleSamples3D(field) {
46
53
  */
47
54
  export function gameParticleFieldFromSamples3D(samples, frame) {
48
55
  const emitters = new Map();
49
- for (const entity of frame.entities) {
50
- for (const emitter of entity.particles?.emitters ?? []) {
51
- emitters.set(`${entity.entityId}\u0000${emitter.id}`, emitter);
56
+ if (samples.some(sample => sample.emitter === undefined)) {
57
+ for (const entity of frame.entities) {
58
+ for (const emitter of entity.particles?.emitters ?? []) {
59
+ emitters.set(`${entity.entityId}\u0000${emitter.id}`, emitter);
60
+ }
52
61
  }
53
62
  }
54
63
  return {
@@ -81,13 +90,15 @@ function batchKey(emitter) {
81
90
  return { key: `quad:${blend}`, shape: "quad", blend, lit: false };
82
91
  }
83
92
  /**
84
- * Packs a particle field into per-batch instance data. Particles with no size or no opacity are skipped. Batches of
85
- * alpha-blended particles are sorted farthest first, keeping field order between particles at the same depth, so
86
- * the result depends only on the field and the viewer. `previous` batches are reused when their capacity fits.
93
+ * Sorts all visible particles before forming contiguous compatible runs. Equal depths retain field order.
94
+ * A material may occur in multiple runs: joining those runs would move it across another transparent material.
95
+ * Previous run buffers are reused, and no particles are dropped to reduce the draw count.
96
+ * Scene-depth boundaries split otherwise compatible runs so ordinary transparent objects can draw between them.
87
97
  */
88
- export function packParticleBatches3D(field, viewer, previous = []) {
89
- // A scene has a handful of batches, so linear lookups beat building maps every frame.
98
+ export function packParticleBatches3D(field, viewer, previous = [], interpolation = 1, sceneDepths) {
90
99
  const batches = [];
100
+ const kinds = [];
101
+ const emitterKinds = new Map();
91
102
  let drawn = 0;
92
103
  let soft = false;
93
104
  field.forEachParticle((particle) => {
@@ -95,22 +106,17 @@ export function packParticleBatches3D(field, viewer, previous = []) {
95
106
  return;
96
107
  }
97
108
  const emitter = particle.emitter;
98
- const kind = batchKey(emitter);
99
- let batch = batches.find((entry) => entry.key === kind.key);
100
- if (!batch) {
101
- batch = previous.find((entry) => entry.key === kind.key) ?? { ...kind, count: 0, data: new Float32Array(PARTICLE_INSTANCE_STRIDE_3D * 64), spare: null };
102
- batch.count = 0;
103
- batches.push(batch);
104
- }
105
- if ((batch.count + 1) * PARTICLE_INSTANCE_STRIDE_3D > batch.data.length) {
106
- const grown = new Float32Array(batch.data.length * 2);
107
- grown.set(batch.data);
108
- batch.data = grown;
109
+ let kind = emitterKinds.get(emitter);
110
+ if (!kind) {
111
+ kind = batchKey(emitter);
112
+ emitterKinds.set(emitter, kind);
109
113
  }
114
+ kinds.push(kind);
115
+ growScratch(drawn + 1);
110
116
  const render = emitter.render;
111
117
  const softness = kind.shape === "quad" ? emitter.softness ?? 0 : 0;
112
- const data = batch.data;
113
- const base = batch.count * PARTICLE_INSTANCE_STRIDE_3D;
118
+ const data = sortData;
119
+ const base = drawn * PARTICLE_INSTANCE_STRIDE_3D;
114
120
  data[base] = particle.x;
115
121
  data[base + 1] = particle.y;
116
122
  data[base + 2] = particle.z;
@@ -127,50 +133,65 @@ export function packParticleBatches3D(field, viewer, previous = []) {
127
133
  data[base + 13] = render?.kind === "stretched" ? render.speedScale : 0;
128
134
  data[base + 14] = softness;
129
135
  data[base + 15] = render?.kind === "stretched" || (render?.kind === "mesh" && render.align === "velocity") ? 1 : 0;
130
- batch.count += 1;
136
+ sortDepths[drawn] = (particle.x - viewer.x) * viewer.forwardX + (particle.y - viewer.y) * viewer.forwardY + (particle.z - viewer.z) * viewer.forwardZ;
137
+ sortOrder[drawn] = drawn;
131
138
  drawn += 1;
132
139
  soft ||= softness > 0;
133
- });
134
- for (const batch of batches) {
135
- if (batch.blend === "normal" && batch.count > 1) {
136
- sortFarthestFirst(batch, viewer);
140
+ }, interpolation);
141
+ const order = sortOrder.subarray(0, drawn).sort((first, second) => sortDepths[second] - sortDepths[first] || first - second);
142
+ const reusable = new Map(previous.map(batch => [batch.key, batch]));
143
+ const occurrences = new Map();
144
+ // Query lazily: an empty field must not walk a potentially large scene.
145
+ const boundaries = drawn > 0 && sceneDepths ? [...sceneDepths()].sort((a, b) => b - a) : [];
146
+ let boundary = 0;
147
+ for (let start = 0; start < drawn;) {
148
+ const kind = kinds[order[start]];
149
+ const depth = sortDepths[order[start]];
150
+ while (boundary < boundaries.length && boundaries[boundary] >= depth) {
151
+ boundary++;
152
+ }
153
+ let end = start + 1;
154
+ while (end < drawn && kinds[order[end]].key === kind.key
155
+ && (boundary === boundaries.length || sortDepths[order[end]] > boundaries[boundary])) {
156
+ end += 1;
157
+ }
158
+ const occurrence = occurrences.get(kind.key) ?? 0;
159
+ occurrences.set(kind.key, occurrence + 1);
160
+ const key = occurrence === 0 ? kind.key : `${kind.key}:${occurrence}`;
161
+ const count = end - start;
162
+ const capacity = PARTICLE_INSTANCE_STRIDE_3D * 2 ** Math.ceil(Math.log2(count));
163
+ const batch = reusable.get(key) ?? { ...kind, key, depth, count: 0, data: new Float32Array(capacity) };
164
+ // Hysteresis avoids small size-change reallocations without retaining every run's historical peak.
165
+ if (batch.data.length < capacity || batch.data.length > capacity * 4) {
166
+ batch.data = new Float32Array(capacity);
137
167
  }
168
+ batch.count = count;
169
+ batch.depth = depth;
170
+ for (let index = start; index < end; index += 1) {
171
+ const from = order[index] * PARTICLE_INSTANCE_STRIDE_3D;
172
+ batch.data.set(sortData.subarray(from, from + PARTICLE_INSTANCE_STRIDE_3D), (index - start) * PARTICLE_INSTANCE_STRIDE_3D);
173
+ }
174
+ batches.push(batch);
175
+ start = end;
138
176
  }
139
177
  return { batches, drawn, soft };
140
178
  }
141
- /** Sort scratch shared by every batch. Packing is synchronous, so one set of arrays serves all of them. */
179
+ /** Packing is synchronous. Shared scratch copies views before a field reuses its mutable particle object. */
180
+ let sortData = new Float32Array(0);
142
181
  let sortDepths = new Float64Array(0);
143
182
  let sortOrder = new Uint32Array(0);
144
- function sortFarthestFirst(batch, viewer) {
145
- const stride = PARTICLE_INSTANCE_STRIDE_3D;
146
- const count = batch.count;
147
- const source = batch.data;
183
+ function growScratch(count) {
148
184
  if (sortDepths.length < count) {
149
- sortDepths = new Float64Array(Math.max(count, sortDepths.length * 2));
150
- sortOrder = new Uint32Array(sortDepths.length);
151
- }
152
- const depths = sortDepths;
153
- let sorted = true;
154
- for (let index = 0; index < count; index += 1) {
155
- const base = index * stride;
156
- depths[index] = (source[base] - viewer.x) * viewer.forwardX + (source[base + 1] - viewer.y) * viewer.forwardY + (source[base + 2] - viewer.z) * viewer.forwardZ;
157
- sortOrder[index] = index;
158
- sorted &&= index === 0 || depths[index] <= depths[index - 1];
159
- }
160
- if (sorted) {
161
- return;
162
- }
163
- // The index tie-break keeps field order between equal depths whatever the engine's sort does.
164
- const order = sortOrder.subarray(0, count).sort((first, second) => depths[second] - depths[first] || first - second);
165
- let target = batch.spare;
166
- if (!target || target.length < source.length) {
167
- target = new Float32Array(source.length);
168
- }
169
- for (let to = 0; to < count; to += 1) {
170
- const from = order[to] * stride;
171
- target.set(source.subarray(from, from + stride), to * stride);
185
+ const capacity = Math.max(count, sortDepths.length * 2, 64);
186
+ const data = new Float32Array(capacity * PARTICLE_INSTANCE_STRIDE_3D);
187
+ const depths = new Float64Array(capacity);
188
+ const order = new Uint32Array(capacity);
189
+ data.set(sortData);
190
+ depths.set(sortDepths);
191
+ order.set(sortOrder);
192
+ sortData = data;
193
+ sortDepths = depths;
194
+ sortOrder = order;
172
195
  }
173
- batch.spare = source;
174
- batch.data = target;
175
196
  }
176
197
  //# sourceMappingURL=particles3d.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"particles3d.js","sourceRoot":"","sources":["../../src/particles/particles3d.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"particles3d.js","sourceRoot":"","sources":["../../src/particles/particles3d.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAqB,MAAM,gBAAgB,CAAC;AAEhG;;;;GAIG;AACH,MAAM,OAAO,eAAe;IACjB,SAAS,CAAoB;IACrB,WAAW,CAAS;IAC7B,QAAQ,GAAkB,IAAI,CAAC;IAEvC,YAAY,QAAgB,EAAE,iBAA0B;QACtD,IAAI,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACzD,CAAC;QACD,IAAI,CAAC,WAAW,GAAG,CAAC,GAAG,QAAQ,CAAC;QAChC,IAAI,CAAC,SAAS,GAAG,IAAI,iBAAiB,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;IACjF,CAAC;IAED,4CAA4C;IAC5C,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;IAC9B,CAAC;IAED,IAAI,CAAC,KAAwB,EAAE,MAAuD;QACpF,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QAC/D,IAAI,QAAQ,KAAK,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,iBAAiB,CAAC,EAAE,CAAC;YAC3F,IAAI,CAAC,KAAK,EAAE,CAAC;YAAC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzC,CAAC;QACD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC,CAAC;QACrD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACxC,CAAC;IAED,eAAe,CAAC,KAAiD,EAAE,aAAa,GAAG,CAAC;QAClF,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;IACvD,CAAC;IAED,KAAK;QACH,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACvB,CAAC;CACF;AAsBD,mEAAmE;AACnE,MAAM,UAAU,qBAAqB,CAAC,KAAwB,EAAE,aAAa,GAAG,CAAC;IAC/E,MAAM,OAAO,GAA2B,EAAE,CAAC;IAC3C,KAAK,CAAC,eAAe,CAAC,CAAC,QAAQ,EAAE,EAAE;QACjC,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;YAC/I,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ;YACnG,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IACnG,CAAC,EAAE,aAAa,CAAC,CAAC;IAClB,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,8BAA8B,CAAC,OAAwC,EAAE,KAAwB;IAC/G,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA+B,CAAC;IACxD,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,EAAE,CAAC;QACzD,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACpC,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,SAAS,EAAE,QAAQ,IAAI,EAAE,EAAE,CAAC;gBACvD,QAAQ,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,QAAQ,SAAS,OAAO,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;YACjE,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO;QACL,eAAe,CAAC,KAAK;YACnB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC7B,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,QAAQ,SAAS,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;gBAC9F,IAAI,OAAO,EAAE,CAAC;oBACZ,KAAK,CAAC,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;gBAChC,CAAC;YACH,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAKD;;;GAGG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,EAAE,CAAC;AAkC9C,wGAAwG;AACxG,MAAM,UAAU,YAAY,CAAC,OAAe;IAC1C,OAAO,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC,GAAG,KAAK,EAAE,GAAG,CAAC,CAAC;AACzF,CAAC;AAED,SAAS,QAAQ,CAAC,OAA4B;IAC5C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,QAAQ,CAAC;IACxC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAC9B,IAAI,MAAM,EAAE,IAAI,KAAK,MAAM,EAAE,CAAC;QAC5B,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,KAAK,IAAI,CAAC;QACnC,OAAO,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,KAAK,IAAI,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;IACvG,CAAC;IACD,OAAO,EAAE,GAAG,EAAE,QAAQ,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;AACpE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAAwB,EAAE,MAAwB,EAAE,QAAQ,GAA+B,EAAE,EAAE,aAAa,GAAG,CAAC,EACpJ,WAAqC;IACrC,MAAM,OAAO,GAAsB,EAAE,CAAC;IACtC,MAAM,KAAK,GAAkC,EAAE,CAAC;IAChD,MAAM,YAAY,GAAG,IAAI,GAAG,EAAoD,CAAC;IACjF,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,IAAI,GAAG,KAAK,CAAC;IACjB,KAAK,CAAC,eAAe,CAAC,CAAC,QAAQ,EAAE,EAAE;QACjC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC;YACpD,OAAO;QACT,CAAC;QACD,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;QACjC,IAAI,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACrC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;YACzB,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAClC,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjB,WAAW,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QACvB,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnE,MAAM,IAAI,GAAG,QAAQ,CAAC;QACtB,MAAM,IAAI,GAAG,KAAK,GAAG,2BAA2B,CAAC;QACjD,IAAI,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;QAC5B,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;QAC5B,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC1C,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC1C,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC1C,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC/C,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC;QAChC,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC;QACpC,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,GAAG,MAAM,EAAE,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACnE,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,GAAG,MAAM,EAAE,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QACvE,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,GAAG,QAAQ,CAAC;QAC3B,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,GAAG,MAAM,EAAE,IAAI,KAAK,WAAW,IAAI,CAAC,MAAM,EAAE,IAAI,KAAK,MAAM,IAAI,MAAM,CAAC,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnH,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,QAAQ,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,QAAQ,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC;QACtJ,SAAS,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;QACzB,KAAK,IAAI,CAAC,CAAC;QACX,IAAI,KAAK,QAAQ,GAAG,CAAC,CAAC;IACxB,CAAC,EAAE,aAAa,CAAC,CAAC;IAClB,MAAM,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,MAAM,CAAC,CAAC;IAC7H,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IACpE,MAAM,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC9C,wEAAwE;IACxE,MAAM,UAAU,GAAG,KAAK,GAAG,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5F,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,CAAC;QACnC,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QACjC,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QACvC,OAAO,QAAQ,GAAG,UAAU,CAAC,MAAM,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,KAAK,EAAE,CAAC;YAAC,QAAQ,EAAE,CAAC;QAAC,CAAC;QACrF,IAAI,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC;QACpB,OAAO,GAAG,GAAG,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG;eACnD,CAAC,QAAQ,KAAK,UAAU,CAAC,MAAM,IAAI,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;YAAC,GAAG,IAAI,CAAC,CAAC;QAAC,CAAC;QACrG,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClD,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,GAAG,CAAC,CAAC,CAAC;QAC1C,MAAM,GAAG,GAAG,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,UAAU,EAAE,CAAC;QACtE,MAAM,KAAK,GAAG,GAAG,GAAG,KAAK,CAAC;QAC1B,MAAM,QAAQ,GAAG,2BAA2B,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAChF,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvG,mGAAmG;QACnG,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,QAAQ,GAAG,CAAC,EAAE,CAAC;YAAC,KAAK,CAAC,IAAI,GAAG,IAAI,YAAY,CAAC,QAAQ,CAAC,CAAC;QAAC,CAAC;QAClH,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;QACpB,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;QACpB,KAAK,IAAI,KAAK,GAAG,KAAK,EAAE,KAAK,GAAG,GAAG,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;YAChD,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,2BAA2B,CAAC;YACxD,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,2BAA2B,CAAC,EAAE,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,2BAA2B,CAAC,CAAC;QAC7H,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpB,KAAK,GAAG,GAAG,CAAC;IACd,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AAClC,CAAC;AAED,6GAA6G;AAC7G,IAAI,QAAQ,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;AACnC,IAAI,UAAU,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;AACrC,IAAI,SAAS,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;AAEnC,SAAS,WAAW,CAAC,KAAa;IAChC,IAAI,UAAU,CAAC,MAAM,GAAG,KAAK,EAAE,CAAC;QAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;QAC5D,MAAM,IAAI,GAAG,IAAI,YAAY,CAAC,QAAQ,GAAG,2BAA2B,CAAC,CAAC;QACtE,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,QAAQ,CAAC,CAAC;QAC1C,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,QAAQ,CAAC,CAAC;QACxC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACnB,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACvB,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACrB,QAAQ,GAAG,IAAI,CAAC;QAChB,UAAU,GAAG,MAAM,CAAC;QACpB,SAAS,GAAG,KAAK,CAAC;IACpB,CAAC;AACH,CAAC"}
@@ -11,8 +11,8 @@ export interface GameParticlePassHost3D {
11
11
  particles(): GameParticleField | null;
12
12
  }
13
13
  /**
14
- * Draws 3D particles: camera-facing and stretched billboards and instanced mesh shapes, one draw call per batch of
15
- * shape, blend and lighting. The pass runs before the scene pass and puts its meshes in the scene, so particles depth
14
+ * Draws 3D particles: camera-facing and stretched billboards and instanced mesh shapes, one draw call per contiguous
15
+ * compatible run between scene-transparency depths. The pass runs before the scene pass and puts its meshes in the scene, so particles depth
16
16
  * test against the scene and take its fog and post-processing. When a billboard has a softness distance, the pass
17
17
  * first renders the scene's depth into a texture and the billboard fades out where it nears the geometry behind it.
18
18
  */
@@ -20,6 +20,8 @@ export declare class GameParticlePass3D {
20
20
  private readonly host;
21
21
  private readonly group;
22
22
  private readonly draws;
23
+ private readonly transparency;
24
+ private renderer;
23
25
  private batches;
24
26
  private readonly quadGeometry;
25
27
  /** Depth-only stand-ins for scene materials, so the depth pre-pass keeps each material's cut-outs and skips what never writes depth. */
@@ -48,8 +50,8 @@ export declare class GameParticlePass3D {
48
50
  /**
49
51
  * Renders the scene's depth without particles into a texture, keeping every renderer and scene setting it changes.
50
52
  * Each mesh draws with a depth-only copy of its material, so alpha-tested cut-outs keep their holes, and transparent
51
- * or non-depth-writing materials are skipped as they write no depth in the scene pass either. The pre-pass draws are
52
- * taken back out of the renderer's counters, so frame stats and budgets count only what the player sees.
53
+ * or non-depth-writing materials are skipped as they write no depth in the scene pass either. Its submitted work
54
+ * remains in the renderer counters so frame stats and budgets include this pass.
53
55
  */
54
56
  private renderDepth;
55
57
  private swapDepthMaterials;
@@ -1 +1 @@
1
- {"version":3,"file":"pass3d.d.ts","sourceRoot":"","sources":["../../src/particles/pass3d.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAmB,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAEnF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEvD,+HAA+H;AAC/H,eAAO,MAAM,qBAAqB,cAAc,CAAC;AACjD,eAAO,MAAM,2BAA2B,OAAO,CAAC;AAEhD,+EAA+E;AAC/E,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC;IAC5B,8DAA8D;IAC9D,SAAS,IAAI,iBAAiB,GAAG,IAAI,CAAC;CACvC;AA6GD;;;;;GAKG;AACH,qBAAa,kBAAkB;IAwBW,OAAO,CAAC,QAAQ,CAAC,IAAI;IAvB7D,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqB;IAC3C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA2B;IACjD,OAAO,CAAC,OAAO,CAAkC;IACjD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAiC;IAC9D,wIAAwI;IACxI,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAsD;IACrF,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA6B;IACvD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA8D;IACtF,OAAO,CAAC,WAAW,CAAwC;IAC3D,OAAO,CAAC,KAAK,CAAK;IAClB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAuB;IAC5C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAuB;IACtD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAuB;IACrD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuB;IAC9C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAuB;IAChD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAuB;IAChD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAuB;IAC7C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA0B;IAC/C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA0B;IAC/C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqB;IAC3C,yCAAyC;IACzC,KAAK,SAAK;IAEV,YAAY,QAAQ,EAAE,gBAAgB,EAAmB,IAAI,EAAE,sBAAsB,EAIpF;IAED,qHAAqH;IACrH,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,OAAO,IAAI,IAAI,CASd;IAED,OAAO,CAAC,OAAO;IA+Bf;;;;;OAKG;IACH,OAAO,CAAC,WAAW;IAqCnB,OAAO,CAAC,kBAAkB;IAa1B,OAAO,CAAC,YAAY;IAkBpB,OAAO,CAAC,WAAW;IAcnB,OAAO,CAAC,WAAW;IAkCnB,OAAO,CAAC,YAAY;IAmCpB,OAAO,CAAC,YAAY;IAmBpB,OAAO,CAAC,OAAO;CAMhB"}
1
+ {"version":3,"file":"pass3d.d.ts","sourceRoot":"","sources":["../../src/particles/pass3d.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAmB,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAEnF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAGvD,+HAA+H;AAC/H,eAAO,MAAM,qBAAqB,cAAc,CAAC;AACjD,eAAO,MAAM,2BAA2B,OAAO,CAAC;AAEhD,+EAA+E;AAC/E,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC;IAC5B,8DAA8D;IAC9D,SAAS,IAAI,iBAAiB,GAAG,IAAI,CAAC;CACvC;AA6GD;;;;;GAKG;AACH,qBAAa,kBAAkB;IA0BW,OAAO,CAAC,QAAQ,CAAC,IAAI;IAzB7D,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqB;IAC3C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA2B;IACjD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAgC;IAC7D,OAAO,CAAC,QAAQ,CAAoC;IACpD,OAAO,CAAC,OAAO,CAAkC;IACjD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAiC;IAC9D,wIAAwI;IACxI,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAsD;IACrF,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA6B;IACvD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA8D;IACtF,OAAO,CAAC,WAAW,CAAwC;IAC3D,OAAO,CAAC,KAAK,CAAK;IAClB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAuB;IAC5C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAuB;IACtD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAuB;IACrD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuB;IAC9C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAuB;IAChD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAuB;IAChD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAuB;IAC7C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA0B;IAC/C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA0B;IAC/C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqB;IAC3C,yCAAyC;IACzC,KAAK,SAAK;IAEV,YAAY,QAAQ,EAAE,gBAAgB,EAAmB,IAAI,EAAE,sBAAsB,EAIpF;IAED,qHAAqH;IACrH,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,OAAO,IAAI,IAAI,CAYd;IAED,OAAO,CAAC,OAAO;IAyCf;;;;;OAKG;IACH,OAAO,CAAC,WAAW;IAgCnB,OAAO,CAAC,kBAAkB;IAa1B,OAAO,CAAC,YAAY;IAkBpB,OAAO,CAAC,WAAW;IAgBnB,OAAO,CAAC,WAAW;IAkCnB,OAAO,CAAC,YAAY;IAsCpB,OAAO,CAAC,YAAY;IAmBpB,OAAO,CAAC,OAAO;CAMhB"}
@@ -1,5 +1,6 @@
1
1
  import * as THREE from "three";
2
2
  import { PARTICLE_INSTANCE_STRIDE_3D, packParticleBatches3D } from "./particles3d.js";
3
+ import { ParticleTransparency3D } from "./transparency3d.js";
3
4
  /** Pass name in `RenderPipeline3D`. It runs before the scene pass so particles draw with the scene and its post-processing. */
4
5
  export const GAME_PARTICLE_PASS_3D = "particles";
5
6
  export const GAME_PARTICLE_PASS_ORDER_3D = -0.5;
@@ -89,8 +90,8 @@ function withInstanceOpacity(material) {
89
90
  }
90
91
  const UP = new THREE.Vector3(0, 1, 0);
91
92
  /**
92
- * Draws 3D particles: camera-facing and stretched billboards and instanced mesh shapes, one draw call per batch of
93
- * shape, blend and lighting. The pass runs before the scene pass and puts its meshes in the scene, so particles depth
93
+ * Draws 3D particles: camera-facing and stretched billboards and instanced mesh shapes, one draw call per contiguous
94
+ * compatible run between scene-transparency depths. The pass runs before the scene pass and puts its meshes in the scene, so particles depth
94
95
  * test against the scene and take its fog and post-processing. When a billboard has a softness distance, the pass
95
96
  * first renders the scene's depth into a texture and the billboard fades out where it nears the geometry behind it.
96
97
  */
@@ -98,6 +99,8 @@ export class GameParticlePass3D {
98
99
  host;
99
100
  group = new THREE.Group();
100
101
  draws = new Map();
102
+ transparency = new ParticleTransparency3D();
103
+ renderer = null;
101
104
  batches = [];
102
105
  quadGeometry = new THREE.PlaneGeometry(1, 1);
103
106
  /** Depth-only stand-ins for scene materials, so the depth pre-pass keeps each material's cut-outs and skips what never writes depth. */
@@ -129,6 +132,9 @@ export class GameParticlePass3D {
129
132
  return this.depthTarget ? this.depthTarget.width * this.depthTarget.height * 8 : 0;
130
133
  }
131
134
  dispose() {
135
+ this.renderer?.setTransparentSort(null);
136
+ this.renderer = null;
137
+ this.transparency.clear();
132
138
  for (const draw of this.draws.values()) {
133
139
  this.release(draw);
134
140
  }
@@ -142,7 +148,13 @@ export class GameParticlePass3D {
142
148
  this.depthTarget?.dispose();
143
149
  this.depthTarget = null;
144
150
  }
145
- prepare({ renderer, scene, camera }) {
151
+ prepare({ renderer, scene, camera, interpolation = 1 }) {
152
+ if (this.renderer !== renderer) {
153
+ this.renderer?.setTransparentSort(null);
154
+ this.renderer = renderer;
155
+ renderer.setTransparentSort(this.transparency.compare);
156
+ }
157
+ this.transparency.clear();
146
158
  if (this.group.parent !== scene) {
147
159
  scene.add(this.group);
148
160
  }
@@ -151,18 +163,23 @@ export class GameParticlePass3D {
151
163
  camera.getWorldDirection(this.cameraForward);
152
164
  const packed = field
153
165
  ? packParticleBatches3D(field, { x: this.cameraPosition.x, y: this.cameraPosition.y, z: this.cameraPosition.z,
154
- forwardX: this.cameraForward.x, forwardY: this.cameraForward.y, forwardZ: this.cameraForward.z }, this.batches)
166
+ forwardX: this.cameraForward.x, forwardY: this.cameraForward.y, forwardZ: this.cameraForward.z }, this.batches, interpolation, () => this.transparency.depths(scene, camera, this.group))
155
167
  : { batches: [], drawn: 0, soft: false };
156
168
  this.batches = packed.batches;
157
169
  this.drawn = packed.drawn;
158
170
  this.frame += 1;
159
- for (const batch of packed.batches) {
171
+ for (const [order, batch] of packed.batches.entries()) {
160
172
  if (batch.shape === "quad") {
161
173
  this.updateQuads(batch);
162
174
  }
163
175
  else {
164
176
  this.updateMeshes(batch, batch.shape);
165
177
  }
178
+ const draw = this.draws.get(batch.key);
179
+ if (!draw) {
180
+ throw new Error(`Particle run ${batch.key} was not prepared`);
181
+ }
182
+ this.transparency.add(draw.mesh, batch.depth, order, camera);
166
183
  }
167
184
  for (const [key, draw] of this.draws) {
168
185
  if (draw.frame !== this.frame) {
@@ -187,8 +204,8 @@ export class GameParticlePass3D {
187
204
  /**
188
205
  * Renders the scene's depth without particles into a texture, keeping every renderer and scene setting it changes.
189
206
  * Each mesh draws with a depth-only copy of its material, so alpha-tested cut-outs keep their holes, and transparent
190
- * or non-depth-writing materials are skipped as they write no depth in the scene pass either. The pre-pass draws are
191
- * taken back out of the renderer's counters, so frame stats and budgets count only what the player sees.
207
+ * or non-depth-writing materials are skipped as they write no depth in the scene pass either. Its submitted work
208
+ * remains in the renderer counters so frame stats and budgets include this pass.
192
209
  */
193
210
  renderDepth(renderer, scene, camera) {
194
211
  const size = renderer.getDrawingBufferSize(this.size);
@@ -201,9 +218,6 @@ export class GameParticlePass3D {
201
218
  const target = renderer.getRenderTarget();
202
219
  const background = scene.background;
203
220
  const shadowUpdate = renderer.shadowMap.autoUpdate;
204
- const counters = renderer.info.render;
205
- const calls = counters.calls;
206
- const triangles = counters.triangles;
207
221
  try {
208
222
  // The scene pass renders this frame's shadow maps. Depth needs none.
209
223
  renderer.shadowMap.autoUpdate = false;
@@ -223,8 +237,6 @@ export class GameParticlePass3D {
223
237
  this.group.visible = true;
224
238
  scene.background = background;
225
239
  renderer.setRenderTarget(target);
226
- counters.calls = calls;
227
- counters.triangles = triangles;
228
240
  }
229
241
  const depth = this.depthTarget.depthTexture;
230
242
  if (!depth) {
@@ -271,7 +283,7 @@ export class GameParticlePass3D {
271
283
  }
272
284
  updateQuads(batch) {
273
285
  let draw = this.draws.get(batch.key);
274
- if (draw?.kind === "quad" && draw.buffer.array.length < batch.data.length) {
286
+ if (draw?.kind === "quad" && draw.buffer.array.length !== batch.data.length) {
275
287
  this.release(draw);
276
288
  this.draws.delete(batch.key);
277
289
  draw = undefined;
@@ -323,7 +335,8 @@ export class GameParticlePass3D {
323
335
  }
324
336
  updateMeshes(batch, shape) {
325
337
  let draw = this.draws.get(batch.key);
326
- if (draw?.kind === "mesh" && draw.mesh.instanceMatrix.count < batch.count) {
338
+ const capacity = batch.data.length / PARTICLE_INSTANCE_STRIDE_3D;
339
+ if (draw?.kind === "mesh" && draw.mesh.instanceMatrix.count !== capacity) {
327
340
  this.release(draw);
328
341
  this.draws.delete(batch.key);
329
342
  draw = undefined;
@@ -370,7 +383,7 @@ export class GameParticlePass3D {
370
383
  const opacity = new THREE.InstancedBufferAttribute(new Float32Array(capacity), 1);
371
384
  opacity.setUsage(THREE.DynamicDrawUsage);
372
385
  geometry.setAttribute("particleOpacity", opacity);
373
- const options = { transparent: true, depthWrite: batch.blend === "normal",
386
+ const options = { transparent: true, depthWrite: false,
374
387
  blending: batch.blend === "additive" ? THREE.AdditiveBlending : THREE.NormalBlending };
375
388
  const material = batch.lit ? new THREE.MeshStandardMaterial({ ...options, roughness: 0.8, metalness: 0 }) : new THREE.MeshBasicMaterial(options);
376
389
  withInstanceOpacity(material);
@@ -1 +1 @@
1
- {"version":3,"file":"pass3d.js","sourceRoot":"","sources":["../../src/particles/pass3d.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pass3d.js","sourceRoot":"","sources":["../../src/particles/pass3d.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAE,2BAA2B,EAAE,qBAAqB,EAAmD,MAAM,kBAAkB,CAAC;AAEvI,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAE7D,+HAA+H;AAC/H,MAAM,CAAC,MAAM,qBAAqB,GAAG,WAAW,CAAC;AACjD,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,GAAG,CAAC;AAShD,MAAM,WAAW,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmClB,CAAC;AAEH,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;EA0BpB,CAAC;AAEH,kGAAkG;AAClG,SAAS,YAAY,CAAC,KAA4C;IAChE,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,KAAK,EAAE,OAAO,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAClD,KAAK,QAAQ,EAAE,OAAO,IAAI,KAAK,CAAC,cAAc,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QAC3D,KAAK,aAAa,EAAE,OAAO,IAAI,KAAK,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;QAC9D,KAAK,YAAY,EAAE,OAAO,IAAI,KAAK,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;IAC9D,CAAC;AACH,CAAC;AAED,+GAA+G;AAC/G,SAAS,mBAAmB,CAAC,QAA8D;IACzF,QAAQ,CAAC,eAAe,GAAG,CAAC,MAAM,EAAE,EAAE;QACpC,MAAM,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY;aACtC,OAAO,CAAC,mBAAmB,EAAE,sFAAsF,CAAC;aACpH,OAAO,CAAC,yBAAyB,EAAE,8DAA8D,CAAC,CAAC;QACtG,MAAM,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc;aAC1C,OAAO,CAAC,mBAAmB,EAAE,oDAAoD,CAAC;aAClF,OAAO,CAAC,2BAA2B,EAAE,gEAAgE,CAAC,CAAC;IAC5G,CAAC,CAAC;IACF,QAAQ,CAAC,qBAAqB,GAAG,GAAG,EAAE,CAAC,uBAAuB,CAAC;AACjE,CAAC;AAmBD,MAAM,EAAE,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAEtC;;;;;GAKG;AACH,MAAM,OAAO,kBAAkB;IA0B4B,IAAI;IAzB5C,KAAK,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;IAC1B,KAAK,GAAG,IAAI,GAAG,EAAgB,CAAC;IAChC,YAAY,GAAG,IAAI,sBAAsB,EAAE,CAAC;IACrD,QAAQ,GAA+B,IAAI,CAAC;IAC5C,OAAO,GAA+B,EAAE,CAAC;IAChC,YAAY,GAAG,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9D,wIAAwI;IACvH,cAAc,GAAG,IAAI,GAAG,EAA2C,CAAC;IACpE,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC;IACtC,OAAO,GAA2D,EAAE,CAAC;IAC9E,WAAW,GAAmC,IAAI,CAAC;IACnD,KAAK,GAAG,CAAC,CAAC;IACD,IAAI,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;IAC3B,cAAc,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;IACrC,aAAa,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;IACpC,MAAM,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;IAC7B,QAAQ,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;IAC/B,QAAQ,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;IAC/B,KAAK,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;IAC5B,IAAI,GAAG,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;IAC9B,IAAI,GAAG,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;IAC9B,KAAK,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;IAC3C,yCAAyC;IACzC,KAAK,GAAG,CAAC,CAAC;IAEV,YAAY,QAA0B,EAAmB,IAA4B;oBAA5B,IAAI;QAC3D,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,gBAAgB,CAAC;QACnC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,qBAAqB,EAAE,KAAK,EAAE,2BAA2B,EAAE,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACrI,CAAC;IAED,qHAAqH;IACrH,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrF,CAAC;IAED,OAAO;QACL,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QAC1B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAAC,CAAC;QAC/D,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACnB,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;QAC9B,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;QAC5B,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,EAAE,CAAC;YAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QAAC,CAAC;QAC5E,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;QAC5B,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAC1B,CAAC;IAEO,OAAO,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,GAAG,CAAC,EAAmB;QAC7E,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC/B,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC;YACxC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;YACzB,QAAQ,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QACzD,CAAC;QACD,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QAC1B,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;YAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAAC,CAAC;QAC3D,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QACpC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC7C,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC7C,MAAM,MAAM,GAAG,KAAK;YAClB,CAAC,CAAC,qBAAqB,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;gBAC3G,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,aAAa,EAC/H,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YAC1D,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;QAC3C,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAC9B,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;QAChB,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;YACtD,IAAI,KAAK,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;gBAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YAAC,CAAC;iBAAM,CAAC;gBAAC,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;YAAC,CAAC;YACxG,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACvC,IAAI,CAAC,IAAI,EAAE,CAAC;gBAAC,MAAM,IAAI,KAAK,CAAC,gBAAgB,KAAK,CAAC,GAAG,mBAAmB,CAAC,CAAC;YAAC,CAAC;YAC7E,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QAC/D,CAAC;QACD,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACrC,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC;gBAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAAC,CAAC;QAChF,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC7E,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YACvC,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAAC,SAAS;YAAC,CAAC;YACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAC7C,QAAQ,CAAC,WAAW,CAAE,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7C,QAAQ,CAAC,YAAY,CAAE,CAAC,KAAK,GAAG,KAAK,CAAC;YACtC,QAAQ,CAAC,iBAAiB,CAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnD,QAAQ,CAAC,YAAY,CAAE,CAAC,KAAK,GAAG,MAAM,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;YACxG,QAAQ,CAAC,WAAW,CAAE,CAAC,KAAK,GAAG,KAAK,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;YACrG,QAAQ,CAAC,oBAAoB,CAAE,CAAC,KAAK,GAAG,MAAM,YAAY,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7F,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACK,WAAW,CAAC,QAA6B,EAAE,KAAkB,EAAE,MAAoB;QACzF,MAAM,IAAI,GAAG,QAAQ,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtD,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,IAAI,CAAC,WAAW,GAAG,IAAI,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC9I,CAAC;aAAM,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,EAAE,CAAC;YACnF,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3C,CAAC;QACD,MAAM,MAAM,GAAG,QAAQ,CAAC,eAAe,EAAE,CAAC;QAC1C,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;QACpC,MAAM,YAAY,GAAG,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC;QACnD,IAAI,CAAC;YACH,qEAAqE;YACrE,QAAQ,CAAC,SAAS,CAAC,UAAU,GAAG,KAAK,CAAC;YACtC,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;YAC3B,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC;YACxB,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;YAC/B,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC3C,QAAQ,CAAC,KAAK,EAAE,CAAC;YACjB,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACjC,CAAC;gBAAS,CAAC;YACT,KAAK,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBAAC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;YAAC,CAAC;YAC1E,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;YACxB,QAAQ,CAAC,SAAS,CAAC,UAAU,GAAG,YAAY,CAAC;YAC7C,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;YAC1B,KAAK,CAAC,UAAU,GAAG,UAAU,CAAC;YAC9B,QAAQ,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QACnC,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC;QAC5C,IAAI,CAAC,KAAK,EAAE,CAAC;YAAC,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;QAAC,CAAC;QAC9E,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,kBAAkB,CAAC,KAAkB;QAC3C,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACvB,KAAK,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,EAAE;YACxB,IAAI,MAAM,KAAK,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,MAAM,YAAY,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBAAC,OAAO;YAAC,CAAC;YACzE,MAAM,QAAQ,GAAsC,MAAM,CAAC,QAAQ,CAAC;YACpE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;YACtC,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAC9H,CAAC,CAAC,CAAC;QACH,KAAK,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACtD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAAC,OAAO,CAAC,OAAO,EAAE,CAAC;gBAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAAC,CAAC;QACjG,CAAC;IACH,CAAC;IAEO,YAAY,CAAC,QAAwB;QAC3C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC7B,IAAI,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAChD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,GAAG,IAAI,KAAK,CAAC,iBAAiB,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;YAC7D,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC7C,CAAC;QACD,OAAO,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,UAAU,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;QACnF,OAAO,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;QAC7B,OAAO,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;QACvC,OAAO,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;QACnC,MAAM,YAAY,GAAG,cAAc,IAAI,QAAQ,IAAI,QAAQ,CAAC,YAAY,KAAK,IAAI,CAAC;QAClF,IAAI,OAAO,CAAC,YAAY,KAAK,YAAY,EAAE,CAAC;YAAC,OAAO,CAAC,YAAY,GAAG,YAAY,CAAC;YAAC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;QAAC,CAAC;QAC/G,OAAO,CAAC,GAAG,GAAG,KAAK,IAAI,QAAQ,IAAI,QAAQ,CAAC,GAAG,YAAY,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;QAC/F,OAAO,CAAC,QAAQ,GAAG,UAAU,IAAI,QAAQ,IAAI,QAAQ,CAAC,QAAQ,YAAY,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;QACnH,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,WAAW,CAAC,KAAsB;QACxC,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,IAAI,EAAE,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YAC5E,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAAC,IAAI,GAAG,SAAS,CAAC;QACrE,CAAC;QACD,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YAC/B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAClC,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAAC,OAAO;QAAC,CAAC;QACrC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACvB,IAAI,CAAC,MAAM,CAAC,KAAsB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,GAAG,2BAA2B,CAAC,CAAC,CAAC;QAC3G,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC;QAC/B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC;IACjD,CAAC;IAEO,WAAW,CAAC,KAAsB;QACxC,MAAM,MAAM,GAAG,IAAI,KAAK,CAAC,0BAA0B,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,2BAA2B,CAAC,CAAC;QACtH,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QACxC,MAAM,QAAQ,GAAG,IAAI,KAAK,CAAC,uBAAuB,EAAE,CAAC;QACrD,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC;QAC1D,QAAQ,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QACtF,QAAQ,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QAC1E,QAAQ,CAAC,YAAY,CAAC,kBAAkB,EAAE,IAAI,KAAK,CAAC,0BAA0B,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC9F,QAAQ,CAAC,YAAY,CAAC,kBAAkB,EAAE,IAAI,KAAK,CAAC,0BAA0B,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC9F,QAAQ,CAAC,YAAY,CAAC,eAAe,EAAE,IAAI,KAAK,CAAC,0BAA0B,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3F,QAAQ,CAAC,YAAY,CAAC,eAAe,EAAE,IAAI,KAAK,CAAC,0BAA0B,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAC5F,QAAQ,CAAC,YAAY,CAAC,eAAe,EAAE,IAAI,KAAK,CAAC,0BAA0B,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAC5F,MAAM,QAAQ,GAAG,IAAI,KAAK,CAAC,cAAc,CAAC;YACxC,IAAI,EAAE,sBAAsB;YAC5B,QAAQ,EAAE,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;oBAC1D,UAAU,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,eAAe,EAAE,EAAE,KAAK,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE;oBAC5G,SAAS,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,kBAAkB,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;iBACtF,CAAC,CAAC;YACH,YAAY,EAAE,WAAW;YACzB,cAAc,EAAE,aAAa;YAC7B,WAAW,EAAE,IAAI;YACjB,UAAU,EAAE,KAAK;YACjB,GAAG,EAAE,IAAI;YACT,IAAI,EAAE,KAAK,CAAC,UAAU;YACtB,QAAQ,EAAE,KAAK,CAAC,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc;SACrF,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAChD,6GAA6G;QAC7G,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC3B,IAAI,CAAC,IAAI,GAAG,aAAa,KAAK,CAAC,GAAG,EAAE,CAAC;QACrC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACrB,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAC3D,CAAC;IAEO,YAAY,CAAC,KAAsB,EAAE,KAA4C;QACvF,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACrC,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,2BAA2B,CAAC;QACjE,IAAI,IAAI,EAAE,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YACzE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAAC,IAAI,GAAG,SAAS,CAAC;QACrE,CAAC;QACD,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YACvC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAClC,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAAC,OAAO;QAAC,CAAC;QACrC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACxB,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QACxB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,KAAqB,CAAC;QACnD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;YACpD,MAAM,IAAI,GAAG,KAAK,GAAG,2BAA2B,CAAC;YACjD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAE,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC,CAAE,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC,CAAE,CAAC,CAAC;YACjE,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,GAAG,EAAE,CAAE,CAAC,CAAC;YACjD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAE,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC,CAAE,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC,CAAE,CAAC,CAAC;YACrE,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;YACrC,IAAI,IAAI,CAAC,IAAI,GAAG,EAAE,CAAE,GAAG,GAAG,IAAI,KAAK,GAAG,IAAI,EAAE,CAAC;gBAC3C,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1F,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5B,CAAC;YACD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,EAAE,CAAE,CAAC;YAC9B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YACjC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YACxF,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAE,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC,CAAE,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC,CAAE,CAAC,CAAC,CAAC;YAClG,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,CAAE,CAAC;QACnC,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QAC9B,IAAI,CAAC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,WAAW,GAAG,IAAI,CAAC;QAC5C,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,GAAG,IAAI,CAAC;QAAC,CAAC;QAC5E,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAClC,CAAC;IAEO,YAAY,CAAC,KAAsB,EAAE,KAA4C;QACvF,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,2BAA2B,CAAC;QACjE,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;QACrC,MAAM,OAAO,GAAG,IAAI,KAAK,CAAC,wBAAwB,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;QAClF,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QACzC,QAAQ,CAAC,YAAY,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;QAClD,MAAM,OAAO,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK;YACpD,QAAQ,EAAE,KAAK,CAAC,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;QACzF,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,oBAAoB,CAAC,EAAE,GAAG,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QACjJ,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QAC9B,MAAM,IAAI,GAAG,IAAI,KAAK,CAAC,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACnE,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QACrD,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/C,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC3B,IAAI,CAAC,IAAI,GAAG,aAAa,KAAK,CAAC,GAAG,EAAE,CAAC;QACrC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACrB,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IAC5D,CAAC;IAEO,OAAO,CAAC,IAAU;QACxB,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC7B,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAAC,CAAC;QAClD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;IAC/B,CAAC;CACF"}
@@ -2,7 +2,7 @@ import type { GameEvent, GameParticleEmission, GameParticleSprite, GameRenderFra
2
2
  import { ParticleSimulator, type ParticleView } from "./simulator.js";
3
3
  /** What a 2D renderer reads from a particle simulation. */
4
4
  export interface GameParticleField {
5
- forEachParticle(visit: (particle: Readonly<ParticleView>) => void): void;
5
+ forEachParticle(visit: (particle: Readonly<ParticleView>) => void, interpolation?: number): void;
6
6
  }
7
7
  /** Asset id of the built-in soft round dot that particles without a sprite draw with. */
8
8
  export declare const PARTICLE_DOT_ASSET = "nodetool:particle-dot";
@@ -30,11 +30,12 @@ export declare function particleCell(sprite: GameParticleSprite, life: number):
30
30
  export declare class GameParticles2D implements GameParticleField {
31
31
  readonly simulator: ParticleSimulator;
32
32
  private readonly tickSeconds;
33
+ private identity;
33
34
  constructor(tickRate: number, maxSceneParticles?: number);
34
35
  /** Live particles, for the frame budget. */
35
36
  get count(): number;
36
37
  tick(frame: GameRenderFrame, events: readonly (GameEvent | GameParticleEmission)[]): void;
37
- forEachParticle(visit: (particle: Readonly<ParticleView>) => void): void;
38
+ forEachParticle(visit: (particle: Readonly<ParticleView>) => void, interpolation?: number): void;
38
39
  clear(): void;
39
40
  }
40
41
  //# sourceMappingURL=render2d.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"render2d.d.ts","sourceRoot":"","sources":["../../src/particles/render2d.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAElH,OAAO,EAAE,iBAAiB,EAA4B,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEhG,2DAA2D;AAC3D,MAAM,WAAW,iBAAiB;IAChC,eAAe,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,YAAY,CAAC,KAAK,IAAI,GAAG,IAAI,CAAC;CAC1E;AAED,yFAAyF;AACzF,eAAO,MAAM,kBAAkB,0BAA0B,CAAC;AAE1D,eAAO,MAAM,iBAAiB,KAAK,CAAC;AAEpC;;;GAGG;AACH,eAAO,MAAM,sBAAsB,OAAO,CAAC;AAE3C,wFAAwF;AACxF,wBAAgB,iBAAiB,CAAC,IAAI,SAAoB,GAAG,iBAAiB,CAe7E;AAED,4EAA4E;AAC5E,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,gEAAgE;AAChE,wBAAgB,YAAY,CAAC,MAAM,EAAE,kBAAkB,EAAE,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAU/F;AAED;;;;GAIG;AACH,qBAAa,eAAgB,YAAW,iBAAiB;IACvD,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC;IACtC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IAErC,YAAY,QAAQ,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAAE,MAAM,EAMvD;IAED,4CAA4C;IAC5C,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,IAAI,CAAC,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,SAAS,CAAC,SAAS,GAAG,oBAAoB,CAAC,EAAE,GAAG,IAAI,CAIxF;IAED,eAAe,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,YAAY,CAAC,KAAK,IAAI,GAAG,IAAI,CAEvE;IAED,KAAK,IAAI,IAAI,CAEZ;CACF"}
1
+ {"version":3,"file":"render2d.d.ts","sourceRoot":"","sources":["../../src/particles/render2d.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAElH,OAAO,EAAE,iBAAiB,EAA4B,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEhG,2DAA2D;AAC3D,MAAM,WAAW,iBAAiB;IAChC,eAAe,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,YAAY,CAAC,KAAK,IAAI,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAClG;AAED,yFAAyF;AACzF,eAAO,MAAM,kBAAkB,0BAA0B,CAAC;AAE1D,eAAO,MAAM,iBAAiB,KAAK,CAAC;AAEpC;;;GAGG;AACH,eAAO,MAAM,sBAAsB,OAAO,CAAC;AAE3C,wFAAwF;AACxF,wBAAgB,iBAAiB,CAAC,IAAI,SAAoB,GAAG,iBAAiB,CAe7E;AAED,4EAA4E;AAC5E,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,gEAAgE;AAChE,wBAAgB,YAAY,CAAC,MAAM,EAAE,kBAAkB,EAAE,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAU/F;AAED;;;;GAIG;AACH,qBAAa,eAAgB,YAAW,iBAAiB;IACvD,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC;IACtC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAuB;IAEvC,YAAY,QAAQ,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAAE,MAAM,EAMvD;IAED,4CAA4C;IAC5C,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,IAAI,CAAC,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,SAAS,CAAC,SAAS,GAAG,oBAAoB,CAAC,EAAE,GAAG,IAAI,CASxF;IAED,eAAe,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,YAAY,CAAC,KAAK,IAAI,EAAE,aAAa,SAAI,GAAG,IAAI,CAE1F;IAED,KAAK,IAAI,IAAI,CAGZ;CACF"}
@@ -44,6 +44,7 @@ export function particleCell(sprite, life) {
44
44
  export class GameParticles2D {
45
45
  simulator;
46
46
  tickSeconds;
47
+ identity = null;
47
48
  constructor(tickRate, maxSceneParticles) {
48
49
  if (!(tickRate > 0)) {
49
50
  throw new Error("Particle tick rate must be positive");
@@ -56,15 +57,21 @@ export class GameParticles2D {
56
57
  return this.simulator.count;
57
58
  }
58
59
  tick(frame, events) {
60
+ const identity = frame.gameId ?? "";
61
+ if (identity !== this.identity || events.some((event) => event.kind === "sceneTransition")) {
62
+ this.clear();
63
+ this.identity = identity;
64
+ }
59
65
  this.simulator.sync(particleSourcesFromFrame(frame));
60
66
  this.simulator.emit(events);
61
67
  this.simulator.step(this.tickSeconds);
62
68
  }
63
- forEachParticle(visit) {
64
- this.simulator.forEachParticle(visit);
69
+ forEachParticle(visit, interpolation = 1) {
70
+ this.simulator.forEachParticle(visit, interpolation);
65
71
  }
66
72
  clear() {
67
73
  this.simulator.clear();
74
+ this.identity = null;
68
75
  }
69
76
  }
70
77
  //# sourceMappingURL=render2d.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"render2d.js","sourceRoot":"","sources":["../../src/particles/render2d.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"render2d.js","sourceRoot":"","sources":["../../src/particles/render2d.ts"],"names":[],"mappings":"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"}