@vincentt-xr/sdk 2.0.0-alpha.8 → 2.0.0-alpha.9

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 (517) hide show
  1. package/GROUNDING.md +4643 -170
  2. package/README.md +1 -0
  3. package/dist/CanonicalHeadFrame-BHcWyaiK.js +1506 -0
  4. package/dist/CanonicalHeadFrame-D-_T1OMU.cjs +1 -0
  5. package/dist/DebuggerUI-7ngnJsBe.js +275 -0
  6. package/dist/DebuggerUI-CoglgKdO.cjs +1 -0
  7. package/dist/FaceRetouch-CLoTfrcs.js +1071 -0
  8. package/dist/FaceRetouch-J1lC1WbS.cjs +134 -0
  9. package/dist/FaceSurface-CHAMEeG1.cjs +1 -0
  10. package/dist/FaceSurface-DmP9AEeC.js +27 -0
  11. package/dist/SegmentationOverlay-D_FWkcyP.cjs +35 -0
  12. package/dist/SegmentationOverlay-vn5x_knv.js +6237 -0
  13. package/dist/SkeletonUtils-C2r90MtN.js +21 -0
  14. package/dist/SkeletonUtils-CddIup1F.cjs +1 -0
  15. package/dist/TextLabel-XE0rQSDn.cjs +2 -0
  16. package/dist/TextLabel-c9BCucOI.js +961 -0
  17. package/dist/assets/gltfLoader.d.ts +16 -0
  18. package/dist/assets/loaders.d.ts +16 -1
  19. package/dist/body-pose/index.d.ts +521 -0
  20. package/dist/body-trigger/__fixtures__/syntheticBody.d.ts +83 -0
  21. package/dist/body-trigger/frame.d.ts +88 -0
  22. package/dist/body-trigger/index.d.ts +6 -0
  23. package/dist/body-trigger/moves.d.ts +235 -0
  24. package/dist/body-trigger/trigger.d.ts +75 -0
  25. package/dist/calibration/calibration.d.ts +11 -6
  26. package/dist/canonicalFace-BHwyCx1c.js +9 -0
  27. package/dist/canonicalFace-C83I225R.cjs +1 -0
  28. package/dist/components/BodyInstruction/BodyPoseHint.d.ts +63 -0
  29. package/dist/components/BodyInstruction/index.d.ts +69 -0
  30. package/dist/components/BodyInstruction/useBodyPose.d.ts +23 -0
  31. package/dist/components/BodyTracker/index.d.ts +10 -2
  32. package/dist/components/BodyTrigger/index.d.ts +49 -0
  33. package/dist/components/Debugger/DebuggerProvider.d.ts +14 -1
  34. package/dist/components/Debugger/DebuggerUI.d.ts +3 -1
  35. package/dist/components/FaceAtlas/FaceAtlasLayer.d.ts +114 -0
  36. package/dist/components/FaceAtlas/MadeUpCamera.d.ts +80 -0
  37. package/dist/components/FaceAtlas/constants.d.ts +8 -0
  38. package/dist/components/FaceAtlas/index.d.ts +7 -0
  39. package/dist/components/FaceAtlas/useFaceAtlasSurface.d.ts +84 -0
  40. package/dist/components/FaceAtlas/useFaceSkin.d.ts +84 -0
  41. package/dist/components/FaceCharacter/ExternalFaceMesh.d.ts +109 -0
  42. package/dist/components/FaceCharacter/FaceExpressionController.d.ts +53 -0
  43. package/dist/components/FaceCharacter/FaceMorph.d.ts +71 -0
  44. package/dist/components/FaceCharacter/FacePiercing.d.ts +65 -0
  45. package/dist/components/FaceCharacter/FaceReprojection.d.ts +85 -0
  46. package/dist/components/FaceCharacter/FaceRig.d.ts +38 -0
  47. package/dist/components/FaceCharacter/FaceSurface.d.ts +49 -0
  48. package/dist/components/FaceCharacter/FaceSurfaceOccluder.d.ts +39 -0
  49. package/dist/components/FaceCharacter/PinToFaceMesh.d.ts +68 -0
  50. package/dist/components/FaceCharacter/index.d.ts +18 -0
  51. package/dist/components/FaceCharacter/useFaceReprojector.d.ts +10 -0
  52. package/dist/components/FaceInset/FaceInset.d.ts +68 -0
  53. package/dist/components/FaceInset/frame.d.ts +94 -0
  54. package/dist/components/FaceInset/index.d.ts +6 -0
  55. package/dist/components/FaceInset/material.d.ts +40 -0
  56. package/dist/components/FaceInset/useFaceInsetTexture.d.ts +37 -0
  57. package/dist/components/FaceInstruction/FaceExpressionHint.d.ts +43 -0
  58. package/dist/components/FaceInstruction/index.d.ts +56 -0
  59. package/dist/components/FaceInstruction/useFaceExpression.d.ts +20 -0
  60. package/dist/components/FaceLiquify/FaceLiquify.d.ts +49 -0
  61. package/dist/components/FaceLiquify/debug.d.ts +37 -0
  62. package/dist/components/FaceLiquify/frame.d.ts +55 -0
  63. package/dist/components/FaceLiquify/index.d.ts +10 -0
  64. package/dist/components/FaceLiquify/material.d.ts +39 -0
  65. package/dist/components/FaceLiquify/pass.d.ts +49 -0
  66. package/dist/components/FaceLiquify/presence.d.ts +25 -0
  67. package/dist/components/FaceLiquify/presets.d.ts +82 -0
  68. package/dist/components/FaceLiquify/selfTest.d.ts +66 -0
  69. package/dist/components/FaceLiquify/target.d.ts +85 -0
  70. package/dist/components/FaceLiquify/warp.d.ts +72 -0
  71. package/dist/components/FaceMesh/canonical/CanonicalFaceMeshRenderer.d.ts +5 -3
  72. package/dist/components/FaceMesh/canonical/geometryGroups.d.ts +21 -0
  73. package/dist/components/FaceMesh/canonical/parseCanonicalFaceModel.d.ts +9 -0
  74. package/dist/components/FaceMesh/index.d.ts +1 -1
  75. package/dist/components/FaceRetouch/Background.d.ts +3 -1
  76. package/dist/components/FaceRetouch/FaceRetouch.d.ts +5 -0
  77. package/dist/components/FaceRetouch/renderState.d.ts +19 -0
  78. package/dist/components/FaceSwap/FaceMirror.d.ts +46 -0
  79. package/dist/components/FaceSwap/FaceSwap.d.ts +58 -0
  80. package/dist/components/FaceSwap/FaceTextureLayer.d.ts +72 -0
  81. package/dist/components/FaceSwap/faceSwapPlan.d.ts +91 -0
  82. package/dist/components/FaceSwap/index.d.ts +13 -0
  83. package/dist/components/FaceSwap/settings.d.ts +300 -0
  84. package/dist/components/FaceSwap/useFaceTexture.d.ts +35 -0
  85. package/dist/components/FaceSwap/useLiveFace.d.ts +38 -0
  86. package/dist/components/FaceSwap/useLiveFaceTexture.d.ts +31 -0
  87. package/dist/components/FaceWarp3D/FaceWarp3D.d.ts +50 -0
  88. package/dist/components/FaceWarp3D/index.d.ts +2 -3
  89. package/dist/components/Faceless/Faceless.d.ts +51 -0
  90. package/dist/components/Faceless/index.d.ts +2 -0
  91. package/dist/components/HairLock/HairLock.d.ts +39 -0
  92. package/dist/components/HairLock/index.d.ts +2 -0
  93. package/dist/components/HairLock/lockGeometry.d.ts +15 -0
  94. package/dist/components/HandCutout/index.d.ts +35 -0
  95. package/dist/components/HandInstruction/HandGestureHint.d.ts +70 -0
  96. package/dist/components/HandInstruction/index.d.ts +74 -0
  97. package/dist/components/HandInstruction/useHandGesture.d.ts +22 -0
  98. package/dist/components/HandRig/ForearmOccluder.d.ts +29 -0
  99. package/dist/components/HandRig/HandAttachment.d.ts +34 -0
  100. package/dist/components/HandRig/HandOccluder.d.ts +55 -0
  101. package/dist/components/HandRig/HandTattoo.d.ts +61 -0
  102. package/dist/components/HandRig/WristAttachment.d.ts +34 -0
  103. package/dist/components/HandRig/index.d.ts +101 -0
  104. package/dist/components/HandRig/useArmMask.d.ts +29 -0
  105. package/dist/components/HandRig/wristSolve.d.ts +69 -0
  106. package/dist/components/HandTouch/HandTouch.d.ts +62 -0
  107. package/dist/components/HandTouch/Touchable.d.ts +36 -0
  108. package/dist/components/HandTouch/index.d.ts +2 -0
  109. package/dist/components/HeadBinding/index.d.ts +14 -0
  110. package/dist/components/HeadOccluder/CanonicalHeadFrame.d.ts +22 -0
  111. package/dist/components/HeadOccluder/Earrings.d.ts +55 -0
  112. package/dist/components/HeadOccluder/HeadAttachment.d.ts +38 -0
  113. package/dist/components/HeadOccluder/NeckOccluder.d.ts +64 -0
  114. package/dist/components/HeadOccluder/earringPlacement.d.ts +31 -0
  115. package/dist/components/HeadOccluder/headAttachmentPoints.d.ts +69 -0
  116. package/dist/components/HeadOccluder/index.d.ts +57 -3
  117. package/dist/components/HeadOccluder/useCanonicalHeadFit.d.ts +36 -0
  118. package/dist/components/HeadOccluder/useLandmarkPoseFit.d.ts +80 -0
  119. package/dist/components/Instruction/HintStage.d.ts +29 -0
  120. package/dist/components/Instruction/InstructionCue.d.ts +126 -0
  121. package/dist/components/Instruction/gestureHold.d.ts +20 -0
  122. package/dist/components/Instruction/ghost.d.ts +129 -0
  123. package/dist/components/Instruction/hintBlend.d.ts +19 -0
  124. package/dist/components/Instruction/hintLook.d.ts +81 -0
  125. package/dist/components/Instruction/hintLoop.d.ts +36 -0
  126. package/dist/components/Instruction/index.d.ts +41 -0
  127. package/dist/components/Instruction/useGhostModel.d.ts +33 -0
  128. package/dist/components/Instruction/useInstructionHold.d.ts +72 -0
  129. package/dist/components/LipEffect/LipEffect.d.ts +22 -2
  130. package/dist/components/LipEffect/LipEffectMaterial.d.ts +62 -10
  131. package/dist/components/LipEffect/LipEffects.d.ts +5 -2
  132. package/dist/components/LipEffect/defaults.d.ts +21 -2
  133. package/dist/components/LipEffect/index.d.ts +1 -1
  134. package/dist/components/LipEffect/lipShading.d.ts +73 -0
  135. package/dist/components/LipEffect/settings.d.ts +117 -13
  136. package/dist/components/LipEffect/shader.d.ts +39 -0
  137. package/dist/components/LipEffect/types.d.ts +82 -10
  138. package/dist/components/LipEffect/useLipDesignTextures.d.ts +6 -0
  139. package/dist/components/LipEffect/uvGuide.d.ts +31 -16
  140. package/dist/components/Makeup/Blush.d.ts +18 -0
  141. package/dist/components/Makeup/Brows.d.ts +20 -0
  142. package/dist/components/Makeup/Contour.d.ts +17 -0
  143. package/dist/components/Makeup/Eyeliner.d.ts +20 -0
  144. package/dist/components/Makeup/Eyeshadow.d.ts +20 -0
  145. package/dist/components/Makeup/Highlighter.d.ts +18 -0
  146. package/dist/components/Makeup/MakeupDesign.d.ts +37 -0
  147. package/dist/components/Makeup/MakeupRegion.d.ts +132 -0
  148. package/dist/components/Makeup/constants.d.ts +44 -0
  149. package/dist/components/Makeup/design.d.ts +106 -0
  150. package/dist/components/Makeup/designSamples.d.ts +42 -0
  151. package/dist/components/Makeup/eyes.d.ts +114 -0
  152. package/dist/components/Makeup/fields.d.ts +10 -0
  153. package/dist/components/Makeup/geometry.d.ts +106 -0
  154. package/dist/components/Makeup/index.d.ts +26 -0
  155. package/dist/components/Makeup/looks.d.ts +28 -0
  156. package/dist/components/Makeup/material.d.ts +239 -0
  157. package/dist/components/Makeup/settings.d.ts +54 -0
  158. package/dist/components/Makeup/shades.d.ts +143 -0
  159. package/dist/components/Makeup/shapes.d.ts +27 -0
  160. package/dist/components/Makeup/skinTone.d.ts +135 -0
  161. package/dist/components/Makeup/types.d.ts +110 -0
  162. package/dist/components/Makeup/useMakeupSkinTone.d.ts +40 -0
  163. package/dist/components/Necklace/Necklace.d.ts +44 -0
  164. package/dist/components/Necklace/index.d.ts +1 -0
  165. package/dist/components/ParticleEmitter/ParticleEmitter.d.ts +69 -0
  166. package/dist/components/ParticleEmitter/index.d.ts +1 -0
  167. package/dist/components/ShoulderOccluder/index.d.ts +43 -0
  168. package/dist/components/ShoulderOccluder/useCanonicalTorsoFit.d.ts +24 -0
  169. package/dist/components/SpringSwing/SpringSwing.d.ts +22 -0
  170. package/dist/components/SpringSwing/index.d.ts +1 -0
  171. package/dist/components/XRScene/renderOutputTarget.d.ts +12 -0
  172. package/dist/components/index.d.ts +8 -0
  173. package/dist/config/index.d.ts +0 -1
  174. package/dist/context-DTxSQvp4.js +13 -0
  175. package/dist/context-hA0Rb2Xa.cjs +1 -0
  176. package/dist/contexts-BH7PdKFS.cjs +1 -0
  177. package/dist/contexts-jak8-tND.js +667 -0
  178. package/dist/coordinates/index.d.ts +2 -0
  179. package/dist/coordinates/side.d.ts +40 -0
  180. package/dist/debug-ui/default-setting.cjs +2 -2
  181. package/dist/debug-ui/face-swap-settings/index.d.ts +22 -0
  182. package/dist/debug-ui/hierarchy-panel/index.d.ts +3 -2
  183. package/dist/debug-ui/index.d.ts +4 -3
  184. package/dist/debug-ui/media-source/index.d.ts +1 -1
  185. package/dist/debug-ui/media-source/session.d.ts +30 -2
  186. package/dist/debug-ui/media-source.cjs +1 -1
  187. package/dist/debug-ui/media-source.js +1 -1
  188. package/dist/debug-ui/object-inspector-panel/index.d.ts +3 -2
  189. package/dist/debug-ui/product-hotspots/index.d.ts +3 -2
  190. package/dist/debug-ui/scene-editor/hierarchy-panel.d.ts +3 -1
  191. package/dist/debug-ui/scene-editor/inspector-panel.d.ts +3 -1
  192. package/dist/debug-ui/screen-image-settings/index.d.ts +3 -1
  193. package/dist/debug-ui/screen-text-settings/ScreenTextSettingsPanel.d.ts +1 -1
  194. package/dist/debug-ui/screen-text-settings/types.d.ts +2 -0
  195. package/dist/debug-ui/settings-panel/index.d.ts +6 -1
  196. package/dist/debug-ui/shared/debugWindow.d.ts +51 -0
  197. package/dist/debug-ui/xr-diagnostics/index.d.ts +3 -2
  198. package/dist/debug-ui.cjs +3 -3
  199. package/dist/debug-ui.js +2250 -2472
  200. package/dist/entries/all.d.ts +3 -1
  201. package/dist/entries/core.d.ts +3 -2
  202. package/dist/entries/face-effects.d.ts +114 -8
  203. package/dist/entries/instructions.d.ts +48 -0
  204. package/dist/entries/internal.d.ts +2 -1
  205. package/dist/entries/low-level.d.ts +28 -1
  206. package/dist/entries/particles.d.ts +11 -0
  207. package/dist/entries/tracking.d.ts +37 -2
  208. package/dist/face-atlas/attributes.d.ts +30 -0
  209. package/dist/face-atlas/eyes.d.ts +272 -0
  210. package/dist/face-atlas/faceAtlas.generated.d.ts +46 -0
  211. package/dist/face-atlas/glsl/atlasVertex.d.ts +46 -0
  212. package/dist/face-atlas/glsl/common.d.ts +55 -0
  213. package/dist/face-atlas/glsl/design.d.ts +49 -0
  214. package/dist/face-atlas/glsl/eyes.d.ts +73 -0
  215. package/dist/face-atlas/glsl/finish.d.ts +24 -0
  216. package/dist/face-atlas/glsl/format.d.ts +4 -0
  217. package/dist/face-atlas/glsl/index.d.ts +59 -0
  218. package/dist/face-atlas/glsl/shading.d.ts +15 -0
  219. package/dist/face-atlas/glsl/shapes.d.ts +66 -0
  220. package/dist/face-atlas/glsl/sparkle.d.ts +19 -0
  221. package/dist/face-atlas/glsl/uniforms.d.ts +106 -0
  222. package/dist/face-atlas/guide.d.ts +51 -0
  223. package/dist/face-atlas/index.d.ts +25 -0
  224. package/dist/face-atlas/lead.d.ts +117 -0
  225. package/dist/face-atlas/madeUpCamera.d.ts +125 -0
  226. package/dist/face-atlas/masks.d.ts +53 -0
  227. package/dist/face-atlas/obj.d.ts +69 -0
  228. package/dist/face-atlas/polylines.d.ts +63 -0
  229. package/dist/face-atlas/probe/FaceSkinProbe.d.ts +208 -0
  230. package/dist/face-atlas/probe/__fixtures__/emulate.d.ts +9 -0
  231. package/dist/face-atlas/probe/__fixtures__/face.d.ts +24 -0
  232. package/dist/face-atlas/probe/constants.d.ts +137 -0
  233. package/dist/face-atlas/probe/glsl.d.ts +43 -0
  234. package/dist/face-atlas/probe/lightFit.d.ts +108 -0
  235. package/dist/face-atlas/probe/schedule.d.ts +44 -0
  236. package/dist/face-atlas/probe/selfTest.d.ts +87 -0
  237. package/dist/face-atlas/probe/stats.d.ts +143 -0
  238. package/dist/face-atlas/probe/targets.d.ts +70 -0
  239. package/dist/face-atlas/probe/unwrap.d.ts +76 -0
  240. package/dist/face-atlas/quality.d.ts +28 -0
  241. package/dist/face-atlas/regions.d.ts +31 -0
  242. package/dist/face-atlas/registry.d.ts +252 -0
  243. package/dist/face-atlas/renderState.d.ts +86 -0
  244. package/dist/face-atlas/selfOcclusion.d.ts +62 -0
  245. package/dist/face-atlas/shading.d.ts +406 -0
  246. package/dist/face-atlas/shapes.d.ts +86 -0
  247. package/dist/face-atlas/sides.d.ts +41 -0
  248. package/dist/face-atlas/skinMask.d.ts +35 -0
  249. package/dist/face-atlas/surface.d.ts +155 -0
  250. package/dist/face-atlas/topology.d.ts +44 -0
  251. package/dist/face-character/__fixtures__/faceImageDetections.d.ts +25 -0
  252. package/dist/face-character/__fixtures__/faceNode.d.ts +22 -0
  253. package/dist/face-character/bindFaceModel.d.ts +106 -0
  254. package/dist/face-character/canonicalFace.d.ts +17 -0
  255. package/dist/face-character/canonicalFaceGeometry.d.ts +11 -0
  256. package/dist/face-character/canonicalFacePositions.d.ts +7 -0
  257. package/dist/face-character/driveFaceModel.d.ts +57 -0
  258. package/dist/face-character/expressionOutputs.d.ts +45 -0
  259. package/dist/face-character/faceExpressions.d.ts +104 -0
  260. package/dist/face-character/faceImageLandmarker.d.ts +93 -0
  261. package/dist/face-character/faceMeshBinding.d.ts +62 -0
  262. package/dist/face-character/faceMorph.d.ts +77 -0
  263. package/dist/face-character/faceMorphs.d.ts +46 -0
  264. package/dist/face-character/facePhoto.d.ts +138 -0
  265. package/dist/face-character/facePiercings.d.ts +116 -0
  266. package/dist/face-character/facePin.d.ts +131 -0
  267. package/dist/face-character/faceReprojection.d.ts +273 -0
  268. package/dist/face-character/faceReprojector.d.ts +171 -0
  269. package/dist/face-character/faceRig.d.ts +176 -0
  270. package/dist/face-character/faceSwapPresence.d.ts +85 -0
  271. package/dist/face-character/faceTexture.d.ts +169 -0
  272. package/dist/face-character/faceTextureBaker.d.ts +86 -0
  273. package/dist/face-character/faceTextureGuide.d.ts +106 -0
  274. package/dist/face-character/faceTextureStats.d.ts +298 -0
  275. package/dist/face-character/faceTransfer.d.ts +396 -0
  276. package/dist/face-character/faceTransferGeometry.d.ts +109 -0
  277. package/dist/face-character/faceTransferSelfTest.d.ts +94 -0
  278. package/dist/face-character/faceWarp3D.d.ts +101 -0
  279. package/dist/face-character/faceless.d.ts +79 -0
  280. package/dist/face-character/featureWarp.d.ts +28 -0
  281. package/dist/face-character/liveFaceRegistry.d.ts +370 -0
  282. package/dist/face-character/liveValue.d.ts +12 -0
  283. package/dist/face-character/memo.d.ts +15 -0
  284. package/dist/face-effects.cjs +2252 -83
  285. package/dist/face-effects.js +14234 -1231
  286. package/dist/face-expression/index.d.ts +182 -0
  287. package/dist/face-info/landmarks.d.ts +17 -3
  288. package/dist/face-info/types.d.ts +20 -3
  289. package/dist/gestures/definitions.d.ts +15 -2
  290. package/dist/gestures/index.d.ts +1 -1
  291. package/dist/gestures/measures.d.ts +21 -8
  292. package/dist/getFaceInfo-B1otSDMX.cjs +1 -0
  293. package/dist/getFaceInfo-Cu4xDWiL.js +62 -0
  294. package/dist/hand/armFit.d.ts +46 -0
  295. package/dist/hand/armMask.d.ts +178 -0
  296. package/dist/hand/handCutout.d.ts +23 -0
  297. package/dist/hand/handCutoutRegistry.d.ts +7 -0
  298. package/dist/hand/handGestures.d.ts +524 -0
  299. package/dist/hand/handPose.d.ts +98 -0
  300. package/dist/hand/handRigSolver.d.ts +159 -0
  301. package/dist/hand/handTattoo.d.ts +81 -0
  302. package/dist/hand/handTouch.d.ts +240 -0
  303. package/dist/hand/wrist.d.ts +44 -0
  304. package/dist/hand/wristFilter.d.ts +44 -0
  305. package/dist/hooks/selectors.d.ts +8 -0
  306. package/dist/hooks/useFaceModelAcquisition.d.ts +38 -0
  307. package/dist/hooks/useTrackerContext.d.ts +6 -0
  308. package/dist/index-B1_TzJaI.js +1104 -0
  309. package/dist/index-BavF06C6.js +190 -0
  310. package/dist/index-BfFmpddl.cjs +21 -0
  311. package/dist/index-BuBzneeW.cjs +46 -0
  312. package/dist/index-CGsQWodV.cjs +1 -0
  313. package/dist/index-CIe7eCMH.js +3200 -0
  314. package/dist/index-CfSF8LXa.cjs +1 -0
  315. package/dist/index-D5GTzOzD.cjs +1 -0
  316. package/dist/index-DBhQzvVa.js +314 -0
  317. package/dist/index-DE17y0ZI.cjs +1 -0
  318. package/dist/index-JII7huPk.js +442 -0
  319. package/dist/index-tpCr9CLj.cjs +1 -0
  320. package/dist/{renderPasses-NnKZVfBy.js → index-w1S7fI2B.js} +219 -247
  321. package/dist/index-zGaqrz_K.js +188 -0
  322. package/dist/instructions.cjs +30 -0
  323. package/dist/instructions.js +1507 -0
  324. package/dist/{internal-vsfNQycj.js → internal-B90P-clC.js} +138 -118
  325. package/dist/internal-Cjinca64.cjs +1 -0
  326. package/dist/internal.cjs +1 -1
  327. package/dist/internal.js +15 -10
  328. package/dist/iris/compute.d.ts +7 -5
  329. package/dist/iris/types.d.ts +6 -4
  330. package/dist/{landmarkMask-CbTFzBYG.js → landmarkMask-BFDyBnKM.js} +6 -6
  331. package/dist/landmarks-BlUqf5MZ.cjs +1 -0
  332. package/dist/landmarks-bftdwq6Z.js +76 -0
  333. package/dist/loaders-BGAUACsd.js +363 -0
  334. package/dist/loaders-BJ1_QCHt.cjs +1 -0
  335. package/dist/low-level.cjs +1 -1
  336. package/dist/low-level.js +666 -602
  337. package/dist/main.cjs +1 -1
  338. package/dist/main.js +866 -1182
  339. package/dist/models/Body/index.d.ts +2 -0
  340. package/dist/models/Face/constants.d.ts +8 -0
  341. package/dist/models/Face/index.d.ts +3 -11
  342. package/dist/models/Face/rotation.d.ts +18 -3
  343. package/dist/models/Hand/HandTracking.d.ts +17 -1
  344. package/dist/models/Segmentation/index.d.ts +2 -0
  345. package/dist/models/nodeSource.d.ts +9 -0
  346. package/dist/particles/emission.d.ts +24 -0
  347. package/dist/particles/eyes.d.ts +24 -0
  348. package/dist/particles/glsl.d.ts +14 -0
  349. package/dist/particles/index.d.ts +10 -0
  350. package/dist/particles/motion.d.ts +42 -0
  351. package/dist/particles/presets.d.ts +12 -0
  352. package/dist/particles/ring.d.ts +58 -0
  353. package/dist/particles/selfTest.d.ts +53 -0
  354. package/dist/particles/settings.d.ts +127 -0
  355. package/dist/particles/shapes.d.ts +29 -0
  356. package/dist/particles/spawner.d.ts +60 -0
  357. package/dist/particles/system.d.ts +64 -0
  358. package/dist/particles.cjs +122 -0
  359. package/dist/particles.js +774 -0
  360. package/dist/product.cjs +1 -1
  361. package/dist/product.js +29 -29
  362. package/dist/{providers-C0Dlhh9Z.js → providers-C8rE26Uf.js} +127 -126
  363. package/dist/providers-DHsrhDI2.cjs +62 -0
  364. package/dist/render/renderPasses.d.ts +8 -0
  365. package/dist/render/sceneBeforeRender.d.ts +12 -0
  366. package/dist/{renderGroups-CN1cGFUo.js → renderGroups-B38pUaX2.js} +1 -1
  367. package/dist/{renderGroups-O4KmaMl9.cjs → renderGroups-Cb_4Ar1Q.cjs} +1 -1
  368. package/dist/renderPasses-B6l8IpJv.js +1290 -0
  369. package/dist/renderPasses-dqmkft4P.cjs +158 -0
  370. package/dist/renderState-CJNmj5jz.js +39 -0
  371. package/dist/renderState-apSfg4eR.cjs +1 -0
  372. package/dist/scene-object.cjs +1 -1
  373. package/dist/scene-object.js +2 -2
  374. package/dist/segmentation-Cb3ouK6Z.js +1758 -0
  375. package/dist/segmentation-D9pYO6aR.cjs +1 -0
  376. package/dist/segmentation2d/types.d.ts +6 -0
  377. package/dist/select-Ck5LGz-J.cjs +1 -0
  378. package/dist/select-pYRo_win.js +233 -0
  379. package/dist/selectors-C4X71aoD.cjs +1 -0
  380. package/dist/selectors-DmNaKIwE.js +196 -0
  381. package/dist/session-BrH8G7iJ.cjs +31 -0
  382. package/dist/session-DgA_z6O1.js +418 -0
  383. package/dist/{settings-aQk845NJ.js → settings-BJ7FMBsO.js} +53 -15
  384. package/dist/settings-C63FMBlF.cjs +1 -0
  385. package/dist/similarityFit-BFqHND2e.cjs +1 -0
  386. package/dist/similarityFit-Bbz-R8AY.js +91 -0
  387. package/dist/spring/index.d.ts +2 -0
  388. package/dist/spring/spring.d.ts +69 -0
  389. package/dist/spring/swing.d.ts +54 -0
  390. package/dist/tracking.cjs +10 -1
  391. package/dist/tracking.js +1002 -855
  392. package/dist/trigger-D0Pm9noT.cjs +49 -0
  393. package/dist/trigger-IQeys0oS.js +2128 -0
  394. package/dist/types/face.d.ts +20 -1
  395. package/dist/types/hand-tracking.d.ts +9 -0
  396. package/dist/types/nodes.d.ts +20 -1
  397. package/dist/types/segmentation.d.ts +5 -0
  398. package/dist/updateThrottle-BseecYag.js +4 -0
  399. package/dist/updateThrottle-Of5Y4SVa.cjs +1 -0
  400. package/dist/useFaceInfo-BHDNCvsJ.cjs +1 -0
  401. package/dist/useFaceInfo-J4x7LsqL.js +76 -0
  402. package/dist/useFaceResultReader-BvEo5REG.js +61 -0
  403. package/dist/useFaceResultReader-DuaL1KJG.cjs +1 -0
  404. package/dist/useInstructionHold-DOu-RpCM.js +53 -0
  405. package/dist/useInstructionHold-DwJY1Alr.cjs +1 -0
  406. package/dist/useLandmarkPoseFit-Bg-h9BPb.cjs +1 -0
  407. package/dist/useLandmarkPoseFit-Bmb3h6Mw.js +87 -0
  408. package/dist/{useXRCapabilities-B1R2ghy-.cjs → useXRCapabilities-Cr3RzuAW.cjs} +1 -1
  409. package/dist/{useXRCapabilities-C68v__wB.js → useXRCapabilities-Cxmlmpbd.js} +1 -1
  410. package/dist/utils/canonicalRigidLandmarks.d.ts +8 -0
  411. package/dist/utils/headOccluderFit.d.ts +42 -0
  412. package/dist/utils/integrity.d.ts +17 -0
  413. package/dist/utils/resolveNumFaces.d.ts +13 -0
  414. package/dist/utils/shoulderOccluderFit.d.ts +38 -0
  415. package/dist/utils/similarityFit.d.ts +23 -0
  416. package/dist/uv-BMFt19bg.cjs +1 -0
  417. package/dist/{index-CsUdQ-pn.js → uv-DJU_XfmN.js} +15 -249
  418. package/docs/SDK_DOCUMENTATION.md +1 -2
  419. package/docs/api/adaptive-quality.mdx +1 -1
  420. package/docs/api/body-instructions.mdx +285 -0
  421. package/docs/api/body-triggers.mdx +234 -0
  422. package/docs/api/camera-permission.mdx +1 -1
  423. package/docs/api/coordinate-spaces.mdx +7 -4
  424. package/docs/api/cross-camera.mdx +3 -2
  425. package/docs/api/debug-ui-scene-editor.mdx +23 -2
  426. package/docs/api/external-face-mesh.mdx +231 -0
  427. package/docs/api/face-actions.mdx +20 -16
  428. package/docs/api/face-attribute-expression.mdx +1 -1
  429. package/docs/api/face-binding-anchors.mdx +4 -2
  430. package/docs/api/face-character.mdx +157 -0
  431. package/docs/api/face-effects.mdx +3 -0
  432. package/docs/api/face-expression-controller.mdx +153 -0
  433. package/docs/api/face-info.mdx +17 -11
  434. package/docs/api/face-inset.mdx +204 -0
  435. package/docs/api/face-instructions.mdx +183 -0
  436. package/docs/api/face-liquify.mdx +196 -0
  437. package/docs/api/face-mesh.mdx +4 -7
  438. package/docs/api/face-morph.mdx +117 -0
  439. package/docs/api/face-painting.mdx +7 -0
  440. package/docs/api/face-reprojection.mdx +154 -0
  441. package/docs/api/face-retouching.mdx +18 -10
  442. package/docs/api/face-swap.mdx +350 -0
  443. package/docs/api/face-warp-3d.mdx +166 -0
  444. package/docs/api/faceless.mdx +143 -0
  445. package/docs/api/gestures.mdx +68 -32
  446. package/docs/api/hair.mdx +97 -0
  447. package/docs/api/hand-instructions.mdx +222 -0
  448. package/docs/api/hand-rig.mdx +535 -0
  449. package/docs/api/hand-touch.mdx +162 -0
  450. package/docs/api/head-occluder.mdx +563 -0
  451. package/docs/api/holistic-tracker.mdx +6 -1
  452. package/docs/api/instructions.mdx +323 -0
  453. package/docs/api/iris-tracking.mdx +24 -19
  454. package/docs/api/made-up-camera.mdx +131 -0
  455. package/docs/api/makeup-skin-tone.mdx +135 -0
  456. package/docs/api/makeup.mdx +353 -0
  457. package/docs/api/multi-subject.mdx +4 -1
  458. package/docs/api/particles.mdx +155 -0
  459. package/docs/api/person-cutout.mdx +1 -1
  460. package/docs/api/pin-to-face-mesh.mdx +274 -0
  461. package/docs/api/product-ar.mdx +5 -2
  462. package/docs/api/segmentation-overlay.mdx +1 -1
  463. package/docs/docs.json +29 -1
  464. package/docs/examples/lip-shaders.mdx +82 -33
  465. package/docs/guides/face-atlas-template.svg +1 -0
  466. package/docs/guides/face-atlas-textures.mdx +186 -0
  467. package/docs/guides/face-texture-template.svg +1 -0
  468. package/docs/guides/harness-debug-ui.mdx +4 -4
  469. package/docs/guides/lip-effect-textures.mdx +178 -102
  470. package/docs/guides/lip-uv-template.png +0 -0
  471. package/docs/guides/lip-uv-template.svg +1 -1
  472. package/docs/guides/makeup-design-textures.mdx +109 -0
  473. package/docs/introduction.mdx +1 -2
  474. package/package.json +11 -1
  475. package/dist/DebuggerUI-C-ldiozL.js +0 -269
  476. package/dist/DebuggerUI-CWX5EtQv.cjs +0 -1
  477. package/dist/FaceMeshRenderer-BEEXZwS6.cjs +0 -158
  478. package/dist/FaceMeshRenderer-UuH5sTXG.js +0 -1322
  479. package/dist/FaceRetouch-C7h7x9kd.js +0 -683
  480. package/dist/FaceRetouch-DqftT26Y.cjs +0 -134
  481. package/dist/GLTFLoader-C5q63sKO.js +0 -1633
  482. package/dist/GLTFLoader-Cb_CRwmG.cjs +0 -1
  483. package/dist/SegmentationOverlay-DQuW3dsc.js +0 -133
  484. package/dist/SegmentationOverlay-aWVod8Kl.cjs +0 -1
  485. package/dist/components/FaceWarp3D/FaceWarp3DHead.d.ts +0 -15
  486. package/dist/components/FaceWarp3D/defaults.d.ts +0 -37
  487. package/dist/components/FaceWarp3D/warp.d.ts +0 -13
  488. package/dist/contexts-CO0sd4JQ.cjs +0 -1
  489. package/dist/contexts-FzlnnMYD.js +0 -669
  490. package/dist/debug-ui/face-warp-3d/index.d.ts +0 -6
  491. package/dist/getFaceInfo-BkZfaQs-.js +0 -118
  492. package/dist/getFaceInfo-ahPxQFGu.cjs +0 -1
  493. package/dist/index--RgGzZ6X.cjs +0 -47
  494. package/dist/index-CHVbH0hz.js +0 -214
  495. package/dist/index-CeVkgsag.cjs +0 -1
  496. package/dist/index-CnGox6Xr.js +0 -3054
  497. package/dist/index-DKBAh6hV.cjs +0 -1
  498. package/dist/index-DsZwTfG0.cjs +0 -1
  499. package/dist/index-Dw6tj2Mi.js +0 -144
  500. package/dist/index-OCPjOaeP.cjs +0 -1
  501. package/dist/index-s9pF4zkG.js +0 -2053
  502. package/dist/internal-BYza1h8_.cjs +0 -1
  503. package/dist/measures-9dQPdw96.js +0 -154
  504. package/dist/measures-KfJzpvod.cjs +0 -1
  505. package/dist/providers-YNwkmNeK.cjs +0 -62
  506. package/dist/renderPasses-Cg-zqmEz.cjs +0 -21
  507. package/dist/screenTransform-BenfCtZt.js +0 -44
  508. package/dist/screenTransform-BiXdpVf0.cjs +0 -1
  509. package/dist/segmentation-9PhSvc-R.cjs +0 -1
  510. package/dist/segmentation-CeOTKemr.js +0 -5
  511. package/dist/selectors-C5G1PMYL.js +0 -195
  512. package/dist/selectors-Du_PsVnW.cjs +0 -1
  513. package/dist/session-BBr0yN8h.cjs +0 -31
  514. package/dist/session-Cy0m7l7-.js +0 -363
  515. package/dist/settings-DRR7-snV.cjs +0 -1
  516. package/dist/useFaceInfo-Blf7FCu3.js +0 -303
  517. package/dist/useFaceInfo-C5mO8NQY.cjs +0 -1
