@realsee/five 6.6.0-alpha.2 → 6.6.0-alpha.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 (145) hide show
  1. package/docs/assets/hierarchy.js +1 -1
  2. package/docs/assets/navigation.js +1 -1
  3. package/docs/assets/search.js +1 -1
  4. package/docs/classes/five.Five.html +1 -1
  5. package/docs/classes/five.Model.html +32 -33
  6. package/docs/classes/five.ModelScene.html +17 -18
  7. package/docs/classes/five.PBMContainer.html +1 -1
  8. package/docs/classes/five.PBMGroup.html +1 -1
  9. package/docs/classes/five.PBMMesh.html +1 -1
  10. package/docs/classes/five.PBMMeshMaterial.html +1 -1
  11. package/docs/classes/five.PBMPointCloud.html +1 -1
  12. package/docs/classes/five.PBMPointCloudMaterial.html +1 -1
  13. package/docs/classes/five.PBMSkinnedMesh.html +1 -1
  14. package/docs/classes/five.PanoCircleMesh.html +1 -1
  15. package/docs/classes/five.PanoCircleMeshCustom.html +1 -1
  16. package/docs/classes/five.PanoCircleMeshSolid.html +1 -1
  17. package/docs/classes/five.Parameter.html +1 -1
  18. package/docs/classes/five.Tile3DModel.html +21 -21
  19. package/docs/classes/five.TileNode.html +2 -2
  20. package/docs/classes/five.TrajectoryNode.html +1 -1
  21. package/docs/classes/five.WorkResolvedObserver.html +1 -1
  22. package/docs/classes/gltf-loader.DDSLoader.html +1 -1
  23. package/docs/classes/gltf-loader.DRACOLoader.html +1 -1
  24. package/docs/classes/gltf-loader.GLTFObject.html +1 -1
  25. package/docs/classes/gltf-loader.THREEGLTFLoader.html +1 -1
  26. package/docs/classes/line.LineGeometry.html +1 -1
  27. package/docs/classes/line.LineMaterial.html +1 -1
  28. package/docs/classes/line.LineSegmentsGeometry.html +1 -1
  29. package/docs/classes/line.THREE_Line2.html +1 -1
  30. package/docs/classes/line.THREE_LineSegments2.html +1 -1
  31. package/docs/classes/plugins.RoundedBoxGeometry.html +1 -1
  32. package/docs/classes/vfx.Airflow.html +1 -1
  33. package/docs/classes/vfx.Flame.html +1 -1
  34. package/docs/classes/vfx.Particle.html +1 -1
  35. package/docs/classes/vfx.ParticleGPU.html +19 -0
  36. package/docs/classes/vfx.SpotLight.html +1 -1
  37. package/docs/functions/five.createDebugBoundingMesh.html +1 -1
  38. package/docs/functions/five.isBoundingVolume.html +1 -1
  39. package/docs/functions/five.makeBoundingVolume.html +1 -1
  40. package/docs/hierarchy.html +1 -1
  41. package/docs/interfaces/five.AddableObject.html +1 -1
  42. package/docs/interfaces/five.BaseEvent.html +1 -1
  43. package/docs/interfaces/five.BoundingVolume.html +2 -2
  44. package/docs/interfaces/five.BoxBoundingVolume.html +2 -2
  45. package/docs/interfaces/five.EventCallback.html +1 -1
  46. package/docs/interfaces/five.GestureEvent.html +1 -1
  47. package/docs/interfaces/five.ImageOptions.html +1 -1
  48. package/docs/interfaces/five.IntersectEvent.html +1 -1
  49. package/docs/interfaces/five.IntersectMesh.html +1 -1
  50. package/docs/interfaces/five.IntersectMeshInterface.html +1 -1
  51. package/docs/interfaces/five.Intersection.html +6 -3
  52. package/docs/interfaces/five.LooseWorkPanorama.html +1 -1
  53. package/docs/interfaces/five.LooseWorkWithExtrinsics.html +1 -1
  54. package/docs/interfaces/five.ModeChangeEvent.html +1 -1
  55. package/docs/interfaces/five.ModelControllerCustomInitArgs.html +1 -1
  56. package/docs/interfaces/five.ModelEvent.html +1 -1
  57. package/docs/interfaces/five.ModelLike.html +2 -2
  58. package/docs/interfaces/five.ModelSceneEvent.html +1 -1
  59. package/docs/interfaces/five.MovePanoOptions.html +1 -1
  60. package/docs/interfaces/five.NetworkResourceEvent.html +1 -1
  61. package/docs/interfaces/five.ObjectEvent.html +1 -1
  62. package/docs/interfaces/five.PBMMaterial.html +1 -1
  63. package/docs/interfaces/five.PBMMeshMaterialParameters.html +1 -1
  64. package/docs/interfaces/five.PBMPointCloudMaterialParameters.html +1 -1
  65. package/docs/interfaces/five.PanoCircleMeshInterface.html +1 -1
  66. package/docs/interfaces/five.PanoEvent.html +1 -1
  67. package/docs/interfaces/five.PanoTextureEvent.html +1 -1
  68. package/docs/interfaces/five.PanoramaControllerCustomInitArgs.html +1 -1
  69. package/docs/interfaces/five.PanoramaLikeControllerCustomInitArgs.html +1 -1
  70. package/docs/interfaces/five.ParameterMaterialValue.html +1 -1
  71. package/docs/interfaces/five.ParameterTilesetValue.html +1 -1
  72. package/docs/interfaces/five.ParameterValue.html +1 -1
  73. package/docs/interfaces/five.Pose.html +1 -1
  74. package/docs/interfaces/five.RegionBoundingVolume.html +2 -2
  75. package/docs/interfaces/five.RenderEvent.html +1 -1
  76. package/docs/interfaces/five.ResolvedParameterValue.html +1 -1
  77. package/docs/interfaces/five.SphereBoundingVolume.html +2 -2
  78. package/docs/interfaces/five.State.html +1 -1
  79. package/docs/interfaces/five.StateEvent.html +1 -1
  80. package/docs/interfaces/five.TextureOptions.html +1 -1
  81. package/docs/interfaces/five.TopviewControllerCustomInitArgs.html +1 -1
  82. package/docs/interfaces/five.VRPanoramaControllerCustomInitArgs.html +1 -1
  83. package/docs/interfaces/five.ViewLayer.html +21 -21
  84. package/docs/interfaces/five.WorkCubeImage.html +1 -1
  85. package/docs/interfaces/five.WorkImage.html +1 -1
  86. package/docs/interfaces/five.WorkObserver.html +1 -1
  87. package/docs/interfaces/five.WorkTile.html +1 -1
  88. package/docs/interfaces/five.WorksEvent.html +1 -1
  89. package/docs/interfaces/five.XRControllerEvent.html +1 -1
  90. package/docs/interfaces/five.XRGestureEvent.html +1 -1
  91. package/docs/interfaces/five.XRPanoramaControllerCustomInitArgs.html +1 -1
  92. package/docs/interfaces/five.XRSessionEvent.html +1 -1
  93. package/docs/interfaces/plugins.BackgroundPluginController.html +1 -1
  94. package/docs/interfaces/plugins.BackgroundPluginType.EventMap.html +1 -1
  95. package/docs/interfaces/plugins.ItemMaskController.html +1 -1
  96. package/docs/interfaces/plugins.ItemMaskPluginType.EventMap.html +1 -1
  97. package/docs/interfaces/plugins.ItemMaskPluginType.State.html +1 -1
  98. package/docs/interfaces/plugins.OrientationPluginController.html +1 -1
  99. package/docs/interfaces/plugins.OrientationPluginType.EventMap.html +1 -1
  100. package/docs/interfaces/plugins.OrientationPluginType.State.html +1 -1
  101. package/docs/interfaces/plugins.PanoAnimeController.html +1 -1
  102. package/docs/interfaces/plugins.PanoAnimePluginType.EventMap.html +1 -1
  103. package/docs/interfaces/plugins.PanoAnimePluginType.State.html +1 -1
  104. package/docs/interfaces/plugins.PluginTemplateType.EventMap.html +1 -1
  105. package/docs/interfaces/plugins.PluginTemplateType.State.html +1 -1
  106. package/docs/interfaces/plugins.TrajectoryController.html +1 -1
  107. package/docs/interfaces/react.FiveInjectionTypes.html +4 -5
  108. package/docs/interfaces/vfx.ParticleGPUArgs.html +60 -0
  109. package/docs/interfaces/vfx.ParticleGPUTweenKeyframe.html +3 -0
  110. package/docs/modules/vfx.html +1 -1
  111. package/docs/types/five.Models.html +4 -4
  112. package/docs/types/five.ParseOptions.html +1 -1
  113. package/docs/types/vfx.ParticleGPUType.html +1 -0
  114. package/five/index.d.ts +16 -12
  115. package/five/index.js +50 -50
  116. package/five/index.mjs +4441 -4423
  117. package/gltf-loader/index.js +3 -3
  118. package/gltf-loader/index.mjs +3 -3
  119. package/line/index.js +3 -3
  120. package/line/index.mjs +3 -3
  121. package/package.json +1 -1
  122. package/plugins/index.js +2 -2
  123. package/plugins/index.mjs +2 -2
  124. package/react/index.js +2 -2
  125. package/react/index.mjs +2 -2
  126. package/shader-lib/index.js +2 -2
  127. package/shader-lib/index.mjs +2 -2
  128. package/sticker/index.js +3 -3
  129. package/sticker/index.mjs +3 -3
  130. package/umd/five-gltf-loader.js +3 -3
  131. package/umd/five-line.js +3 -3
  132. package/umd/five-plugins.js +2 -2
  133. package/umd/five-react.js +2 -2
  134. package/umd/five-shader-lib.js +2 -2
  135. package/umd/five-sticker.js +3 -3
  136. package/umd/five-vfx.js +126 -19
  137. package/umd/five-vue.js +2 -2
  138. package/umd/five.js +42 -42
  139. package/vfx/index.d.ts +99 -0
  140. package/vfx/index.js +126 -19
  141. package/vfx/index.mjs +325 -119
  142. package/vue/index.js +2 -2
  143. package/vue/index.mjs +2 -2
  144. package/work-downloader/index.js +3 -3
  145. package/work-downloader/index.mjs +89 -82
