@codexo/exojs 0.7.13 → 0.8.2

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 (544) hide show
  1. package/CHANGELOG.md +637 -124
  2. package/README.md +19 -19
  3. package/dist/esm/animation/Easing.js +13 -21
  4. package/dist/esm/animation/Easing.js.map +1 -1
  5. package/dist/esm/animation/Tween.d.ts +3 -3
  6. package/dist/esm/animation/Tween.js +7 -5
  7. package/dist/esm/animation/Tween.js.map +1 -1
  8. package/dist/esm/animation/TweenManager.js +1 -1
  9. package/dist/esm/animation/TweenManager.js.map +1 -1
  10. package/dist/esm/animation/types.js.map +1 -1
  11. package/dist/esm/audio/AbstractMedia.d.ts +1 -1
  12. package/dist/esm/audio/AbstractMedia.js +1 -1
  13. package/dist/esm/audio/AbstractMedia.js.map +1 -1
  14. package/dist/esm/audio/AudioAnalyser.d.ts +1 -1
  15. package/dist/esm/audio/AudioAnalyser.js +2 -2
  16. package/dist/esm/audio/AudioAnalyser.js.map +1 -1
  17. package/dist/esm/audio/AudioBus.d.ts +1 -1
  18. package/dist/esm/audio/AudioBus.js.map +1 -1
  19. package/dist/esm/audio/AudioFilter.js +3 -1
  20. package/dist/esm/audio/AudioFilter.js.map +1 -1
  21. package/dist/esm/audio/AudioListener.d.ts +1 -1
  22. package/dist/esm/audio/AudioListener.js +5 -3
  23. package/dist/esm/audio/AudioListener.js.map +1 -1
  24. package/dist/esm/audio/AudioManager.js.map +1 -1
  25. package/dist/esm/audio/BeatDetector.d.ts +4 -4
  26. package/dist/esm/audio/BeatDetector.js +68 -44
  27. package/dist/esm/audio/BeatDetector.js.map +1 -1
  28. package/dist/esm/audio/Envelope.d.ts +1 -1
  29. package/dist/esm/audio/Envelope.js +2 -2
  30. package/dist/esm/audio/Envelope.js.map +1 -1
  31. package/dist/esm/audio/Music.d.ts +1 -1
  32. package/dist/esm/audio/Music.js +1 -1
  33. package/dist/esm/audio/Music.js.map +1 -1
  34. package/dist/esm/audio/OscillatorSound.d.ts +2 -2
  35. package/dist/esm/audio/OscillatorSound.js.map +1 -1
  36. package/dist/esm/audio/Sound.d.ts +40 -2
  37. package/dist/esm/audio/Sound.js +69 -9
  38. package/dist/esm/audio/Sound.js.map +1 -1
  39. package/dist/esm/audio/audio-context.js +1 -1
  40. package/dist/esm/audio/audio-context.js.map +1 -1
  41. package/dist/esm/audio/crossFade.js +1 -1
  42. package/dist/esm/audio/crossFade.js.map +1 -1
  43. package/dist/esm/audio/dsp/mel.d.ts +2 -2
  44. package/dist/esm/audio/dsp/tempogram.d.ts +2 -2
  45. package/dist/esm/audio/filters/ChorusFilter.js +12 -4
  46. package/dist/esm/audio/filters/ChorusFilter.js.map +1 -1
  47. package/dist/esm/audio/filters/CompressorFilter.d.ts +9 -0
  48. package/dist/esm/audio/filters/CompressorFilter.js +11 -0
  49. package/dist/esm/audio/filters/CompressorFilter.js.map +1 -1
  50. package/dist/esm/audio/filters/DelayFilter.js.map +1 -1
  51. package/dist/esm/audio/filters/DuckingFilter.d.ts +1 -1
  52. package/dist/esm/audio/filters/DuckingFilter.js +13 -5
  53. package/dist/esm/audio/filters/DuckingFilter.js.map +1 -1
  54. package/dist/esm/audio/filters/EqualizerFilter.js.map +1 -1
  55. package/dist/esm/audio/filters/GranularFilter.js +30 -14
  56. package/dist/esm/audio/filters/GranularFilter.js.map +1 -1
  57. package/dist/esm/audio/filters/HighpassFilter.js.map +1 -1
  58. package/dist/esm/audio/filters/LowpassFilter.js.map +1 -1
  59. package/dist/esm/audio/filters/PitchShiftFilter.js +14 -10
  60. package/dist/esm/audio/filters/PitchShiftFilter.js.map +1 -1
  61. package/dist/esm/audio/filters/ReverbFilter.js.map +1 -1
  62. package/dist/esm/audio/filters/VocoderFilter.d.ts +2 -2
  63. package/dist/esm/audio/filters/VocoderFilter.js +20 -12
  64. package/dist/esm/audio/filters/VocoderFilter.js.map +1 -1
  65. package/dist/esm/audio/filters/WorkletFilter.js +5 -6
  66. package/dist/esm/audio/filters/WorkletFilter.js.map +1 -1
  67. package/dist/esm/audio/filters/index.d.ts +7 -7
  68. package/dist/esm/audio/index.d.ts +9 -9
  69. package/dist/esm/audio/worklet/registerWorklet.js +7 -3
  70. package/dist/esm/audio/worklet/registerWorklet.js.map +1 -1
  71. package/dist/esm/core/Application.d.ts +13 -13
  72. package/dist/esm/core/Application.js +24 -16
  73. package/dist/esm/core/Application.js.map +1 -1
  74. package/dist/esm/core/Bounds.d.ts +1 -1
  75. package/dist/esm/core/Bounds.js +1 -3
  76. package/dist/esm/core/Bounds.js.map +1 -1
  77. package/dist/esm/core/Clock.js +1 -1
  78. package/dist/esm/core/Clock.js.map +1 -1
  79. package/dist/esm/core/Color.js +2 -5
  80. package/dist/esm/core/Color.js.map +1 -1
  81. package/dist/esm/core/Scene.d.ts +10 -10
  82. package/dist/esm/core/Scene.js +1 -1
  83. package/dist/esm/core/Scene.js.map +1 -1
  84. package/dist/esm/core/SceneManager.d.ts +4 -4
  85. package/dist/esm/core/SceneManager.js +39 -33
  86. package/dist/esm/core/SceneManager.js.map +1 -1
  87. package/dist/esm/core/SceneNode.d.ts +8 -8
  88. package/dist/esm/core/SceneNode.js +39 -29
  89. package/dist/esm/core/SceneNode.js.map +1 -1
  90. package/dist/esm/core/Signal.d.ts +3 -3
  91. package/dist/esm/core/Signal.js +3 -3
  92. package/dist/esm/core/Signal.js.map +1 -1
  93. package/dist/esm/core/Time.js +6 -6
  94. package/dist/esm/core/Time.js.map +1 -1
  95. package/dist/esm/core/Timer.d.ts +1 -1
  96. package/dist/esm/core/Timer.js +1 -1
  97. package/dist/esm/core/Timer.js.map +1 -1
  98. package/dist/esm/core/capabilities.js +2 -4
  99. package/dist/esm/core/capabilities.js.map +1 -1
  100. package/dist/esm/core/index.d.ts +2 -2
  101. package/dist/esm/core/utils.d.ts +4 -4
  102. package/dist/esm/core/utils.js +10 -10
  103. package/dist/esm/core/utils.js.map +1 -1
  104. package/dist/esm/debug/BoundingBoxesLayer.d.ts +3 -3
  105. package/dist/esm/debug/BoundingBoxesLayer.js +6 -13
  106. package/dist/esm/debug/BoundingBoxesLayer.js.map +1 -1
  107. package/dist/esm/debug/DebugLayer.d.ts +1 -1
  108. package/dist/esm/debug/DebugLayer.js.map +1 -1
  109. package/dist/esm/debug/DebugOverlay.d.ts +2 -2
  110. package/dist/esm/debug/DebugOverlay.js +2 -2
  111. package/dist/esm/debug/DebugOverlay.js.map +1 -1
  112. package/dist/esm/debug/HitTestLayer.d.ts +3 -3
  113. package/dist/esm/debug/HitTestLayer.js +3 -10
  114. package/dist/esm/debug/HitTestLayer.js.map +1 -1
  115. package/dist/esm/debug/PerformanceLayer.d.ts +2 -2
  116. package/dist/esm/debug/PerformanceLayer.js +6 -6
  117. package/dist/esm/debug/PerformanceLayer.js.map +1 -1
  118. package/dist/esm/debug/PointerStackLayer.d.ts +3 -3
  119. package/dist/esm/debug/PointerStackLayer.js +3 -3
  120. package/dist/esm/debug/PointerStackLayer.js.map +1 -1
  121. package/dist/esm/debug/index.d.ts +3 -3
  122. package/dist/esm/debug/index.js +3 -3
  123. package/dist/esm/index.d.ts +1 -1
  124. package/dist/esm/index.js +106 -84
  125. package/dist/esm/index.js.map +1 -1
  126. package/dist/esm/input/ArcadeStickGamepadMapping.js.map +1 -1
  127. package/dist/esm/input/GameCubeGamepadMapping.d.ts +1 -1
  128. package/dist/esm/input/GameCubeGamepadMapping.js +1 -1
  129. package/dist/esm/input/GameCubeGamepadMapping.js.map +1 -1
  130. package/dist/esm/input/Gamepad.d.ts +7 -7
  131. package/dist/esm/input/Gamepad.js +10 -6
  132. package/dist/esm/input/Gamepad.js.map +1 -1
  133. package/dist/esm/input/GamepadAxis.js +1 -1
  134. package/dist/esm/input/GamepadAxis.js.map +1 -1
  135. package/dist/esm/input/GamepadButton.js +1 -1
  136. package/dist/esm/input/GamepadButton.js.map +1 -1
  137. package/dist/esm/input/GamepadDefinitions.d.ts +4 -4
  138. package/dist/esm/input/GamepadDefinitions.js +12 -14
  139. package/dist/esm/input/GamepadDefinitions.js.map +1 -1
  140. package/dist/esm/input/GamepadMapping.d.ts +5 -5
  141. package/dist/esm/input/GamepadMapping.js.map +1 -1
  142. package/dist/esm/input/GamepadPromptLayouts.d.ts +2 -2
  143. package/dist/esm/input/GamepadPromptLayouts.js +8 -8
  144. package/dist/esm/input/GamepadPromptLayouts.js.map +1 -1
  145. package/dist/esm/input/GenericDualAnalogGamepadMapping.js.map +1 -1
  146. package/dist/esm/input/GestureRecognizer.d.ts +1 -1
  147. package/dist/esm/input/GestureRecognizer.js.map +1 -1
  148. package/dist/esm/input/InputBinding.d.ts +3 -3
  149. package/dist/esm/input/InputBinding.js.map +1 -1
  150. package/dist/esm/input/InputManager.d.ts +9 -9
  151. package/dist/esm/input/InputManager.js +25 -16
  152. package/dist/esm/input/InputManager.js.map +1 -1
  153. package/dist/esm/input/InteractionEvent.d.ts +1 -1
  154. package/dist/esm/input/InteractionEvent.js.map +1 -1
  155. package/dist/esm/input/InteractionManager.d.ts +2 -2
  156. package/dist/esm/input/InteractionManager.js +25 -16
  157. package/dist/esm/input/InteractionManager.js.map +1 -1
  158. package/dist/esm/input/JoyConLeftGamepadMapping.js.map +1 -1
  159. package/dist/esm/input/JoyConRightGamepadMapping.js.map +1 -1
  160. package/dist/esm/input/PlayStationGamepadMapping.d.ts +1 -1
  161. package/dist/esm/input/PlayStationGamepadMapping.js +1 -1
  162. package/dist/esm/input/PlayStationGamepadMapping.js.map +1 -1
  163. package/dist/esm/input/Pointer.d.ts +2 -2
  164. package/dist/esm/input/Pointer.js +6 -6
  165. package/dist/esm/input/Pointer.js.map +1 -1
  166. package/dist/esm/input/SteamControllerGamepadMapping.d.ts +1 -1
  167. package/dist/esm/input/SteamControllerGamepadMapping.js +1 -1
  168. package/dist/esm/input/SteamControllerGamepadMapping.js.map +1 -1
  169. package/dist/esm/input/SteamDeckGamepadMapping.js.map +1 -1
  170. package/dist/esm/input/SwitchProGamepadMapping.d.ts +1 -1
  171. package/dist/esm/input/SwitchProGamepadMapping.js +1 -1
  172. package/dist/esm/input/SwitchProGamepadMapping.js.map +1 -1
  173. package/dist/esm/input/XboxGamepadMapping.d.ts +1 -1
  174. package/dist/esm/input/XboxGamepadMapping.js +1 -1
  175. package/dist/esm/input/XboxGamepadMapping.js.map +1 -1
  176. package/dist/esm/input/index.d.ts +16 -16
  177. package/dist/esm/input/interaction-hooks.js.map +1 -1
  178. package/dist/esm/input/types.js.map +1 -1
  179. package/dist/esm/math/AbstractVector.js +8 -9
  180. package/dist/esm/math/AbstractVector.js.map +1 -1
  181. package/dist/esm/math/Circle.d.ts +5 -5
  182. package/dist/esm/math/Circle.js +33 -21
  183. package/dist/esm/math/Circle.js.map +1 -1
  184. package/dist/esm/math/Collision.d.ts +2 -2
  185. package/dist/esm/math/Collision.js.map +1 -1
  186. package/dist/esm/math/Ellipse.d.ts +5 -5
  187. package/dist/esm/math/Ellipse.js +28 -19
  188. package/dist/esm/math/Ellipse.js.map +1 -1
  189. package/dist/esm/math/Flags.d.ts +4 -4
  190. package/dist/esm/math/Flags.js.map +1 -1
  191. package/dist/esm/math/Interval.js.map +1 -1
  192. package/dist/esm/math/Line.d.ts +5 -5
  193. package/dist/esm/math/Line.js +23 -15
  194. package/dist/esm/math/Line.js.map +1 -1
  195. package/dist/esm/math/Matrix.js +14 -16
  196. package/dist/esm/math/Matrix.js.map +1 -1
  197. package/dist/esm/math/ObservableSize.js.map +1 -1
  198. package/dist/esm/math/ObservableVector.d.ts +1 -1
  199. package/dist/esm/math/ObservableVector.js.map +1 -1
  200. package/dist/esm/math/PolarVector.js.map +1 -1
  201. package/dist/esm/math/Polygon.d.ts +11 -11
  202. package/dist/esm/math/Polygon.js +37 -26
  203. package/dist/esm/math/Polygon.js.map +1 -1
  204. package/dist/esm/math/PolygonLike.d.ts +1 -1
  205. package/dist/esm/math/Quadtree.js +2 -8
  206. package/dist/esm/math/Quadtree.js.map +1 -1
  207. package/dist/esm/math/Random.js +5 -5
  208. package/dist/esm/math/Random.js.map +1 -1
  209. package/dist/esm/math/Rectangle.d.ts +4 -4
  210. package/dist/esm/math/Rectangle.js +59 -41
  211. package/dist/esm/math/Rectangle.js.map +1 -1
  212. package/dist/esm/math/Segment.d.ts +1 -1
  213. package/dist/esm/math/Segment.js +4 -4
  214. package/dist/esm/math/Segment.js.map +1 -1
  215. package/dist/esm/math/ShapeLike.d.ts +1 -1
  216. package/dist/esm/math/Size.js +1 -2
  217. package/dist/esm/math/Size.js.map +1 -1
  218. package/dist/esm/math/Vector.d.ts +4 -4
  219. package/dist/esm/math/Vector.js +19 -13
  220. package/dist/esm/math/Vector.js.map +1 -1
  221. package/dist/esm/math/collision-detection.d.ts +3 -3
  222. package/dist/esm/math/collision-detection.js +49 -49
  223. package/dist/esm/math/collision-detection.js.map +1 -1
  224. package/dist/esm/math/collision-primitives.d.ts +8 -8
  225. package/dist/esm/math/collision-primitives.js +27 -33
  226. package/dist/esm/math/collision-primitives.js.map +1 -1
  227. package/dist/esm/math/geometry.d.ts +3 -3
  228. package/dist/esm/math/geometry.js +55 -48
  229. package/dist/esm/math/geometry.js.map +1 -1
  230. package/dist/esm/math/index.d.ts +16 -16
  231. package/dist/esm/math/swept-collision.d.ts +3 -3
  232. package/dist/esm/math/swept-collision.js +5 -8
  233. package/dist/esm/math/swept-collision.js.map +1 -1
  234. package/dist/esm/math/triangulate.js +34 -24
  235. package/dist/esm/math/triangulate.js.map +1 -1
  236. package/dist/esm/math/utils.d.ts +2 -2
  237. package/dist/esm/math/utils.js +7 -7
  238. package/dist/esm/math/utils.js.map +1 -1
  239. package/dist/esm/particles/ParticleSystem.d.ts +181 -84
  240. package/dist/esm/particles/ParticleSystem.js +460 -147
  241. package/dist/esm/particles/ParticleSystem.js.map +1 -1
  242. package/dist/esm/particles/distributions/BoxArea.d.ts +17 -0
  243. package/dist/esm/particles/distributions/BoxArea.js +48 -0
  244. package/dist/esm/particles/distributions/BoxArea.js.map +1 -0
  245. package/dist/esm/particles/distributions/CircleArea.d.ts +19 -0
  246. package/dist/esm/particles/distributions/CircleArea.js +33 -0
  247. package/dist/esm/particles/distributions/CircleArea.js.map +1 -0
  248. package/dist/esm/particles/distributions/ConeDirection.d.ts +28 -0
  249. package/dist/esm/particles/distributions/ConeDirection.js +44 -0
  250. package/dist/esm/particles/distributions/ConeDirection.js.map +1 -0
  251. package/dist/esm/particles/distributions/Constant.d.ts +17 -0
  252. package/dist/esm/particles/distributions/Constant.js +35 -0
  253. package/dist/esm/particles/distributions/Constant.js.map +1 -0
  254. package/dist/esm/particles/distributions/Curve.d.ts +30 -0
  255. package/dist/esm/particles/distributions/Curve.js +53 -0
  256. package/dist/esm/particles/distributions/Curve.js.map +1 -0
  257. package/dist/esm/particles/distributions/Distribution.d.ts +45 -0
  258. package/dist/esm/particles/distributions/Gradient.d.ts +40 -0
  259. package/dist/esm/particles/distributions/Gradient.js +72 -0
  260. package/dist/esm/particles/distributions/Gradient.js.map +1 -0
  261. package/dist/esm/particles/distributions/LineSegment.d.ts +15 -0
  262. package/dist/esm/particles/distributions/LineSegment.js +27 -0
  263. package/dist/esm/particles/distributions/LineSegment.js.map +1 -0
  264. package/dist/esm/particles/distributions/Range.d.ts +12 -0
  265. package/dist/esm/particles/distributions/Range.js +19 -0
  266. package/dist/esm/particles/distributions/Range.js.map +1 -0
  267. package/dist/esm/particles/distributions/VectorRange.d.ts +20 -0
  268. package/dist/esm/particles/distributions/VectorRange.js +31 -0
  269. package/dist/esm/particles/distributions/VectorRange.js.map +1 -0
  270. package/dist/esm/particles/distributions/index.d.ts +12 -0
  271. package/dist/esm/particles/gpu/ParticleGpuState.d.ts +57 -0
  272. package/dist/esm/particles/gpu/ParticleGpuState.js +535 -0
  273. package/dist/esm/particles/gpu/ParticleGpuState.js.map +1 -0
  274. package/dist/esm/particles/index.d.ts +2 -10
  275. package/dist/esm/particles/modules/AlphaFadeOverLifetime.d.ts +24 -0
  276. package/dist/esm/particles/modules/AlphaFadeOverLifetime.js +60 -0
  277. package/dist/esm/particles/modules/AlphaFadeOverLifetime.js.map +1 -0
  278. package/dist/esm/particles/modules/ApplyForce.d.ts +20 -0
  279. package/dist/esm/particles/modules/ApplyForce.js +48 -0
  280. package/dist/esm/particles/modules/ApplyForce.js.map +1 -0
  281. package/dist/esm/particles/modules/AttractToPoint.d.ts +27 -0
  282. package/dist/esm/particles/modules/AttractToPoint.js +73 -0
  283. package/dist/esm/particles/modules/AttractToPoint.js.map +1 -0
  284. package/dist/esm/particles/modules/BurstSpawn.d.ts +53 -0
  285. package/dist/esm/particles/modules/BurstSpawn.js +94 -0
  286. package/dist/esm/particles/modules/BurstSpawn.js.map +1 -0
  287. package/dist/esm/particles/modules/ColorOverLifetime.d.ts +22 -0
  288. package/dist/esm/particles/modules/ColorOverLifetime.js +65 -0
  289. package/dist/esm/particles/modules/ColorOverLifetime.js.map +1 -0
  290. package/dist/esm/particles/modules/ColorOverSpeed.d.ts +27 -0
  291. package/dist/esm/particles/modules/ColorOverSpeed.js +86 -0
  292. package/dist/esm/particles/modules/ColorOverSpeed.js.map +1 -0
  293. package/dist/esm/particles/modules/DeathModule.d.ts +24 -0
  294. package/dist/esm/particles/modules/DeathModule.js +25 -0
  295. package/dist/esm/particles/modules/DeathModule.js.map +1 -0
  296. package/dist/esm/particles/modules/Drag.d.ts +20 -0
  297. package/dist/esm/particles/modules/Drag.js +43 -0
  298. package/dist/esm/particles/modules/Drag.js.map +1 -0
  299. package/dist/esm/particles/modules/OrbitalForce.d.ts +28 -0
  300. package/dist/esm/particles/modules/OrbitalForce.js +65 -0
  301. package/dist/esm/particles/modules/OrbitalForce.js.map +1 -0
  302. package/dist/esm/particles/modules/RateSpawn.d.ts +41 -0
  303. package/dist/esm/particles/modules/RateSpawn.js +76 -0
  304. package/dist/esm/particles/modules/RateSpawn.js.map +1 -0
  305. package/dist/esm/particles/modules/RepelFromPoint.d.ts +24 -0
  306. package/dist/esm/particles/modules/RepelFromPoint.js +76 -0
  307. package/dist/esm/particles/modules/RepelFromPoint.js.map +1 -0
  308. package/dist/esm/particles/modules/RotateOverLifetime.d.ts +20 -0
  309. package/dist/esm/particles/modules/RotateOverLifetime.js +41 -0
  310. package/dist/esm/particles/modules/RotateOverLifetime.js.map +1 -0
  311. package/dist/esm/particles/modules/ScaleOverLifetime.d.ts +26 -0
  312. package/dist/esm/particles/modules/ScaleOverLifetime.js +59 -0
  313. package/dist/esm/particles/modules/ScaleOverLifetime.js.map +1 -0
  314. package/dist/esm/particles/modules/SpawnModule.d.ts +30 -0
  315. package/dist/esm/particles/modules/SpawnModule.js +31 -0
  316. package/dist/esm/particles/modules/SpawnModule.js.map +1 -0
  317. package/dist/esm/particles/modules/SpawnOnDeath.d.ts +24 -0
  318. package/dist/esm/particles/modules/SpawnOnDeath.js +47 -0
  319. package/dist/esm/particles/modules/SpawnOnDeath.js.map +1 -0
  320. package/dist/esm/particles/modules/Turbulence.d.ts +30 -0
  321. package/dist/esm/particles/modules/Turbulence.js +122 -0
  322. package/dist/esm/particles/modules/Turbulence.js.map +1 -0
  323. package/dist/esm/particles/modules/UpdateModule.d.ts +95 -0
  324. package/dist/esm/particles/modules/UpdateModule.js +66 -0
  325. package/dist/esm/particles/modules/UpdateModule.js.map +1 -0
  326. package/dist/esm/particles/modules/VelocityOverLifetime.d.ts +30 -0
  327. package/dist/esm/particles/modules/VelocityOverLifetime.js +84 -0
  328. package/dist/esm/particles/modules/VelocityOverLifetime.js.map +1 -0
  329. package/dist/esm/particles/modules/WgslContribution.d.ts +81 -0
  330. package/dist/esm/particles/modules/WgslContribution.js +34 -0
  331. package/dist/esm/particles/modules/WgslContribution.js.map +1 -0
  332. package/dist/esm/particles/modules/index.d.ts +22 -0
  333. package/dist/esm/rendering/CallbackRenderPass.js.map +1 -1
  334. package/dist/esm/rendering/Container.d.ts +2 -2
  335. package/dist/esm/rendering/Container.js +10 -11
  336. package/dist/esm/rendering/Container.js.map +1 -1
  337. package/dist/esm/rendering/Drawable.js.map +1 -1
  338. package/dist/esm/rendering/RenderBackend.d.ts +6 -6
  339. package/dist/esm/rendering/RenderBackendType.js.map +1 -1
  340. package/dist/esm/rendering/RenderNode.d.ts +10 -10
  341. package/dist/esm/rendering/RenderNode.js +31 -31
  342. package/dist/esm/rendering/RenderNode.js.map +1 -1
  343. package/dist/esm/rendering/RenderStats.js.map +1 -1
  344. package/dist/esm/rendering/RenderTarget.d.ts +2 -2
  345. package/dist/esm/rendering/RenderTarget.js +5 -5
  346. package/dist/esm/rendering/RenderTarget.js.map +1 -1
  347. package/dist/esm/rendering/RenderTargetPass.d.ts +3 -3
  348. package/dist/esm/rendering/RenderTargetPass.js.map +1 -1
  349. package/dist/esm/rendering/Renderer.d.ts +2 -2
  350. package/dist/esm/rendering/RendererRegistry.d.ts +3 -3
  351. package/dist/esm/rendering/RendererRegistry.js +2 -3
  352. package/dist/esm/rendering/RendererRegistry.js.map +1 -1
  353. package/dist/esm/rendering/View.d.ts +3 -3
  354. package/dist/esm/rendering/View.js +17 -20
  355. package/dist/esm/rendering/View.js.map +1 -1
  356. package/dist/esm/rendering/filters/BlurFilter.d.ts +1 -1
  357. package/dist/esm/rendering/filters/BlurFilter.js +4 -9
  358. package/dist/esm/rendering/filters/BlurFilter.js.map +1 -1
  359. package/dist/esm/rendering/filters/ColorFilter.d.ts +1 -1
  360. package/dist/esm/rendering/filters/ColorFilter.js +3 -9
  361. package/dist/esm/rendering/filters/ColorFilter.js.map +1 -1
  362. package/dist/esm/rendering/filters/Filter.d.ts +1 -1
  363. package/dist/esm/rendering/filters/Filter.js.map +1 -1
  364. package/dist/esm/rendering/filters/LutFilter.d.ts +87 -0
  365. package/dist/esm/rendering/filters/LutFilter.js +261 -0
  366. package/dist/esm/rendering/filters/LutFilter.js.map +1 -0
  367. package/dist/esm/rendering/filters/WebGl2ShaderFilter.d.ts +2 -2
  368. package/dist/esm/rendering/filters/WebGl2ShaderFilter.js +7 -14
  369. package/dist/esm/rendering/filters/WebGl2ShaderFilter.js.map +1 -1
  370. package/dist/esm/rendering/filters/WebGpuShaderFilter.d.ts +1 -1
  371. package/dist/esm/rendering/filters/WebGpuShaderFilter.js +11 -10
  372. package/dist/esm/rendering/filters/WebGpuShaderFilter.js.map +1 -1
  373. package/dist/esm/rendering/index.d.ts +28 -27
  374. package/dist/esm/rendering/mesh/Mesh.d.ts +49 -1
  375. package/dist/esm/rendering/mesh/Mesh.js +3 -1
  376. package/dist/esm/rendering/mesh/Mesh.js.map +1 -1
  377. package/dist/esm/rendering/primitives/Graphics.d.ts +3 -3
  378. package/dist/esm/rendering/primitives/Graphics.js +12 -12
  379. package/dist/esm/rendering/primitives/Graphics.js.map +1 -1
  380. package/dist/esm/rendering/shader/Shader.js.map +1 -1
  381. package/dist/esm/rendering/shader/ShaderAttribute.js.map +1 -1
  382. package/dist/esm/rendering/shader/ShaderUniform.js.map +1 -1
  383. package/dist/esm/rendering/shader/upgradeFragmentShaderToGl300.js +6 -8
  384. package/dist/esm/rendering/shader/upgradeFragmentShaderToGl300.js.map +1 -1
  385. package/dist/esm/rendering/sprite/AnimatedSprite.d.ts +3 -3
  386. package/dist/esm/rendering/sprite/AnimatedSprite.js.map +1 -1
  387. package/dist/esm/rendering/sprite/Sprite.d.ts +4 -4
  388. package/dist/esm/rendering/sprite/Sprite.js +51 -35
  389. package/dist/esm/rendering/sprite/Sprite.js.map +1 -1
  390. package/dist/esm/rendering/sprite/Spritesheet.d.ts +5 -9
  391. package/dist/esm/rendering/sprite/Spritesheet.js +1 -1
  392. package/dist/esm/rendering/sprite/Spritesheet.js.map +1 -1
  393. package/dist/esm/rendering/text/DynamicGlyphAtlas.js +3 -9
  394. package/dist/esm/rendering/text/DynamicGlyphAtlas.js.map +1 -1
  395. package/dist/esm/rendering/text/Text.js +9 -9
  396. package/dist/esm/rendering/text/Text.js.map +1 -1
  397. package/dist/esm/rendering/text/TextLayout.d.ts +2 -2
  398. package/dist/esm/rendering/text/TextLayout.js.map +1 -1
  399. package/dist/esm/rendering/text/TextStyle.js.map +1 -1
  400. package/dist/esm/rendering/text/atlas-singleton.js.map +1 -1
  401. package/dist/esm/rendering/texture/RenderTexture.d.ts +1 -1
  402. package/dist/esm/rendering/texture/RenderTexture.js +4 -1
  403. package/dist/esm/rendering/texture/RenderTexture.js.map +1 -1
  404. package/dist/esm/rendering/texture/Sampler.js.map +1 -1
  405. package/dist/esm/rendering/texture/Texture.d.ts +2 -2
  406. package/dist/esm/rendering/texture/Texture.js +8 -5
  407. package/dist/esm/rendering/texture/Texture.js.map +1 -1
  408. package/dist/esm/rendering/types.js.map +1 -1
  409. package/dist/esm/rendering/utils.js.map +1 -1
  410. package/dist/esm/rendering/video/Video.d.ts +3 -3
  411. package/dist/esm/rendering/video/Video.js +7 -6
  412. package/dist/esm/rendering/video/Video.js.map +1 -1
  413. package/dist/esm/rendering/webgl2/AbstractWebGl2BatchedRenderer.d.ts +6 -6
  414. package/dist/esm/rendering/webgl2/AbstractWebGl2BatchedRenderer.js +7 -10
  415. package/dist/esm/rendering/webgl2/AbstractWebGl2BatchedRenderer.js.map +1 -1
  416. package/dist/esm/rendering/webgl2/AbstractWebGl2Renderer.d.ts +1 -1
  417. package/dist/esm/rendering/webgl2/AbstractWebGl2Renderer.js +1 -2
  418. package/dist/esm/rendering/webgl2/AbstractWebGl2Renderer.js.map +1 -1
  419. package/dist/esm/rendering/webgl2/WebGl2Backend.d.ts +11 -11
  420. package/dist/esm/rendering/webgl2/WebGl2Backend.js +19 -21
  421. package/dist/esm/rendering/webgl2/WebGl2Backend.js.map +1 -1
  422. package/dist/esm/rendering/webgl2/WebGl2MaskCompositor.d.ts +2 -2
  423. package/dist/esm/rendering/webgl2/WebGl2MaskCompositor.js +6 -8
  424. package/dist/esm/rendering/webgl2/WebGl2MaskCompositor.js.map +1 -1
  425. package/dist/esm/rendering/webgl2/WebGl2MeshRenderer.d.ts +7 -4
  426. package/dist/esm/rendering/webgl2/WebGl2MeshRenderer.js +110 -43
  427. package/dist/esm/rendering/webgl2/WebGl2MeshRenderer.js.map +1 -1
  428. package/dist/esm/rendering/webgl2/WebGl2ParticleRenderer.d.ts +10 -15
  429. package/dist/esm/rendering/webgl2/WebGl2ParticleRenderer.js +100 -79
  430. package/dist/esm/rendering/webgl2/WebGl2ParticleRenderer.js.map +1 -1
  431. package/dist/esm/rendering/webgl2/WebGl2RenderBuffer.d.ts +1 -1
  432. package/dist/esm/rendering/webgl2/WebGl2RenderBuffer.js.map +1 -1
  433. package/dist/esm/rendering/webgl2/WebGl2ShaderBlock.js.map +1 -1
  434. package/dist/esm/rendering/webgl2/WebGl2ShaderMappings.js.map +1 -1
  435. package/dist/esm/rendering/webgl2/WebGl2ShaderProgram.js +54 -22
  436. package/dist/esm/rendering/webgl2/WebGl2ShaderProgram.js.map +1 -1
  437. package/dist/esm/rendering/webgl2/WebGl2SpriteRenderer.d.ts +1 -1
  438. package/dist/esm/rendering/webgl2/WebGl2SpriteRenderer.js +11 -14
  439. package/dist/esm/rendering/webgl2/WebGl2SpriteRenderer.js.map +1 -1
  440. package/dist/esm/rendering/webgl2/WebGl2VertexArrayObject.d.ts +1 -1
  441. package/dist/esm/rendering/webgl2/WebGl2VertexArrayObject.js.map +1 -1
  442. package/dist/esm/rendering/webgl2/glsl/particle.vert.js +1 -1
  443. package/dist/esm/rendering/webgpu/AbstractWebGpuRenderer.d.ts +1 -1
  444. package/dist/esm/rendering/webgpu/AbstractWebGpuRenderer.js +1 -2
  445. package/dist/esm/rendering/webgpu/AbstractWebGpuRenderer.js.map +1 -1
  446. package/dist/esm/rendering/webgpu/WebGpuBackend.d.ts +7 -7
  447. package/dist/esm/rendering/webgpu/WebGpuBackend.js +44 -30
  448. package/dist/esm/rendering/webgpu/WebGpuBackend.js.map +1 -1
  449. package/dist/esm/rendering/webgpu/WebGpuBlendState.js.map +1 -1
  450. package/dist/esm/rendering/webgpu/WebGpuMaskCompositor.d.ts +2 -2
  451. package/dist/esm/rendering/webgpu/WebGpuMaskCompositor.js +1 -3
  452. package/dist/esm/rendering/webgpu/WebGpuMaskCompositor.js.map +1 -1
  453. package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.d.ts +2 -2
  454. package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.js +25 -23
  455. package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.js.map +1 -1
  456. package/dist/esm/rendering/webgpu/WebGpuParticleRenderer.d.ts +10 -1
  457. package/dist/esm/rendering/webgpu/WebGpuParticleRenderer.js +204 -76
  458. package/dist/esm/rendering/webgpu/WebGpuParticleRenderer.js.map +1 -1
  459. package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.d.ts +2 -2
  460. package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.js +45 -45
  461. package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.js.map +1 -1
  462. package/dist/esm/rendering/webgpu/compute/WebGpuComputePipeline.d.ts +52 -0
  463. package/dist/esm/rendering/webgpu/compute/WebGpuStorageBuffer.d.ts +29 -0
  464. package/dist/esm/rendering/webgpu/compute/index.d.ts +3 -0
  465. package/dist/esm/resources/AbstractAssetFactory.d.ts +1 -1
  466. package/dist/esm/resources/AbstractAssetFactory.js.map +1 -1
  467. package/dist/esm/resources/AssetManifest.d.ts +1 -1
  468. package/dist/esm/resources/AssetManifest.js +2 -2
  469. package/dist/esm/resources/AssetManifest.js.map +1 -1
  470. package/dist/esm/resources/CacheFirstStrategy.d.ts +2 -2
  471. package/dist/esm/resources/CacheFirstStrategy.js.map +1 -1
  472. package/dist/esm/resources/CacheStrategy.d.ts +1 -1
  473. package/dist/esm/resources/FactoryRegistry.d.ts +1 -1
  474. package/dist/esm/resources/FactoryRegistry.js +2 -3
  475. package/dist/esm/resources/FactoryRegistry.js.map +1 -1
  476. package/dist/esm/resources/IndexedDbDatabase.d.ts +1 -1
  477. package/dist/esm/resources/IndexedDbDatabase.js +11 -14
  478. package/dist/esm/resources/IndexedDbDatabase.js.map +1 -1
  479. package/dist/esm/resources/IndexedDbStore.d.ts +1 -1
  480. package/dist/esm/resources/IndexedDbStore.js +2 -7
  481. package/dist/esm/resources/IndexedDbStore.js.map +1 -1
  482. package/dist/esm/resources/Loader.d.ts +9 -9
  483. package/dist/esm/resources/Loader.js +48 -35
  484. package/dist/esm/resources/Loader.js.map +1 -1
  485. package/dist/esm/resources/NetworkOnlyStrategy.d.ts +2 -2
  486. package/dist/esm/resources/NetworkOnlyStrategy.js.map +1 -1
  487. package/dist/esm/resources/factories/BinaryFactory.js.map +1 -1
  488. package/dist/esm/resources/factories/FontFactory.js +1 -1
  489. package/dist/esm/resources/factories/FontFactory.js.map +1 -1
  490. package/dist/esm/resources/factories/ImageFactory.js +4 -4
  491. package/dist/esm/resources/factories/ImageFactory.js.map +1 -1
  492. package/dist/esm/resources/factories/JsonFactory.d.ts +1 -1
  493. package/dist/esm/resources/factories/JsonFactory.js +1 -1
  494. package/dist/esm/resources/factories/JsonFactory.js.map +1 -1
  495. package/dist/esm/resources/factories/MusicFactory.d.ts +1 -1
  496. package/dist/esm/resources/factories/MusicFactory.js +4 -4
  497. package/dist/esm/resources/factories/MusicFactory.js.map +1 -1
  498. package/dist/esm/resources/factories/SoundFactory.d.ts +1 -1
  499. package/dist/esm/resources/factories/SoundFactory.js +3 -3
  500. package/dist/esm/resources/factories/SoundFactory.js.map +1 -1
  501. package/dist/esm/resources/factories/SvgFactory.js +3 -3
  502. package/dist/esm/resources/factories/SvgFactory.js.map +1 -1
  503. package/dist/esm/resources/factories/TextFactory.js +1 -1
  504. package/dist/esm/resources/factories/TextFactory.js.map +1 -1
  505. package/dist/esm/resources/factories/TextureFactory.d.ts +1 -1
  506. package/dist/esm/resources/factories/TextureFactory.js +3 -3
  507. package/dist/esm/resources/factories/TextureFactory.js.map +1 -1
  508. package/dist/esm/resources/factories/VideoFactory.d.ts +2 -2
  509. package/dist/esm/resources/factories/VideoFactory.js +5 -5
  510. package/dist/esm/resources/factories/VideoFactory.js.map +1 -1
  511. package/dist/esm/resources/factories/VttFactory.d.ts +2 -2
  512. package/dist/esm/resources/factories/VttFactory.js +6 -6
  513. package/dist/esm/resources/factories/VttFactory.js.map +1 -1
  514. package/dist/esm/resources/factories/WasmFactory.js.map +1 -1
  515. package/dist/esm/resources/index.d.ts +11 -11
  516. package/dist/esm/resources/utils.js +30 -25
  517. package/dist/esm/resources/utils.js.map +1 -1
  518. package/dist/exo.esm.js +26438 -23869
  519. package/dist/exo.esm.js.map +1 -1
  520. package/package.json +15 -4
  521. package/dist/esm/particles/Particle.d.ts +0 -77
  522. package/dist/esm/particles/Particle.js +0 -143
  523. package/dist/esm/particles/Particle.js.map +0 -1
  524. package/dist/esm/particles/ParticleProperties.d.ts +0 -29
  525. package/dist/esm/particles/affectors/ColorAffector.d.ts +0 -30
  526. package/dist/esm/particles/affectors/ColorAffector.js +0 -55
  527. package/dist/esm/particles/affectors/ColorAffector.js.map +0 -1
  528. package/dist/esm/particles/affectors/ForceAffector.d.ts +0 -24
  529. package/dist/esm/particles/affectors/ForceAffector.js +0 -39
  530. package/dist/esm/particles/affectors/ForceAffector.js.map +0 -1
  531. package/dist/esm/particles/affectors/ParticleAffector.d.ts +0 -19
  532. package/dist/esm/particles/affectors/ScaleAffector.d.ts +0 -23
  533. package/dist/esm/particles/affectors/ScaleAffector.js +0 -38
  534. package/dist/esm/particles/affectors/ScaleAffector.js.map +0 -1
  535. package/dist/esm/particles/affectors/TorqueAffector.d.ts +0 -23
  536. package/dist/esm/particles/affectors/TorqueAffector.js +0 -37
  537. package/dist/esm/particles/affectors/TorqueAffector.js.map +0 -1
  538. package/dist/esm/particles/emitters/ParticleEmitter.d.ts +0 -19
  539. package/dist/esm/particles/emitters/ParticleOptions.d.ts +0 -62
  540. package/dist/esm/particles/emitters/ParticleOptions.js +0 -120
  541. package/dist/esm/particles/emitters/ParticleOptions.js.map +0 -1
  542. package/dist/esm/particles/emitters/UniversalEmitter.d.ts +0 -40
  543. package/dist/esm/particles/emitters/UniversalEmitter.js +0 -68
  544. package/dist/esm/particles/emitters/UniversalEmitter.js.map +0 -1