@@ -0,0 +1,64 @@
1
+ import { ParticleRing } from './ring';
2
+ import { ParticleSettings, ResolvedParticleSettings } from './settings';
3
+ import * as THREE from "three";
4
+ /**
5
+ * One emitter's particles on the GPU (no React): `mesh` draws every slot of
6
+ * the spawner's ring as an instanced quad, and `update` emits, uploads only
7
+ * the new slots and moves the clock. The mesh is in world space wherever it
8
+ * sits in the scene (its own transform is ignored).
9
+ */
10
+ export type ParticleUniforms = {
11
+ uTime: THREE.IUniform<number>;
12
+ uDrag: THREE.IUniform<number>;
13
+ uAcceleration: THREE.IUniform<THREE.Vector3>;
14
+ uSize: THREE.IUniform<THREE.Vector2>;
15
+ uOpacity: THREE.IUniform<THREE.Vector2>;
16
+ uColors: THREE.IUniform<THREE.Vector3[]>;
17
+ uColorCount: THREE.IUniform<number>;
18
+ uSprite: THREE.IUniform<number>;
19
+ uStretch: THREE.IUniform<number>;
20
+ };
21
+ export declare const createParticleUniforms: () => ParticleUniforms;
22
+ /** Writes resolved settings into the uniforms (everything but the clock). */
23
+ export declare const applyParticleUniforms: (uniforms: ParticleUniforms, settings: ResolvedParticleSettings) => void;
24
+ export declare class ParticleSystem {
25
+ /** Add it anywhere in the scene (its own transform is ignored); render order is yours to set. */
26
+ readonly mesh: THREE.Mesh<THREE.InstancedBufferGeometry, THREE.ShaderMaterial>;
27
+ readonly uniforms: ParticleUniforms;
28
+ private readonly spawner;
29
+ private buffer;
30
+ private bufferRing;
31
+ private epoch;
32
+ private readonly ranges;
33
+ private disposed;
34
+ constructor(settings?: Partial<ParticleSettings>, base?: ParticleSettings);
35
+ /** The settings in use (resolved). */
36
+ get settings(): ResolvedParticleSettings;
37
+ /** The spawn records (slots in use show their lifetime above 0). */
38
+ get ring(): ParticleRing;
39
+ /** The clock the shader draws at (s since the first update). */
40
+ get time(): number;
41
+ /**
42
+ * New settings (any subset, over `base`, default `DEFAULT_PARTICLE_SETTINGS`).
43
+ * A new capacity empties the particles; anything else applies to the
44
+ * particles already out too.
45
+ */
46
+ setSettings(settings: Partial<ParticleSettings>, base?: ParticleSettings): void;
47
+ /**
48
+ * One frame: the emitter at `matrix` (world) at `time` (s, any clock that
49
+ * moves forward). Emits the particles due (unless `emitting` is false),
50
+ * uploads the new slots and sets the clock. Call it after the world
51
+ * matrices are up to date and before the render (the scene's
52
+ * `onBeforeRender`) so new particles draw this frame. A second call at the
53
+ * same time does nothing more. Returns how many were emitted.
54
+ */
55
+ update(matrix: THREE.Matrix4, time: number, emitting?: boolean): number;
56
+ /** Particles alive now (counts the ring on the CPU: for a readout, not every frame). */
57
+ aliveCount(): number;
58
+ /** Removes every particle; the next update starts emitting again. */
59
+ reset(): void;
60
+ dispose(): void;
61
+ private apply;
62
+ /** A new ring (a capacity change) needs a new geometry around it. */
63
+ private syncRing;
64
+ }
@@ -0,0 +1,122 @@
1
+ "use strict";var je=Object.defineProperty;var Ge=(t,e,i)=>e in t?je(t,e,{enumerable:!0,configurable:!0,writable:!0,value:i}):t[e]=i;var p=(t,e,i)=>Ge(t,typeof e!="symbol"?e+"":e,i);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const T=require("react/jsx-runtime"),W=require("@react-three/fiber"),R=require("react"),Ve=require("./selectors-C4X71aoD.cjs"),K=require("./index-DE17y0ZI.cjs"),Je=require("./index-CfSF8LXa.cjs"),re=require("./CanonicalHeadFrame-D-_T1OMU.cjs"),Be=require("three"),Ue=require("./useLandmarkPoseFit-Bg-h9BPb.cjs");function He(t){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const i in t)if(i!=="default"){const r=Object.getOwnPropertyDescriptor(t,i);Object.defineProperty(e,i,r.get?r:{enumerable:!0,get:()=>t[i]})}}return e.default=t,Object.freeze(e)}const f=He(Be),qe=["leftEye","rightEye","eyes"],Xe=[263,249,390,373,374,380,381,382,362,398,384,385,386,387,388,466],Ye=[33,7,163,144,145,153,154,155,133,173,157,158,159,160,161,246],Q=t=>{const e=[0,0,0];return t.forEach(i=>{for(let r=0;r<3;r+=1)e[r]+=re.CANONICAL_FACE_POSITIONS[i*3+r]/t.length}),e},se=.4,ae=(()=>{const t=Q(Xe),e=Q(Ye);return Object.freeze([(t[0]-e[0])/2,(t[1]+e[1])/2,(t[2]+e[2])/2+se])})(),oe=(t,e)=>{const[i,r,s]=ae;return[Je.personLeftSign(e)*(t==="left"?1:-1)*i,r,s]},ne=t=>t==="eyes"?["left","right"]:[t==="leftEye"?"left":"right"],ce=["point","sphere","box","cone"],le=["glow","streak"],fe=["additive","normal"],D=4,z=65536,L=Object.freeze({rate:60,lifetime:1.5,lifetimeJitter:.2,shape:"cone",radius:0,boxSize:Object.freeze([10,10,10]),angle:15,surface:!1,speed:30,speedJitter:.2,gravity:0,wind:Object.freeze([0,0,0]),drag:0,size:Object.freeze([1,.2]),sizeJitter:.3,color:"#ffffff",opacity:Object.freeze([1,0]),sprite:"glow",stretch:.05,blending:"additive",maxParticles:0,seed:1}),he={rate:[0,1e4],lifetime:[.02,30],lifetimeJitter:[0,1],radius:[0,1e4],boxSize:[0,1e4],angle:[0,180],speed:[0,1e5],speedJitter:[0,1],gravity:[-1e5,1e5],wind:[-1e5,1e5],drag:[0,100],size:[0,1e4],sizeJitter:[0,1],opacity:[0,1],stretch:[0,1],maxParticles:[0,z],seed:[-1e9,1e9]},I=(t,e,i,r)=>typeof t=="number"&&Number.isFinite(t)?Math.min(i,Math.max(e,t)):r,k=(t,e,i)=>typeof e=="string"&&t.includes(e)?e:i,Z=(t,[e,i],r)=>{const s=Array.isArray(t)?t:[];return[0,1,2].map(a=>I(s[a],e,i,r[a]))},ee=(t,[e,i],r)=>{const s=typeof r=="number"?[r,r]:r;if(typeof t=="number"){const o=I(t,e,i,s[0]);return[o,o]}const a=Array.isArray(t)?t:[];return[I(a[0],e,i,s[0]),I(a[1],e,i,s[1])]},v=new f.Color,pe=t=>typeof t=="number"&&Number.isFinite(t)?(v.setHex(Math.max(0,Math.min(16777215,Math.round(t)))),[v.r,v.g,v.b]):typeof t!="string"||t.trim()===""?null:(v.setRGB(-1,-1,-1),v.setStyle(t),v.r<0?null:[v.r,v.g,v.b]),$e=(t,e)=>{const i=s=>{const o=(Array.isArray(s)?s:[s]).slice(0,D).map(pe);return o.length>0&&o.every(Boolean)?o:null},r=i(t)??i(e)??[[1,1,1]];return{colors:Float32Array.from(r.flat()),colorCount:r.length}},ue=(t,e,i=0)=>{if(i>0)return Math.min(z,Math.ceil(i));const r=Math.max(0,t)*Math.max(0,e);return Math.min(z,Math.max(1,Math.ceil(r*1.1+Math.max(0,t)*.1)+8))},F=(t={},e=L)=>{const i=he,r=n=>I(t[n],i[n][0],i[n][1],e[n]),s=r("rate"),a=r("lifetime"),o=Math.round(r("maxParticles"));return{rate:s,lifetime:a,lifetimeJitter:r("lifetimeJitter"),shape:k(ce,t.shape,e.shape),radius:r("radius"),boxSize:Z(t.boxSize,i.boxSize,e.boxSize),angle:r("angle"),surface:typeof t.surface=="boolean"?t.surface:e.surface,speed:r("speed"),speedJitter:r("speedJitter"),gravity:r("gravity"),wind:Z(t.wind,i.wind,e.wind),drag:r("drag"),size:ee(t.size,i.size,e.size),sizeJitter:r("sizeJitter"),...$e(t.color,e.color),opacity:ee(t.opacity,i.opacity,e.opacity),sprite:k(le,t.sprite,e.sprite),stretch:r("stretch"),blending:k(fe,t.blending,e.blending),maxParticles:o,seed:r("seed"),capacity:ue(s,a,o)}},me=["laser"],de=Object.freeze({laser:Object.freeze({rate:900,lifetime:.3,lifetimeJitter:.15,shape:"cone",radius:.08,angle:.6,speed:260,speedJitter:.05,gravity:0,wind:[0,0,0],drag:0,size:[.5,.2],sizeJitter:.2,color:["#ffffff","#ff3b30","#7a0000"],opacity:[1,0],sprite:"streak",stretch:.08,blending:"additive"})}),ye=t=>typeof t=="string"&&me.includes(t),Ee=t=>ye(t)?{...L,...de[t]}:L,A=12,b=Object.freeze({position:0,birth:3,velocity:4,lifetime:7,sizeScale:8,unit:9,seed:10}),Se=()=>({position:[0,0,0],velocity:[0,0,0],birth:0,lifetime:0,sizeScale:1,unit:1,seed:0});class j{constructor(e){p(this,"capacity");p(this,"data");p(this,"head",0);p(this,"dirtyFirst",0);p(this,"dirtyCount",0);this.capacity=Math.max(1,Math.floor(e)),this.data=new Float32Array(this.capacity*A)}get next(){return this.head}push(e){const i=this.head,r=i*A,s=this.data,a=b;return s[r+a.position]=e.position[0],s[r+a.position+1]=e.position[1],s[r+a.position+2]=e.position[2],s[r+a.birth]=e.birth,s[r+a.velocity]=e.velocity[0],s[r+a.velocity+1]=e.velocity[1],s[r+a.velocity+2]=e.velocity[2],s[r+a.lifetime]=e.lifetime,s[r+a.sizeScale]=e.sizeScale,s[r+a.unit]=e.unit,s[r+a.seed]=e.seed,s[r+11]=0,this.dirtyCount===0&&(this.dirtyFirst=i),this.dirtyCount=Math.min(this.capacity,this.dirtyCount+1),this.head=(i+1)%this.capacity,i}takeDirty(e=[]){e.length=0;const i=this.dirtyCount;if(i===0)return e;if(i>=this.capacity)e.push([0,this.capacity]);else{const r=this.dirtyFirst,s=r+i;s<=this.capacity?e.push([r,i]):e.push([r,this.capacity-r],[0,s-this.capacity])}return this.dirtyCount=0,e}clear(){this.data.fill(0),this.head=0,this.dirtyFirst=0,this.dirtyCount=this.capacity}aliveAt(e){const i=this.data;let r=0;for(let s=0;s<i.length;s+=A){const a=e-i[s+b.birth];a>=0&&a<i[s+b.lifetime]&&(r+=1)}return r}}const O=.01,ge=(t,e)=>{const i=t*e;return i<O?e*(1-i/2+i*i/6-i*i*i/24):(1-Math.exp(-i))/t},ve=(t,e)=>{const i=t*e;return i<O?e*e*(.5-i/6+i*i/24-i*i*i/120):(e-(1-Math.exp(-i))/t)/t},B=(t,e=[0,0,0])=>(e[0]=t.wind[0],e[1]=t.wind[1]-t.gravity,e[2]=t.wind[2],e),G=(t,e)=>t[0]+(t[1]-t[0])*e,Re=(t,e,i=[0,0,0])=>{const{colors:r,colorCount:s}=t,a=Math.min(1,Math.max(0,e))*(s-1),o=Math.min(s-1,Math.floor(a)),n=Math.min(s-1,o+1),c=a-o;for(let l=0;l<3;l+=1)i[l]=r[o*3+l]+(r[n*3+l]-r[o*3+l])*c;return i},Ae=()=>({alive:!1,age:0,life:0,position:[0,0,0],velocity:[0,0,0],size:0,opacity:0,color:[0,0,0]}),te=[0,0,0],We=(t,e,i,r,s=Ae())=>{const a=e*A,o=b,n=t[a+o.lifetime],c=i-t[a+o.birth];s.age=c,s.alive=n>0&&c>=0&&c<n;const l=Math.min(Math.max(c,0),Math.max(n,0));s.life=n>0?l/n:0;const h=r.drag,u=ge(h,l),g=ve(h,l),P=Math.exp(-h*l),m=t[a+o.unit];B(r,te);for(let d=0;d<3;d+=1){const M=te[d]*m,y=t[a+o.velocity+d];s.position[d]=t[a+o.position+d]+y*u+M*g,s.velocity[d]=y*P+M*u}return s.size=G(r.size,s.life)*t[a+o.sizeScale],s.opacity=G(r.opacity,s.life),Re(r,s.life,s.color),s},Ke=t=>Number.isInteger(t)?`${t}.0`:`${t}`,Pe=`
2
+ uniform float uTime;
3
+ uniform float uDrag;
4
+ uniform vec3 uAcceleration;
5
+ uniform vec2 uSize;
6
+ uniform vec2 uOpacity;
7
+ uniform vec3 uColors[${D}];
8
+ uniform float uColorCount;
9
+
10
+ const float PARTICLE_DRAG_SERIES_LIMIT = ${Ke(O)};
11
+
12
+ float particleDragDistance(float k, float t) {
13
+ float kt = k * t;
14
+ if (kt < PARTICLE_DRAG_SERIES_LIMIT) {
15
+ return t * (1.0 - kt / 2.0 + kt * kt / 6.0 - kt * kt * kt / 24.0);
16
+ }
17
+ return (1.0 - exp(-kt)) / k;
18
+ }
19
+
20
+ float particleDragAcceleration(float k, float t) {
21
+ float kt = k * t;
22
+ if (kt < PARTICLE_DRAG_SERIES_LIMIT) {
23
+ return t * t * (0.5 - kt / 6.0 + kt * kt / 24.0 - kt * kt * kt / 120.0);
24
+ }
25
+ return (t - (1.0 - exp(-kt)) / k) / k;
26
+ }
27
+
28
+ vec3 particleColorAt(float life) {
29
+ float last = max(uColorCount, 1.0) - 1.0;
30
+ float x = clamp(life, 0.0, 1.0) * last;
31
+ float i = min(floor(x), last);
32
+ float j = min(i + 1.0, last);
33
+ return mix(uColors[int(i)], uColors[int(j)], x - i);
34
+ }
35
+
36
+ struct ParticleState {
37
+ float alive;
38
+ float life;
39
+ vec3 position;
40
+ vec3 velocity;
41
+ float size;
42
+ float opacity;
43
+ vec3 color;
44
+ };
45
+
46
+ // start: position (world) and birth; motion: velocity (world) and lifetime;
47
+ // extra: size scale, unit (world units per emitter unit), seed.
48
+ ParticleState particleState(vec4 start, vec4 motion, vec4 extra, float time) {
49
+ ParticleState s;
50
+ float lifetime = motion.w;
51
+ float age = time - start.w;
52
+ s.alive = (lifetime > 0.0 && age >= 0.0 && age < lifetime) ? 1.0 : 0.0;
53
+ float t = clamp(age, 0.0, max(lifetime, 0.0));
54
+ s.life = lifetime > 0.0 ? t / lifetime : 0.0;
55
+ float D = particleDragDistance(uDrag, t);
56
+ float A = particleDragAcceleration(uDrag, t);
57
+ vec3 a = uAcceleration * extra.y;
58
+ s.position = start.xyz + motion.xyz * D + a * A;
59
+ s.velocity = motion.xyz * exp(-uDrag * t) + a * D;
60
+ s.size = mix(uSize.x, uSize.y, s.life) * extra.x;
61
+ s.opacity = mix(uOpacity.x, uOpacity.y, s.life);
62
+ s.color = particleColorAt(s.life);
63
+ return s;
64
+ }
65
+ `,Te=`
66
+ attribute vec4 aStart;
67
+ attribute vec4 aMotion;
68
+ attribute vec4 aExtra;
69
+ uniform float uSprite;
70
+ uniform float uStretch;
71
+ varying vec2 vCorner;
72
+ varying vec4 vColor;
73
+ varying float vStreak;
74
+ ${Pe}
75
+ void main() {
76
+ ParticleState p = particleState(aStart, aMotion, aExtra, uTime);
77
+ vCorner = position.xy;
78
+ vColor = vec4(p.color, p.opacity);
79
+ vStreak = 0.0;
80
+ if (p.alive < 0.5 || p.size <= 0.0 || p.opacity <= 0.0) {
81
+ gl_Position = vec4(0.0, 0.0, 2.0, 1.0);
82
+ return;
83
+ }
84
+ float halfSize = 0.5 * p.size;
85
+ vec3 head = (viewMatrix * vec4(p.position, 1.0)).xyz;
86
+ vec3 point = head + vec3(position.xy * halfSize, 0.0);
87
+ if (uSprite > 0.5) {
88
+ // Never longer than the particle's own path: a newborn streak starts at the emitter.
89
+ float tailSeconds = min(uStretch, max(uTime - aStart.w, 0.0));
90
+ vec3 tail = (viewMatrix * vec4(p.position - p.velocity * tailSeconds, 1.0)).xyz;
91
+ vec3 axis = head - tail;
92
+ vec3 toPoint = isOrthographic ? vec3(0.0, 0.0, -1.0) : normalize(head);
93
+ vec3 side = cross(axis, toPoint);
94
+ float sideLength = length(side);
95
+ // Seen end-on (or not moving), a streak is a glow.
96
+ if (sideLength > 0.05 * p.size) {
97
+ point = mix(tail, head, position.y * 0.5 + 0.5) + side / sideLength * position.x * halfSize;
98
+ vStreak = 1.0;
99
+ }
100
+ }
101
+ gl_Position = projectionMatrix * vec4(point, 1.0);
102
+ }
103
+ `,Ce=`
104
+ varying vec2 vCorner;
105
+ varying vec4 vColor;
106
+ varying float vStreak;
107
+ void main() {
108
+ float shape;
109
+ if (vStreak > 0.5) {
110
+ float across = exp(-5.0 * vCorner.x * vCorner.x);
111
+ float along = clamp(vCorner.y * 0.5 + 0.5, 0.0, 1.0);
112
+ shape = across * along * along * (1.0 - smoothstep(0.9, 1.0, along));
113
+ } else {
114
+ float r2 = dot(vCorner, vCorner);
115
+ shape = r2 < 1.0 ? (1.0 - r2) * (1.0 - r2) : 0.0;
116
+ }
117
+ float alpha = shape * vColor.a;
118
+ if (alpha < 0.002) discard;
119
+ gl_FragColor = vec4(vColor.rgb, alpha);
120
+ #include <colorspace_fragment>
121
+ }
122
+ `,xe=.25,Me=()=>({carry:0}),_e=(t,e,i,r=[],s=1/0)=>{if(r.length=0,!(e>0)||!(i>0))return r;const a=Math.min(xe,i),o=t.carry+e*a,n=Math.floor(o),c=Math.max(0,n-Math.max(0,Math.floor(s)));for(let l=c;l<n;l+=1){const h=(l+1-t.carry)/e;r.push(Math.min(1,(i-a+h)/i))}return t.carry=o-n,r},V=t=>{let e=Math.floor(t)>>>0;return()=>{e=e+1831565813>>>0;let i=e;return i=Math.imul(i^i>>>15,i|1),i^=i+Math.imul(i^i>>>7,i|61),((i^i>>>14)>>>0)/4294967296}},U=()=>({position:[0,0,0],direction:[0,0,1]}),Ie=Math.PI/180,w=(t,e,i)=>{const r=Math.cos(Math.min(180,Math.max(0,t))*Ie),s=1-e()*(1-r),a=Math.sqrt(Math.max(0,1-s*s)),o=e()*2*Math.PI;return i[0]=a*Math.cos(o),i[1]=a*Math.sin(o),i[2]=s,i},Qe=(t,e)=>w(180,t,e),be=(t,e,i=U())=>{const r=i.position,s=i.direction;switch(r[0]=0,r[1]=0,r[2]=0,t.shape){case"sphere":{Qe(e,s);const a=t.radius*(t.surface?1:Math.cbrt(e()));r[0]=s[0]*a,r[1]=s[1]*a,r[2]=s[2]*a;break}case"box":{const[a,o,n]=t.boxSize;if(r[0]=(e()-.5)*a,r[1]=(e()-.5)*o,r[2]=(e()-.5)*n,t.surface){const c=[o*n,a*n,a*o],l=c[0]+c[1]+c[2];let h=e()*(l>0?l:3),u=0;if(l>0)for(;u<2&&h>=c[u];)h-=c[u],u+=1;else u=Math.min(2,Math.floor(h));r[u]=(e()<.5?-.5:.5)*t.boxSize[u]}w(t.angle,e,s);break}case"cone":{const a=t.radius;if(a>0){const o=Math.sqrt(e()),n=e()*2*Math.PI,c=Math.cos(n),l=Math.sin(n);r[0]=a*o*c,r[1]=a*o*l;const h=Math.min(180,t.angle)*Ie*o;s[0]=Math.sin(h)*c,s[1]=Math.sin(h)*l,s[2]=Math.cos(h)}else w(t.angle,e,s);break}default:w(t.angle,e,s)}return i},J=t=>{const e=t.elements,i=Math.hypot(e[0],e[1],e[2]),r=Math.hypot(e[4],e[5],e[6]),s=Math.hypot(e[8],e[9],e[10]);return(i+r+s)/3},N=U(),S=Se(),x=new f.Vector3,E=new f.Vector3,_=new f.Vector3,we=(t,e,i,r,s)=>{const a=J(i.from),o=J(i.to);for(let n=0;n<r.length;n+=1){const c=r[n];be(e,s,N);const l=s(),h=s(),u=s(),g=s();x.fromArray(N.position),E.copy(x).applyMatrix4(i.from),_.copy(x).applyMatrix4(i.to),E.lerp(_,c),S.position[0]=E.x,S.position[1]=E.y,S.position[2]=E.z,x.fromArray(N.direction),E.copy(x).transformDirection(i.from),_.copy(x).transformDirection(i.to),E.lerp(_,c),E.lengthSq()>1e-12?E.normalize():E.copy(_);const P=a+(o-a)*c,m=e.speed*(1-e.speedJitter*l)*P;S.velocity[0]=E.x*m,S.velocity[1]=E.y*m,S.velocity[2]=E.z*m,S.birth=i.timeFrom+(i.timeTo-i.timeFrom)*c,S.lifetime=e.lifetime*(1-e.lifetimeJitter*h),S.sizeScale=(1-e.sizeJitter*u)*P,S.unit=P,S.seed=g,t.push(S)}};class Le{constructor(e){p(this,"ringValue");p(this,"settingsValue");p(this,"random");p(this,"emission",Me());p(this,"births",[]);p(this,"last",new f.Matrix4);p(this,"lastTime",null);p(this,"frame",{from:new f.Matrix4,to:new f.Matrix4,timeFrom:0,timeTo:0});this.settingsValue=e,this.ringValue=new j(e.capacity),this.random=V(e.seed)}get ring(){return this.ringValue}get settings(){return this.settingsValue}setSettings(e){const i=this.settingsValue;this.settingsValue=e,e.capacity!==i.capacity&&(this.ringValue=new j(e.capacity),this.ringValue.clear()),e.seed!==i.seed&&(this.random=V(e.seed))}update(e,i,r=!0){const s=this.lastTime;if(this.lastTime=i,s===null||!r||!(i>s))return this.last.copy(e),r||(this.emission.carry=0),0;const a=this.settingsValue;_e(this.emission,a.rate,i-s,this.births,this.ringValue.capacity);const o=this.frame;return o.from.copy(this.last),o.to.copy(e),o.timeFrom=s,o.timeTo=i,we(this.ringValue,a,o,this.births,this.random),this.last.copy(e),this.births.length}reset(){this.ringValue.clear(),this.emission.carry=0,this.lastTime=null}}const ze=()=>({uTime:{value:0},uDrag:{value:0},uAcceleration:{value:new f.Vector3},uSize:{value:new f.Vector2(1,1)},uOpacity:{value:new f.Vector2(1,1)},uColors:{value:Array.from({length:D},()=>new f.Vector3(1,1,1))},uColorCount:{value:1},uSprite:{value:0},uStretch:{value:0}}),De=(t,e)=>{t.uDrag.value=e.drag,t.uAcceleration.value.fromArray(B(e)),t.uSize.value.set(e.size[0],e.size[1]),t.uOpacity.value.set(e.opacity[0],e.opacity[1]),t.uColors.value.forEach((i,r)=>{const s=Math.min(r,e.colorCount-1)*3;i.set(e.colors[s],e.colors[s+1],e.colors[s+2])}),t.uColorCount.value=e.colorCount,t.uSprite.value=e.sprite==="streak"?1:0,t.uStretch.value=e.stretch},Ze=[-1,-1,0,1,-1,0,1,1,0,-1,1,0],et=[0,1,2,0,2,3],ie=t=>{const e=new f.InstancedBufferGeometry;e.setAttribute("position",new f.Float32BufferAttribute(Ze,3)),e.setIndex(et);const i=new f.InstancedInterleavedBuffer(t.data,A,1);return i.setUsage(f.DynamicDrawUsage),e.setAttribute("aStart",new f.InterleavedBufferAttribute(i,4,0)),e.setAttribute("aMotion",new f.InterleavedBufferAttribute(i,4,4)),e.setAttribute("aExtra",new f.InterleavedBufferAttribute(i,4,8)),e.instanceCount=t.capacity,e.boundingSphere=new f.Sphere(new f.Vector3,1/0),{geometry:e,buffer:i}};class Oe{constructor(e={},i){p(this,"mesh");p(this,"uniforms",ze());p(this,"spawner");p(this,"buffer");p(this,"bufferRing");p(this,"epoch",null);p(this,"ranges",[]);p(this,"disposed",!1);const r=F(e,i);this.spawner=new Le(r),this.bufferRing=this.spawner.ring;const{geometry:s,buffer:a}=ie(this.bufferRing);this.buffer=a;const o=new f.ShaderMaterial({name:"Particles",uniforms:this.uniforms,vertexShader:Te,fragmentShader:Ce,transparent:!0,depthTest:!0,depthWrite:!1,side:f.DoubleSide,toneMapped:!1});this.mesh=new f.Mesh(s,o),this.mesh.name="Particles",this.mesh.frustumCulled=!1,this.mesh.matrixAutoUpdate=!1,this.mesh.raycast=()=>{},this.apply(r)}get settings(){return this.spawner.settings}get ring(){return this.spawner.ring}get time(){return this.uniforms.uTime.value}setSettings(e,i=L){const r=F(e,i);this.spawner.setSettings(r),this.apply(r)}update(e,i,r=!0){if(this.disposed)return 0;this.epoch===null&&(this.epoch=i);const s=i-this.epoch,a=this.spawner.update(e,s,r);return this.syncRing(),this.spawner.ring.takeDirty(this.ranges),this.ranges.length>0&&(this.ranges.forEach(([o,n])=>this.buffer.addUpdateRange(o*A,n*A)),this.buffer.needsUpdate=!0),this.uniforms.uTime.value=s,a}aliveCount(){return this.spawner.ring.aliveAt(Math.fround(this.uniforms.uTime.value))}reset(){this.spawner.reset(),this.epoch=null,this.uniforms.uTime.value=0}dispose(){this.disposed||(this.disposed=!0,this.mesh.geometry.dispose(),this.mesh.material.dispose())}apply(e){De(this.uniforms,e),this.mesh.material.blending=e.blending==="additive"?f.AdditiveBlending:f.NormalBlending,this.syncRing()}syncRing(){const e=this.spawner.ring;if(e===this.bufferRing||!this.mesh)return;this.mesh.geometry.dispose();const{geometry:i,buffer:r}=ie(e);this.mesh.geometry=i,this.buffer=r,this.bufferRing=e}}const tt=t=>{for(let e=t;e;e=e.parent)if(!e.visible)return!1;return!0},H=R.forwardRef(({base:t,emitting:e=!0,renderOrder:i=0,position:r,rotation:s,scale:a,onSystem:o,children:n,...c},l)=>{const h=W.useThree(y=>y.scene),u=W.useThree(y=>y.get),g=R.useRef(null);R.useImperativeHandle(l,()=>g.current,[]);const P=JSON.stringify(c),m=R.useRef({settings:c,base:t,emitting:e,onSystem:o});m.current={settings:c,base:t,emitting:e,onSystem:o};const[d,M]=R.useState(null);return R.useEffect(()=>{var q,X;const y=new Oe(m.current.settings,m.current.base);h.add(y.mesh);const Fe=Ue.addSceneBeforeRender(h,()=>{const C=g.current;C&&y.update(C.matrixWorld,u().clock.elapsedTime,m.current.emitting&&tt(C))});return M(y),(X=(q=m.current).onSystem)==null||X.call(q,y),()=>{var C,Y;Fe(),h.remove(y.mesh),y.dispose(),(Y=(C=m.current).onSystem)==null||Y.call(C,null),M($=>$===y?null:$)}},[h,u]),R.useEffect(()=>{d==null||d.setSettings(m.current.settings,m.current.base)},[d,P,t]),d&&(d.mesh.renderOrder=i),T.jsx("group",{ref:g,position:r,rotation:s,scale:a,children:n})});H.displayName="Emitter";const ke=R.forwardRef(({target:t,faceIndex:e,numFaces:i,base:r,seed:s,...a},o)=>{const n=K.useTrackerContext(),c=Ve.useXRMirrored(),l=s??r.seed,h=T.jsx(re.CanonicalHeadFrame,{faceIndex:e,children:ne(t).map((u,g)=>T.jsx("group",{position:oe(u,c),children:T.jsx(H,{ref:g===0?o:void 0,base:r,seed:l+g,...a})},u))});return(n==null?void 0:n.type)==="face"?h:T.jsx(K.FaceTracker,{faceIndex:e??0,numFaces:i,children:h})});ke.displayName="EyeEmitters";const Ne=R.forwardRef(({preset:t,target:e,faceIndex:i,numFaces:r,...s},a)=>{const o=R.useMemo(()=>Ee(t),[t]);return e?T.jsx(ke,{ref:a,target:e,faceIndex:i,numFaces:r,base:o,...s}):T.jsx(H,{ref:a,base:o,...s})});Ne.displayName="ParticleEmitter";exports.DEFAULT_PARTICLE_SETTINGS=L;exports.PARTICLE_BLENDINGS=fe;exports.PARTICLE_DRAG_SERIES_LIMIT=O;exports.PARTICLE_EMITTER_TARGETS=qe;exports.PARTICLE_EYE_CENTRE=ae;exports.PARTICLE_EYE_FORWARD=se;exports.PARTICLE_FRAGMENT_SHADER=Ce;exports.PARTICLE_MAX_COLORS=D;exports.PARTICLE_MAX_PARTICLES=z;exports.PARTICLE_MAX_STEP=xe;exports.PARTICLE_PRESETS=de;exports.PARTICLE_PRESET_KEYS=me;exports.PARTICLE_RECORD=b;exports.PARTICLE_RECORD_FLOATS=A;exports.PARTICLE_SETTINGS_RANGES=he;exports.PARTICLE_SHAPES=ce;exports.PARTICLE_SPRITES=le;exports.PARTICLE_STATE_GLSL=Pe;exports.PARTICLE_VERTEX_SHADER=Te;exports.ParticleEmitter=Ne;exports.ParticleRing=j;exports.ParticleSpawner=Le;exports.ParticleSystem=Oe;exports.applyParticleUniforms=De;exports.createParticleEmission=Me;exports.createParticleRandom=V;exports.createParticleRecord=Se;exports.createParticleSample=Ae;exports.createParticleStart=U;exports.createParticleUniforms=ze;exports.isParticlePreset=ye;exports.parseParticleColor=pe;exports.particleAcceleration=B;exports.particleCapacity=ue;exports.particleColorAt=Re;exports.particleDragAcceleration=ve;exports.particleDragDistance=ge;exports.particleEyePosition=oe;exports.particleOverLife=G;exports.particlePresetBase=Ee;exports.particleTargetSides=ne;exports.particleUnitOf=J;exports.resolveParticleSettings=F;exports.sampleParticle=We;exports.sampleParticleCone=w;exports.sampleParticleStart=be;exports.spawnParticles=we;exports.stepParticleEmission=_e;