@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,114 @@
|
|
|
1
|
+
import { MakeupEyeParams } from '../../face-atlas/eyes';
|
|
2
|
+
import { MakeupEyeUniforms } from '../../face-atlas/glsl/eyes';
|
|
3
|
+
import { MakeupShape } from './shapes';
|
|
4
|
+
import { BrowsSettings, EyelinerSettings, EyeshadowSettings } from './types';
|
|
5
|
+
/**
|
|
6
|
+
* Where the eye regions paint (FACE-1): the geometry behind each `shape`
|
|
7
|
+
* preset of `Eyeshadow`, `Eyeliner` and `Brows` that the settings do not
|
|
8
|
+
* hold, the settings → `MAKEUP_GLSL.eyes` uniforms, the blink fades and
|
|
9
|
+
* the atlas triangles each region draws. Shapes are authored on the
|
|
10
|
+
* canonical −X half (frontal cm) and folded onto both eyes; `side` then
|
|
11
|
+
* picks the person's own side(s).
|
|
12
|
+
*/
|
|
13
|
+
/** The eye regions. */
|
|
14
|
+
export declare const MAKEUP_EYE_REGIONS: readonly ["eyeshadow", "eyeliner", "brows"];
|
|
15
|
+
export type MakeupEyeRegion = (typeof MAKEUP_EYE_REGIONS)[number];
|
|
16
|
+
/** What an eyeshadow shape adds to its fields: each 0..1. */
|
|
17
|
+
export type MakeupEyeshadowGeometry = {
|
|
18
|
+
/** How much the crease leans to the outer corner (1: it fades to 30 % at the inner corner). */
|
|
19
|
+
readonly outer: number;
|
|
20
|
+
/** A wing swept up and out past the outer corner, in the lid colour toward the crease colour. */
|
|
21
|
+
readonly wing: number;
|
|
22
|
+
/** The inner-corner colour also lights the centre of the lid (a halo eye). */
|
|
23
|
+
readonly halo: number;
|
|
24
|
+
/**
|
|
25
|
+
* The crease band lifts off the lid colour's top edge by this much of its
|
|
26
|
+
* half-width (0: centred on the edge, blending into the lid), holding full
|
|
27
|
+
* from its centre down to the edge and stopping there.
|
|
28
|
+
*/
|
|
29
|
+
readonly creaseLift: number;
|
|
30
|
+
/** The lid colour's top edge: 0 feathered by `softness`, 1 sharp (antialiased only). */
|
|
31
|
+
readonly lidSharpness: number;
|
|
32
|
+
};
|
|
33
|
+
/** Per eyeshadow shape (`"custom"`: `lid`'s). */
|
|
34
|
+
export declare const MAKEUP_EYESHADOW_GEOMETRY: Readonly<Record<MakeupShape<"eyeshadow">, MakeupEyeshadowGeometry>>;
|
|
35
|
+
/** What an eyeliner shape adds to its fields. */
|
|
36
|
+
export type MakeupEyelinerGeometry = {
|
|
37
|
+
/** The line's width at the inner corner, relative to its `thickness` at the outer part. */
|
|
38
|
+
readonly taper: number;
|
|
39
|
+
};
|
|
40
|
+
/** Per eyeliner shape (`"custom"`: `classic`'s). */
|
|
41
|
+
export declare const MAKEUP_EYELINER_GEOMETRY: Readonly<Record<MakeupShape<"eyeliner">, MakeupEyelinerGeometry>>;
|
|
42
|
+
/**
|
|
43
|
+
* What a brow shape does to the person's own brow, at its five control
|
|
44
|
+
* points from the tail to the head (`70/46`, `63/53`, `105/52`, `66/65`,
|
|
45
|
+
* `107/55`): `lift` raises the centre line (cm), `width` scales the
|
|
46
|
+
* half-width. `boldness` then scales the whole brow.
|
|
47
|
+
*/
|
|
48
|
+
export type MakeupBrowGeometry = {
|
|
49
|
+
readonly lift: readonly number[];
|
|
50
|
+
readonly width: readonly number[];
|
|
51
|
+
};
|
|
52
|
+
/** Per brow shape (`"custom"`: `natural`'s). `bold` and `thin` differ by their `boldness`. */
|
|
53
|
+
export declare const MAKEUP_BROW_GEOMETRY: Readonly<Record<MakeupShape<"brows">, MakeupBrowGeometry>>;
|
|
54
|
+
/** The brow's width scale for a `boldness`: 0.6 at 0, 1 (the person's own) at 0.5, 1.45 at 1. */
|
|
55
|
+
export declare const makeupBrowWidthScale: (boldness: number) => number;
|
|
56
|
+
/** The brow's shaped control points, tail → head: `[x, y, halfWidth]` (cm, −X half). */
|
|
57
|
+
export declare const resolveMakeupBrowPoints: (settings: Pick<BrowsSettings, "shape" | "boldness">) => [number, number, number][];
|
|
58
|
+
/** The eyeliner's width at its outer part, cm (`thickness` is in mm). */
|
|
59
|
+
export declare const makeupEyelinerWidthCm: (settings: Pick<EyelinerSettings, "thickness">) => number;
|
|
60
|
+
/** An eyeliner wing: `[x, y, radius]` (cm, −X half) at its start and its tip. */
|
|
61
|
+
export type MakeupEyelinerWing = {
|
|
62
|
+
start: [number, number, number];
|
|
63
|
+
end: [number, number, number];
|
|
64
|
+
};
|
|
65
|
+
/**
|
|
66
|
+
* The eyeliner wing: from the outer corner (landmark 33), `wing` mm long,
|
|
67
|
+
* `wingAngle` degrees upward from the eye's corner-to-corner axis (up for
|
|
68
|
+
* the person: +Y of the head frame, on both eyes after the fold), as
|
|
69
|
+
* `[x, y, radius]` at its start (the line's width there, smudge included)
|
|
70
|
+
* and its pointed tip; `null` without a wing.
|
|
71
|
+
*/
|
|
72
|
+
export declare const resolveMakeupEyelinerWing: (settings: Pick<EyelinerSettings, "thickness" | "wing" | "wingAngle" | "smudge">) => MakeupEyelinerWing | null;
|
|
73
|
+
/** Writes `Eyeshadow` settings into the `MAKEUP_GLSL.eyes` uniforms. */
|
|
74
|
+
export declare const writeEyeshadowUniforms: (uniforms: MakeupEyeUniforms, settings: EyeshadowSettings) => void;
|
|
75
|
+
/** Writes `Eyeliner` settings into the `MAKEUP_GLSL.eyes` uniforms. */
|
|
76
|
+
export declare const writeEyelinerUniforms: (uniforms: MakeupEyeUniforms, settings: EyelinerSettings) => void;
|
|
77
|
+
/** Writes `Brows` settings into the `MAKEUP_GLSL.eyes` uniforms. */
|
|
78
|
+
export declare const writeBrowsUniforms: (uniforms: MakeupEyeUniforms, settings: BrowsSettings) => void;
|
|
79
|
+
/**
|
|
80
|
+
* Writes the face's blinks into `uBlink` from its rig's morphs
|
|
81
|
+
* (`FACE_MORPH_NAMES` order, the person's resting values removed): `x` the
|
|
82
|
+
* canonical −X eye (`eyeBlinkRight`), `y` the +X eye (`eyeBlinkLeft`), on
|
|
83
|
+
* every feed (MediaPipe names blendshapes by the image, so blinks stay on
|
|
84
|
+
* mesh sides). No allocation.
|
|
85
|
+
*/
|
|
86
|
+
export declare const writeMakeupBlink: (uniforms: Pick<MakeupEyeUniforms, "uBlink">, morphs: ArrayLike<number>) => void;
|
|
87
|
+
/** The eye uniforms as the TypeScript mirror reads them (`lib/face-atlas/eyes.ts`). */
|
|
88
|
+
export declare const makeupEyeParams: (uniforms: MakeupEyeUniforms & {
|
|
89
|
+
uSoftness: {
|
|
90
|
+
value: number;
|
|
91
|
+
};
|
|
92
|
+
}) => MakeupEyeParams;
|
|
93
|
+
/**
|
|
94
|
+
* Added to every support's reach (cm) when picking triangles: a point inside
|
|
95
|
+
* a triangle near the eyes is within this of one of the triangle's seven
|
|
96
|
+
* sample points (corners, edge midpoints, centroid). `eyes.test.ts` checks
|
|
97
|
+
* it by sampling inside every dropped triangle.
|
|
98
|
+
*/
|
|
99
|
+
export declare const MAKEUP_EYE_TRIANGLE_MARGIN_CM = 0.2;
|
|
100
|
+
/**
|
|
101
|
+
* The atlas triangles an eye region draws (indices into
|
|
102
|
+
* `FACE_ATLAS_TRIANGLES`, sorted, cached; never the eye openings, so
|
|
103
|
+
* nothing paints the eyeball): those with a point within reach of what
|
|
104
|
+
* the region's settings can paint, plus `MAKEUP_EYE_TRIANGLE_MARGIN_CM`.
|
|
105
|
+
* Eyeshadow uses one set for every setting; eyeliner follows its width
|
|
106
|
+
* (0.5 mm steps), lower line and wing (1 mm, 5° steps); brows their shape
|
|
107
|
+
* and boldness (0.1 steps). Without settings: everything any settings can
|
|
108
|
+
* paint (for a `sharedMaterial`).
|
|
109
|
+
*/
|
|
110
|
+
export declare const getMakeupEyeTriangles: <R extends MakeupEyeRegion>(region: R, settings?: {
|
|
111
|
+
eyeshadow: EyeshadowSettings;
|
|
112
|
+
eyeliner: EyelinerSettings;
|
|
113
|
+
brows: BrowsSettings;
|
|
114
|
+
}[R]) => Uint16Array;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { SettingsPanelField } from '../../debug-ui/settings-panel';
|
|
2
|
+
import { MakeupRegion } from './constants';
|
|
3
|
+
import { MakeupSettings } from './types';
|
|
4
|
+
/**
|
|
5
|
+
* Typed `SettingsPanel` fields per region, covering every settings key.
|
|
6
|
+
* Lips are `LIP_EFFECT_SETTINGS_FIELDS`.
|
|
7
|
+
*/
|
|
8
|
+
export declare const MAKEUP_SETTINGS_FIELDS: {
|
|
9
|
+
readonly [R in MakeupRegion]: SettingsPanelField<MakeupSettings[R]>[];
|
|
10
|
+
};
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { MakeupShapeUniforms } from '../../face-atlas/glsl/shapes';
|
|
2
|
+
import { MakeupCapsule } from '../../face-atlas/shapes';
|
|
3
|
+
import { MakeupShape } from './shapes';
|
|
4
|
+
import { BlushSettings, ContourSettings, HighlighterSettings } from './types';
|
|
5
|
+
/**
|
|
6
|
+
* Where the face regions (blush, contour, highlighter) paint: each shape
|
|
7
|
+
* preset as soft tapered capsules on the canonical −X half (frontal `x, y`
|
|
8
|
+
* in cm; the ends are dropped onto the face surface along Z), placed by
|
|
9
|
+
* anatomy on the canonical face. `size` scales each capsule about its own
|
|
10
|
+
* middle (length and radius), `lift` moves blush along the cheek toward the
|
|
11
|
+
* temple. The shader folds the face onto this half, so both sides match;
|
|
12
|
+
* `side` then picks the person's own side(s).
|
|
13
|
+
*/
|
|
14
|
+
/** The regions drawn as capsule shapes. */
|
|
15
|
+
export declare const MAKEUP_CAPSULE_REGIONS: readonly ["contour", "blush", "highlighter"];
|
|
16
|
+
export type MakeupCapsuleRegion = (typeof MAKEUP_CAPSULE_REGIONS)[number];
|
|
17
|
+
/** A frontal point on the canonical −X half, cm. */
|
|
18
|
+
type ShapePoint = readonly [x: number, y: number];
|
|
19
|
+
/** One capsule of a shape: a blob when `to` is left out; `radius` at `from` (and `to`), cm. */
|
|
20
|
+
export type MakeupCapsuleSpec = {
|
|
21
|
+
readonly from: ShapePoint;
|
|
22
|
+
readonly to?: ShapePoint;
|
|
23
|
+
readonly radius: number | readonly [from: number, to: number];
|
|
24
|
+
/** Strength in the union, 0..1. Default 1. */
|
|
25
|
+
readonly weight?: number;
|
|
26
|
+
};
|
|
27
|
+
type Geometry<R extends MakeupCapsuleRegion> = Readonly<Record<MakeupShape<R>, readonly MakeupCapsuleSpec[]>>;
|
|
28
|
+
/**
|
|
29
|
+
* The capsules of every shape preset, at `size` 1 and `lift` 0. A preset's
|
|
30
|
+
* own `lift` (`MAKEUP_SHAPES`) then moves blush from here.
|
|
31
|
+
*/
|
|
32
|
+
export declare const MAKEUP_SHAPE_GEOMETRY: {
|
|
33
|
+
readonly contour: Geometry<"contour">;
|
|
34
|
+
readonly blush: Geometry<"blush">;
|
|
35
|
+
readonly highlighter: Geometry<"highlighter">;
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* Per region: the eye guard (`eyeRing` hops where the shape starts and is
|
|
39
|
+
* full: off the lash line and lids), the lip guard (the `lipEdge` where the
|
|
40
|
+
* shape is full: it fades to 0 on the outer lip line, over that part of the
|
|
41
|
+
* triangle row around the lips, 0.7 to 1.2 cm wide) and, for blush, the
|
|
42
|
+
* `lift` direction (frontal, unit: from the cheek apple toward the temple)
|
|
43
|
+
* and its reach in cm per unit of `lift`. The highlighter's lip guard is
|
|
44
|
+
* the narrowest, so the cupid's-bow blob of `strobe` keeps its peak.
|
|
45
|
+
*/
|
|
46
|
+
export declare const MAKEUP_SHAPE_RULES: {
|
|
47
|
+
readonly [R in MakeupCapsuleRegion]: {
|
|
48
|
+
readonly eyeGuard: readonly [start: number, full: number];
|
|
49
|
+
readonly lipGuard: number;
|
|
50
|
+
readonly lift?: {
|
|
51
|
+
readonly direction: readonly [x: number, y: number];
|
|
52
|
+
readonly cm: number;
|
|
53
|
+
};
|
|
54
|
+
};
|
|
55
|
+
};
|
|
56
|
+
/** The settings fields a capsule shape reads. */
|
|
57
|
+
type ShapeInput<R extends MakeupCapsuleRegion> = Pick<{
|
|
58
|
+
contour: ContourSettings;
|
|
59
|
+
blush: BlushSettings;
|
|
60
|
+
highlighter: HighlighterSettings;
|
|
61
|
+
}[R], "shape" | "size"> & {
|
|
62
|
+
lift?: number;
|
|
63
|
+
};
|
|
64
|
+
/**
|
|
65
|
+
* The capsules a region's settings place on the face (canonical −X half,
|
|
66
|
+
* cm): the shape preset (`"custom"`: the region's default shape), each capsule
|
|
67
|
+
* scaled by `size` about its middle, blush moved by `lift`, the ends on the
|
|
68
|
+
* face surface.
|
|
69
|
+
*/
|
|
70
|
+
export declare const resolveMakeupShapeCapsules: <R extends MakeupCapsuleRegion>(region: R, settings: ShapeInput<R>) => MakeupCapsule[];
|
|
71
|
+
/**
|
|
72
|
+
* Writes a region's shape into its uniforms (`MAKEUP_GLSL.shapes`): the
|
|
73
|
+
* capsules (placed again only when `shape`, `size` or `lift` changed), the
|
|
74
|
+
* eye guard and the lip guard. `uSoftness` is a shared layer uniform
|
|
75
|
+
* (`writeMakeupLayerUniforms`).
|
|
76
|
+
*/
|
|
77
|
+
export declare const writeMakeupShapeUniforms: <R extends MakeupCapsuleRegion>(uniforms: MakeupShapeUniforms, region: R, settings: ShapeInput<R>) => void;
|
|
78
|
+
/**
|
|
79
|
+
* Added to every capsule's reach (cm) when picking triangles, so a shape
|
|
80
|
+
* that crosses a triangle between its corners still keeps it. It is not a
|
|
81
|
+
* geometric bound: a point inside a face triangle can lie up to about
|
|
82
|
+
* 1.4 cm from its nearest corner (1.2 to 1.3 cm on the cheeks). It holds
|
|
83
|
+
* for the face-region shapes at the sizes they allow (geometry.test.ts
|
|
84
|
+
* samples points inside every dropped triangle); a region with smaller
|
|
85
|
+
* shapes (eyeliner, a wing) needs the same sampled check, or a larger
|
|
86
|
+
* margin.
|
|
87
|
+
*/
|
|
88
|
+
export declare const MAKEUP_SHAPE_TRIANGLE_MARGIN_CM = 0.75;
|
|
89
|
+
/** The settings fields the triangle set follows. */
|
|
90
|
+
type TriangleInput<R extends MakeupCapsuleRegion> = ShapeInput<R> & {
|
|
91
|
+
softness: number;
|
|
92
|
+
};
|
|
93
|
+
/**
|
|
94
|
+
* The atlas triangles a capsule region draws (indices into
|
|
95
|
+
* `FACE_ATLAS_TRIANGLES`, sorted, cached): the `"face"` triangles outside the
|
|
96
|
+
* lips with a corner within reach of the shape (`(1 + softness) · radius`
|
|
97
|
+
* plus `MAKEUP_SHAPE_TRIANGLE_MARGIN_CM`), less those entirely inside the
|
|
98
|
+
* eye guard. With `settings`, for that shape at its `size` and `softness`
|
|
99
|
+
* rounded up to quarter steps (blush: both quarter steps around its `lift`),
|
|
100
|
+
* so editing within a step keeps the same array; without, for every shape at
|
|
101
|
+
* the largest size, the softest edge and every lift. Shapes have compact
|
|
102
|
+
* support, so nothing they paint is left out and the rest of the face costs
|
|
103
|
+
* no fragments.
|
|
104
|
+
*/
|
|
105
|
+
export declare const getMakeupRegionTriangles: <R extends MakeupCapsuleRegion>(region: R, settings?: TriangleInput<R>) => Uint16Array;
|
|
106
|
+
export {};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export { MAKEUP_AUTO_SHADE_REGIONS, MAKEUP_FINISHES, MAKEUP_FINISH_DEFAULTS, MAKEUP_REGIONS, MAKEUP_SIDES, } from './constants';
|
|
2
|
+
export type { MakeupAutoShadeRegion, MakeupFaceRegion, MakeupFinish, MakeupFinishDefaults, MakeupRegion, MakeupSide, } from './constants';
|
|
3
|
+
export { MAKEUP_SHADES, MAKEUP_SHADE_NAMES, isMakeupShadeName, resolveMakeupShade, supportsAutoMakeupShade, } from './shades';
|
|
4
|
+
export type { MakeupShadeName, MakeupShadeSetting } from './shades';
|
|
5
|
+
export { MAKEUP_SHAPES, MAKEUP_SHAPE_NAMES, isMakeupShape } from './shapes';
|
|
6
|
+
export type { MakeupShape } from './shapes';
|
|
7
|
+
export { DEFAULT_MAKEUP_SETTINGS, patchMakeupSettings, resolveMakeupSettings } from './settings';
|
|
8
|
+
export { MAKEUP_SETTINGS_FIELDS } from './fields';
|
|
9
|
+
export { MAKEUP_LOOKS, MAKEUP_LOOK_NAMES, isMakeupLookName, resolveMakeupLook } from './looks';
|
|
10
|
+
export type { MakeupLook, MakeupLookName } from './looks';
|
|
11
|
+
export type { BlushSettings, BrowsSettings, ContourSettings, EyelinerSettings, EyeshadowSettings, HighlighterSettings, MakeupRegionSettings, MakeupSettings, MakeupSettingsInput, } from './types';
|
|
12
|
+
export { Blush, type BlushProps } from './Blush';
|
|
13
|
+
export { Contour, type ContourProps } from './Contour';
|
|
14
|
+
export { Highlighter, type HighlighterProps } from './Highlighter';
|
|
15
|
+
export { Eyeshadow, type EyeshadowProps } from './Eyeshadow';
|
|
16
|
+
export { Eyeliner, type EyelinerProps } from './Eyeliner';
|
|
17
|
+
export { Brows, type BrowsProps } from './Brows';
|
|
18
|
+
export { MakeupDesign, type MakeupDesignProps, type MakeupDesignTexture } from './MakeupDesign';
|
|
19
|
+
export { DEFAULT_MAKEUP_DESIGN_SETTINGS, MAKEUP_DESIGN_SETTINGS_FIELDS, patchMakeupDesignSettings, resolveMakeupDesignSettings, setMakeupDesignTexture, } from './design';
|
|
20
|
+
export type { MakeupDesignSettings } from './design';
|
|
21
|
+
export type { MakeupMaterialContext, MakeupMaterialSpec, MakeupRegionProps } from './MakeupRegion';
|
|
22
|
+
export { createMakeupMaterial, updateMakeupMaterial } from './material';
|
|
23
|
+
export { MAKEUP_SKIN_DEPTHS, MAKEUP_SKIN_READY, MAKEUP_SKIN_TONE, MAKEUP_UNDERTONES, classifyMakeupSkinDepth, classifyMakeupUndertone, computeMakeupSkinTone, nearestMakeupShades, } from './skinTone';
|
|
24
|
+
export type { ComputeMakeupSkinToneOptions, MakeupShadeRecommendations, MakeupSkinDepth, MakeupSkinTone, MakeupSkinToneInput, MakeupUndertone, } from './skinTone';
|
|
25
|
+
export { useMakeupSkinTone, type UseMakeupSkinToneOptions } from './useMakeupSkinTone';
|
|
26
|
+
export type { MakeupMaterial, MakeupMaterialInputs, MakeupMaterialRegion, MakeupMaterialSettings, MakeupUniforms, } from './material';
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { MakeupRegion } from './constants';
|
|
2
|
+
import { MakeupSettings, MakeupSettingsInput } from './types';
|
|
3
|
+
export declare const MAKEUP_LOOK_NAMES: readonly ["natural", "softGlam", "sunKissed", "glam", "smokyEye", "boldLip", "editorial", "glitter"];
|
|
4
|
+
export type MakeupLookName = (typeof MAKEUP_LOOK_NAMES)[number];
|
|
5
|
+
/**
|
|
6
|
+
* A complete look: partial settings for all seven regions. Every region a
|
|
7
|
+
* look uses sets `enabled`, `shape` (lips: `preset`), `shade`, `opacity` and
|
|
8
|
+
* `finish`; a region it leaves bare is `{ enabled: false }`. Spread each
|
|
9
|
+
* region into its component and override after the spread. That works
|
|
10
|
+
* because a look region is partial; to change resolved settings (from
|
|
11
|
+
* `resolveMakeupLook` or `resolveMakeupSettings`), use `patchMakeupSettings`.
|
|
12
|
+
*/
|
|
13
|
+
export type MakeupLook = {
|
|
14
|
+
label: string;
|
|
15
|
+
description: string;
|
|
16
|
+
} & {
|
|
17
|
+
[R in MakeupRegion]: Partial<MakeupSettings[R]>;
|
|
18
|
+
};
|
|
19
|
+
/** Eight named looks. `"auto"` shades appear only in `natural`. */
|
|
20
|
+
export declare const MAKEUP_LOOKS: Record<MakeupLookName, MakeupLook>;
|
|
21
|
+
export declare const isMakeupLookName: (value: unknown) => value is MakeupLookName;
|
|
22
|
+
/**
|
|
23
|
+
* A look (by name, or your own `MakeupLook`) with every region fully
|
|
24
|
+
* resolved, ready for panels and stores. `overrides` merge per region over
|
|
25
|
+
* the look, e.g. `{ blush: { shade: "coral" } }`. An unknown name resolves
|
|
26
|
+
* `natural`.
|
|
27
|
+
*/
|
|
28
|
+
export declare const resolveMakeupLook: (look: MakeupLookName | MakeupLook, overrides?: MakeupSettingsInput) => MakeupSettings;
|
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
import { MakeupShadingUniforms, MakeupShapeUniforms } from '../../face-atlas/glsl';
|
|
2
|
+
import { FaceAtlasQualityKey } from '../../face-atlas/quality';
|
|
3
|
+
import { FaceAtlasSurfaceHandle } from '../FaceAtlas/useFaceAtlasSurface';
|
|
4
|
+
import { MakeupFinish, MakeupSide } from './constants';
|
|
5
|
+
import { MakeupDesignSettings } from './design';
|
|
6
|
+
import { MakeupSettings } from './types';
|
|
7
|
+
import * as THREE from "three";
|
|
8
|
+
/**
|
|
9
|
+
* Makeup materials (FACE-1): one `ShaderMaterial` per region instance, built
|
|
10
|
+
* from `MAKEUP_GLSL` (the atlas vertex shader; common → shading → sparkle →
|
|
11
|
+
* finish → shapes, then the region's `main()`), drawn with `MAKEUP_BLENDING`.
|
|
12
|
+
* Every look, shade, shape, finish, side and tier change is a uniform, so
|
|
13
|
+
* nothing recompiles after the first draw, and regions with the same shader
|
|
14
|
+
* source (blush, contour and highlighter) share one GPU program. A design
|
|
15
|
+
* (`MakeupDesign`) adds `design` after `shapes` and reads its art instead
|
|
16
|
+
* of a shape. The eye regions (eyeshadow, eyeliner, brows) add `eyes` after
|
|
17
|
+
* `shapes`, each with its own `main()`.
|
|
18
|
+
*/
|
|
19
|
+
/**
|
|
20
|
+
* The regions with a material here: the six makeup face regions and
|
|
21
|
+
* `"design"`, `MakeupDesign`'s creator art in the face atlas (with
|
|
22
|
+
* `MakeupDesignSettings`).
|
|
23
|
+
*/
|
|
24
|
+
export declare const MAKEUP_MATERIAL_REGIONS: readonly ["contour", "blush", "highlighter", "eyeshadow", "eyeliner", "brows", "design"];
|
|
25
|
+
export type MakeupMaterialRegion = (typeof MAKEUP_MATERIAL_REGIONS)[number];
|
|
26
|
+
/**
|
|
27
|
+
* The settings each material region reads: `MakeupSettings[region]` for the
|
|
28
|
+
* makeup regions, `MakeupDesignSettings` for `"design"`. The core resolves
|
|
29
|
+
* and merges settings through the program (`resolve`, `patch`), never
|
|
30
|
+
* through `MakeupSettings` directly.
|
|
31
|
+
*/
|
|
32
|
+
export type MakeupMaterialSettings = Pick<MakeupSettings, Exclude<MakeupMaterialRegion, "design">> & {
|
|
33
|
+
design: MakeupDesignSettings;
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* The fields every drawn layer turns into the shared shading uniforms
|
|
37
|
+
* (`MakeupRegionSettings` has them all; `MakeupDesignSettings` has no
|
|
38
|
+
* `shade` or `softness`).
|
|
39
|
+
*/
|
|
40
|
+
export type MakeupLayerSettings = {
|
|
41
|
+
enabled: boolean;
|
|
42
|
+
shade?: string;
|
|
43
|
+
color: string;
|
|
44
|
+
opacity: number;
|
|
45
|
+
coverage: number;
|
|
46
|
+
finish: MakeupFinish;
|
|
47
|
+
shine: number;
|
|
48
|
+
sparkleColor: string;
|
|
49
|
+
sparkleDensity: number;
|
|
50
|
+
sparkleSize: number;
|
|
51
|
+
softness?: number;
|
|
52
|
+
side: MakeupSide;
|
|
53
|
+
};
|
|
54
|
+
/**
|
|
55
|
+
* A makeup material's uniforms: every uniform `MAKEUP_GLSL` declares (the
|
|
56
|
+
* atlas vertex shader, the shading chunks and the shapes) plus the region's
|
|
57
|
+
* own. Values are linear colours, canonical cm and 0..1 amounts.
|
|
58
|
+
*/
|
|
59
|
+
export type MakeupUniforms = MakeupShadingUniforms & MakeupShapeUniforms & {
|
|
60
|
+
[name: string]: THREE.IUniform;
|
|
61
|
+
};
|
|
62
|
+
/**
|
|
63
|
+
* What a region plugs into the makeup core (`MakeupRegionLayer`) and the
|
|
64
|
+
* material API. The face regions use capsule shapes; eye regions and
|
|
65
|
+
* designs add their own entries with their own `main()`, settings type,
|
|
66
|
+
* `resolve` / `patch` and uniforms.
|
|
67
|
+
*/
|
|
68
|
+
export type MakeupRegionProgram<S extends MakeupLayerSettings> = {
|
|
69
|
+
/** The complete fragment shader (built on first use, then cached). */
|
|
70
|
+
fragmentShader: () => string;
|
|
71
|
+
/**
|
|
72
|
+
* The region's own uniforms, beyond `MAKEUP_GLSL`'s, with neutral values.
|
|
73
|
+
* Inputs that are not settings (a design texture) reach the core as its
|
|
74
|
+
* `uniforms` prop, whose entries replace these.
|
|
75
|
+
*/
|
|
76
|
+
createUniforms: () => Record<string, THREE.IUniform>;
|
|
77
|
+
/** Complete, clamped settings from a partial (`resolveMakeupSettings(region, …)` for the regions). */
|
|
78
|
+
resolve: (input?: Partial<S>) => S;
|
|
79
|
+
/**
|
|
80
|
+
* An edit applied to resolved settings (`patchMakeupSettings(region, …)`
|
|
81
|
+
* for the regions): a sparse edit keeps every other value.
|
|
82
|
+
*/
|
|
83
|
+
patch: (current: S, edit: Partial<S>) => S;
|
|
84
|
+
/** Region uniforms from resolved settings (shape, extra colours). Called on every settings change. */
|
|
85
|
+
updateUniforms: (uniforms: MakeupUniforms, settings: S) => void;
|
|
86
|
+
/**
|
|
87
|
+
* The atlas triangles the region draws for these settings; without
|
|
88
|
+
* settings, every triangle any settings can paint (for a material whose
|
|
89
|
+
* settings the core does not know: `sharedMaterial`). Return a cached
|
|
90
|
+
* array (the same one while the shape's reach is the same): a new array
|
|
91
|
+
* rebuilds the layer's index buffer.
|
|
92
|
+
*/
|
|
93
|
+
triangles: (settings?: S) => ArrayLike<number>;
|
|
94
|
+
/** `MAKEUP_AUTO_SHADE_ID` used when `shade` is `"auto"` (0: no auto shade). */
|
|
95
|
+
autoShade: number;
|
|
96
|
+
/** Default draw order (`MAKEUP_RENDER_ORDER`). */
|
|
97
|
+
renderOrder: number;
|
|
98
|
+
/** Per-frame updates from the face (e.g. blink fades from `handle.rig.current.morphs`). */
|
|
99
|
+
onFrame?: (uniforms: MakeupUniforms, handle: FaceAtlasSurfaceHandle) => void;
|
|
100
|
+
};
|
|
101
|
+
/** The program of every material region. */
|
|
102
|
+
export declare const MAKEUP_REGION_PROGRAMS: {
|
|
103
|
+
readonly [R in MakeupMaterialRegion]: MakeupRegionProgram<MakeupMaterialSettings[R]>;
|
|
104
|
+
};
|
|
105
|
+
/** A fresh uniforms object for a region's material (neutral until settings are written). */
|
|
106
|
+
export declare const createMakeupUniforms: (region: MakeupMaterialRegion) => MakeupUniforms;
|
|
107
|
+
/** Options for writing settings into makeup uniforms (each written only when given). */
|
|
108
|
+
export type MakeupUniformOptions = {
|
|
109
|
+
/**
|
|
110
|
+
* The quality tier: `"low"` turns shimmer into a smooth sheen and halves
|
|
111
|
+
* glitter density (`uSparkleQuality` 0). Uniforms start at `"high"`.
|
|
112
|
+
*/
|
|
113
|
+
quality?: FaceAtlasQualityKey;
|
|
114
|
+
/**
|
|
115
|
+
* Whether the feed is mirrored, for `uPersonLeftSign` (#298). Leave it out
|
|
116
|
+
* when a `FaceAtlasLayer` owns that uniform (the region components do).
|
|
117
|
+
*/
|
|
118
|
+
mirrored?: boolean;
|
|
119
|
+
};
|
|
120
|
+
/**
|
|
121
|
+
* Writes the shared shading uniforms from a layer's resolved settings: the
|
|
122
|
+
* shade (`uColor`, linear; `uAutoShade` for `"auto"`), opacity, coverage,
|
|
123
|
+
* finish, shine, sparkle, softness and the person's sides (`uSide`); then
|
|
124
|
+
* `uSparkleQuality` and `uPersonLeftSign` when `quality` / `mirrored` are
|
|
125
|
+
* given.
|
|
126
|
+
*/
|
|
127
|
+
export declare const writeMakeupLayerUniforms: (uniforms: MakeupUniforms, settings: MakeupLayerSettings, autoShade: number, options?: MakeupUniformOptions) => void;
|
|
128
|
+
/** Writes a region's resolved settings into its uniforms: the shared ones, then the region's own. */
|
|
129
|
+
export declare const writeMakeupUniforms: <R extends MakeupMaterialRegion>(uniforms: MakeupUniforms, region: R, settings: MakeupMaterialSettings[R], options?: MakeupUniformOptions) => void;
|
|
130
|
+
/** The render state of every makeup material. */
|
|
131
|
+
export declare const MAKEUP_MATERIAL_STATE: Readonly<{
|
|
132
|
+
readonly depthWrite: false;
|
|
133
|
+
readonly depthTest: true;
|
|
134
|
+
readonly depthFunc: 3;
|
|
135
|
+
readonly side: 0;
|
|
136
|
+
readonly toneMapped: false;
|
|
137
|
+
readonly glslVersion: "300 es";
|
|
138
|
+
readonly blending: 5;
|
|
139
|
+
readonly blendEquation: 100;
|
|
140
|
+
readonly blendSrc: 201;
|
|
141
|
+
readonly blendDst: 205;
|
|
142
|
+
readonly blendSrcAlpha: 201;
|
|
143
|
+
readonly blendDstAlpha: 205;
|
|
144
|
+
readonly transparent: false;
|
|
145
|
+
}>;
|
|
146
|
+
/** A makeup region's material (`createMakeupMaterial`). */
|
|
147
|
+
export type MakeupMaterial<R extends MakeupMaterialRegion = MakeupMaterialRegion> = THREE.ShaderMaterial & {
|
|
148
|
+
uniforms: MakeupUniforms;
|
|
149
|
+
userData: {
|
|
150
|
+
makeupRegion: R;
|
|
151
|
+
/** The resolved settings `updateMakeupMaterial` last wrote; unset before the first. */
|
|
152
|
+
makeupSettings?: MakeupMaterialSettings[R];
|
|
153
|
+
};
|
|
154
|
+
};
|
|
155
|
+
/**
|
|
156
|
+
* A region's built-in material: `MAKEUP_GLSL.atlasVertex`, the region's
|
|
157
|
+
* fragment shader, `MAKEUP_BLENDING` in the opaque pass, depth-tested
|
|
158
|
+
* (`LessEqual`, no depth writes). Its uniforms start neutral: write
|
|
159
|
+
* settings with `updateMakeupMaterial`. Draw it on a `FaceAtlasLayer`
|
|
160
|
+
* (spread the layer's `ctx.uniforms` entries in for the camera and
|
|
161
|
+
* presence) or let a region component own it. You dispose it.
|
|
162
|
+
*/
|
|
163
|
+
export declare const createMakeupMaterial: <R extends MakeupMaterialRegion>(region: R, uniforms?: MakeupUniforms) => MakeupMaterial<R>;
|
|
164
|
+
/** Whether a material came from `createMakeupMaterial`. */
|
|
165
|
+
export declare const isMakeupMaterial: (material: THREE.Material) => material is MakeupMaterial;
|
|
166
|
+
/** What `updateMakeupMaterial` writes: every field is optional, and only what is given changes. */
|
|
167
|
+
export type MakeupMaterialInputs<R extends MakeupMaterialRegion = MakeupMaterialRegion> = MakeupUniformOptions & {
|
|
168
|
+
/**
|
|
169
|
+
* An edit, merged into the material's current settings as the
|
|
170
|
+
* components merge edits (`patchMakeupSettings`): `{ opacity: 0.5 }`
|
|
171
|
+
* keeps the shade, finish and shape; a new `shape` or `finish` brings
|
|
172
|
+
* its own values. The first edit starts from the region's defaults.
|
|
173
|
+
*/
|
|
174
|
+
settings?: Partial<MakeupMaterialSettings[R]>;
|
|
175
|
+
};
|
|
176
|
+
/**
|
|
177
|
+
* Merges an edit into a material from `createMakeupMaterial` (uniforms
|
|
178
|
+
* only: it never recompiles). `settings` is merged into the settings it
|
|
179
|
+
* last wrote (kept resolved in `material.userData.makeupSettings`);
|
|
180
|
+
* `quality` and `mirrored` are written only when given. A call with one
|
|
181
|
+
* field changes only that field.
|
|
182
|
+
*/
|
|
183
|
+
export declare const updateMakeupMaterial: <R extends MakeupMaterialRegion>(material: MakeupMaterial<R>, { settings, quality, mirrored }?: MakeupMaterialInputs<R>) => MakeupMaterial<R>;
|
|
184
|
+
/**
|
|
185
|
+
* Points a makeup material's skin uniforms at a probe's (`useFaceSkin().uniforms`
|
|
186
|
+
* or `FaceSkinProbe.uniforms`): the same `{ value }` objects, so they follow
|
|
187
|
+
* the probe with no copying.
|
|
188
|
+
*/
|
|
189
|
+
export declare const bindMakeupSkinUniforms: (uniforms: MakeupUniforms, skin: {
|
|
190
|
+
uSkinMap: THREE.IUniform;
|
|
191
|
+
uSkinLod: THREE.IUniform;
|
|
192
|
+
uSkinSqrt: THREE.IUniform;
|
|
193
|
+
uSkinStats: THREE.IUniform;
|
|
194
|
+
uSkinStatsPacked: THREE.IUniform;
|
|
195
|
+
}) => void;
|
|
196
|
+
/**
|
|
197
|
+
* Points a makeup material's per-layer uniforms at a `FaceAtlasLayer`'s
|
|
198
|
+
* (`ctx.uniforms`): the camera feed, the presence fade and the layer's
|
|
199
|
+
* `uPersonLeftSign`.
|
|
200
|
+
*/
|
|
201
|
+
export declare const bindMakeupLayerUniforms: (uniforms: MakeupUniforms, layer: {
|
|
202
|
+
uCameraMap: THREE.IUniform;
|
|
203
|
+
uPresence: THREE.IUniform;
|
|
204
|
+
uPersonLeftSign: THREE.IUniform;
|
|
205
|
+
}) => void;
|
|
206
|
+
/**
|
|
207
|
+
* A draw copy of a makeup material for one face: the same shaders (so the
|
|
208
|
+
* same compiled program), the same render state, and the source's own
|
|
209
|
+
* uniform objects (its settings, written by `updateMakeupMaterial` or in
|
|
210
|
+
* `useFrame`, reach it at once), except the per-face ones (camera,
|
|
211
|
+
* presence, sides, skin probe), which the core binds into the copy only.
|
|
212
|
+
* The source is never changed, so one material can be shared across faces.
|
|
213
|
+
* Keep it current with `syncMakeupFaceCopy`; dispose it when done (the
|
|
214
|
+
* program stays while the source or another copy uses it).
|
|
215
|
+
*/
|
|
216
|
+
export declare const createMakeupFaceCopy: <R extends MakeupMaterialRegion>(source: MakeupMaterial<R>) => MakeupMaterial<R>;
|
|
217
|
+
/**
|
|
218
|
+
* Follows a source's uniform objects that were replaced or added since the
|
|
219
|
+
* copy was made (not the per-face ones), and its shaders. No allocation.
|
|
220
|
+
*/
|
|
221
|
+
export declare const syncMakeupFaceCopy: (copy: MakeupMaterial, source: MakeupMaterial) => void;
|
|
222
|
+
/** Longest wait for a program warm-up before the region shows anyway (ms). */
|
|
223
|
+
export declare const MAKEUP_WARM_UP_TIMEOUT_MS = 2000;
|
|
224
|
+
/**
|
|
225
|
+
* Disposes a makeup material once no `warmUpMakeupMaterial` compile of it
|
|
226
|
+
* is in flight (at once when none is). A later warm-up of the same material
|
|
227
|
+
* (it is in use again, e.g. on React StrictMode's second mount) cancels the
|
|
228
|
+
* wait.
|
|
229
|
+
*/
|
|
230
|
+
export declare const disposeMakeupMaterial: (material: THREE.Material) => void;
|
|
231
|
+
/**
|
|
232
|
+
* Compiles a makeup material's program off the main thread where the GPU
|
|
233
|
+
* allows (`renderer.compileAsync`, KHR_parallel_shader_compile), so its
|
|
234
|
+
* first draw does not stall a frame. Resolves when the program is ready,
|
|
235
|
+
* after `MAKEUP_WARM_UP_TIMEOUT_MS` at most, or at once on a renderer
|
|
236
|
+
* without `compileAsync`. Never rejects. Dispose the material with
|
|
237
|
+
* `disposeMakeupMaterial`, which waits for the compile to settle.
|
|
238
|
+
*/
|
|
239
|
+
export declare const warmUpMakeupMaterial: (renderer: THREE.WebGLRenderer, material: THREE.Material, camera: THREE.Camera, scene: THREE.Scene) => Promise<void>;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { MakeupFaceRegion, MakeupRegion } from './constants';
|
|
2
|
+
import { MakeupSettings } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* Complete defaults per region. Every region draws (`enabled: true`) with its
|
|
5
|
+
* first-listed character: blush `apples` in `rose`, contour `soft` in
|
|
6
|
+
* `medium`, highlighter `cheekbones` in shimmering `champagne`, eyeshadow
|
|
7
|
+
* `lid` in `taupe`, eyeliner `classic` in `black`, brows `natural` in
|
|
8
|
+
* `mediumBrown`. Lips are `DEFAULT_LIP_EFFECT_SETTINGS`.
|
|
9
|
+
*/
|
|
10
|
+
export declare const DEFAULT_MAKEUP_SETTINGS: {
|
|
11
|
+
readonly [R in MakeupRegion]: MakeupSettings[R];
|
|
12
|
+
};
|
|
13
|
+
type Range = readonly [min: number, max: number];
|
|
14
|
+
/** Inclusive clamp range of every numeric field of the six face regions. */
|
|
15
|
+
export declare const MAKEUP_SETTINGS_RANGES: {
|
|
16
|
+
readonly [R in MakeupFaceRegion]: Readonly<Partial<Record<keyof MakeupSettings[R], Range>>>;
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Resolve partial settings for one region to a complete, clamped set. Order:
|
|
20
|
+
* defaults → shape → the finish's `shine` and sparkle values → the shade's
|
|
21
|
+
* colour → every explicit value. Invalid values fall back to that order's
|
|
22
|
+
* value. `"lips"` delegates to `resolveLipEffectSettings` (its `preset` plays
|
|
23
|
+
* the part of `shape`).
|
|
24
|
+
*
|
|
25
|
+
* Every value of the input counts as explicit. Spreading a look region (a
|
|
26
|
+
* partial) and overriding after it works. A resolved object instead carries
|
|
27
|
+
* the values its shape and finish produced (`size`, `coverage`, `shine`,
|
|
28
|
+
* sparkle…), so a `shape` or `finish` spread after it changes nothing else:
|
|
29
|
+
* edit resolved settings with `patchMakeupSettings`. A named shade spread
|
|
30
|
+
* after a resolved object still replaces a colour that a shade produced, not
|
|
31
|
+
* a custom one (see `resolveMakeupShadePair`).
|
|
32
|
+
*/
|
|
33
|
+
export declare function resolveMakeupSettings<R extends MakeupRegion>(region: R, input?: Partial<MakeupSettings[R]>): MakeupSettings[R];
|
|
34
|
+
/**
|
|
35
|
+
* Apply an edit to one region, from a panel (the whole object) or from code
|
|
36
|
+
* (a sparse patch):
|
|
37
|
+
*
|
|
38
|
+
* - a `shape` that differs from the current one re-applies that shape;
|
|
39
|
+
* - a `finish` that differs re-applies its `shine` and sparkle values;
|
|
40
|
+
* - a named or `"auto"` shade keeps setting its colour, and a colour that
|
|
41
|
+
* differs from the current one makes its shade `"custom"`;
|
|
42
|
+
* - the patch's other values win over the shape's and finish's values.
|
|
43
|
+
*
|
|
44
|
+
* A whole-object patch counts only the fields that differ from `current`, so
|
|
45
|
+
* its unchanged fields never pin the old shape's or finish's values. A sparse
|
|
46
|
+
* patch (one that leaves out fields of `current`) keeps every value it sets,
|
|
47
|
+
* also one equal to the current value: `{ finish: "gloss", shine: 0.3 }`
|
|
48
|
+
* keeps `shine` 0.3.
|
|
49
|
+
*
|
|
50
|
+
* `"lips"` delegates to `patchLipEffectSettings` (a different `preset`
|
|
51
|
+
* re-applies that preset).
|
|
52
|
+
*/
|
|
53
|
+
export declare function patchMakeupSettings<R extends MakeupRegion>(region: R, current: MakeupSettings[R], patch: Partial<MakeupSettings[R]>): MakeupSettings[R];
|
|
54
|
+
export {};
|