@@ -1,7 +1,7 @@
1
1
  import { Matrix } from '../../math/Matrix.js';
2
- import { AbstractWebGpuRenderer } from './AbstractWebGpuRenderer.js';
3
- import { BlendModes } from '../types.js';
4
2
  import { Texture } from '../texture/Texture.js';
3
+ import { BlendModes } from '../types.js';
4
+ import { AbstractWebGpuRenderer } from './AbstractWebGpuRenderer.js';
5
5
  import { getWebGpuBlendState } from './WebGpuBlendState.js';
6
6
 
7
7
  /// <reference types="@webgpu/types" />
@@ -81,6 +81,9 @@ class WebGpuMeshRenderer extends AbstractWebGpuRenderer {
81
81
  if (backend === null) {
82
82
  throw new Error('WebGpuMeshRenderer is not connected to a backend.');
83
83
  }
84
+ if (mesh.shader !== null) {
85
+ throw new Error('Mesh custom shaders are currently WebGL2-only. WebGPU support is planned for a future release; in the meantime use the WebGL2 backend or omit `shader` from the Mesh options.');
86
+ }
84
87
  const vertexCount = mesh.vertexCount;
85
88
  if (vertexCount === 0) {
86
89
  return;
@@ -227,21 +230,14 @@ class WebGpuMeshRenderer extends AbstractWebGpuRenderer {
227
230
  if (typeof device.createRenderPipelineAsync !== 'function') {
228
231
  return;
229
232
  }
230
- const blendModes = [
231
- BlendModes.Normal,
232
- BlendModes.Additive,
233
- BlendModes.Subtract,
234
- BlendModes.Multiply,
235
- BlendModes.Screen,
236
- ];
233
+ const blendModes = [BlendModes.Normal, BlendModes.Additive, BlendModes.Subtract, BlendModes.Multiply, BlendModes.Screen];
237
234
  const promises = [];
238
235
  for (const blendMode of blendModes) {
239
236
  for (const format of formats) {
240
237
  const key = `${blendMode}:${format}`;
241
238
  if (this._pipelines.has(key))
242
239
  continue;
243
- promises.push(device.createRenderPipelineAsync(this._buildPipelineDescriptor(blendMode, format))
244
- .then((pipeline) => {
240
+ promises.push(device.createRenderPipelineAsync(this._buildPipelineDescriptor(blendMode, format)).then(pipeline => {
245
241
  this._pipelines.set(key, pipeline);
246
242
  }));
247
243
  }
@@ -255,11 +251,13 @@ class WebGpuMeshRenderer extends AbstractWebGpuRenderer {
255
251
  this._device = backend.device;
256
252
  this._shaderModule = this._device.createShaderModule({ code: meshShaderSource });
257
253
  this._uniformBindGroupLayout = this._device.createBindGroupLayout({
258
- entries: [{
254
+ entries: [
255
+ {
259
256
  binding: 0,
260
257
  visibility: GPUShaderStage.VERTEX | GPUShaderStage.FRAGMENT,
261
258
  buffer: { type: 'uniform', hasDynamicOffset: true },
262
- }],
259
+ },
260
+ ],
263
261
  });
264
262
  this._textureBindGroupLayout = this._device.createBindGroupLayout({
265
263
  entries: [
@@ -304,9 +302,7 @@ class WebGpuMeshRenderer extends AbstractWebGpuRenderer {
304
302
  _writeMeshVertices(backend, mesh, vertexStart) {
305
303
  // Bake (view * globalTransform) into vertex positions on the CPU,
306
304
  // matching the primitive renderer's no-uniforms approach.
307
- const matrix = this._combinedTransform
308
- .copy(mesh.getGlobalTransform())
309
- .combine(backend.view.getTransform());
305
+ const matrix = this._combinedTransform.copy(mesh.getGlobalTransform()).combine(backend.view.getTransform());
310
306
  const a = matrix.a;
311
307
  const b = matrix.b;
312
308
  const c = matrix.c;
@@ -326,7 +322,7 @@ class WebGpuMeshRenderer extends AbstractWebGpuRenderer {
326
322
  this._float32View[targetIndex + 1] = c * px + d * py + ty;
327
323
  this._float32View[targetIndex + 2] = uvs !== null ? uvs[sourceIndex] : 0;
328
324
  this._float32View[targetIndex + 3] = uvs !== null ? uvs[sourceIndex + 1] : 0;
329
- this._uint32View[targetIndex + 4] = colors !== null ? colors[i] : 0xFFFFFFFF;
325
+ this._uint32View[targetIndex + 4] = colors !== null ? colors[i] : 0xffffffff;
330
326
  }
331
327
  }
332
328
  _getPipeline(key) {
@@ -344,7 +340,8 @@ class WebGpuMeshRenderer extends AbstractWebGpuRenderer {
344
340
  vertex: {
345
341
  module: this._shaderModule,
346
342
  entryPoint: 'vertexMain',
347
- buffers: [{
343
+ buffers: [
344
+ {
348
345
  arrayStride: vertexStrideBytes,
349
346
  stepMode: 'vertex',
350
347
  attributes: [
@@ -352,16 +349,19 @@ class WebGpuMeshRenderer extends AbstractWebGpuRenderer {
352
349
  { shaderLocation: 1, offset: 8, format: 'float32x2' },
353
350
  { shaderLocation: 2, offset: 16, format: 'unorm8x4' },
354
351
  ],
355
- }],
352
+ },
353
+ ],
356
354
  },
357
355
  fragment: {
358
356
  module: this._shaderModule,
359
357
  entryPoint: 'fragmentMain',
360
- targets: [{
358
+ targets: [
359
+ {
361
360
  format,
362
361
  blend: getWebGpuBlendState(blendMode),
363
362
  writeMask: GPUColorWrite.ALL,
364
- }],
363
+ },
364
+ ],
365
365
  },
366
366
  primitive: {
367
367
  topology: 'triangle-list',
@@ -426,10 +426,12 @@ class WebGpuMeshRenderer extends AbstractWebGpuRenderer {
426
426
  });
427
427
  this._uniformBindGroup = this._device.createBindGroup({
428
428
  layout: this._uniformBindGroupLayout,
429
- entries: [{
429
+ entries: [
430
+ {
430
431
  binding: 0,
431
432
  resource: { buffer: this._uniformBuffer, size: tintByteLength },
432
- }],
433
+ },
434
+ ],
433
435
  });
434
436
  }
435
437
  }
@@ -1 +1 @@
1
- {"version":3,"file":"WebGpuMeshRenderer.js","sources":["../../../../../src/rendering/webgpu/WebGpuMeshRenderer.ts"],"sourcesContent":[null],"names":["TextureClass"],"mappings":"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"}
1
+ {"version":3,"file":"WebGpuMeshRenderer.js","sources":["../../../../../src/rendering/webgpu/WebGpuMeshRenderer.ts"],"sourcesContent":[null],"names":["TextureClass"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
+ import type { ParticleSystem } from '@/particles/ParticleSystem';
1
2
  import { AbstractWebGpuRenderer } from '@/rendering/webgpu/AbstractWebGpuRenderer';
2
3
  import type { WebGpuBackend } from '@/rendering/webgpu/WebGpuBackend';
3
- import type { ParticleSystem } from '@/particles/ParticleSystem';
4
4
  export declare class WebGpuParticleRenderer extends AbstractWebGpuRenderer<ParticleSystem> {
5
5
  private readonly _drawCalls;
6
6
  private _drawCallCount;
@@ -28,5 +28,14 @@ export declare class WebGpuParticleRenderer extends AbstractWebGpuRenderer<Parti
28
28
  private _ensureCapacity;
29
29
  private _writeUniformData;
30
30
  private _writeInstanceData;
31
+ /**
32
+ * Same atlas/UV-resolution as the WebGL2 path. Returns the per-frame
33
+ * (uvMin, uvMax) pairs derived from `system.frames` (or fallback to
34
+ * `system.textureFrame` when no atlas is declared), already flipY-
35
+ * adjusted for the current texture.
36
+ */
37
+ private _uvMinsScratch;
38
+ private _uvMaxsScratch;
39
+ private _computeFrameUvs;
31
40
  private _getPipeline;
32
41
  }
@@ -1,5 +1,5 @@
1
- import { AbstractWebGpuRenderer } from './AbstractWebGpuRenderer.js';
2
1
  import { Texture } from '../texture/Texture.js';
2
+ import { AbstractWebGpuRenderer } from './AbstractWebGpuRenderer.js';
3
3
  import { getWebGpuBlendState } from './WebGpuBlendState.js';
4
4
 
5
5
  /// <reference types="@webgpu/types" />
@@ -21,13 +21,15 @@ var particleTexture: texture_2d<f32>;
21
21
  @group(1) @binding(1)
22
22
  var particleSampler: sampler;
23
23
 
24
- // Per-instance attributes (one entry per particle, 24 bytes total).
24
+ // Per-instance attributes (one entry per particle, 40 bytes total).
25
25
  struct VertexInput {
26
26
  @location(0) unitPosition: vec2<f32>, // per-vertex (static unit quad)
27
27
  @location(1) translation: vec2<f32>,
28
28
  @location(2) scale: vec2<f32>,
29
29
  @location(3) rotation: f32,
30
30
  @location(4) color: vec4<f32>,
31
+ @location(5) uvMin: vec2<f32>, // pre-resolved frame UV (top-left)
32
+ @location(6) uvMax: vec2<f32>, // pre-resolved frame UV (bottom-right)
31
33
  };
32
34
 
33
35
  struct VertexOutput {
@@ -40,8 +42,6 @@ struct VertexOutput {
40
42
  fn vertexMain(input: VertexInput) -> VertexOutput {
41
43
  let quadMin = uniforms.localBounds.xy;
42
44
  let quadSize = uniforms.localBounds.zw;
43
- let uvMin = uniforms.uvBounds.xy;
44
- let uvMax = uniforms.uvBounds.zw;
45
45
 
46
46
  let localPosition = quadMin + (input.unitPosition * quadSize);
47
47
  let radians = radians(input.rotation);
@@ -55,7 +55,7 @@ fn vertexMain(input: VertexInput) -> VertexOutput {
55
55
  var output: VertexOutput;
56
56
 
57
57
  output.position = uniforms.projection * uniforms.translation * vec4<f32>(rotated, 0.0, 1.0);
58
- output.texcoord = uvMin + ((uvMax - uvMin) * input.unitPosition);
58
+ output.texcoord = input.uvMin + ((input.uvMax - input.uvMin) * input.unitPosition);
59
59
  output.color = vec4(input.color.rgb * input.color.a, input.color.a);
60
60
 
61
61
  return output;
@@ -70,21 +70,13 @@ fn fragmentMain(input: VertexOutput) -> @location(0) vec4<f32> {
70
70
  }
71
71
  `;
72
72
  const staticVertexStrideBytes = 8;
73
- const instanceWords = 6;
74
- const instanceStrideBytes = 24;
73
+ const instanceWords = 10;
74
+ const instanceStrideBytes = 40;
75
75
  const indicesPerParticle = 6;
76
76
  const uniformByteLength = 176;
77
77
  const initialParticleCapacity = 1;
78
- const staticVertexData = new Float32Array([
79
- 0, 0,
80
- 1, 0,
81
- 1, 1,
82
- 0, 1,
83
- ]);
84
- const staticIndexData = new Uint16Array([
85
- 0, 1, 2,
86
- 0, 2, 3,
87
- ]);
78
+ const staticVertexData = new Float32Array([0, 0, 1, 0, 1, 1, 0, 1]);
79
+ const staticIndexData = new Uint16Array([0, 1, 2, 0, 2, 3]);
88
80
  class WebGpuParticleRenderer extends AbstractWebGpuRenderer {
89
81
  _drawCalls = [];
90
82
  _drawCallCount = 0;
@@ -107,12 +99,7 @@ class WebGpuParticleRenderer extends AbstractWebGpuRenderer {
107
99
  render(system) {
108
100
  const backend = this._backend;
109
101
  const texture = system.texture;
110
- if (backend === null
111
- || !(texture instanceof Texture)
112
- || texture.source === null
113
- || texture.width === 0
114
- || texture.height === 0
115
- || system.particles.length === 0) {
102
+ if (backend === null || !(texture instanceof Texture) || texture.source === null || texture.width === 0 || texture.height === 0 || system.liveCount === 0) {
116
103
  return;
117
104
  }
118
105
  backend.setBlendMode(system.blendMode);
@@ -174,7 +161,7 @@ class WebGpuParticleRenderer extends AbstractWebGpuRenderer {
174
161
  for (let drawCallIndex = 0; drawCallIndex < this._drawCallCount; drawCallIndex++) {
175
162
  const drawCall = this._drawCalls[drawCallIndex];
176
163
  const system = drawCall.system;
177
- const particleCount = system.particles.length;
164
+ const particleCount = system.liveCount;
178
165
  if (particleCount === 0) {
179
166
  continue;
180
167
  }
@@ -182,18 +169,32 @@ class WebGpuParticleRenderer extends AbstractWebGpuRenderer {
182
169
  const textureBinding = backend.getTextureBinding(drawCall.texture);
183
170
  const textureBindGroup = device.createBindGroup({
184
171
  layout: this._textureBindGroupLayout,
185
- entries: [{
172
+ entries: [
173
+ {
186
174
  binding: 0,
187
175
  resource: textureBinding.view,
188
- }, {
176
+ },
177
+ {
189
178
  binding: 1,
190
179
  resource: textureBinding.sampler,
191
- }],
180
+ },
181
+ ],
192
182
  });
193
- this._ensureCapacity(particleCount);
194
- this._writeInstanceData(system.vertices, system.texCoords, system.particles);
195
183
  this._writeUniformData(backend, system, drawCall.texture);
196
- device.queue.writeBuffer(this._instanceBuffer, 0, this._instanceData, 0, particleCount * instanceStrideBytes);
184
+ // GPU mode: the system's compute pipeline already wrote the
185
+ // interleaved instance data into its own buffer. Bind it
186
+ // directly — no CPU pack, no writeBuffer for instance data.
187
+ // CPU mode: pack from CPU SoA into our owned instance buffer.
188
+ let drawInstanceCount = particleCount;
189
+ const instanceBuffer = (() => {
190
+ if (system.gpuMode && system.gpuState !== null) {
191
+ return system.gpuState.instanceBuffer;
192
+ }
193
+ this._ensureCapacity(particleCount);
194
+ drawInstanceCount = this._writeInstanceData(system);
195
+ device.queue.writeBuffer(this._instanceBuffer, 0, this._instanceData, 0, drawInstanceCount * instanceStrideBytes);
196
+ return this._instanceBuffer;
197
+ })();
197
198
  device.queue.writeBuffer(uniformBuffer, 0, this._uniformData.buffer, this._uniformData.byteOffset, this._uniformData.byteLength);
198
199
  const encoder = device.createCommandEncoder();
199
200
  const pass = encoder.beginRenderPass({
@@ -207,9 +208,9 @@ class WebGpuParticleRenderer extends AbstractWebGpuRenderer {
207
208
  pass.setPipeline(pipeline);
208
209
  pass.setBindGroup(1, textureBindGroup);
209
210
  pass.setVertexBuffer(0, staticVertexBuffer);
210
- pass.setVertexBuffer(1, this._instanceBuffer);
211
+ pass.setVertexBuffer(1, instanceBuffer);
211
212
  pass.setIndexBuffer(indexBuffer, 'uint16');
212
- pass.drawIndexed(indicesPerParticle, particleCount, 0, 0, 0);
213
+ pass.drawIndexed(indicesPerParticle, drawInstanceCount, 0, 0, 0);
213
214
  backend.stats.batches++;
214
215
  backend.stats.drawCalls++;
215
216
  pass.end();
@@ -225,28 +226,33 @@ class WebGpuParticleRenderer extends AbstractWebGpuRenderer {
225
226
  this._device = this._backend.device;
226
227
  this._shaderModule = this._device.createShaderModule({ code: particleShaderSource });
227
228
  this._uniformBindGroupLayout = this._device.createBindGroupLayout({
228
- entries: [{
229
+ entries: [
230
+ {
229
231
  binding: 0,
230
232
  visibility: GPUShaderStage.VERTEX | GPUShaderStage.FRAGMENT,
231
233
  buffer: {
232
234
  type: 'uniform',
233
235
  },
234
- }],
236
+ },
237
+ ],
235
238
  });
236
239
  this._textureBindGroupLayout = this._device.createBindGroupLayout({
237
- entries: [{
240
+ entries: [
241
+ {
238
242
  binding: 0,
239
243
  visibility: GPUShaderStage.FRAGMENT,
240
244
  texture: {
241
245
  sampleType: 'float',
242
246
  },
243
- }, {
247
+ },
248
+ {
244
249
  binding: 1,
245
250
  visibility: GPUShaderStage.FRAGMENT,
246
251
  sampler: {
247
252
  type: 'filtering',
248
253
  },
249
- }],
254
+ },
255
+ ],
250
256
  });
251
257
  this._pipelineLayout = this._device.createPipelineLayout({
252
258
  bindGroupLayouts: [this._uniformBindGroupLayout, this._textureBindGroupLayout],
@@ -257,12 +263,14 @@ class WebGpuParticleRenderer extends AbstractWebGpuRenderer {
257
263
  });
258
264
  this._uniformBindGroup = this._device.createBindGroup({
259
265
  layout: this._uniformBindGroupLayout,
260
- entries: [{
266
+ entries: [
267
+ {
261
268
  binding: 0,
262
269
  resource: {
263
270
  buffer: this._uniformBuffer,
264
271
  },
265
- }],
272
+ },
273
+ ],
266
274
  });
267
275
  this._staticVertexBuffer = this._device.createBuffer({
268
276
  size: staticVertexData.byteLength,
@@ -334,35 +342,133 @@ class WebGpuParticleRenderer extends AbstractWebGpuRenderer {
334
342
  const quadMinY = vertices[1];
335
343
  const quadSizeX = vertices[2] - vertices[0];
336
344
  const quadSizeY = vertices[3] - vertices[1];
337
- const uvMinX = (texCoords[0] & 0xFFFF) / 0xFFFF;
338
- const uvMinY = ((texCoords[0] >>> 16) & 0xFFFF) / 0xFFFF;
339
- const uvMaxX = (texCoords[2] & 0xFFFF) / 0xFFFF;
340
- const uvMaxY = ((texCoords[2] >>> 16) & 0xFFFF) / 0xFFFF;
345
+ const uvMinX = (texCoords[0] & 0xffff) / 0xffff;
346
+ const uvMinY = ((texCoords[0] >>> 16) & 0xffff) / 0xffff;
347
+ const uvMaxX = (texCoords[2] & 0xffff) / 0xffff;
348
+ const uvMaxY = ((texCoords[2] >>> 16) & 0xffff) / 0xffff;
341
349
  this._uniformData.set([
342
- projection[0], projection[1], 0, 0,
343
- projection[3], projection[4], 0, 0,
344
- 0, 0, 1, 0,
345
- projection[6], projection[7], 0, projection[8],
346
- transform[0], transform[1], 0, 0,
347
- transform[3], transform[4], 0, 0,
348
- 0, 0, 1, 0,
349
- transform[6], transform[7], 0, transform[8],
350
- shouldPremultiplySample ? 1 : 0, 0, 0, 0,
351
- quadMinX, quadMinY, quadSizeX, quadSizeY,
352
- uvMinX, uvMinY, uvMaxX, uvMaxY,
350
+ projection[0],
351
+ projection[1],
352
+ 0,
353
+ 0,
354
+ projection[3],
355
+ projection[4],
356
+ 0,
357
+ 0,
358
+ 0,
359
+ 0,
360
+ 1,
361
+ 0,
362
+ projection[6],
363
+ projection[7],
364
+ 0,
365
+ projection[8],
366
+ transform[0],
367
+ transform[1],
368
+ 0,
369
+ 0,
370
+ transform[3],
371
+ transform[4],
372
+ 0,
373
+ 0,
374
+ 0,
375
+ 0,
376
+ 1,
377
+ 0,
378
+ transform[6],
379
+ transform[7],
380
+ 0,
381
+ transform[8],
382
+ shouldPremultiplySample ? 1 : 0,
383
+ 0,
384
+ 0,
385
+ 0,
386
+ quadMinX,
387
+ quadMinY,
388
+ quadSizeX,
389
+ quadSizeY,
390
+ uvMinX,
391
+ uvMinY,
392
+ uvMaxX,
393
+ uvMaxY,
353
394
  ]);
354
395
  }
355
- _writeInstanceData(_vertices, _texCoords, particles) {
356
- for (let particleIndex = 0; particleIndex < particles.length; particleIndex++) {
357
- const particle = particles[particleIndex];
358
- const targetIndex = particleIndex * instanceWords;
359
- this._float32View[targetIndex + 0] = particle.position.x;
360
- this._float32View[targetIndex + 1] = particle.position.y;
361
- this._float32View[targetIndex + 2] = particle.scale.x;
362
- this._float32View[targetIndex + 3] = particle.scale.y;
363
- this._float32View[targetIndex + 4] = particle.rotation;
364
- this._uint32View[targetIndex + 5] = particle.tint.toRgba();
396
+ _writeInstanceData(system) {
397
+ const { posX, posY, scaleX, scaleY, rotations, color, textureIndex, alive, liveCount } = system;
398
+ const f32 = this._float32View;
399
+ const u32 = this._uint32View;
400
+ const { uvMins, uvMaxs } = this._computeFrameUvs(system);
401
+ const frameCount = uvMins.length / 2;
402
+ let writeIndex = 0;
403
+ for (let particleIndex = 0; particleIndex < liveCount; particleIndex++) {
404
+ // Skip dead slots — present in GPU-mode systems where the live
405
+ // range can carry holes filled in on next spawn.
406
+ if (alive[particleIndex] === 0) {
407
+ continue;
408
+ }
409
+ const targetIndex = writeIndex * instanceWords;
410
+ const frame = textureIndex[particleIndex] < frameCount ? textureIndex[particleIndex] : 0;
411
+ const uvBase = frame * 2;
412
+ f32[targetIndex + 0] = posX[particleIndex];
413
+ f32[targetIndex + 1] = posY[particleIndex];
414
+ f32[targetIndex + 2] = scaleX[particleIndex];
415
+ f32[targetIndex + 3] = scaleY[particleIndex];
416
+ f32[targetIndex + 4] = rotations[particleIndex];
417
+ u32[targetIndex + 5] = color[particleIndex];
418
+ f32[targetIndex + 6] = uvMins[uvBase + 0];
419
+ f32[targetIndex + 7] = uvMins[uvBase + 1];
420
+ f32[targetIndex + 8] = uvMaxs[uvBase + 0];
421
+ f32[targetIndex + 9] = uvMaxs[uvBase + 1];
422
+ writeIndex++;
365
423
  }
424
+ return writeIndex;
425
+ }
426
+ /**
427
+ * Same atlas/UV-resolution as the WebGL2 path. Returns the per-frame
428
+ * (uvMin, uvMax) pairs derived from `system.frames` (or fallback to
429
+ * `system.textureFrame` when no atlas is declared), already flipY-
430
+ * adjusted for the current texture.
431
+ */
432
+ _uvMinsScratch = new Float32Array(2);
433
+ _uvMaxsScratch = new Float32Array(2);
434
+ _computeFrameUvs(system) {
435
+ const frames = system.frames;
436
+ const tex = system.texture;
437
+ const texW = tex.width;
438
+ const texH = tex.height;
439
+ const flipY = tex.flipY;
440
+ const count = frames.length === 0 ? 1 : frames.length;
441
+ if (this._uvMinsScratch.length < count * 2) {
442
+ this._uvMinsScratch = new Float32Array(count * 2);
443
+ this._uvMaxsScratch = new Float32Array(count * 2);
444
+ }
445
+ const mins = this._uvMinsScratch;
446
+ const maxs = this._uvMaxsScratch;
447
+ if (frames.length === 0) {
448
+ const f = system.textureFrame;
449
+ const minU = f.left / texW;
450
+ const maxU = f.right / texW;
451
+ const topV = f.top / texH;
452
+ const bottomV = f.bottom / texH;
453
+ mins[0] = minU;
454
+ mins[1] = flipY ? bottomV : topV;
455
+ maxs[0] = maxU;
456
+ maxs[1] = flipY ? topV : bottomV;
457
+ return { uvMins: mins, uvMaxs: maxs };
458
+ }
459
+ for (let i = 0; i < frames.length; i++) {
460
+ const f = frames[i];
461
+ const o = i * 2;
462
+ const minU = f.left / texW;
463
+ const maxU = f.right / texW;
464
+ const topV = f.top / texH;
465
+ const bottomV = f.bottom / texH;
466
+ mins[o + 0] = minU;
467
+ mins[o + 1] = flipY ? bottomV : topV;
468
+ maxs[o + 0] = maxU;
469
+ maxs[o + 1] = flipY ? topV : bottomV;
470
+ }
471
+ return { uvMins: mins, uvMaxs: maxs };
366
472
  }
367
473
  _getPipeline(blendMode, format) {
368
474
  const pipelineKey = `${blendMode}:${format}`;
@@ -375,43 +481,65 @@ class WebGpuParticleRenderer extends AbstractWebGpuRenderer {
375
481
  vertex: {
376
482
  module: this._shaderModule,
377
483
  entryPoint: 'vertexMain',
378
- buffers: [{
484
+ buffers: [
485
+ {
379
486
  arrayStride: staticVertexStrideBytes,
380
- attributes: [{
487
+ attributes: [
488
+ {
381
489
  shaderLocation: 0,
382
490
  offset: 0,
383
491
  format: 'float32x2',
384
- }],
385
- }, {
492
+ },
493
+ ],
494
+ },
495
+ {
386
496
  arrayStride: instanceStrideBytes,
387
497
  stepMode: 'instance',
388
- attributes: [{
498
+ attributes: [
499
+ {
389
500
  shaderLocation: 1,
390
501
  offset: 0,
391
502
  format: 'float32x2',
392
- }, {
503
+ },
504
+ {
393
505
  shaderLocation: 2,
394
506
  offset: 8,
395
507
  format: 'float32x2',
396
- }, {
508
+ },
509
+ {
397
510
  shaderLocation: 3,
398
511
  offset: 16,
399
512
  format: 'float32',
400
- }, {
513
+ },
514
+ {
401
515
  shaderLocation: 4,
402
516
  offset: 20,
403
517
  format: 'unorm8x4',
404
- }],
405
- }],
518
+ },
519
+ {
520
+ shaderLocation: 5,
521
+ offset: 24,
522
+ format: 'float32x2',
523
+ },
524
+ {
525
+ shaderLocation: 6,
526
+ offset: 32,
527
+ format: 'float32x2',
528
+ },
529
+ ],
530
+ },
531
+ ],
406
532
  },
407
533
  fragment: {
408
534
  module: this._shaderModule,
409
535
  entryPoint: 'fragmentMain',
410
- targets: [{
536
+ targets: [
537
+ {
411
538
  format,
412
539
  blend: getWebGpuBlendState(blendMode),
413
540
  writeMask: GPUColorWrite.ALL,
414
- }],
541
+ },
542
+ ],
415
543
  },
416
544
  primitive: {
417
545
  topology: 'triangle-list',