package/vfx/index.mjs CHANGED
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * @license
3
3
  * @realsee/five
4
- * Generated: 2025/8/15
5
- * Version: 6.6.0-alpha.2
4
+ * Generated: 2025/8/18
5
+ * Version: 6.6.0-alpha.4
6
6
  * Terms:
7
7
  * Realsee SDK License Agreement
8
8
  * Update: July 28, 2021
@@ -253,23 +253,23 @@
253
253
  * writing and signed by Realsee. You and Realsee hereto confirm that this
254
254
  * Agreement and all related documents shall be drafted in English.
255
255
  */import * as n from "three";
256
- var $ = function(o, i) {
257
- return $ = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(e, t) {
256
+ var ae = function(o, i) {
257
+ return ae = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(e, t) {
258
258
  e.__proto__ = t;
259
259
  } || function(e, t) {
260
260
  for (var r in t) Object.prototype.hasOwnProperty.call(t, r) && (e[r] = t[r]);
261
- }, $(o, i);
261
+ }, ae(o, i);
262
262
  };
263
- function A(o, i) {
263
+ function Y(o, i) {
264
264
  if (typeof i != "function" && i !== null)
265
265
  throw new TypeError("Class extends value " + String(i) + " is not a constructor or null");
266
- $(o, i);
266
+ ae(o, i);
267
267
  function e() {
268
268
  this.constructor = o;
269
269
  }
270
270
  o.prototype = i === null ? Object.create(i) : (e.prototype = i.prototype, new e());
271
271
  }
272
- var ee = `
272
+ var be = `
273
273
  uniform vec3 uColor1;
274
274
  uniform vec3 uColor2;
275
275
  uniform float uOpacity;
@@ -289,7 +289,7 @@ void main() {
289
289
  color.g = color.g * (1.0 + gradient * vNoise);
290
290
  gl_FragColor = vec4(color, alpha * uOpacity);
291
291
  }
292
- `, Q = `
292
+ `, le = `
293
293
  // Simplex 4D Noise
294
294
  // by Ian McEwan, Ashima Arts
295
295
  //
@@ -393,11 +393,11 @@ float simplexNoise(vec4 v) {
393
393
  + dot(m1*m1, vec2( dot( p3, x3 ), dot( p4, x4 ) ) ) ) ;
394
394
 
395
395
  }
396
- `, K = `
396
+ `, se = `
397
397
  float scale(float value, float fromMin, float fromMax, float toMin, float toMax) {
398
398
  return toMin + (value - fromMin) * (toMax - toMin) / (fromMax - fromMin);
399
399
  }
400
- `, te = `
400
+ `, Ae = `
401
401
  uniform float uTime;
402
402
  uniform float uNoise;
403
403
  uniform float uSpeed;
@@ -405,8 +405,8 @@ uniform float uSpeed;
405
405
  varying vec3 vPosition;
406
406
  varying float vNoise;
407
407
 
408
- `.concat(Q, `
409
- `).concat(K, `
408
+ `.concat(le, `
409
+ `).concat(se, `
410
410
 
411
411
  float fbm(vec4 x) {
412
412
  float v = 0.0;
@@ -429,13 +429,13 @@ void main() {
429
429
 
430
430
  gl_Position = projectionMatrix * modelViewMatrix * vec4(vPosition, 1.0);
431
431
  }
432
- `), ae = new n.SphereBufferGeometry(1, 300, 300), re = [];
433
- for (var b = 0; b < 2; b++)
434
- re.push(new n.Vector2(Math.sin(b) / 2 + 1, b * 2 - 0.8));
435
- var se = new n.LatheBufferGeometry(re, 300), fe = (
432
+ `), Pe = new n.SphereBufferGeometry(1, 300, 300), xe = [];
433
+ for (var Q = 0; Q < 2; Q++)
434
+ xe.push(new n.Vector2(Math.sin(Q) / 2 + 1, Q * 2 - 0.8));
435
+ var Te = new n.LatheBufferGeometry(xe, 300), je = (
436
436
  /** @class */
437
437
  (function(o) {
438
- A(i, o);
438
+ Y(i, o);
439
439
  function i(e) {
440
440
  var t = o.call(this) || this;
441
441
  t.needsRender = !0;
@@ -445,11 +445,11 @@ var se = new n.LatheBufferGeometry(re, 300), fe = (
445
445
  else
446
446
  switch (e) {
447
447
  case "ring":
448
- r = se;
448
+ r = Te;
449
449
  break;
450
450
  case "circle":
451
451
  default:
452
- r = ae;
452
+ r = Pe;
453
453
  break;
454
454
  }
455
455
  t.uniforms = {
@@ -474,24 +474,24 @@ var se = new n.LatheBufferGeometry(re, 300), fe = (
474
474
  }, t.defines = {
475
475
  FRAGMENTATION_DEGREE: 2
476
476
  };
477
- var s = new n.Mesh(r, new n.ShaderMaterial({
477
+ var u = new n.Mesh(r, new n.ShaderMaterial({
478
478
  uniforms: t.uniforms,
479
479
  defines: t.defines,
480
- vertexShader: te,
481
- fragmentShader: ee,
480
+ vertexShader: Ae,
481
+ fragmentShader: be,
482
482
  transparent: !0,
483
483
  depthWrite: !1,
484
484
  side: n.BackSide
485
485
  })), a = new n.Mesh(r, new n.ShaderMaterial({
486
486
  uniforms: t.uniforms,
487
487
  defines: t.defines,
488
- vertexShader: te,
489
- fragmentShader: ee,
488
+ vertexShader: Ae,
489
+ fragmentShader: be,
490
490
  transparent: !0,
491
491
  depthWrite: !1,
492
492
  side: n.FrontSide
493
493
  }));
494
- return s.scale.setScalar(0.1), a.scale.setScalar(0.1), t.add(s), t.add(a), t;
494
+ return u.scale.setScalar(0.1), a.scale.setScalar(0.1), t.add(u), t.add(a), t;
495
495
  }
496
496
  return i.prototype.setTime = function(e) {
497
497
  this.startTime === void 0 && (this.startTime = e), this.uniforms.uTime.value = (e - this.startTime) / 1e3, this.needsRender = !0;
@@ -553,7 +553,7 @@ var se = new n.LatheBufferGeometry(re, 300), fe = (
553
553
  configurable: !0
554
554
  }), i;
555
555
  })(n.Group)
556
- ), le = `
556
+ ), Me = `
557
557
  uniform vec3 uLightColor;
558
558
  uniform vec3 uSpotPosition;
559
559
  uniform float uAttenuation;
@@ -573,7 +573,7 @@ void main() {
573
573
  intensity = intensity * angleIntensity * vNoise;
574
574
  gl_FragColor = vec4( uLightColor, intensity );
575
575
  }
576
- `, ue = `
576
+ `, ze = `
577
577
 
578
578
  uniform float uTime;
579
579
 
@@ -581,8 +581,8 @@ varying vec3 vNormal;
581
581
  varying vec3 vWorldPosition;
582
582
  varying float vNoise;
583
583
 
584
- `.concat(Q, `
585
- `).concat(K, `
584
+ `.concat(le, `
585
+ `).concat(se, `
586
586
 
587
587
  void main(){
588
588
 
@@ -594,14 +594,14 @@ void main(){
594
594
 
595
595
  gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
596
596
  }
597
- `), he = (
597
+ `), Ge = (
598
598
  /** @class */
599
599
  (function(o) {
600
- A(i, o);
600
+ Y(i, o);
601
601
  function i(e, t, r) {
602
602
  e === void 0 && (e = 1), t === void 0 && (t = 0.1), r === void 0 && (r = 0.2);
603
- var s = o.call(this) || this;
604
- s.needsRender = !0, s.uniforms = {
603
+ var u = o.call(this) || this;
604
+ u.needsRender = !0, u.uniforms = {
605
605
  uTime: {
606
606
  value: 0
607
607
  },
@@ -612,7 +612,7 @@ void main(){
612
612
  value: 2
613
613
  },
614
614
  uSpotPosition: {
615
- value: s.position
615
+ value: u.position
616
616
  },
617
617
  uLightColor: {
618
618
  value: new n.Color(16777215)
@@ -620,15 +620,15 @@ void main(){
620
620
  };
621
621
  var a = new n.CylinderBufferGeometry(t, r, e, 64, 20, !0);
622
622
  a.applyMatrix4(new n.Matrix4().makeTranslation(0, -e / 2, 0)), a.applyMatrix4(new n.Matrix4().makeRotationX(-Math.PI / 2));
623
- var l = new n.Mesh(a, new n.ShaderMaterial({
624
- uniforms: s.uniforms,
625
- vertexShader: ue,
626
- fragmentShader: le,
623
+ var s = new n.Mesh(a, new n.ShaderMaterial({
624
+ uniforms: u.uniforms,
625
+ vertexShader: ze,
626
+ fragmentShader: Me,
627
627
  transparent: !0,
628
628
  side: n.FrontSide,
629
629
  depthWrite: !1
630
630
  }));
631
- return s.add(l), s;
631
+ return u.add(s), u;
632
632
  }
633
633
  return i.prototype.setTime = function(e) {
634
634
  this.startTime === void 0 && (this.startTime = e), this.uniforms.uTime.value = (e - this.startTime) / 1e3, this.needsRender = !0;
@@ -661,7 +661,7 @@ void main(){
661
661
  configurable: !0
662
662
  }), i;
663
663
  })(n.Group)
664
- ), ne = `
664
+ ), Se = `
665
665
  uniform vec3 uColor;
666
666
  uniform float uOpacity;
667
667
  varying vec3 vPosition;
@@ -671,7 +671,7 @@ void main() {
671
671
  float gradient = mix(0.0, 1.0, 1.0 + vPosition.y);
672
672
  gl_FragColor = vec4(uColor, vNoise * gradient * uOpacity);
673
673
  }
674
- `, ie = `
674
+ `, we = `
675
675
 
676
676
  uniform float uTime;
677
677
  uniform float uSpeed;
@@ -680,8 +680,8 @@ uniform float uExpand;
680
680
  varying float vNoise;
681
681
  varying vec3 vPosition;
682
682
 
683
- `.concat(Q, `
684
- `).concat(K, `
683
+ `.concat(le, `
684
+ `).concat(se, `
685
685
 
686
686
  void main(){
687
687
 
@@ -694,16 +694,16 @@ void main(){
694
694
 
695
695
  gl_Position = projectionMatrix * modelViewMatrix * transformed;
696
696
  }
697
- `), J = new n.PlaneBufferGeometry(1, 1, 200, 200);
698
- J.translate(0, -0.5, 0);
699
- var me = (
697
+ `), ue = new n.PlaneBufferGeometry(1, 1, 200, 200);
698
+ ue.translate(0, -0.5, 0);
699
+ var Ie = (
700
700
  /** @class */
701
701
  (function(o) {
702
- A(i, o);
702
+ Y(i, o);
703
703
  function i() {
704
704
  var e = o.call(this) || this;
705
705
  e.needsRender = !0;
706
- var t = e.outer = new n.Mesh(J, new n.ShaderMaterial({
706
+ var t = e.outer = new n.Mesh(ue, new n.ShaderMaterial({
707
707
  uniforms: {
708
708
  uTime: {
709
709
  value: 0
@@ -724,12 +724,12 @@ var me = (
724
724
  value: 1
725
725
  }
726
726
  },
727
- vertexShader: ie,
728
- fragmentShader: ne,
727
+ vertexShader: we,
728
+ fragmentShader: Se,
729
729
  transparent: !0,
730
730
  side: n.DoubleSide,
731
731
  depthWrite: !1
732
- })), r = e.inner = new n.Mesh(J, new n.ShaderMaterial({
732
+ })), r = e.inner = new n.Mesh(ue, new n.ShaderMaterial({
733
733
  uniforms: {
734
734
  uTime: {
735
735
  value: 0
@@ -750,8 +750,8 @@ var me = (
750
750
  value: 0.1
751
751
  }
752
752
  },
753
- vertexShader: ie,
754
- fragmentShader: ne,
753
+ vertexShader: we,
754
+ fragmentShader: Se,
755
755
  transparent: !0,
756
756
  side: n.DoubleSide,
757
757
  depthWrite: !1
@@ -801,43 +801,43 @@ var me = (
801
801
  }), i;
802
802
  })(n.Group)
803
803
  );
804
- function g(o, i) {
804
+ function q(o, i) {
805
805
  return o + i * (Math.random() - 0.5);
806
806
  }
807
- function S(o, i) {
807
+ function K(o, i) {
808
808
  var e = new n.Vector3(Math.random() - 0.5, Math.random() - 0.5, Math.random() - 0.5);
809
809
  return new n.Vector3().addVectors(o, new n.Vector3().multiplyVectors(i, e));
810
810
  }
811
- function w(o, i, e) {
811
+ function te(o, i, e) {
812
812
  return o * e + i * e * e / 2;
813
813
  }
814
- function ce(o, i, e) {
815
- return new n.Vector3(w(o.x, i.x, e), w(o.y, i.y, e), w(o.z, i.z, e));
814
+ function Ve(o, i, e) {
815
+ return new n.Vector3(te(o.x, i.x, e), te(o.y, i.y, e), te(o.z, i.z, e));
816
816
  }
817
- function Z(o, i) {
817
+ function oe(o, i) {
818
818
  for (var e = o.times.length, t = 0; t < e && i > o.times[t]; )
819
819
  t++;
820
820
  if (t == 0)
821
821
  return o.values[0];
822
822
  if (t == e)
823
823
  return o.values[e - 1];
824
- var r = (i - o.times[t - 1]) / (o.times[t] - o.times[t - 1]), s = o.values[t - 1], a = o.values[t];
825
- return typeof o.values[0] == "number" ? s + r * (a - s) : s.clone().lerp(a, r);
824
+ var r = (i - o.times[t - 1]) / (o.times[t] - o.times[t - 1]), u = o.values[t - 1], a = o.values[t];
825
+ return typeof o.values[0] == "number" ? u + r * (a - u) : u.clone().lerp(a, r);
826
826
  }
827
- var ve = (
827
+ var De = (
828
828
  /** @class */
829
829
  (function() {
830
- function o(i, e, t, r, s, a, l, u, v, d, p, c, f, m) {
831
- this.birthTime = i, this.deathAge = e, this.position = t.clone(), this.velocity = r.clone(), this.acceleration = s.clone(), this.angle = a, this.angleVelocity = l, this.angleAcceleration = u, this.color = v, this.colorTween = d, this.size = p, this.sizeTween = c, this.opacity = f, this.opacityTween = m;
830
+ function o(i, e, t, r, u, a, s, c, f, m, h, d, y, b) {
831
+ this.birthTime = i, this.deathAge = e, this.position = t.clone(), this.velocity = r.clone(), this.acceleration = u.clone(), this.angle = a, this.angleVelocity = s, this.angleAcceleration = c, this.color = f, this.colorTween = m, this.size = h, this.sizeTween = d, this.opacity = y, this.opacityTween = b;
832
832
  }
833
833
  return o.prototype.getAlive = function(i) {
834
834
  return this.deathAge > i - this.birthTime;
835
835
  }, o.prototype.getState = function(i) {
836
- var e = this.getAlive(i), t = Math.min(this.deathAge, i - this.birthTime), r = ce(this.velocity, this.acceleration, t).add(this.position), s = w(this.angleVelocity, this.angleAcceleration, t) + this.angle, a = (this.sizeTween ? Z(this.sizeTween, t) : 0) + this.size, l = (this.colorTween ? Z(this.colorTween, t) : new n.Vector3()).add(this.color), u = new n.Color().setHSL(l.x, l.y, l.z), v = (this.opacityTween ? Z(this.opacityTween, t) : 0) + this.opacity;
837
- return { alive: e, age: t, position: r, angle: s, size: a, color: u, opacity: v };
836
+ var e = this.getAlive(i), t = Math.min(this.deathAge, i - this.birthTime), r = Ve(this.velocity, this.acceleration, t).add(this.position), u = te(this.angleVelocity, this.angleAcceleration, t) + this.angle, a = (this.sizeTween ? oe(this.sizeTween, t) : 0) + this.size, s = (this.colorTween ? oe(this.colorTween, t) : new n.Vector3()).add(this.color), c = new n.Color().setHSL(s.x, s.y, s.z), f = (this.opacityTween ? oe(this.opacityTween, t) : 0) + this.opacity;
837
+ return { alive: e, age: t, position: r, angle: u, size: a, color: c, opacity: f };
838
838
  }, o;
839
839
  })()
840
- ), de = `
840
+ ), Re = `
841
841
  attribute vec3 color;
842
842
  attribute float opacity;
843
843
  attribute float size;
@@ -863,7 +863,7 @@ void main() {
863
863
  gl_PointSize = size * ( 300.0 / length( mvPosition.xyz ) );
864
864
  gl_Position = projectionMatrix * mvPosition;
865
865
  }
866
- `, pe = `
866
+ `, Ne = `
867
867
  varying vec4 vColor;
868
868
 
869
869
  #if defined(USE_MAP)
@@ -887,27 +887,27 @@ void main() {
887
887
  gl_FragColor = vColor * rotatedTexture;
888
888
  #endif
889
889
  }
890
- `, ye = (
890
+ `, Xe = (
891
891
  /** @class */
892
892
  (function(o) {
893
- A(i, o);
893
+ Y(i, o);
894
894
  function i(e) {
895
- var t = this, r, s, a, l, u, v, d, p, c, f, m, x, h, _, P, M, T, E, C, B, z, R, N, V, O, j, F, U, D, G, I, X, H, k, L, W, q, Y, y = new n.BufferGeometry();
896
- y.setAttribute("position", new n.BufferAttribute(new Float32Array(), 3)), y.setAttribute("alive", new n.BufferAttribute(new Float32Array(), 1)), y.setAttribute("color", new n.BufferAttribute(new Float32Array(), 3)), y.setAttribute("opacity", new n.BufferAttribute(new Float32Array(), 1)), y.setAttribute("size", new n.BufferAttribute(new Float32Array(), 1)), y.setAttribute("angle", new n.BufferAttribute(new Float32Array(), 1));
897
- var oe = new n.ShaderMaterial({
895
+ var t = this, r, u, a, s, c, f, m, h, d, y, b, S, g, _, C, B, E, F, P, T, M, z, V, D, R, N, U, O, j, G, I, X, H, k, v, p, w, x, A = new n.BufferGeometry();
896
+ A.setAttribute("position", new n.BufferAttribute(new Float32Array(), 3)), A.setAttribute("alive", new n.BufferAttribute(new Float32Array(), 1)), A.setAttribute("color", new n.BufferAttribute(new Float32Array(), 3)), A.setAttribute("opacity", new n.BufferAttribute(new Float32Array(), 1)), A.setAttribute("size", new n.BufferAttribute(new Float32Array(), 1)), A.setAttribute("angle", new n.BufferAttribute(new Float32Array(), 1));
897
+ var Z = new n.ShaderMaterial({
898
898
  uniforms: {
899
899
  map: { value: (r = e.texture) !== null && r !== void 0 ? r : null }
900
900
  },
901
901
  defines: {
902
902
  USE_MAP: !!e.texture
903
903
  },
904
- vertexShader: de,
905
- fragmentShader: pe,
904
+ vertexShader: Re,
905
+ fragmentShader: Ne,
906
906
  transparent: !0,
907
- blending: (s = e.blending) !== null && s !== void 0 ? s : n.NormalBlending,
907
+ blending: (u = e.blending) !== null && u !== void 0 ? u : n.NormalBlending,
908
908
  depthWrite: !1
909
909
  });
910
- return t = o.call(this, y, oe) || this, t.instances = [], t.needsRender = !0, t.birthTime = Date.now() / 1e3, t.disposed = !1, t.paused = !1, t.positionBase = (l = (a = e.positionBase) === null || a === void 0 ? void 0 : a.clone()) !== null && l !== void 0 ? l : new n.Vector3(), t.positionStyle = (u = e.positionStyle) !== null && u !== void 0 ? u : "CUBE", t.positionCubeSpread = (d = (v = e.positionCubeSpread) === null || v === void 0 ? void 0 : v.clone()) !== null && d !== void 0 ? d : new n.Vector3(), t.positionSphereSpread = (p = e.positionSphereSpread) !== null && p !== void 0 ? p : 0, t.velocityStyle = (c = e.velocityStyle) !== null && c !== void 0 ? c : "CUBE", t.velocityCubeBase = (m = (f = e.velocityCubeBase) === null || f === void 0 ? void 0 : f.clone()) !== null && m !== void 0 ? m : new n.Vector3(), t.velocityCubeSpread = (h = (x = e.velocityCubeSpread) === null || x === void 0 ? void 0 : x.clone()) !== null && h !== void 0 ? h : new n.Vector3(), t.velocitySphereBase = (_ = e.velocitySphereBase) !== null && _ !== void 0 ? _ : 0, t.velocitySphereSpread = (P = e.velocitySphereSpread) !== null && P !== void 0 ? P : 0, t.accelerationBase = (T = (M = e.accelerationBase) === null || M === void 0 ? void 0 : M.clone()) !== null && T !== void 0 ? T : new n.Vector3(), t.accelerationSpread = (C = (E = e.accelerationSpread) === null || E === void 0 ? void 0 : E.clone()) !== null && C !== void 0 ? C : new n.Vector3(), t.angleBase = (B = e.angleBase) !== null && B !== void 0 ? B : 0, t.angleSpread = (z = e.angleSpread) !== null && z !== void 0 ? z : 0, t.angleVelocityBase = (R = e.angleVelocityBase) !== null && R !== void 0 ? R : 0, t.angleVelocitySpread = (N = e.angleVelocitySpread) !== null && N !== void 0 ? N : 0, t.angleAccelerationBase = (V = e.angleAccelerationBase) !== null && V !== void 0 ? V : 0, t.angleAccelerationSpread = (O = e.angleAccelerationSpread) !== null && O !== void 0 ? O : 0, t.sizeBase = (j = e.sizeBase) !== null && j !== void 0 ? j : 0.1, t.sizeSpread = (F = e.sizeSpread) !== null && F !== void 0 ? F : 0, t.sizeTween = (U = e.sizeTween) !== null && U !== void 0 ? U : null, t.colorBase = (G = (D = e.colorBase) === null || D === void 0 ? void 0 : D.clone()) !== null && G !== void 0 ? G : new n.Vector3(), t.colorSpread = (X = (I = e.colorSpread) === null || I === void 0 ? void 0 : I.clone()) !== null && X !== void 0 ? X : new n.Vector3(), t.colorTween = (H = e.colorTween) !== null && H !== void 0 ? H : null, t.opacityBase = ((k = e.opacityBase) !== null && k !== void 0 ? k : e.opacityTween) ? 0 : 1, t.opacitySpread = (L = e.opacitySpread) !== null && L !== void 0 ? L : 0, t.opacityTween = (W = e.opacityTween) !== null && W !== void 0 ? W : null, t.particlesPerSecond = (q = e.particlesPerSecond) !== null && q !== void 0 ? q : 60, t.particleDeathAge = (Y = e.particleDeathAge) !== null && Y !== void 0 ? Y : 1, t;
910
+ return t = o.call(this, A, Z) || this, t.instances = [], t.needsRender = !0, t.birthTime = Date.now() / 1e3, t.disposed = !1, t.paused = !1, t.positionBase = (s = (a = e.positionBase) === null || a === void 0 ? void 0 : a.clone()) !== null && s !== void 0 ? s : new n.Vector3(), t.positionStyle = (c = e.positionStyle) !== null && c !== void 0 ? c : "CUBE", t.positionCubeSpread = (m = (f = e.positionCubeSpread) === null || f === void 0 ? void 0 : f.clone()) !== null && m !== void 0 ? m : new n.Vector3(), t.positionSphereSpread = (h = e.positionSphereSpread) !== null && h !== void 0 ? h : 0, t.velocityStyle = (d = e.velocityStyle) !== null && d !== void 0 ? d : "CUBE", t.velocityCubeBase = (b = (y = e.velocityCubeBase) === null || y === void 0 ? void 0 : y.clone()) !== null && b !== void 0 ? b : new n.Vector3(), t.velocityCubeSpread = (g = (S = e.velocityCubeSpread) === null || S === void 0 ? void 0 : S.clone()) !== null && g !== void 0 ? g : new n.Vector3(), t.velocitySphereBase = (_ = e.velocitySphereBase) !== null && _ !== void 0 ? _ : 0, t.velocitySphereSpread = (C = e.velocitySphereSpread) !== null && C !== void 0 ? C : 0, t.accelerationBase = (E = (B = e.accelerationBase) === null || B === void 0 ? void 0 : B.clone()) !== null && E !== void 0 ? E : new n.Vector3(), t.accelerationSpread = (P = (F = e.accelerationSpread) === null || F === void 0 ? void 0 : F.clone()) !== null && P !== void 0 ? P : new n.Vector3(), t.angleBase = (T = e.angleBase) !== null && T !== void 0 ? T : 0, t.angleSpread = (M = e.angleSpread) !== null && M !== void 0 ? M : 0, t.angleVelocityBase = (z = e.angleVelocityBase) !== null && z !== void 0 ? z : 0, t.angleVelocitySpread = (V = e.angleVelocitySpread) !== null && V !== void 0 ? V : 0, t.angleAccelerationBase = (D = e.angleAccelerationBase) !== null && D !== void 0 ? D : 0, t.angleAccelerationSpread = (R = e.angleAccelerationSpread) !== null && R !== void 0 ? R : 0, t.sizeBase = (N = e.sizeBase) !== null && N !== void 0 ? N : 0.1, t.sizeSpread = (U = e.sizeSpread) !== null && U !== void 0 ? U : 0, t.sizeTween = (O = e.sizeTween) !== null && O !== void 0 ? O : null, t.colorBase = (G = (j = e.colorBase) === null || j === void 0 ? void 0 : j.clone()) !== null && G !== void 0 ? G : new n.Vector3(), t.colorSpread = (X = (I = e.colorSpread) === null || I === void 0 ? void 0 : I.clone()) !== null && X !== void 0 ? X : new n.Vector3(), t.colorTween = (H = e.colorTween) !== null && H !== void 0 ? H : null, t.opacityBase = ((k = e.opacityBase) !== null && k !== void 0 ? k : e.opacityTween) ? 0 : 1, t.opacitySpread = (v = e.opacitySpread) !== null && v !== void 0 ? v : 0, t.opacityTween = (p = e.opacityTween) !== null && p !== void 0 ? p : null, t.particlesPerSecond = (w = e.particlesPerSecond) !== null && w !== void 0 ? w : 60, t.particleDeathAge = (x = e.particleDeathAge) !== null && x !== void 0 ? x : 1, t;
911
911
  }
912
912
  return Object.defineProperty(i.prototype, "texture", {
913
913
  /** 贴图素材 */
@@ -933,29 +933,29 @@ void main() {
933
933
  var t = this.positionBase.clone();
934
934
  switch (this.positionStyle) {
935
935
  case "CUBE": {
936
- t = S(this.positionBase, this.positionCubeSpread);
936
+ t = K(this.positionBase, this.positionCubeSpread);
937
937
  break;
938
938
  }
939
939
  case "SPHERE": {
940
- var r = 2 * Math.random() - 1, s = Math.PI * 2 * Math.random(), a = Math.sqrt(1 - r * r), l = new n.Vector3(a * Math.cos(s), a * Math.sin(s), r);
941
- t = new n.Vector3().addVectors(this.positionBase, l.multiplyScalar(this.positionSphereSpread));
940
+ var r = 2 * Math.random() - 1, u = Math.PI * 2 * Math.random(), a = Math.sqrt(1 - r * r), s = new n.Vector3(a * Math.cos(u), a * Math.sin(u), r);
941
+ t = new n.Vector3().addVectors(this.positionBase, s.multiplyScalar(this.positionSphereSpread));
942
942
  break;
943
943
  }
944
944
  }
945
- var u = new n.Vector3();
945
+ var c = new n.Vector3();
946
946
  switch (this.velocityStyle) {
947
947
  case "CUBE": {
948
- u = S(this.velocityCubeBase, this.velocityCubeSpread);
948
+ c = K(this.velocityCubeBase, this.velocityCubeSpread);
949
949
  break;
950
950
  }
951
951
  case "SPHERE": {
952
- var v = new n.Vector3().subVectors(t, this.positionBase), d = g(this.velocitySphereBase, this.velocitySphereSpread);
953
- u = v.normalize().multiplyScalar(d);
952
+ var f = new n.Vector3().subVectors(t, this.positionBase), m = q(this.velocitySphereBase, this.velocitySphereSpread);
953
+ c = f.normalize().multiplyScalar(m);
954
954
  break;
955
955
  }
956
956
  }
957
- var p = new ve(e, this.particleDeathAge, t, u, S(this.accelerationBase, this.accelerationSpread), g(this.angleBase, this.angleSpread), g(this.angleVelocityBase, this.angleVelocitySpread), g(this.angleAccelerationBase, this.angleAccelerationSpread), S(this.colorBase, this.colorSpread), this.colorTween, g(this.sizeBase, this.sizeSpread), this.sizeTween, g(this.opacityBase, this.opacitySpread), this.opacityTween);
958
- return p;
957
+ var h = new De(e, this.particleDeathAge, t, c, K(this.accelerationBase, this.accelerationSpread), q(this.angleBase, this.angleSpread), q(this.angleVelocityBase, this.angleVelocitySpread), q(this.angleAccelerationBase, this.angleAccelerationSpread), K(this.colorBase, this.colorSpread), this.colorTween, q(this.sizeBase, this.sizeSpread), this.sizeTween, q(this.opacityBase, this.opacitySpread), this.opacityTween);
958
+ return h;
959
959
  }, i.prototype.pause = function() {
960
960
  this.paused !== !0 && (this.paused = !0, this.birthTime = Date.now() / 1e3);
961
961
  }, i.prototype.play = function() {
@@ -965,54 +965,54 @@ void main() {
965
965
  e /= 1e3;
966
966
  var t = e - this.birthTime, r = Math.ceil(this.particlesPerSecond * this.particleDeathAge);
967
967
  if (this.geometry.attributes.position.count < r) {
968
- var s = new Float32Array(r * 3);
969
- s.set(this.geometry.attributes.position.array, 0);
970
- var a = new n.BufferAttribute(s, 3);
968
+ var u = new Float32Array(r * 3);
969
+ u.set(this.geometry.attributes.position.array, 0);
970
+ var a = new n.BufferAttribute(u, 3);
971
971
  a.needsUpdate = !0, this.geometry.setAttribute("position", a);
972
972
  }
973
973
  if (this.geometry.attributes.alive.count < r) {
974
- var l = new Float32Array(r);
975
- l.set(this.geometry.attributes.alive.array, 0);
976
- var a = new n.BufferAttribute(l, 1);
974
+ var s = new Float32Array(r);
975
+ s.set(this.geometry.attributes.alive.array, 0);
976
+ var a = new n.BufferAttribute(s, 1);
977
977
  a.needsUpdate = !0, this.geometry.setAttribute("alive", a);
978
978
  }
979
979
  if (this.geometry.attributes.color.count < r) {
980
- var u = new Float32Array(r * 3);
981
- u.set(this.geometry.attributes.color.array, 0);
982
- var a = new n.BufferAttribute(u, 3);
980
+ var c = new Float32Array(r * 3);
981
+ c.set(this.geometry.attributes.color.array, 0);
982
+ var a = new n.BufferAttribute(c, 3);
983
983
  a.needsUpdate = !0, this.geometry.setAttribute("color", a);
984
984
  }
985
985
  if (this.geometry.attributes.opacity.count < r) {
986
- var v = new Float32Array(r);
987
- v.set(this.geometry.attributes.opacity.array, 0);
988
- var a = new n.BufferAttribute(v, 1);
986
+ var f = new Float32Array(r);
987
+ f.set(this.geometry.attributes.opacity.array, 0);
988
+ var a = new n.BufferAttribute(f, 1);
989
989
  a.needsUpdate = !0, this.geometry.setAttribute("opacity", a);
990
990
  }
991
991
  if (this.geometry.attributes.size.count < r) {
992
- var d = new Float32Array(r);
993
- d.set(this.geometry.attributes.size.array, 0);
994
- var a = new n.BufferAttribute(d, 1);
992
+ var m = new Float32Array(r);
993
+ m.set(this.geometry.attributes.size.array, 0);
994
+ var a = new n.BufferAttribute(m, 1);
995
995
  a.needsUpdate = !0, this.geometry.setAttribute("size", a);
996
996
  }
997
997
  if (this.geometry.attributes.angle.count < r) {
998
- var p = new Float32Array(r);
999
- p.set(this.geometry.attributes.angle.array, 0);
1000
- var a = new n.BufferAttribute(p, 1);
998
+ var h = new Float32Array(r);
999
+ h.set(this.geometry.attributes.angle.array, 0);
1000
+ var a = new n.BufferAttribute(h, 1);
1001
1001
  a.needsUpdate = !0, this.geometry.setAttribute("angle", a);
1002
1002
  }
1003
1003
  this.instances.length < r && (this.instances.length = r);
1004
- for (var c = 0; c < this.instances.length; c++) {
1005
- var f = this.instances[c];
1006
- if (c < r && this.paused === !1 && (f === void 0 || f.getAlive(e) === !1)) {
1007
- var m = this.particleDeathAge / r * c;
1008
- if (t > m) {
1009
- var x = e - (t - m) % this.particleDeathAge;
1010
- this.instances[c] = f = this.createInstance(x);
1004
+ for (var d = 0; d < this.instances.length; d++) {
1005
+ var y = this.instances[d];
1006
+ if (d < r && this.paused === !1 && (y === void 0 || y.getAlive(e) === !1)) {
1007
+ var b = this.particleDeathAge / r * d;
1008
+ if (t > b) {
1009
+ var S = e - (t - b) % this.particleDeathAge;
1010
+ this.instances[d] = y = this.createInstance(S);
1011
1011
  }
1012
1012
  }
1013
- if (f) {
1014
- var h = f.getState(e), s = h.position, l = h.alive, u = h.color, v = h.opacity, d = h.size, p = h.angle;
1015
- this.geometry.attributes.position.setXYZ(c, s.x, s.y, s.z), this.geometry.attributes.position.needsUpdate = !0, this.geometry.attributes.alive.setX(c, l ? 1 : 0), this.geometry.attributes.alive.needsUpdate = !0, this.geometry.attributes.color.setXYZ(c, u.r, u.g, u.b), this.geometry.attributes.color.needsUpdate = !0, this.geometry.attributes.opacity.setX(c, v), this.geometry.attributes.opacity.needsUpdate = !0, this.geometry.attributes.size.setX(c, d), this.geometry.attributes.size.needsUpdate = !0, this.geometry.attributes.angle.setX(c, p), this.geometry.attributes.angle.needsUpdate = !0;
1013
+ if (y) {
1014
+ var g = y.getState(e), u = g.position, s = g.alive, c = g.color, f = g.opacity, m = g.size, h = g.angle;
1015
+ this.geometry.attributes.position.setXYZ(d, u.x, u.y, u.z), this.geometry.attributes.position.needsUpdate = !0, this.geometry.attributes.alive.setX(d, s ? 1 : 0), this.geometry.attributes.alive.needsUpdate = !0, this.geometry.attributes.color.setXYZ(d, c.r, c.g, c.b), this.geometry.attributes.color.needsUpdate = !0, this.geometry.attributes.opacity.setX(d, f), this.geometry.attributes.opacity.needsUpdate = !0, this.geometry.attributes.size.setX(d, m), this.geometry.attributes.size.needsUpdate = !0, this.geometry.attributes.angle.setX(d, h), this.geometry.attributes.angle.needsUpdate = !0;
1016
1016
  }
1017
1017
  }
1018
1018
  this.geometry.computeBoundingBox(), this.geometry.boundingSphere || (this.geometry.boundingSphere = new n.Sphere()), this.geometry.boundingBox.getBoundingSphere(this.geometry.boundingSphere), this.needsRender = !0;
@@ -1023,9 +1023,215 @@ void main() {
1023
1023
  }, i;
1024
1024
  })(n.Points)
1025
1025
  );
1026
+ function $(o, i) {
1027
+ return o + i * (Math.random() - 0.5);
1028
+ }
1029
+ function ee(o, i) {
1030
+ var e = new n.Vector3(Math.random() - 0.5, Math.random() - 0.5, Math.random() - 0.5);
1031
+ return new n.Vector3().addVectors(o, new n.Vector3().multiplyVectors(i, e));
1032
+ }
1033
+ var Ue = `
1034
+ // 粒子初始属性
1035
+ attribute vec3 initialVelocity;
1036
+ attribute vec3 acceleration;
1037
+ attribute float birthTime;
1038
+ attribute float lifeTime;
1039
+ attribute float initialSize;
1040
+ attribute float sizeGrowth;
1041
+ attribute vec3 initialColor;
1042
+ attribute float initialOpacity;
1043
+ attribute float initialAngle;
1044
+ attribute float angleVelocity;
1045
+ attribute float particleIndex;
1046
+
1047
+ // 全局uniform参数
1048
+ uniform float uTime;
1049
+
1050
+ // 传递给fragment shader的变量
1051
+ varying vec4 vColor;
1052
+ varying float vAngle;
1053
+
1054
+ // 简单噪声函数
1055
+ float random(vec2 st) {
1056
+ return fract(sin(dot(st.xy, vec2(12.9898,78.233))) * 43758.5453123);
1057
+ }
1058
+
1059
+ // HSL转RGB函数
1060
+ vec3 hsl2rgb(vec3 c) {
1061
+ vec3 rgb = clamp(abs(mod(c.x*6.0+vec3(0.0,4.0,2.0), 6.0)-3.0)-1.0, 0.0, 1.0);
1062
+ return c.z + c.y * (rgb-0.5)*(1.0-abs(2.0*c.z-1.0));
1063
+ }
1064
+
1065
+ void main() {
1066
+ // 计算粒子的实际年龄,考虑循环重生
1067
+ float totalCycleTime = lifeTime;
1068
+ float adjustedTime = uTime + birthTime;
1069
+ float cycleTime = mod(adjustedTime, totalCycleTime);
1070
+ float age = cycleTime;
1071
+ float normalizedAge = clamp(age / lifeTime, 0.0, 1.0);
1072
+
1073
+ // 如果粒子年龄超过生命周期,让它重新开始
1074
+ if (age > lifeTime) {
1075
+ age = 0.0;
1076
+ normalizedAge = 0.0;
1077
+ }
1078
+
1079
+ // 计算当前位置(物理模拟)
1080
+ vec3 currentVelocity = initialVelocity + acceleration * age;
1081
+
1082
+ vec3 currentPosition = position + currentVelocity * age;
1083
+
1084
+ // 计算当前大小(随时间变化)
1085
+ float currentSize = initialSize + sizeGrowth * normalizedAge;
1086
+
1087
+ // 计算当前角度
1088
+ vAngle = initialAngle + angleVelocity * age;
1089
+
1090
+ // 计算当前颜色和透明度(生命周期渐变)
1091
+ vec3 currentColor = initialColor;
1092
+ float currentOpacity = initialOpacity;
1093
+
1094
+ // 生命周期透明度渐变(出生和死亡时渐变)
1095
+ if (normalizedAge < 0.1) {
1096
+ currentOpacity *= normalizedAge / 0.1; // 淡入
1097
+ } else if (normalizedAge > 0.8) {
1098
+ currentOpacity *= (1.0 - normalizedAge) / 0.2; // 淡出
1099
+ }
1100
+
1101
+ // 将HSL颜色转换为RGB
1102
+ vec3 rgbColor = hsl2rgb(currentColor);
1103
+ vColor = vec4(rgbColor, currentOpacity);
1104
+
1105
+ // 计算最终位置和大小
1106
+ vec4 mvPosition = modelViewMatrix * vec4(currentPosition, 1.0);
1107
+ gl_PointSize = currentSize * (300.0 / length(mvPosition.xyz));
1108
+ gl_Position = projectionMatrix * mvPosition;
1109
+ }
1110
+ `, Oe = `
1111
+ varying vec4 vColor;
1112
+ varying float vAngle;
1113
+
1114
+ #if defined(USE_MAP)
1115
+ uniform sampler2D map;
1116
+ #endif
1117
+
1118
+ void main() {
1119
+ // 如果粒子透明度为0,直接丢弃
1120
+ if (vColor.a <= 0.0) {
1121
+ discard;
1122
+ }
1123
+
1124
+ gl_FragColor = vColor;
1125
+
1126
+ #if defined(USE_MAP)
1127
+ float c = cos(vAngle);
1128
+ float s = sin(vAngle);
1129
+
1130
+ // 旋转UV坐标以旋转纹理
1131
+ vec2 rotatedUV = vec2(
1132
+ c * (gl_PointCoord.x - 0.5) + s * (gl_PointCoord.y - 0.5) + 0.5,
1133
+ c * (gl_PointCoord.y - 0.5) - s * (gl_PointCoord.x - 0.5) + 0.5
1134
+ );
1135
+
1136
+ vec4 textureColor = texture2D(map, rotatedUV);
1137
+ gl_FragColor = vColor * textureColor;
1138
+ #endif
1139
+ }
1140
+ `, He = (
1141
+ /** @class */
1142
+ (function(o) {
1143
+ Y(i, o);
1144
+ function i(e) {
1145
+ for (var t = this, r, u, a, s, c, f, m, h, d, y, b, S, g, _, C, B, E, F, P, T, M, z, V, D, R, N, U, O, j, G, I, X, H, k, v = Math.ceil(((r = e.particlesPerSecond) !== null && r !== void 0 ? r : 60) * ((u = e.particleDeathAge) !== null && u !== void 0 ? u : 1)), p = new n.BufferGeometry(), w = new Float32Array(v * 3), x = new Float32Array(v * 3), A = new Float32Array(v * 3), Z = new Float32Array(v), ce = new Float32Array(v), de = new Float32Array(v), ve = new Float32Array(v), J = new Float32Array(v * 3), fe = new Float32Array(v), pe = new Float32Array(v), me = new Float32Array(v), he = new Float32Array(v), l = 0; l < v; l++) {
1146
+ var _e = ((a = e.particleDeathAge) !== null && a !== void 0 ? a : 1) / v * l;
1147
+ Z[l] = _e, ce[l] = (s = e.particleDeathAge) !== null && s !== void 0 ? s : 1, he[l] = l;
1148
+ var L = (f = (c = e.positionBase) === null || c === void 0 ? void 0 : c.clone()) !== null && f !== void 0 ? f : new n.Vector3();
1149
+ switch ((m = e.positionStyle) !== null && m !== void 0 ? m : "CUBE") {
1150
+ case "CUBE": {
1151
+ L = ee((h = e.positionBase) !== null && h !== void 0 ? h : new n.Vector3(), (d = e.positionCubeSpread) !== null && d !== void 0 ? d : new n.Vector3());
1152
+ break;
1153
+ }
1154
+ case "SPHERE": {
1155
+ var ne = 2 * Math.random() - 1, ye = Math.PI * 2 * Math.random(), ge = Math.sqrt(1 - ne * ne), Ce = new n.Vector3(ge * Math.cos(ye), ge * Math.sin(ye), ne);
1156
+ L = new n.Vector3().addVectors((y = e.positionBase) !== null && y !== void 0 ? y : new n.Vector3(), Ce.multiplyScalar((b = e.positionSphereSpread) !== null && b !== void 0 ? b : 0));
1157
+ break;
1158
+ }
1159
+ }
1160
+ w[l * 3] = L.x, w[l * 3 + 1] = L.y, w[l * 3 + 2] = L.z;
1161
+ var W = new n.Vector3();
1162
+ switch ((S = e.velocityStyle) !== null && S !== void 0 ? S : "CUBE") {
1163
+ case "CUBE": {
1164
+ W = ee((g = e.velocityCubeBase) !== null && g !== void 0 ? g : new n.Vector3(), (_ = e.velocityCubeSpread) !== null && _ !== void 0 ? _ : new n.Vector3());
1165
+ break;
1166
+ }
1167
+ case "SPHERE": {
1168
+ var Be = new n.Vector3().subVectors(L, (C = e.positionBase) !== null && C !== void 0 ? C : new n.Vector3()), Ee = $((B = e.velocitySphereBase) !== null && B !== void 0 ? B : 0, (E = e.velocitySphereSpread) !== null && E !== void 0 ? E : 0);
1169
+ W = Be.normalize().multiplyScalar(Ee);
1170
+ break;
1171
+ }
1172
+ }
1173
+ x[l * 3] = W.x, x[l * 3 + 1] = W.y, x[l * 3 + 2] = W.z;
1174
+ var ie = ee((F = e.accelerationBase) !== null && F !== void 0 ? F : new n.Vector3(), (P = e.accelerationSpread) !== null && P !== void 0 ? P : new n.Vector3());
1175
+ A[l * 3] = ie.x, A[l * 3 + 1] = ie.y, A[l * 3 + 2] = ie.z, de[l] = $((T = e.sizeBase) !== null && T !== void 0 ? T : 0.1, (M = e.sizeSpread) !== null && M !== void 0 ? M : 0), ve[l] = (z = e.sizeGrowth) !== null && z !== void 0 ? z : 0;
1176
+ var re = ee((V = e.colorBase) !== null && V !== void 0 ? V : new n.Vector3(), (D = e.colorSpread) !== null && D !== void 0 ? D : new n.Vector3());
1177
+ J[l * 3] = re.x, J[l * 3 + 1] = re.y, J[l * 3 + 2] = re.z, fe[l] = $((R = e.opacityBase) !== null && R !== void 0 ? R : 1, (N = e.opacitySpread) !== null && N !== void 0 ? N : 0), pe[l] = $((U = e.angleBase) !== null && U !== void 0 ? U : 0, (O = e.angleSpread) !== null && O !== void 0 ? O : 0), me[l] = $((j = e.angleVelocityBase) !== null && j !== void 0 ? j : 0, (G = e.angleVelocitySpread) !== null && G !== void 0 ? G : 0);
1178
+ }
1179
+ p.setAttribute("position", new n.BufferAttribute(w, 3)), p.setAttribute("initialVelocity", new n.BufferAttribute(x, 3)), p.setAttribute("acceleration", new n.BufferAttribute(A, 3)), p.setAttribute("birthTime", new n.BufferAttribute(Z, 1)), p.setAttribute("lifeTime", new n.BufferAttribute(ce, 1)), p.setAttribute("initialSize", new n.BufferAttribute(de, 1)), p.setAttribute("sizeGrowth", new n.BufferAttribute(ve, 1)), p.setAttribute("initialColor", new n.BufferAttribute(J, 3)), p.setAttribute("initialOpacity", new n.BufferAttribute(fe, 1)), p.setAttribute("initialAngle", new n.BufferAttribute(pe, 1)), p.setAttribute("angleVelocity", new n.BufferAttribute(me, 1)), p.setAttribute("particleIndex", new n.BufferAttribute(he, 1));
1180
+ var Fe = new n.ShaderMaterial({
1181
+ uniforms: {
1182
+ map: { value: (I = e.texture) !== null && I !== void 0 ? I : null },
1183
+ uTime: { value: 0 }
1184
+ },
1185
+ defines: {
1186
+ USE_MAP: !!e.texture
1187
+ },
1188
+ vertexShader: Ue,
1189
+ fragmentShader: Oe,
1190
+ transparent: !0,
1191
+ blending: (X = e.blending) !== null && X !== void 0 ? X : n.NormalBlending,
1192
+ depthWrite: !1
1193
+ });
1194
+ return t = o.call(this, p, Fe) || this, t.needsRender = !0, t.startTime = Date.now() / 1e3, t.disposed = !1, t.paused = !1, t.particleCount = v, t.particlesPerSecond = (H = e.particlesPerSecond) !== null && H !== void 0 ? H : 60, t.particleDeathAge = (k = e.particleDeathAge) !== null && k !== void 0 ? k : 1, t;
1195
+ }
1196
+ return Object.defineProperty(i.prototype, "texture", {
1197
+ /** 贴图素材 */
1198
+ get: function() {
1199
+ return this.material.uniforms.map.value;
1200
+ },
1201
+ set: function(e) {
1202
+ this.material.uniforms.map.value = e, e === null ? this.material.defines.USE_MAP !== !1 && (this.material.defines.USE_MAP = !1, this.material.needsUpdate = !0) : this.material.defines.USE_MAP !== !0 && (this.material.defines.USE_MAP = !0, this.material.needsUpdate = !0);
1203
+ },
1204
+ enumerable: !1,
1205
+ configurable: !0
1206
+ }), Object.defineProperty(i.prototype, "blending", {
1207
+ /** 材质混合方式 */
1208
+ get: function() {
1209
+ return this.material.blending;
1210
+ },
1211
+ set: function(e) {
1212
+ this.material.blending = e;
1213
+ },
1214
+ enumerable: !1,
1215
+ configurable: !0
1216
+ }), i.prototype.pause = function() {
1217
+ this.paused !== !0 && (this.paused = !0, this.startTime = Date.now() / 1e3);
1218
+ }, i.prototype.play = function() {
1219
+ this.paused !== !1 && (this.paused = !1, this.startTime = Date.now() / 1e3);
1220
+ }, i.prototype.setTime = function(e) {
1221
+ if (!(this.disposed || this.paused)) {
1222
+ var t = e / 1e3, r = t - this.startTime;
1223
+ this.material.uniforms.uTime.value = r, this.needsRender = !0;
1224
+ }
1225
+ }, i.prototype.dispose = function() {
1226
+ var e;
1227
+ this.disposed = !0, this.geometry.dispose(), (e = this.texture) === null || e === void 0 || e.dispose(), this.material.dispose();
1228
+ }, i;
1229
+ })(n.Points)
1230
+ );
1026
1231
  export {
1027
- me as Airflow,
1028
- fe as Flame,
1029
- ye as Particle,
1030
- he as SpotLight
1232
+ Ie as Airflow,
1233
+ je as Flame,
1234
+ Xe as Particle,
1235
+ He as ParticleGPU,
1236
+ Ge as SpotLight
1031
1237
  };