@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.
- package/GROUNDING.md +4643 -170
- package/README.md +1 -0
- package/dist/CanonicalHeadFrame-BHcWyaiK.js +1506 -0
- package/dist/CanonicalHeadFrame-D-_T1OMU.cjs +1 -0
- package/dist/DebuggerUI-7ngnJsBe.js +275 -0
- package/dist/DebuggerUI-CoglgKdO.cjs +1 -0
- package/dist/FaceRetouch-CLoTfrcs.js +1071 -0
- package/dist/FaceRetouch-J1lC1WbS.cjs +134 -0
- package/dist/FaceSurface-CHAMEeG1.cjs +1 -0
- package/dist/FaceSurface-DmP9AEeC.js +27 -0
- package/dist/SegmentationOverlay-D_FWkcyP.cjs +35 -0
- package/dist/SegmentationOverlay-vn5x_knv.js +6237 -0
- package/dist/SkeletonUtils-C2r90MtN.js +21 -0
- package/dist/SkeletonUtils-CddIup1F.cjs +1 -0
- package/dist/TextLabel-XE0rQSDn.cjs +2 -0
- package/dist/TextLabel-c9BCucOI.js +961 -0
- package/dist/assets/gltfLoader.d.ts +16 -0
- package/dist/assets/loaders.d.ts +16 -1
- package/dist/body-pose/index.d.ts +521 -0
- package/dist/body-trigger/__fixtures__/syntheticBody.d.ts +83 -0
- package/dist/body-trigger/frame.d.ts +88 -0
- package/dist/body-trigger/index.d.ts +6 -0
- package/dist/body-trigger/moves.d.ts +235 -0
- package/dist/body-trigger/trigger.d.ts +75 -0
- package/dist/calibration/calibration.d.ts +11 -6
- package/dist/canonicalFace-BHwyCx1c.js +9 -0
- package/dist/canonicalFace-C83I225R.cjs +1 -0
- package/dist/components/BodyInstruction/BodyPoseHint.d.ts +63 -0
- package/dist/components/BodyInstruction/index.d.ts +69 -0
- package/dist/components/BodyInstruction/useBodyPose.d.ts +23 -0
- package/dist/components/BodyTracker/index.d.ts +10 -2
- package/dist/components/BodyTrigger/index.d.ts +49 -0
- package/dist/components/Debugger/DebuggerProvider.d.ts +14 -1
- package/dist/components/Debugger/DebuggerUI.d.ts +3 -1
- package/dist/components/FaceAtlas/FaceAtlasLayer.d.ts +114 -0
- package/dist/components/FaceAtlas/MadeUpCamera.d.ts +80 -0
- package/dist/components/FaceAtlas/constants.d.ts +8 -0
- package/dist/components/FaceAtlas/index.d.ts +7 -0
- package/dist/components/FaceAtlas/useFaceAtlasSurface.d.ts +84 -0
- package/dist/components/FaceAtlas/useFaceSkin.d.ts +84 -0
- package/dist/components/FaceCharacter/ExternalFaceMesh.d.ts +109 -0
- package/dist/components/FaceCharacter/FaceExpressionController.d.ts +53 -0
- package/dist/components/FaceCharacter/FaceMorph.d.ts +71 -0
- package/dist/components/FaceCharacter/FacePiercing.d.ts +65 -0
- package/dist/components/FaceCharacter/FaceReprojection.d.ts +85 -0
- package/dist/components/FaceCharacter/FaceRig.d.ts +38 -0
- package/dist/components/FaceCharacter/FaceSurface.d.ts +49 -0
- package/dist/components/FaceCharacter/FaceSurfaceOccluder.d.ts +39 -0
- package/dist/components/FaceCharacter/PinToFaceMesh.d.ts +68 -0
- package/dist/components/FaceCharacter/index.d.ts +18 -0
- package/dist/components/FaceCharacter/useFaceReprojector.d.ts +10 -0
- package/dist/components/FaceInset/FaceInset.d.ts +68 -0
- package/dist/components/FaceInset/frame.d.ts +94 -0
- package/dist/components/FaceInset/index.d.ts +6 -0
- package/dist/components/FaceInset/material.d.ts +40 -0
- package/dist/components/FaceInset/useFaceInsetTexture.d.ts +37 -0
- package/dist/components/FaceInstruction/FaceExpressionHint.d.ts +43 -0
- package/dist/components/FaceInstruction/index.d.ts +56 -0
- package/dist/components/FaceInstruction/useFaceExpression.d.ts +20 -0
- package/dist/components/FaceLiquify/FaceLiquify.d.ts +49 -0
- package/dist/components/FaceLiquify/debug.d.ts +37 -0
- package/dist/components/FaceLiquify/frame.d.ts +55 -0
- package/dist/components/FaceLiquify/index.d.ts +10 -0
- package/dist/components/FaceLiquify/material.d.ts +39 -0
- package/dist/components/FaceLiquify/pass.d.ts +49 -0
- package/dist/components/FaceLiquify/presence.d.ts +25 -0
- package/dist/components/FaceLiquify/presets.d.ts +82 -0
- package/dist/components/FaceLiquify/selfTest.d.ts +66 -0
- package/dist/components/FaceLiquify/target.d.ts +85 -0
- package/dist/components/FaceLiquify/warp.d.ts +72 -0
- package/dist/components/FaceMesh/canonical/CanonicalFaceMeshRenderer.d.ts +5 -3
- package/dist/components/FaceMesh/canonical/geometryGroups.d.ts +21 -0
- package/dist/components/FaceMesh/canonical/parseCanonicalFaceModel.d.ts +9 -0
- package/dist/components/FaceMesh/index.d.ts +1 -1
- package/dist/components/FaceRetouch/Background.d.ts +3 -1
- package/dist/components/FaceRetouch/FaceRetouch.d.ts +5 -0
- package/dist/components/FaceRetouch/renderState.d.ts +19 -0
- package/dist/components/FaceSwap/FaceMirror.d.ts +46 -0
- package/dist/components/FaceSwap/FaceSwap.d.ts +58 -0
- package/dist/components/FaceSwap/FaceTextureLayer.d.ts +72 -0
- package/dist/components/FaceSwap/faceSwapPlan.d.ts +91 -0
- package/dist/components/FaceSwap/index.d.ts +13 -0
- package/dist/components/FaceSwap/settings.d.ts +300 -0
- package/dist/components/FaceSwap/useFaceTexture.d.ts +35 -0
- package/dist/components/FaceSwap/useLiveFace.d.ts +38 -0
- package/dist/components/FaceSwap/useLiveFaceTexture.d.ts +31 -0
- package/dist/components/FaceWarp3D/FaceWarp3D.d.ts +50 -0
- package/dist/components/FaceWarp3D/index.d.ts +2 -3
- package/dist/components/Faceless/Faceless.d.ts +51 -0
- package/dist/components/Faceless/index.d.ts +2 -0
- package/dist/components/HairLock/HairLock.d.ts +39 -0
- package/dist/components/HairLock/index.d.ts +2 -0
- package/dist/components/HairLock/lockGeometry.d.ts +15 -0
- package/dist/components/HandCutout/index.d.ts +35 -0
- package/dist/components/HandInstruction/HandGestureHint.d.ts +70 -0
- package/dist/components/HandInstruction/index.d.ts +74 -0
- package/dist/components/HandInstruction/useHandGesture.d.ts +22 -0
- package/dist/components/HandRig/ForearmOccluder.d.ts +29 -0
- package/dist/components/HandRig/HandAttachment.d.ts +34 -0
- package/dist/components/HandRig/HandOccluder.d.ts +55 -0
- package/dist/components/HandRig/HandTattoo.d.ts +61 -0
- package/dist/components/HandRig/WristAttachment.d.ts +34 -0
- package/dist/components/HandRig/index.d.ts +101 -0
- package/dist/components/HandRig/useArmMask.d.ts +29 -0
- package/dist/components/HandRig/wristSolve.d.ts +69 -0
- package/dist/components/HandTouch/HandTouch.d.ts +62 -0
- package/dist/components/HandTouch/Touchable.d.ts +36 -0
- package/dist/components/HandTouch/index.d.ts +2 -0
- package/dist/components/HeadBinding/index.d.ts +14 -0
- package/dist/components/HeadOccluder/CanonicalHeadFrame.d.ts +22 -0
- package/dist/components/HeadOccluder/Earrings.d.ts +55 -0
- package/dist/components/HeadOccluder/HeadAttachment.d.ts +38 -0
- package/dist/components/HeadOccluder/NeckOccluder.d.ts +64 -0
- package/dist/components/HeadOccluder/earringPlacement.d.ts +31 -0
- package/dist/components/HeadOccluder/headAttachmentPoints.d.ts +69 -0
- package/dist/components/HeadOccluder/index.d.ts +57 -3
- package/dist/components/HeadOccluder/useCanonicalHeadFit.d.ts +36 -0
- package/dist/components/HeadOccluder/useLandmarkPoseFit.d.ts +80 -0
- package/dist/components/Instruction/HintStage.d.ts +29 -0
- package/dist/components/Instruction/InstructionCue.d.ts +126 -0
- package/dist/components/Instruction/gestureHold.d.ts +20 -0
- package/dist/components/Instruction/ghost.d.ts +129 -0
- package/dist/components/Instruction/hintBlend.d.ts +19 -0
- package/dist/components/Instruction/hintLook.d.ts +81 -0
- package/dist/components/Instruction/hintLoop.d.ts +36 -0
- package/dist/components/Instruction/index.d.ts +41 -0
- package/dist/components/Instruction/useGhostModel.d.ts +33 -0
- package/dist/components/Instruction/useInstructionHold.d.ts +72 -0
- package/dist/components/LipEffect/LipEffect.d.ts +22 -2
- package/dist/components/LipEffect/LipEffectMaterial.d.ts +62 -10
- package/dist/components/LipEffect/LipEffects.d.ts +5 -2
- package/dist/components/LipEffect/defaults.d.ts +21 -2
- package/dist/components/LipEffect/index.d.ts +1 -1
- package/dist/components/LipEffect/lipShading.d.ts +73 -0
- package/dist/components/LipEffect/settings.d.ts +117 -13
- package/dist/components/LipEffect/shader.d.ts +39 -0
- package/dist/components/LipEffect/types.d.ts +82 -10
- package/dist/components/LipEffect/useLipDesignTextures.d.ts +6 -0
- package/dist/components/LipEffect/uvGuide.d.ts +31 -16
- package/dist/components/Makeup/Blush.d.ts +18 -0
- package/dist/components/Makeup/Brows.d.ts +20 -0
- package/dist/components/Makeup/Contour.d.ts +17 -0
- package/dist/components/Makeup/Eyeliner.d.ts +20 -0
- package/dist/components/Makeup/Eyeshadow.d.ts +20 -0
- package/dist/components/Makeup/Highlighter.d.ts +18 -0
- package/dist/components/Makeup/MakeupDesign.d.ts +37 -0
- package/dist/components/Makeup/MakeupRegion.d.ts +132 -0
- package/dist/components/Makeup/constants.d.ts +44 -0
- package/dist/components/Makeup/design.d.ts +106 -0
- package/dist/components/Makeup/designSamples.d.ts +42 -0
- package/dist/components/Makeup/eyes.d.ts +114 -0
- package/dist/components/Makeup/fields.d.ts +10 -0
- package/dist/components/Makeup/geometry.d.ts +106 -0
- package/dist/components/Makeup/index.d.ts +26 -0
- package/dist/components/Makeup/looks.d.ts +28 -0
- package/dist/components/Makeup/material.d.ts +239 -0
- package/dist/components/Makeup/settings.d.ts +54 -0
- package/dist/components/Makeup/shades.d.ts +143 -0
- package/dist/components/Makeup/shapes.d.ts +27 -0
- package/dist/components/Makeup/skinTone.d.ts +135 -0
- package/dist/components/Makeup/types.d.ts +110 -0
- package/dist/components/Makeup/useMakeupSkinTone.d.ts +40 -0
- package/dist/components/Necklace/Necklace.d.ts +44 -0
- package/dist/components/Necklace/index.d.ts +1 -0
- package/dist/components/ParticleEmitter/ParticleEmitter.d.ts +69 -0
- package/dist/components/ParticleEmitter/index.d.ts +1 -0
- package/dist/components/ShoulderOccluder/index.d.ts +43 -0
- package/dist/components/ShoulderOccluder/useCanonicalTorsoFit.d.ts +24 -0
- package/dist/components/SpringSwing/SpringSwing.d.ts +22 -0
- package/dist/components/SpringSwing/index.d.ts +1 -0
- package/dist/components/XRScene/renderOutputTarget.d.ts +12 -0
- package/dist/components/index.d.ts +8 -0
- package/dist/config/index.d.ts +0 -1
- package/dist/context-DTxSQvp4.js +13 -0
- package/dist/context-hA0Rb2Xa.cjs +1 -0
- package/dist/contexts-BH7PdKFS.cjs +1 -0
- package/dist/contexts-jak8-tND.js +667 -0
- package/dist/coordinates/index.d.ts +2 -0
- package/dist/coordinates/side.d.ts +40 -0
- package/dist/debug-ui/default-setting.cjs +2 -2
- package/dist/debug-ui/face-swap-settings/index.d.ts +22 -0
- package/dist/debug-ui/hierarchy-panel/index.d.ts +3 -2
- package/dist/debug-ui/index.d.ts +4 -3
- package/dist/debug-ui/media-source/index.d.ts +1 -1
- package/dist/debug-ui/media-source/session.d.ts +30 -2
- package/dist/debug-ui/media-source.cjs +1 -1
- package/dist/debug-ui/media-source.js +1 -1
- package/dist/debug-ui/object-inspector-panel/index.d.ts +3 -2
- package/dist/debug-ui/product-hotspots/index.d.ts +3 -2
- package/dist/debug-ui/scene-editor/hierarchy-panel.d.ts +3 -1
- package/dist/debug-ui/scene-editor/inspector-panel.d.ts +3 -1
- package/dist/debug-ui/screen-image-settings/index.d.ts +3 -1
- package/dist/debug-ui/screen-text-settings/ScreenTextSettingsPanel.d.ts +1 -1
- package/dist/debug-ui/screen-text-settings/types.d.ts +2 -0
- package/dist/debug-ui/settings-panel/index.d.ts +6 -1
- package/dist/debug-ui/shared/debugWindow.d.ts +51 -0
- package/dist/debug-ui/xr-diagnostics/index.d.ts +3 -2
- package/dist/debug-ui.cjs +3 -3
- package/dist/debug-ui.js +2250 -2472
- package/dist/entries/all.d.ts +3 -1
- package/dist/entries/core.d.ts +3 -2
- package/dist/entries/face-effects.d.ts +114 -8
- package/dist/entries/instructions.d.ts +48 -0
- package/dist/entries/internal.d.ts +2 -1
- package/dist/entries/low-level.d.ts +28 -1
- package/dist/entries/particles.d.ts +11 -0
- package/dist/entries/tracking.d.ts +37 -2
- package/dist/face-atlas/attributes.d.ts +30 -0
- package/dist/face-atlas/eyes.d.ts +272 -0
- package/dist/face-atlas/faceAtlas.generated.d.ts +46 -0
- package/dist/face-atlas/glsl/atlasVertex.d.ts +46 -0
- package/dist/face-atlas/glsl/common.d.ts +55 -0
- package/dist/face-atlas/glsl/design.d.ts +49 -0
- package/dist/face-atlas/glsl/eyes.d.ts +73 -0
- package/dist/face-atlas/glsl/finish.d.ts +24 -0
- package/dist/face-atlas/glsl/format.d.ts +4 -0
- package/dist/face-atlas/glsl/index.d.ts +59 -0
- package/dist/face-atlas/glsl/shading.d.ts +15 -0
- package/dist/face-atlas/glsl/shapes.d.ts +66 -0
- package/dist/face-atlas/glsl/sparkle.d.ts +19 -0
- package/dist/face-atlas/glsl/uniforms.d.ts +106 -0
- package/dist/face-atlas/guide.d.ts +51 -0
- package/dist/face-atlas/index.d.ts +25 -0
- package/dist/face-atlas/lead.d.ts +117 -0
- package/dist/face-atlas/madeUpCamera.d.ts +125 -0
- package/dist/face-atlas/masks.d.ts +53 -0
- package/dist/face-atlas/obj.d.ts +69 -0
- package/dist/face-atlas/polylines.d.ts +63 -0
- package/dist/face-atlas/probe/FaceSkinProbe.d.ts +208 -0
- package/dist/face-atlas/probe/__fixtures__/emulate.d.ts +9 -0
- package/dist/face-atlas/probe/__fixtures__/face.d.ts +24 -0
- package/dist/face-atlas/probe/constants.d.ts +137 -0
- package/dist/face-atlas/probe/glsl.d.ts +43 -0
- package/dist/face-atlas/probe/lightFit.d.ts +108 -0
- package/dist/face-atlas/probe/schedule.d.ts +44 -0
- package/dist/face-atlas/probe/selfTest.d.ts +87 -0
- package/dist/face-atlas/probe/stats.d.ts +143 -0
- package/dist/face-atlas/probe/targets.d.ts +70 -0
- package/dist/face-atlas/probe/unwrap.d.ts +76 -0
- package/dist/face-atlas/quality.d.ts +28 -0
- package/dist/face-atlas/regions.d.ts +31 -0
- package/dist/face-atlas/registry.d.ts +252 -0
- package/dist/face-atlas/renderState.d.ts +86 -0
- package/dist/face-atlas/selfOcclusion.d.ts +62 -0
- package/dist/face-atlas/shading.d.ts +406 -0
- package/dist/face-atlas/shapes.d.ts +86 -0
- package/dist/face-atlas/sides.d.ts +41 -0
- package/dist/face-atlas/skinMask.d.ts +35 -0
- package/dist/face-atlas/surface.d.ts +155 -0
- package/dist/face-atlas/topology.d.ts +44 -0
- package/dist/face-character/__fixtures__/faceImageDetections.d.ts +25 -0
- package/dist/face-character/__fixtures__/faceNode.d.ts +22 -0
- package/dist/face-character/bindFaceModel.d.ts +106 -0
- package/dist/face-character/canonicalFace.d.ts +17 -0
- package/dist/face-character/canonicalFaceGeometry.d.ts +11 -0
- package/dist/face-character/canonicalFacePositions.d.ts +7 -0
- package/dist/face-character/driveFaceModel.d.ts +57 -0
- package/dist/face-character/expressionOutputs.d.ts +45 -0
- package/dist/face-character/faceExpressions.d.ts +104 -0
- package/dist/face-character/faceImageLandmarker.d.ts +93 -0
- package/dist/face-character/faceMeshBinding.d.ts +62 -0
- package/dist/face-character/faceMorph.d.ts +77 -0
- package/dist/face-character/faceMorphs.d.ts +46 -0
- package/dist/face-character/facePhoto.d.ts +138 -0
- package/dist/face-character/facePiercings.d.ts +116 -0
- package/dist/face-character/facePin.d.ts +131 -0
- package/dist/face-character/faceReprojection.d.ts +273 -0
- package/dist/face-character/faceReprojector.d.ts +171 -0
- package/dist/face-character/faceRig.d.ts +176 -0
- package/dist/face-character/faceSwapPresence.d.ts +85 -0
- package/dist/face-character/faceTexture.d.ts +169 -0
- package/dist/face-character/faceTextureBaker.d.ts +86 -0
- package/dist/face-character/faceTextureGuide.d.ts +106 -0
- package/dist/face-character/faceTextureStats.d.ts +298 -0
- package/dist/face-character/faceTransfer.d.ts +396 -0
- package/dist/face-character/faceTransferGeometry.d.ts +109 -0
- package/dist/face-character/faceTransferSelfTest.d.ts +94 -0
- package/dist/face-character/faceWarp3D.d.ts +101 -0
- package/dist/face-character/faceless.d.ts +79 -0
- package/dist/face-character/featureWarp.d.ts +28 -0
- package/dist/face-character/liveFaceRegistry.d.ts +370 -0
- package/dist/face-character/liveValue.d.ts +12 -0
- package/dist/face-character/memo.d.ts +15 -0
- package/dist/face-effects.cjs +2252 -83
- package/dist/face-effects.js +14234 -1231
- package/dist/face-expression/index.d.ts +182 -0
- package/dist/face-info/landmarks.d.ts +17 -3
- package/dist/face-info/types.d.ts +20 -3
- package/dist/gestures/definitions.d.ts +15 -2
- package/dist/gestures/index.d.ts +1 -1
- package/dist/gestures/measures.d.ts +21 -8
- package/dist/getFaceInfo-B1otSDMX.cjs +1 -0
- package/dist/getFaceInfo-Cu4xDWiL.js +62 -0
- package/dist/hand/armFit.d.ts +46 -0
- package/dist/hand/armMask.d.ts +178 -0
- package/dist/hand/handCutout.d.ts +23 -0
- package/dist/hand/handCutoutRegistry.d.ts +7 -0
- package/dist/hand/handGestures.d.ts +524 -0
- package/dist/hand/handPose.d.ts +98 -0
- package/dist/hand/handRigSolver.d.ts +159 -0
- package/dist/hand/handTattoo.d.ts +81 -0
- package/dist/hand/handTouch.d.ts +240 -0
- package/dist/hand/wrist.d.ts +44 -0
- package/dist/hand/wristFilter.d.ts +44 -0
- package/dist/hooks/selectors.d.ts +8 -0
- package/dist/hooks/useFaceModelAcquisition.d.ts +38 -0
- package/dist/hooks/useTrackerContext.d.ts +6 -0
- package/dist/index-B1_TzJaI.js +1104 -0
- package/dist/index-BavF06C6.js +190 -0
- package/dist/index-BfFmpddl.cjs +21 -0
- package/dist/index-BuBzneeW.cjs +46 -0
- package/dist/index-CGsQWodV.cjs +1 -0
- package/dist/index-CIe7eCMH.js +3200 -0
- package/dist/index-CfSF8LXa.cjs +1 -0
- package/dist/index-D5GTzOzD.cjs +1 -0
- package/dist/index-DBhQzvVa.js +314 -0
- package/dist/index-DE17y0ZI.cjs +1 -0
- package/dist/index-JII7huPk.js +442 -0
- package/dist/index-tpCr9CLj.cjs +1 -0
- package/dist/{renderPasses-NnKZVfBy.js → index-w1S7fI2B.js} +219 -247
- package/dist/index-zGaqrz_K.js +188 -0
- package/dist/instructions.cjs +30 -0
- package/dist/instructions.js +1507 -0
- package/dist/{internal-vsfNQycj.js → internal-B90P-clC.js} +138 -118
- package/dist/internal-Cjinca64.cjs +1 -0
- package/dist/internal.cjs +1 -1
- package/dist/internal.js +15 -10
- package/dist/iris/compute.d.ts +7 -5
- package/dist/iris/types.d.ts +6 -4
- package/dist/{landmarkMask-CbTFzBYG.js → landmarkMask-BFDyBnKM.js} +6 -6
- package/dist/landmarks-BlUqf5MZ.cjs +1 -0
- package/dist/landmarks-bftdwq6Z.js +76 -0
- package/dist/loaders-BGAUACsd.js +363 -0
- package/dist/loaders-BJ1_QCHt.cjs +1 -0
- package/dist/low-level.cjs +1 -1
- package/dist/low-level.js +666 -602
- package/dist/main.cjs +1 -1
- package/dist/main.js +866 -1182
- package/dist/models/Body/index.d.ts +2 -0
- package/dist/models/Face/constants.d.ts +8 -0
- package/dist/models/Face/index.d.ts +3 -11
- package/dist/models/Face/rotation.d.ts +18 -3
- package/dist/models/Hand/HandTracking.d.ts +17 -1
- package/dist/models/Segmentation/index.d.ts +2 -0
- package/dist/models/nodeSource.d.ts +9 -0
- package/dist/particles/emission.d.ts +24 -0
- package/dist/particles/eyes.d.ts +24 -0
- package/dist/particles/glsl.d.ts +14 -0
- package/dist/particles/index.d.ts +10 -0
- package/dist/particles/motion.d.ts +42 -0
- package/dist/particles/presets.d.ts +12 -0
- package/dist/particles/ring.d.ts +58 -0
- package/dist/particles/selfTest.d.ts +53 -0
- package/dist/particles/settings.d.ts +127 -0
- package/dist/particles/shapes.d.ts +29 -0
- package/dist/particles/spawner.d.ts +60 -0
- package/dist/particles/system.d.ts +64 -0
- package/dist/particles.cjs +122 -0
- package/dist/particles.js +774 -0
- package/dist/product.cjs +1 -1
- package/dist/product.js +29 -29
- package/dist/{providers-C0Dlhh9Z.js → providers-C8rE26Uf.js} +127 -126
- package/dist/providers-DHsrhDI2.cjs +62 -0
- package/dist/render/renderPasses.d.ts +8 -0
- package/dist/render/sceneBeforeRender.d.ts +12 -0
- package/dist/{renderGroups-CN1cGFUo.js → renderGroups-B38pUaX2.js} +1 -1
- package/dist/{renderGroups-O4KmaMl9.cjs → renderGroups-Cb_4Ar1Q.cjs} +1 -1
- package/dist/renderPasses-B6l8IpJv.js +1290 -0
- package/dist/renderPasses-dqmkft4P.cjs +158 -0
- package/dist/renderState-CJNmj5jz.js +39 -0
- package/dist/renderState-apSfg4eR.cjs +1 -0
- package/dist/scene-object.cjs +1 -1
- package/dist/scene-object.js +2 -2
- package/dist/segmentation-Cb3ouK6Z.js +1758 -0
- package/dist/segmentation-D9pYO6aR.cjs +1 -0
- package/dist/segmentation2d/types.d.ts +6 -0
- package/dist/select-Ck5LGz-J.cjs +1 -0
- package/dist/select-pYRo_win.js +233 -0
- package/dist/selectors-C4X71aoD.cjs +1 -0
- package/dist/selectors-DmNaKIwE.js +196 -0
- package/dist/session-BrH8G7iJ.cjs +31 -0
- package/dist/session-DgA_z6O1.js +418 -0
- package/dist/{settings-aQk845NJ.js → settings-BJ7FMBsO.js} +53 -15
- package/dist/settings-C63FMBlF.cjs +1 -0
- package/dist/similarityFit-BFqHND2e.cjs +1 -0
- package/dist/similarityFit-Bbz-R8AY.js +91 -0
- package/dist/spring/index.d.ts +2 -0
- package/dist/spring/spring.d.ts +69 -0
- package/dist/spring/swing.d.ts +54 -0
- package/dist/tracking.cjs +10 -1
- package/dist/tracking.js +1002 -855
- package/dist/trigger-D0Pm9noT.cjs +49 -0
- package/dist/trigger-IQeys0oS.js +2128 -0
- package/dist/types/face.d.ts +20 -1
- package/dist/types/hand-tracking.d.ts +9 -0
- package/dist/types/nodes.d.ts +20 -1
- package/dist/types/segmentation.d.ts +5 -0
- package/dist/updateThrottle-BseecYag.js +4 -0
- package/dist/updateThrottle-Of5Y4SVa.cjs +1 -0
- package/dist/useFaceInfo-BHDNCvsJ.cjs +1 -0
- package/dist/useFaceInfo-J4x7LsqL.js +76 -0
- package/dist/useFaceResultReader-BvEo5REG.js +61 -0
- package/dist/useFaceResultReader-DuaL1KJG.cjs +1 -0
- package/dist/useInstructionHold-DOu-RpCM.js +53 -0
- package/dist/useInstructionHold-DwJY1Alr.cjs +1 -0
- package/dist/useLandmarkPoseFit-Bg-h9BPb.cjs +1 -0
- package/dist/useLandmarkPoseFit-Bmb3h6Mw.js +87 -0
- package/dist/{useXRCapabilities-B1R2ghy-.cjs → useXRCapabilities-Cr3RzuAW.cjs} +1 -1
- package/dist/{useXRCapabilities-C68v__wB.js → useXRCapabilities-Cxmlmpbd.js} +1 -1
- package/dist/utils/canonicalRigidLandmarks.d.ts +8 -0
- package/dist/utils/headOccluderFit.d.ts +42 -0
- package/dist/utils/integrity.d.ts +17 -0
- package/dist/utils/resolveNumFaces.d.ts +13 -0
- package/dist/utils/shoulderOccluderFit.d.ts +38 -0
- package/dist/utils/similarityFit.d.ts +23 -0
- package/dist/uv-BMFt19bg.cjs +1 -0
- package/dist/{index-CsUdQ-pn.js → uv-DJU_XfmN.js} +15 -249
- package/docs/SDK_DOCUMENTATION.md +1 -2
- package/docs/api/adaptive-quality.mdx +1 -1
- package/docs/api/body-instructions.mdx +285 -0
- package/docs/api/body-triggers.mdx +234 -0
- package/docs/api/camera-permission.mdx +1 -1
- package/docs/api/coordinate-spaces.mdx +7 -4
- package/docs/api/cross-camera.mdx +3 -2
- package/docs/api/debug-ui-scene-editor.mdx +23 -2
- package/docs/api/external-face-mesh.mdx +231 -0
- package/docs/api/face-actions.mdx +20 -16
- package/docs/api/face-attribute-expression.mdx +1 -1
- package/docs/api/face-binding-anchors.mdx +4 -2
- package/docs/api/face-character.mdx +157 -0
- package/docs/api/face-effects.mdx +3 -0
- package/docs/api/face-expression-controller.mdx +153 -0
- package/docs/api/face-info.mdx +17 -11
- package/docs/api/face-inset.mdx +204 -0
- package/docs/api/face-instructions.mdx +183 -0
- package/docs/api/face-liquify.mdx +196 -0
- package/docs/api/face-mesh.mdx +4 -7
- package/docs/api/face-morph.mdx +117 -0
- package/docs/api/face-painting.mdx +7 -0
- package/docs/api/face-reprojection.mdx +154 -0
- package/docs/api/face-retouching.mdx +18 -10
- package/docs/api/face-swap.mdx +350 -0
- package/docs/api/face-warp-3d.mdx +166 -0
- package/docs/api/faceless.mdx +143 -0
- package/docs/api/gestures.mdx +68 -32
- package/docs/api/hair.mdx +97 -0
- package/docs/api/hand-instructions.mdx +222 -0
- package/docs/api/hand-rig.mdx +535 -0
- package/docs/api/hand-touch.mdx +162 -0
- package/docs/api/head-occluder.mdx +563 -0
- package/docs/api/holistic-tracker.mdx +6 -1
- package/docs/api/instructions.mdx +323 -0
- package/docs/api/iris-tracking.mdx +24 -19
- package/docs/api/made-up-camera.mdx +131 -0
- package/docs/api/makeup-skin-tone.mdx +135 -0
- package/docs/api/makeup.mdx +353 -0
- package/docs/api/multi-subject.mdx +4 -1
- package/docs/api/particles.mdx +155 -0
- package/docs/api/person-cutout.mdx +1 -1
- package/docs/api/pin-to-face-mesh.mdx +274 -0
- package/docs/api/product-ar.mdx +5 -2
- package/docs/api/segmentation-overlay.mdx +1 -1
- package/docs/docs.json +29 -1
- package/docs/examples/lip-shaders.mdx +82 -33
- package/docs/guides/face-atlas-template.svg +1 -0
- package/docs/guides/face-atlas-textures.mdx +186 -0
- package/docs/guides/face-texture-template.svg +1 -0
- package/docs/guides/harness-debug-ui.mdx +4 -4
- package/docs/guides/lip-effect-textures.mdx +178 -102
- package/docs/guides/lip-uv-template.png +0 -0
- package/docs/guides/lip-uv-template.svg +1 -1
- package/docs/guides/makeup-design-textures.mdx +109 -0
- package/docs/introduction.mdx +1 -2
- package/package.json +11 -1
- package/dist/DebuggerUI-C-ldiozL.js +0 -269
- package/dist/DebuggerUI-CWX5EtQv.cjs +0 -1
- package/dist/FaceMeshRenderer-BEEXZwS6.cjs +0 -158
- package/dist/FaceMeshRenderer-UuH5sTXG.js +0 -1322
- package/dist/FaceRetouch-C7h7x9kd.js +0 -683
- package/dist/FaceRetouch-DqftT26Y.cjs +0 -134
- package/dist/GLTFLoader-C5q63sKO.js +0 -1633
- package/dist/GLTFLoader-Cb_CRwmG.cjs +0 -1
- package/dist/SegmentationOverlay-DQuW3dsc.js +0 -133
- package/dist/SegmentationOverlay-aWVod8Kl.cjs +0 -1
- package/dist/components/FaceWarp3D/FaceWarp3DHead.d.ts +0 -15
- package/dist/components/FaceWarp3D/defaults.d.ts +0 -37
- package/dist/components/FaceWarp3D/warp.d.ts +0 -13
- package/dist/contexts-CO0sd4JQ.cjs +0 -1
- package/dist/contexts-FzlnnMYD.js +0 -669
- package/dist/debug-ui/face-warp-3d/index.d.ts +0 -6
- package/dist/getFaceInfo-BkZfaQs-.js +0 -118
- package/dist/getFaceInfo-ahPxQFGu.cjs +0 -1
- package/dist/index--RgGzZ6X.cjs +0 -47
- package/dist/index-CHVbH0hz.js +0 -214
- package/dist/index-CeVkgsag.cjs +0 -1
- package/dist/index-CnGox6Xr.js +0 -3054
- package/dist/index-DKBAh6hV.cjs +0 -1
- package/dist/index-DsZwTfG0.cjs +0 -1
- package/dist/index-Dw6tj2Mi.js +0 -144
- package/dist/index-OCPjOaeP.cjs +0 -1
- package/dist/index-s9pF4zkG.js +0 -2053
- package/dist/internal-BYza1h8_.cjs +0 -1
- package/dist/measures-9dQPdw96.js +0 -154
- package/dist/measures-KfJzpvod.cjs +0 -1
- package/dist/providers-YNwkmNeK.cjs +0 -62
- package/dist/renderPasses-Cg-zqmEz.cjs +0 -21
- package/dist/screenTransform-BenfCtZt.js +0 -44
- package/dist/screenTransform-BiXdpVf0.cjs +0 -1
- package/dist/segmentation-9PhSvc-R.cjs +0 -1
- package/dist/segmentation-CeOTKemr.js +0 -5
- package/dist/selectors-C5G1PMYL.js +0 -195
- package/dist/selectors-Du_PsVnW.cjs +0 -1
- package/dist/session-BBr0yN8h.cjs +0 -31
- package/dist/session-Cy0m7l7-.js +0 -363
- package/dist/settings-DRR7-snV.cjs +0 -1
- package/dist/useFaceInfo-Blf7FCu3.js +0 -303
- 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;
|