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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (639) hide show
  1. package/GROUNDING.md +5651 -82
  2. package/README.md +1 -0
  3. package/dist/CanonicalHeadFrame-BHcWyaiK.js +1506 -0
  4. package/dist/CanonicalHeadFrame-D-_T1OMU.cjs +1 -0
  5. package/dist/DebuggerUI-7ngnJsBe.js +275 -0
  6. package/dist/DebuggerUI-CoglgKdO.cjs +1 -0
  7. package/dist/FaceRetouch-CLoTfrcs.js +1071 -0
  8. package/dist/FaceRetouch-J1lC1WbS.cjs +134 -0
  9. package/dist/FaceSurface-CHAMEeG1.cjs +1 -0
  10. package/dist/FaceSurface-DmP9AEeC.js +27 -0
  11. package/dist/SegmentationOverlay-D_FWkcyP.cjs +35 -0
  12. package/dist/SegmentationOverlay-vn5x_knv.js +6237 -0
  13. package/dist/SkeletonUtils-C2r90MtN.js +21 -0
  14. package/dist/SkeletonUtils-CddIup1F.cjs +1 -0
  15. package/dist/TextLabel-XE0rQSDn.cjs +2 -0
  16. package/dist/TextLabel-c9BCucOI.js +961 -0
  17. package/dist/assets/cache.d.ts +99 -0
  18. package/dist/assets/estimate.d.ts +11 -0
  19. package/dist/assets/gltfLoader.d.ts +16 -0
  20. package/dist/assets/index.d.ts +7 -0
  21. package/dist/assets/loaders.d.ts +43 -0
  22. package/dist/assets/react.d.ts +33 -0
  23. package/dist/body-pose/index.d.ts +521 -0
  24. package/dist/body-trigger/__fixtures__/syntheticBody.d.ts +83 -0
  25. package/dist/body-trigger/frame.d.ts +88 -0
  26. package/dist/body-trigger/index.d.ts +6 -0
  27. package/dist/body-trigger/moves.d.ts +235 -0
  28. package/dist/body-trigger/trigger.d.ts +75 -0
  29. package/dist/calibration/calibration.d.ts +75 -0
  30. package/dist/calibration/index.d.ts +6 -0
  31. package/dist/calibration/storage.d.ts +13 -0
  32. package/dist/calibration/types.d.ts +53 -0
  33. package/dist/calibration/useXRCalibration.d.ts +46 -0
  34. package/dist/camera/CameraPermissionGate.d.ts +26 -0
  35. package/dist/camera/devices.d.ts +26 -0
  36. package/dist/camera/index.d.ts +8 -0
  37. package/dist/camera/permission.d.ts +86 -0
  38. package/dist/camera/useCameraPermission.d.ts +35 -0
  39. package/dist/canonicalFace-BHwyCx1c.js +9 -0
  40. package/dist/canonicalFace-C83I225R.cjs +1 -0
  41. package/dist/capabilities/detect.d.ts +45 -0
  42. package/dist/capabilities/index.d.ts +5 -0
  43. package/dist/capabilities/types.d.ts +120 -0
  44. package/dist/capabilities/useXRCapabilities.d.ts +18 -0
  45. package/dist/compat/environment.d.ts +5 -0
  46. package/dist/compat/index.d.ts +4 -0
  47. package/dist/compat/run.d.ts +18 -0
  48. package/dist/compat/scenarios.d.ts +10 -0
  49. package/dist/compat/types.d.ts +101 -0
  50. package/dist/components/BodyInstruction/BodyPoseHint.d.ts +63 -0
  51. package/dist/components/BodyInstruction/index.d.ts +69 -0
  52. package/dist/components/BodyInstruction/useBodyPose.d.ts +23 -0
  53. package/dist/components/BodyTracker/index.d.ts +17 -0
  54. package/dist/components/BodyTrigger/index.d.ts +49 -0
  55. package/dist/components/Debugger/DebuggerProvider.d.ts +14 -1
  56. package/dist/components/Debugger/DebuggerUI.d.ts +3 -1
  57. package/dist/components/FaceAtlas/FaceAtlasLayer.d.ts +114 -0
  58. package/dist/components/FaceAtlas/MadeUpCamera.d.ts +80 -0
  59. package/dist/components/FaceAtlas/constants.d.ts +8 -0
  60. package/dist/components/FaceAtlas/index.d.ts +7 -0
  61. package/dist/components/FaceAtlas/useFaceAtlasSurface.d.ts +84 -0
  62. package/dist/components/FaceAtlas/useFaceSkin.d.ts +84 -0
  63. package/dist/components/FaceCharacter/ExternalFaceMesh.d.ts +109 -0
  64. package/dist/components/FaceCharacter/FaceExpressionController.d.ts +53 -0
  65. package/dist/components/FaceCharacter/FaceMorph.d.ts +71 -0
  66. package/dist/components/FaceCharacter/FacePiercing.d.ts +65 -0
  67. package/dist/components/FaceCharacter/FaceReprojection.d.ts +85 -0
  68. package/dist/components/FaceCharacter/FaceRig.d.ts +38 -0
  69. package/dist/components/FaceCharacter/FaceSurface.d.ts +49 -0
  70. package/dist/components/FaceCharacter/FaceSurfaceOccluder.d.ts +39 -0
  71. package/dist/components/FaceCharacter/PinToFaceMesh.d.ts +68 -0
  72. package/dist/components/FaceCharacter/index.d.ts +18 -0
  73. package/dist/components/FaceCharacter/useFaceReprojector.d.ts +10 -0
  74. package/dist/components/FaceInset/FaceInset.d.ts +68 -0
  75. package/dist/components/FaceInset/frame.d.ts +94 -0
  76. package/dist/components/FaceInset/index.d.ts +6 -0
  77. package/dist/components/FaceInset/material.d.ts +40 -0
  78. package/dist/components/FaceInset/useFaceInsetTexture.d.ts +37 -0
  79. package/dist/components/FaceInstruction/FaceExpressionHint.d.ts +43 -0
  80. package/dist/components/FaceInstruction/index.d.ts +56 -0
  81. package/dist/components/FaceInstruction/useFaceExpression.d.ts +20 -0
  82. package/dist/components/FaceLiquify/FaceLiquify.d.ts +49 -0
  83. package/dist/components/FaceLiquify/debug.d.ts +37 -0
  84. package/dist/components/FaceLiquify/frame.d.ts +55 -0
  85. package/dist/components/FaceLiquify/index.d.ts +10 -0
  86. package/dist/components/FaceLiquify/material.d.ts +39 -0
  87. package/dist/components/FaceLiquify/pass.d.ts +49 -0
  88. package/dist/components/FaceLiquify/presence.d.ts +25 -0
  89. package/dist/components/FaceLiquify/presets.d.ts +82 -0
  90. package/dist/components/FaceLiquify/selfTest.d.ts +66 -0
  91. package/dist/components/FaceLiquify/target.d.ts +85 -0
  92. package/dist/components/FaceLiquify/warp.d.ts +72 -0
  93. package/dist/components/FaceMesh/canonical/CanonicalFaceMeshRenderer.d.ts +37 -5
  94. package/dist/components/FaceMesh/canonical/geometryGroups.d.ts +21 -0
  95. package/dist/components/FaceMesh/canonical/parseCanonicalFaceModel.d.ts +21 -0
  96. package/dist/components/FaceMesh/canonical/shaders.d.ts +1 -1
  97. package/dist/components/FaceMesh/index.d.ts +2 -2
  98. package/dist/components/FaceRetouch/Background.d.ts +3 -1
  99. package/dist/components/FaceRetouch/FaceRetouch.d.ts +5 -0
  100. package/dist/components/FaceRetouch/renderState.d.ts +19 -0
  101. package/dist/components/FaceSwap/FaceMirror.d.ts +46 -0
  102. package/dist/components/FaceSwap/FaceSwap.d.ts +58 -0
  103. package/dist/components/FaceSwap/FaceTextureLayer.d.ts +72 -0
  104. package/dist/components/FaceSwap/faceSwapPlan.d.ts +91 -0
  105. package/dist/components/FaceSwap/index.d.ts +13 -0
  106. package/dist/components/FaceSwap/settings.d.ts +300 -0
  107. package/dist/components/FaceSwap/useFaceTexture.d.ts +35 -0
  108. package/dist/components/FaceSwap/useLiveFace.d.ts +38 -0
  109. package/dist/components/FaceSwap/useLiveFaceTexture.d.ts +31 -0
  110. package/dist/components/FaceWarp3D/FaceWarp3D.d.ts +50 -0
  111. package/dist/components/FaceWarp3D/index.d.ts +2 -3
  112. package/dist/components/Faceless/Faceless.d.ts +51 -0
  113. package/dist/components/Faceless/index.d.ts +2 -0
  114. package/dist/components/GestureListener/index.d.ts +11 -0
  115. package/dist/components/HairLock/HairLock.d.ts +39 -0
  116. package/dist/components/HairLock/index.d.ts +2 -0
  117. package/dist/components/HairLock/lockGeometry.d.ts +15 -0
  118. package/dist/components/HandCutout/index.d.ts +35 -0
  119. package/dist/components/HandInstruction/HandGestureHint.d.ts +70 -0
  120. package/dist/components/HandInstruction/index.d.ts +74 -0
  121. package/dist/components/HandInstruction/useHandGesture.d.ts +22 -0
  122. package/dist/components/HandRig/ForearmOccluder.d.ts +29 -0
  123. package/dist/components/HandRig/HandAttachment.d.ts +34 -0
  124. package/dist/components/HandRig/HandOccluder.d.ts +55 -0
  125. package/dist/components/HandRig/HandTattoo.d.ts +61 -0
  126. package/dist/components/HandRig/WristAttachment.d.ts +34 -0
  127. package/dist/components/HandRig/index.d.ts +101 -0
  128. package/dist/components/HandRig/useArmMask.d.ts +29 -0
  129. package/dist/components/HandRig/wristSolve.d.ts +69 -0
  130. package/dist/components/HandTouch/HandTouch.d.ts +62 -0
  131. package/dist/components/HandTouch/Touchable.d.ts +36 -0
  132. package/dist/components/HandTouch/index.d.ts +2 -0
  133. package/dist/components/HandTracker/index.d.ts +10 -0
  134. package/dist/components/HeadBinding/index.d.ts +14 -0
  135. package/dist/components/HeadOccluder/CanonicalHeadFrame.d.ts +22 -0
  136. package/dist/components/HeadOccluder/Earrings.d.ts +55 -0
  137. package/dist/components/HeadOccluder/HeadAttachment.d.ts +38 -0
  138. package/dist/components/HeadOccluder/NeckOccluder.d.ts +64 -0
  139. package/dist/components/HeadOccluder/earringPlacement.d.ts +31 -0
  140. package/dist/components/HeadOccluder/headAttachmentPoints.d.ts +69 -0
  141. package/dist/components/HeadOccluder/index.d.ts +57 -3
  142. package/dist/components/HeadOccluder/useCanonicalHeadFit.d.ts +36 -0
  143. package/dist/components/HeadOccluder/useLandmarkPoseFit.d.ts +80 -0
  144. package/dist/components/HolisticTracker/index.d.ts +69 -0
  145. package/dist/components/HolisticTracker/settings.d.ts +58 -0
  146. package/dist/components/HolisticTracker/signals.d.ts +49 -0
  147. package/dist/components/Instruction/HintStage.d.ts +29 -0
  148. package/dist/components/Instruction/InstructionCue.d.ts +126 -0
  149. package/dist/components/Instruction/gestureHold.d.ts +20 -0
  150. package/dist/components/Instruction/ghost.d.ts +129 -0
  151. package/dist/components/Instruction/hintBlend.d.ts +19 -0
  152. package/dist/components/Instruction/hintLook.d.ts +81 -0
  153. package/dist/components/Instruction/hintLoop.d.ts +36 -0
  154. package/dist/components/Instruction/index.d.ts +41 -0
  155. package/dist/components/Instruction/useGhostModel.d.ts +33 -0
  156. package/dist/components/Instruction/useInstructionHold.d.ts +72 -0
  157. package/dist/components/IrisEffect/IrisMaterial.d.ts +73 -0
  158. package/dist/components/IrisEffect/index.d.ts +51 -0
  159. package/dist/components/IrisEffect/settings.d.ts +117 -0
  160. package/dist/components/LipEffect/LipEffect.d.ts +27 -1
  161. package/dist/components/LipEffect/LipEffectMaterial.d.ts +95 -7
  162. package/dist/components/LipEffect/LipEffects.d.ts +12 -0
  163. package/dist/components/LipEffect/defaults.d.ts +46 -4
  164. package/dist/components/LipEffect/index.d.ts +11 -3
  165. package/dist/components/LipEffect/lipShading.d.ts +73 -0
  166. package/dist/components/LipEffect/settings.d.ts +375 -0
  167. package/dist/components/LipEffect/shader.d.ts +39 -0
  168. package/dist/components/LipEffect/types.d.ts +128 -9
  169. package/dist/components/LipEffect/useLipDesignTextures.d.ts +17 -0
  170. package/dist/components/LipEffect/uvGuide.d.ts +74 -0
  171. package/dist/components/Makeup/Blush.d.ts +18 -0
  172. package/dist/components/Makeup/Brows.d.ts +20 -0
  173. package/dist/components/Makeup/Contour.d.ts +17 -0
  174. package/dist/components/Makeup/Eyeliner.d.ts +20 -0
  175. package/dist/components/Makeup/Eyeshadow.d.ts +20 -0
  176. package/dist/components/Makeup/Highlighter.d.ts +18 -0
  177. package/dist/components/Makeup/MakeupDesign.d.ts +37 -0
  178. package/dist/components/Makeup/MakeupRegion.d.ts +132 -0
  179. package/dist/components/Makeup/constants.d.ts +44 -0
  180. package/dist/components/Makeup/design.d.ts +106 -0
  181. package/dist/components/Makeup/designSamples.d.ts +42 -0
  182. package/dist/components/Makeup/eyes.d.ts +114 -0
  183. package/dist/components/Makeup/fields.d.ts +10 -0
  184. package/dist/components/Makeup/geometry.d.ts +106 -0
  185. package/dist/components/Makeup/index.d.ts +26 -0
  186. package/dist/components/Makeup/looks.d.ts +28 -0
  187. package/dist/components/Makeup/material.d.ts +239 -0
  188. package/dist/components/Makeup/settings.d.ts +54 -0
  189. package/dist/components/Makeup/shades.d.ts +143 -0
  190. package/dist/components/Makeup/shapes.d.ts +27 -0
  191. package/dist/components/Makeup/skinTone.d.ts +135 -0
  192. package/dist/components/Makeup/types.d.ts +110 -0
  193. package/dist/components/Makeup/useMakeupSkinTone.d.ts +40 -0
  194. package/dist/components/Necklace/Necklace.d.ts +44 -0
  195. package/dist/components/Necklace/index.d.ts +1 -0
  196. package/dist/components/ParticleEmitter/ParticleEmitter.d.ts +69 -0
  197. package/dist/components/ParticleEmitter/index.d.ts +1 -0
  198. package/dist/components/PersonCutout/index.d.ts +50 -0
  199. package/dist/components/PersonCutout/personCutout.d.ts +16 -0
  200. package/dist/components/ScreenImage/components/ScreenImageBody.d.ts +1 -1
  201. package/dist/components/ScreenImage/index.d.ts +3 -1
  202. package/dist/components/ScreenImage/materials/ScreenImageBlendMaterial.d.ts +1 -1
  203. package/dist/components/ScreenImage/materials/ScreenImageMaskMaterial.d.ts +11 -0
  204. package/dist/components/ScreenImage/source.d.ts +6 -0
  205. package/dist/components/ScreenImage/types.d.ts +18 -0
  206. package/dist/components/SegmentationOverlay/SegmentationOverlay.d.ts +37 -0
  207. package/dist/components/SegmentationOverlay/SegmentationOverlayMaterial.d.ts +31 -0
  208. package/dist/components/SegmentationOverlay/index.d.ts +9 -0
  209. package/dist/components/SegmentationOverlay/maskTexture.d.ts +23 -0
  210. package/dist/components/SegmentationOverlay/providers.d.ts +72 -0
  211. package/dist/components/SegmentationOverlay/settings.d.ts +65 -0
  212. package/dist/components/ShoulderOccluder/index.d.ts +43 -0
  213. package/dist/components/ShoulderOccluder/useCanonicalTorsoFit.d.ts +24 -0
  214. package/dist/components/SpringSwing/SpringSwing.d.ts +22 -0
  215. package/dist/components/SpringSwing/index.d.ts +1 -0
  216. package/dist/components/XRProvider/index.d.ts +16 -2
  217. package/dist/components/XRScene/renderOutputTarget.d.ts +12 -0
  218. package/dist/components/XRViewport/hooks/useViewportExternalFaces.d.ts +1 -1
  219. package/dist/components/XRViewport/hooks/useViewportMediaSource.d.ts +1 -1
  220. package/dist/components/XRViewport/hooks/useViewportPipeline.d.ts +1 -1
  221. package/dist/components/index.d.ts +11 -0
  222. package/dist/config/index.d.ts +0 -1
  223. package/dist/constants/index.d.ts +4 -1
  224. package/dist/context-DTxSQvp4.js +13 -0
  225. package/dist/context-hA0Rb2Xa.cjs +1 -0
  226. package/dist/contexts-BH7PdKFS.cjs +1 -0
  227. package/dist/contexts-jak8-tND.js +667 -0
  228. package/dist/coordinates/feed.d.ts +52 -0
  229. package/dist/coordinates/index.d.ts +7 -0
  230. package/dist/coordinates/side.d.ts +40 -0
  231. package/dist/coordinates/spaces.d.ts +49 -0
  232. package/dist/coordinates/viewport.d.ts +22 -0
  233. package/dist/coordinates/world.d.ts +15 -0
  234. package/dist/debug-ui/default-setting.cjs +2 -2
  235. package/dist/debug-ui/face-swap-settings/index.d.ts +22 -0
  236. package/dist/debug-ui/gesture-settings/index.d.ts +14 -0
  237. package/dist/debug-ui/hierarchy-panel/index.d.ts +3 -2
  238. package/dist/debug-ui/holistic-tracker-settings/index.d.ts +16 -0
  239. package/dist/debug-ui/index.d.ts +18 -3
  240. package/dist/debug-ui/iris-effect-settings/index.d.ts +12 -0
  241. package/dist/debug-ui/lip-effect-settings/index.d.ts +15 -0
  242. package/dist/debug-ui/media-source/index.d.ts +1 -1
  243. package/dist/debug-ui/media-source/session.d.ts +30 -2
  244. package/dist/debug-ui/media-source.cjs +1 -1
  245. package/dist/debug-ui/media-source.js +1 -1
  246. package/dist/debug-ui/object-inspector-panel/index.d.ts +3 -2
  247. package/dist/debug-ui/product-hotspots/index.d.ts +25 -0
  248. package/dist/debug-ui/scene-editor/hierarchy-panel.d.ts +3 -1
  249. package/dist/debug-ui/scene-editor/inspector-panel.d.ts +3 -1
  250. package/dist/debug-ui/screen-image-settings/index.d.ts +3 -1
  251. package/dist/debug-ui/screen-text-settings/ScreenTextSettingsPanel.d.ts +1 -1
  252. package/dist/debug-ui/screen-text-settings/types.d.ts +2 -0
  253. package/dist/debug-ui/segmentation-overlay-settings/index.d.ts +12 -0
  254. package/dist/debug-ui/settings-panel/index.d.ts +6 -1
  255. package/dist/debug-ui/shared/debugWindow.d.ts +51 -0
  256. package/dist/debug-ui/xr-diagnostics/index.d.ts +26 -0
  257. package/dist/debug-ui.cjs +3 -3
  258. package/dist/debug-ui.js +2695 -2547
  259. package/dist/detector-K8aej4MB.js +59 -0
  260. package/dist/detector-ijypGtse.cjs +1 -0
  261. package/dist/entries/all.d.ts +3 -1
  262. package/dist/entries/core.d.ts +20 -2
  263. package/dist/entries/face-effects.d.ts +123 -9
  264. package/dist/entries/instructions.d.ts +48 -0
  265. package/dist/entries/internal.d.ts +2 -1
  266. package/dist/entries/low-level.d.ts +49 -3
  267. package/dist/entries/particles.d.ts +11 -0
  268. package/dist/entries/product.d.ts +11 -0
  269. package/dist/entries/tracking.d.ts +60 -2
  270. package/dist/face-atlas/attributes.d.ts +30 -0
  271. package/dist/face-atlas/eyes.d.ts +272 -0
  272. package/dist/face-atlas/faceAtlas.generated.d.ts +46 -0
  273. package/dist/face-atlas/glsl/atlasVertex.d.ts +46 -0
  274. package/dist/face-atlas/glsl/common.d.ts +55 -0
  275. package/dist/face-atlas/glsl/design.d.ts +49 -0
  276. package/dist/face-atlas/glsl/eyes.d.ts +73 -0
  277. package/dist/face-atlas/glsl/finish.d.ts +24 -0
  278. package/dist/face-atlas/glsl/format.d.ts +4 -0
  279. package/dist/face-atlas/glsl/index.d.ts +59 -0
  280. package/dist/face-atlas/glsl/shading.d.ts +15 -0
  281. package/dist/face-atlas/glsl/shapes.d.ts +66 -0
  282. package/dist/face-atlas/glsl/sparkle.d.ts +19 -0
  283. package/dist/face-atlas/glsl/uniforms.d.ts +106 -0
  284. package/dist/face-atlas/guide.d.ts +51 -0
  285. package/dist/face-atlas/index.d.ts +25 -0
  286. package/dist/face-atlas/lead.d.ts +117 -0
  287. package/dist/face-atlas/madeUpCamera.d.ts +125 -0
  288. package/dist/face-atlas/masks.d.ts +53 -0
  289. package/dist/face-atlas/obj.d.ts +69 -0
  290. package/dist/face-atlas/polylines.d.ts +63 -0
  291. package/dist/face-atlas/probe/FaceSkinProbe.d.ts +208 -0
  292. package/dist/face-atlas/probe/__fixtures__/emulate.d.ts +9 -0
  293. package/dist/face-atlas/probe/__fixtures__/face.d.ts +24 -0
  294. package/dist/face-atlas/probe/constants.d.ts +137 -0
  295. package/dist/face-atlas/probe/glsl.d.ts +43 -0
  296. package/dist/face-atlas/probe/lightFit.d.ts +108 -0
  297. package/dist/face-atlas/probe/schedule.d.ts +44 -0
  298. package/dist/face-atlas/probe/selfTest.d.ts +87 -0
  299. package/dist/face-atlas/probe/stats.d.ts +143 -0
  300. package/dist/face-atlas/probe/targets.d.ts +70 -0
  301. package/dist/face-atlas/probe/unwrap.d.ts +76 -0
  302. package/dist/face-atlas/quality.d.ts +28 -0
  303. package/dist/face-atlas/regions.d.ts +31 -0
  304. package/dist/face-atlas/registry.d.ts +252 -0
  305. package/dist/face-atlas/renderState.d.ts +86 -0
  306. package/dist/face-atlas/selfOcclusion.d.ts +62 -0
  307. package/dist/face-atlas/shading.d.ts +406 -0
  308. package/dist/face-atlas/shapes.d.ts +86 -0
  309. package/dist/face-atlas/sides.d.ts +41 -0
  310. package/dist/face-atlas/skinMask.d.ts +35 -0
  311. package/dist/face-atlas/surface.d.ts +155 -0
  312. package/dist/face-atlas/topology.d.ts +44 -0
  313. package/dist/face-character/__fixtures__/faceImageDetections.d.ts +25 -0
  314. package/dist/face-character/__fixtures__/faceNode.d.ts +22 -0
  315. package/dist/face-character/bindFaceModel.d.ts +106 -0
  316. package/dist/face-character/canonicalFace.d.ts +17 -0
  317. package/dist/face-character/canonicalFaceGeometry.d.ts +11 -0
  318. package/dist/face-character/canonicalFacePositions.d.ts +7 -0
  319. package/dist/face-character/driveFaceModel.d.ts +57 -0
  320. package/dist/face-character/expressionOutputs.d.ts +45 -0
  321. package/dist/face-character/faceExpressions.d.ts +104 -0
  322. package/dist/face-character/faceImageLandmarker.d.ts +93 -0
  323. package/dist/face-character/faceMeshBinding.d.ts +62 -0
  324. package/dist/face-character/faceMorph.d.ts +77 -0
  325. package/dist/face-character/faceMorphs.d.ts +46 -0
  326. package/dist/face-character/facePhoto.d.ts +138 -0
  327. package/dist/face-character/facePiercings.d.ts +116 -0
  328. package/dist/face-character/facePin.d.ts +131 -0
  329. package/dist/face-character/faceReprojection.d.ts +273 -0
  330. package/dist/face-character/faceReprojector.d.ts +171 -0
  331. package/dist/face-character/faceRig.d.ts +176 -0
  332. package/dist/face-character/faceSwapPresence.d.ts +85 -0
  333. package/dist/face-character/faceTexture.d.ts +169 -0
  334. package/dist/face-character/faceTextureBaker.d.ts +86 -0
  335. package/dist/face-character/faceTextureGuide.d.ts +106 -0
  336. package/dist/face-character/faceTextureStats.d.ts +298 -0
  337. package/dist/face-character/faceTransfer.d.ts +396 -0
  338. package/dist/face-character/faceTransferGeometry.d.ts +109 -0
  339. package/dist/face-character/faceTransferSelfTest.d.ts +94 -0
  340. package/dist/face-character/faceWarp3D.d.ts +101 -0
  341. package/dist/face-character/faceless.d.ts +79 -0
  342. package/dist/face-character/featureWarp.d.ts +28 -0
  343. package/dist/face-character/liveFaceRegistry.d.ts +370 -0
  344. package/dist/face-character/liveValue.d.ts +12 -0
  345. package/dist/face-character/memo.d.ts +15 -0
  346. package/dist/face-effects.cjs +2324 -1
  347. package/dist/face-effects.js +14208 -2268
  348. package/dist/face-expression/index.d.ts +182 -0
  349. package/dist/face-info/landmarks.d.ts +17 -3
  350. package/dist/face-info/types.d.ts +20 -3
  351. package/dist/gestures/definitions.d.ts +98 -0
  352. package/dist/gestures/detector.d.ts +87 -0
  353. package/dist/gestures/index.d.ts +8 -0
  354. package/dist/gestures/measures.d.ts +114 -0
  355. package/dist/gestures/settings.d.ts +49 -0
  356. package/dist/getFaceInfo-B1otSDMX.cjs +1 -0
  357. package/dist/getFaceInfo-Cu4xDWiL.js +62 -0
  358. package/dist/hand/armFit.d.ts +46 -0
  359. package/dist/hand/armMask.d.ts +178 -0
  360. package/dist/hand/handCutout.d.ts +23 -0
  361. package/dist/hand/handCutoutRegistry.d.ts +7 -0
  362. package/dist/hand/handGestures.d.ts +524 -0
  363. package/dist/hand/handPose.d.ts +98 -0
  364. package/dist/hand/handRigSolver.d.ts +159 -0
  365. package/dist/hand/handTattoo.d.ts +81 -0
  366. package/dist/hand/handTouch.d.ts +240 -0
  367. package/dist/hand/wrist.d.ts +44 -0
  368. package/dist/hand/wristFilter.d.ts +44 -0
  369. package/dist/hooks/selectors.d.ts +76 -1
  370. package/dist/hooks/useCalibrationFaceTracker.d.ts +1 -1
  371. package/dist/hooks/useFaceInfo.d.ts +13 -1
  372. package/dist/hooks/useFaceInfos.d.ts +1 -1
  373. package/dist/hooks/useFaceModelAcquisition.d.ts +38 -0
  374. package/dist/hooks/useGesture.d.ts +32 -0
  375. package/dist/hooks/useIrisTracking.d.ts +45 -0
  376. package/dist/hooks/useTrackerContext.d.ts +6 -0
  377. package/dist/hooks/useXRDiagnostics.d.ts +81 -0
  378. package/dist/hooks/useXRModel.d.ts +7 -0
  379. package/dist/hooks/useXRSession/facade.d.ts +42 -2
  380. package/dist/hooks/useXRSession/index.d.ts +2 -2
  381. package/dist/hooks/useXRSession/reason.d.ts +3 -1
  382. package/dist/hooks/useXRSession/registry.d.ts +14 -0
  383. package/dist/hooks/useXRSession/store.d.ts +52 -3
  384. package/dist/index-B1_TzJaI.js +1104 -0
  385. package/dist/index-BavF06C6.js +190 -0
  386. package/dist/index-BfFmpddl.cjs +21 -0
  387. package/dist/index-BuBzneeW.cjs +46 -0
  388. package/dist/index-CGsQWodV.cjs +1 -0
  389. package/dist/index-CIe7eCMH.js +3200 -0
  390. package/dist/index-CfSF8LXa.cjs +1 -0
  391. package/dist/index-D5GTzOzD.cjs +1 -0
  392. package/dist/index-DBhQzvVa.js +314 -0
  393. package/dist/index-DE17y0ZI.cjs +1 -0
  394. package/dist/index-JII7huPk.js +442 -0
  395. package/dist/index-tpCr9CLj.cjs +1 -0
  396. package/dist/index-w1S7fI2B.js +1432 -0
  397. package/dist/index-zGaqrz_K.js +188 -0
  398. package/dist/instructions.cjs +30 -0
  399. package/dist/instructions.js +1507 -0
  400. package/dist/{internal-Dmk1cTXq.js → internal-B90P-clC.js} +138 -119
  401. package/dist/internal-Cjinca64.cjs +1 -0
  402. package/dist/internal.cjs +1 -1
  403. package/dist/internal.js +15 -10
  404. package/dist/iris/compute.d.ts +27 -0
  405. package/dist/iris/index.d.ts +4 -0
  406. package/dist/iris/lead.d.ts +19 -0
  407. package/dist/iris/types.d.ts +89 -0
  408. package/dist/landmarkMask-BFDyBnKM.js +224 -0
  409. package/dist/landmarkMask-u7es2k4X.cjs +1 -0
  410. package/dist/landmarks-BlUqf5MZ.cjs +1 -0
  411. package/dist/landmarks-bftdwq6Z.js +76 -0
  412. package/dist/loaders-BGAUACsd.js +363 -0
  413. package/dist/loaders-BJ1_QCHt.cjs +1 -0
  414. package/dist/low-level.cjs +1 -1
  415. package/dist/low-level.js +1190 -675
  416. package/dist/main.cjs +1 -1
  417. package/dist/main.js +1190 -452
  418. package/dist/models/Base/index.d.ts +49 -0
  419. package/dist/models/Body/index.d.ts +3 -1
  420. package/dist/models/Face/constants.d.ts +8 -0
  421. package/dist/models/Face/index.d.ts +4 -12
  422. package/dist/models/Face/rotation.d.ts +18 -3
  423. package/dist/models/Hand/GestureTracking.d.ts +1 -1
  424. package/dist/models/Hand/HandTracking.d.ts +17 -1
  425. package/dist/models/Holistic/index.d.ts +49 -0
  426. package/dist/models/Holistic/result.d.ts +68 -0
  427. package/dist/models/Segmentation/index.d.ts +2 -0
  428. package/dist/models/SemanticSegmentation/index.d.ts +31 -0
  429. package/dist/models/SemanticSegmentation/presets.d.ts +28 -0
  430. package/dist/models/index.d.ts +2 -0
  431. package/dist/models/nodeSource.d.ts +9 -0
  432. package/dist/particles/emission.d.ts +24 -0
  433. package/dist/particles/eyes.d.ts +24 -0
  434. package/dist/particles/glsl.d.ts +14 -0
  435. package/dist/particles/index.d.ts +10 -0
  436. package/dist/particles/motion.d.ts +42 -0
  437. package/dist/particles/presets.d.ts +12 -0
  438. package/dist/particles/ring.d.ts +58 -0
  439. package/dist/particles/selfTest.d.ts +53 -0
  440. package/dist/particles/settings.d.ts +127 -0
  441. package/dist/particles/shapes.d.ts +29 -0
  442. package/dist/particles/spawner.d.ts +60 -0
  443. package/dist/particles/system.d.ts +64 -0
  444. package/dist/particles.cjs +122 -0
  445. package/dist/particles.js +774 -0
  446. package/dist/product/ProductDimensions.d.ts +16 -0
  447. package/dist/product/ProductHotspot.d.ts +16 -0
  448. package/dist/product/ProductViewer.d.ts +9 -0
  449. package/dist/product/details.d.ts +53 -0
  450. package/dist/product/index.d.ts +14 -0
  451. package/dist/product/loadModelViewer.d.ts +4 -0
  452. package/dist/product/types.d.ts +71 -0
  453. package/dist/product/useProductAr.d.ts +37 -0
  454. package/dist/product/useProductDetails.d.ts +60 -0
  455. package/dist/product.cjs +1 -0
  456. package/dist/product.js +414 -0
  457. package/dist/providers-C8rE26Uf.js +366 -0
  458. package/dist/providers-DHsrhDI2.cjs +62 -0
  459. package/dist/quality/XRQualityController.d.ts +25 -0
  460. package/dist/quality/controller.d.ts +33 -0
  461. package/dist/quality/index.d.ts +6 -0
  462. package/dist/quality/types.d.ts +100 -0
  463. package/dist/quality/useXRQuality.d.ts +28 -0
  464. package/dist/render/renderPasses.d.ts +8 -0
  465. package/dist/render/sceneBeforeRender.d.ts +12 -0
  466. package/dist/{renderGroups-KZk6eRiY.js → renderGroups-B38pUaX2.js} +1 -1
  467. package/dist/{renderGroups-80H3DpTl.cjs → renderGroups-Cb_4Ar1Q.cjs} +1 -1
  468. package/dist/renderPasses-B6l8IpJv.js +1290 -0
  469. package/dist/renderPasses-dqmkft4P.cjs +158 -0
  470. package/dist/renderState-CJNmj5jz.js +39 -0
  471. package/dist/renderState-apSfg4eR.cjs +1 -0
  472. package/dist/scene-object.cjs +1 -1
  473. package/dist/scene-object.js +2 -2
  474. package/dist/segmentation-Cb3ouK6Z.js +1758 -0
  475. package/dist/segmentation-D9pYO6aR.cjs +1 -0
  476. package/dist/segmentation2d/faceMemory.d.ts +28 -0
  477. package/dist/segmentation2d/faceRegions.d.ts +24 -0
  478. package/dist/segmentation2d/index.d.ts +9 -0
  479. package/dist/segmentation2d/maskUv.d.ts +23 -0
  480. package/dist/segmentation2d/rasterize.d.ts +14 -0
  481. package/dist/segmentation2d/types.d.ts +52 -0
  482. package/dist/select-Ck5LGz-J.cjs +1 -0
  483. package/dist/select-pYRo_win.js +233 -0
  484. package/dist/selectors-C4X71aoD.cjs +1 -0
  485. package/dist/selectors-DmNaKIwE.js +196 -0
  486. package/dist/session-BrH8G7iJ.cjs +31 -0
  487. package/dist/session-DgA_z6O1.js +418 -0
  488. package/dist/settings-BJ7FMBsO.js +111 -0
  489. package/dist/settings-C63FMBlF.cjs +1 -0
  490. package/dist/similarityFit-BFqHND2e.cjs +1 -0
  491. package/dist/similarityFit-Bbz-R8AY.js +91 -0
  492. package/dist/spring/index.d.ts +2 -0
  493. package/dist/spring/spring.d.ts +69 -0
  494. package/dist/spring/swing.d.ts +54 -0
  495. package/dist/subjects/index.d.ts +2 -0
  496. package/dist/subjects/select.d.ts +62 -0
  497. package/dist/subjects/types.d.ts +55 -0
  498. package/dist/tracking-config/apply.d.ts +57 -0
  499. package/dist/tracking-config/index.d.ts +7 -0
  500. package/dist/tracking-config/resolve.d.ts +25 -0
  501. package/dist/tracking-config/storage.d.ts +8 -0
  502. package/dist/tracking-config/types.d.ts +106 -0
  503. package/dist/tracking-config/useXRTrackingConfig.d.ts +38 -0
  504. package/dist/tracking.cjs +10 -1
  505. package/dist/tracking.js +1326 -506
  506. package/dist/trigger-D0Pm9noT.cjs +49 -0
  507. package/dist/trigger-IQeys0oS.js +2128 -0
  508. package/dist/types/compositor.d.ts +21 -0
  509. package/dist/types/face.d.ts +20 -1
  510. package/dist/types/hand-tracking.d.ts +9 -0
  511. package/dist/types/holistic.d.ts +121 -0
  512. package/dist/types/index.d.ts +1 -0
  513. package/dist/types/model.d.ts +22 -2
  514. package/dist/types/nodes.d.ts +47 -3
  515. package/dist/types/segmentation.d.ts +24 -0
  516. package/dist/types/session.d.ts +41 -3
  517. package/dist/updateThrottle-BseecYag.js +4 -0
  518. package/dist/updateThrottle-Of5Y4SVa.cjs +1 -0
  519. package/dist/useFaceInfo-BHDNCvsJ.cjs +1 -0
  520. package/dist/useFaceInfo-J4x7LsqL.js +76 -0
  521. package/dist/useFaceResultReader-BvEo5REG.js +61 -0
  522. package/dist/useFaceResultReader-DuaL1KJG.cjs +1 -0
  523. package/dist/useInstructionHold-DOu-RpCM.js +53 -0
  524. package/dist/useInstructionHold-DwJY1Alr.cjs +1 -0
  525. package/dist/useLandmarkPoseFit-Bg-h9BPb.cjs +1 -0
  526. package/dist/useLandmarkPoseFit-Bmb3h6Mw.js +87 -0
  527. package/dist/useXRCapabilities-Cr3RzuAW.cjs +1 -0
  528. package/dist/useXRCapabilities-Cxmlmpbd.js +30 -0
  529. package/dist/utils/canonicalRigidLandmarks.d.ts +8 -0
  530. package/dist/utils/fns.d.ts +6 -3
  531. package/dist/utils/headOccluderFit.d.ts +42 -0
  532. package/dist/utils/integrity.d.ts +21 -1
  533. package/dist/utils/resolveNumFaces.d.ts +13 -0
  534. package/dist/utils/shoulderOccluderFit.d.ts +38 -0
  535. package/dist/utils/similarityFit.d.ts +23 -0
  536. package/dist/utils/updateThrottle.d.ts +2 -0
  537. package/dist/utils/useStableUniforms.d.ts +18 -0
  538. package/dist/uv-BMFt19bg.cjs +1 -0
  539. package/dist/{index-ByoNj0QP.js → uv-DJU_XfmN.js} +15 -247
  540. package/docs/SDK_DOCUMENTATION.md +1 -2
  541. package/docs/api/adaptive-quality.mdx +104 -0
  542. package/docs/api/asset-lifecycle.mdx +78 -0
  543. package/docs/api/body-instructions.mdx +285 -0
  544. package/docs/api/body-triggers.mdx +234 -0
  545. package/docs/api/camera-permission.mdx +142 -0
  546. package/docs/api/coordinate-spaces.mdx +168 -0
  547. package/docs/api/cross-camera.mdx +89 -0
  548. package/docs/api/debug-ui-scene-editor.mdx +23 -2
  549. package/docs/api/diagnostics-calibration.mdx +97 -0
  550. package/docs/api/external-face-mesh.mdx +231 -0
  551. package/docs/api/face-actions.mdx +20 -16
  552. package/docs/api/face-attribute-expression.mdx +1 -1
  553. package/docs/api/face-binding-anchors.mdx +4 -2
  554. package/docs/api/face-character.mdx +157 -0
  555. package/docs/api/face-effects.mdx +9 -0
  556. package/docs/api/face-expression-controller.mdx +153 -0
  557. package/docs/api/face-info.mdx +17 -11
  558. package/docs/api/face-inset.mdx +204 -0
  559. package/docs/api/face-instructions.mdx +183 -0
  560. package/docs/api/face-liquify.mdx +196 -0
  561. package/docs/api/face-mesh.mdx +8 -9
  562. package/docs/api/face-morph.mdx +117 -0
  563. package/docs/api/face-painting.mdx +7 -0
  564. package/docs/api/face-reprojection.mdx +154 -0
  565. package/docs/api/face-retouching.mdx +18 -10
  566. package/docs/api/face-swap.mdx +350 -0
  567. package/docs/api/face-warp-3d.mdx +166 -0
  568. package/docs/api/faceless.mdx +143 -0
  569. package/docs/api/gestures.mdx +209 -0
  570. package/docs/api/hair.mdx +97 -0
  571. package/docs/api/hand-instructions.mdx +222 -0
  572. package/docs/api/hand-rig.mdx +535 -0
  573. package/docs/api/hand-touch.mdx +162 -0
  574. package/docs/api/head-occluder.mdx +563 -0
  575. package/docs/api/holistic-tracker.mdx +164 -0
  576. package/docs/api/instructions.mdx +323 -0
  577. package/docs/api/iris-tracking.mdx +247 -0
  578. package/docs/api/made-up-camera.mdx +131 -0
  579. package/docs/api/makeup-skin-tone.mdx +135 -0
  580. package/docs/api/makeup.mdx +353 -0
  581. package/docs/api/multi-subject.mdx +98 -0
  582. package/docs/api/particles.mdx +155 -0
  583. package/docs/api/person-cutout.mdx +136 -0
  584. package/docs/api/pin-to-face-mesh.mdx +274 -0
  585. package/docs/api/product-ar.mdx +114 -0
  586. package/docs/api/product-details.mdx +78 -0
  587. package/docs/api/screen-space-coordinates.mdx +4 -1
  588. package/docs/api/segmentation-overlay.mdx +301 -0
  589. package/docs/api/session-lifecycle.mdx +136 -0
  590. package/docs/api/trackers.mdx +5 -0
  591. package/docs/api/tracking-config.mdx +108 -0
  592. package/docs/docs.json +51 -1
  593. package/docs/examples/lip-shaders.mdx +273 -0
  594. package/docs/guides/face-atlas-template.svg +1 -0
  595. package/docs/guides/face-atlas-textures.mdx +186 -0
  596. package/docs/guides/face-texture-template.svg +1 -0
  597. package/docs/guides/harness-debug-ui.mdx +4 -4
  598. package/docs/guides/lip-effect-textures.mdx +368 -0
  599. package/docs/guides/lip-uv-template.png +0 -0
  600. package/docs/guides/lip-uv-template.svg +1 -0
  601. package/docs/guides/makeup-design-textures.mdx +109 -0
  602. package/docs/introduction.mdx +1 -2
  603. package/package.json +23 -1
  604. package/dist/DebuggerUI-B6bP6P9r.cjs +0 -1
  605. package/dist/DebuggerUI-BjOMr8q_.js +0 -269
  606. package/dist/FaceMeshRenderer-C5l6VLdO.cjs +0 -155
  607. package/dist/FaceMeshRenderer-wjAHrJzP.js +0 -1270
  608. package/dist/FaceRetouch-BkJzoA79.cjs +0 -134
  609. package/dist/FaceRetouch-DwbKQJAN.js +0 -551
  610. package/dist/components/FaceWarp3D/FaceWarp3DHead.d.ts +0 -15
  611. package/dist/components/FaceWarp3D/defaults.d.ts +0 -37
  612. package/dist/components/FaceWarp3D/warp.d.ts +0 -13
  613. package/dist/contexts-ByhzppYl.js +0 -663
  614. package/dist/contexts-Dr62It_K.cjs +0 -1
  615. package/dist/debug-ui/face-warp-3d/index.d.ts +0 -6
  616. package/dist/getFaceInfo-C4QpCQIY.js +0 -118
  617. package/dist/getFaceInfo-fA1bFBub.cjs +0 -1
  618. package/dist/index-9dlAQAhy.js +0 -1462
  619. package/dist/index-BjmTe9eM.cjs +0 -1
  620. package/dist/index-BpEf2BBb.cjs +0 -1
  621. package/dist/index-CyUUurQT.cjs +0 -1
  622. package/dist/index-DCiMbxC3.cjs +0 -1
  623. package/dist/index-DXT3WccE.js +0 -2089
  624. package/dist/index-DpI-qo5X.cjs +0 -17
  625. package/dist/index-DyVF4vEW.js +0 -111
  626. package/dist/index-VJ0SJwmG.js +0 -214
  627. package/dist/internal-Cq-TEQ5Y.cjs +0 -1
  628. package/dist/renderLayers-lDtL0_43.cjs +0 -1
  629. package/dist/renderLayers-zrK2pv5O.js +0 -13
  630. package/dist/renderPasses-BOoBSr8z.cjs +0 -21
  631. package/dist/renderPasses-BcquyVtu.js +0 -1500
  632. package/dist/selectors-B8H97CKA.js +0 -59
  633. package/dist/selectors-CZLKT2Iv.cjs +0 -1
  634. package/dist/session-CpkiK5YA.cjs +0 -31
  635. package/dist/session-DLFN_VII.js +0 -363
  636. package/dist/useFaceInfo-BJ8-_MOs.cjs +0 -1
  637. package/dist/useFaceInfo-Dk426LTu.js +0 -62
  638. package/dist/useFaceResults-CtetsO9M.js +0 -19
  639. package/dist/useFaceResults-wBJF3zyp.cjs +0 -1
@@ -0,0 +1,36 @@
1
+ /**
2
+ * How a hint loops from rest into the pose and back. Every hint takes a
3
+ * `loop`, merged over its defaults.
4
+ */
5
+ export type HintLoop = {
6
+ /** Seconds per cycle (rest → pose → rest). `0` holds the full pose. */
7
+ seconds?: number;
8
+ /** Share of the cycle held at the full pose (0..0.95). Default ≈0.54. */
9
+ hold?: number;
10
+ /** Where each cycle starts, 0 = the model's rest .. 1 = the pose (the hand starts relaxed, 0.35). */
11
+ from?: number;
12
+ /** Easing of the move (0..1 → 0..1). Default smoothstep (the hand closes with a small settle). */
13
+ easing?: (t: number) => number;
14
+ };
15
+ /** The default hold share: the full pose for ≈54 % of each cycle. */
16
+ export declare const HINT_LOOP_HOLD: number;
17
+ export type HintLoopSample = {
18
+ /** 0..1 through the cycle. */
19
+ phase: number;
20
+ /** The raw drive, 0 (rest) → 1 (pose, held) → 0, before easing and `from`. */
21
+ drive: number;
22
+ /** In the first half of the cycle (moving into the pose). */
23
+ closing: boolean;
24
+ /** How far into the pose: `from` + eased drive, 0..1. */
25
+ amount: number;
26
+ };
27
+ /**
28
+ * Samples a hint loop at `time` seconds: rest → pose (held) → rest. Pure; call
29
+ * it from `useFrame` with `clock.elapsedTime` to drive your own hint.
30
+ */
31
+ export declare const sampleHintLoop: (time: number, { seconds, hold, from, easing }?: HintLoop) => HintLoopSample;
32
+ /**
33
+ * The auto orbit's yaw (radians) at `time`: a ping-pong swing of ±`degrees`
34
+ * about the vertical, `seconds` per swing (`0` = still).
35
+ */
36
+ export declare const sampleHintOrbit: (time: number, degrees: number, seconds: number) => number;
@@ -0,0 +1,41 @@
1
+ import { ReactNode } from 'react';
2
+ import { InstructionOptions } from './InstructionCue';
3
+ import { InstructionDetector } from './useInstructionHold';
4
+ export type InstructionProps = InstructionOptions & {
5
+ /** Instruction copy. */
6
+ text: string;
7
+ /**
8
+ * What drives it: any detector hook's result (`useHandGesture`,
9
+ * `useFaceExpression`, `useBodyPose`, `useInstructionHold`) or your own
10
+ * `{ status, isInView }`.
11
+ */
12
+ detector: Pick<InstructionDetector, "status" | "isInView">;
13
+ /**
14
+ * The symbol over the text, drawn `height` tall (screen-space world units)
15
+ * in the given render order: a hint (`HandGestureHint`, …), your own model
16
+ * in a `HintStage`, a `ScreenImage`, an emoji `TextLabel` …
17
+ */
18
+ symbol: (height: number, renderOrder: number) => ReactNode;
19
+ /** The symbol's slot height × the size preset (a standing figure uses 2.1). Default 1. */
20
+ symbolAspect?: number;
21
+ /** `false` hides it. Default `true`. (Pause the detector with its own `active`.) */
22
+ active?: boolean;
23
+ };
24
+ /**
25
+ * The instruction layout on its own: a symbol over your copy, a nudge line
26
+ * when nothing is in view, status reports, and on completion a pop, a ring
27
+ * and a fade-out. Bring any detector and any symbol; `HandInstruction`,
28
+ * `FaceInstruction` and `BodyInstruction` are this with their hint and hook.
29
+ * Mount inside `XRScene`; it draws in its own `ScreenSpaceUI`, over the AR
30
+ * content (`INSTRUCTION_RENDER_ORDER` 2000+).
31
+ *
32
+ * ```tsx
33
+ * const wave = useHandGesture(myWave, { onComplete: start });
34
+ * <Instruction
35
+ * detector={wave}
36
+ * text="Wave hello"
37
+ * symbol={(h, order) => <HandGestureHint gesture={myWave} model={hand} height={h} renderOrder={order} />}
38
+ * />
39
+ * ```
40
+ */
41
+ export declare const Instruction: ({ active, ...props }: InstructionProps) => import("react/jsx-runtime").JSX.Element | null;
@@ -0,0 +1,33 @@
1
+ import { HintMeshSet } from './ghost';
2
+ import { HintLook, ResolvedHintLook } from './hintLook';
3
+ import * as THREE from "three";
4
+ export type GhostModel = {
5
+ /** The ghost copy of the model to render (`<primitive object={ghost.object} />`). */
6
+ object: THREE.Object3D;
7
+ /** Its meshes, each with its depth pre-pass and halo twins (copy morph weights to all three). */
8
+ meshes: HintMeshSet[];
9
+ /** The ghost material per part (material name); empty with `look.material`. */
10
+ materials: Map<string, THREE.Material>;
11
+ /** The back-glow disc's material (`null` with `glow: false`); `HintStage` draws it. */
12
+ glowMaterial: THREE.MeshBasicMaterial | null;
13
+ /** The resolved look. */
14
+ look: ResolvedHintLook;
15
+ /** Lights bones up: `weight(bone)` 0..1 per skinned bone (0 everywhere clears it). */
16
+ setHighlight: (weight: (bone: THREE.Bone) => number) => void;
17
+ /** How formed the pose is, 0..1: fades the highlight and the glow in. Call it every frame. */
18
+ setStrength: (amount: number) => void;
19
+ };
20
+ export type UseGhostModelOptions = {
21
+ /** The hint's default look, `look` is merged over it. Default: the plain ghost. */
22
+ base?: HintLook;
23
+ /** Render order of the hint (its pre-pass and halo draw just before it). */
24
+ renderOrder?: number;
25
+ };
26
+ /**
27
+ * Turns any model into an instruction-hint ghost: a skeleton-safe copy with a
28
+ * translucent matcap ghost per part, a depth pre-pass (only the front surface
29
+ * shows), a halo and a back-glow, all from one `look`. The building block the
30
+ * hand / face / body hints use; use it for a hint on your own model, then pose
31
+ * `ghost.object` yourself (e.g. `createClipBlend`) inside a `HintStage`.
32
+ */
33
+ export declare const useGhostModel: (model: THREE.Object3D, look?: HintLook, { base, renderOrder }?: UseGhostModelOptions) => GhostModel;
@@ -0,0 +1,72 @@
1
+ import { MutableRefObject } from 'react';
2
+ import { GestureHoldState, GestureHoldStatus } from './gestureHold';
3
+ /**
4
+ * What an `<Instruction>` reads from its detector. `useHandGesture`,
5
+ * `useFaceExpression`, `useBodyPose` and `useInstructionHold` all return one,
6
+ * so any of them (or your own) can drive the layout.
7
+ */
8
+ export type InstructionDetector = {
9
+ /** `"waiting"` → `"holding"` → `"done"`; re-renders only when this changes. */
10
+ status: GestureHoldStatus;
11
+ /** Live hold state (progress 0..1) — read it in `useFrame`, not in render. */
12
+ holdRef: MutableRefObject<GestureHoldState>;
13
+ /** Whether it matched on the latest frame (before hold timing) — read it in `useFrame`. */
14
+ matchedRef: MutableRefObject<boolean>;
15
+ /** Whether something usable (a hand, a face, a body) is in view right now. */
16
+ isInView: () => boolean;
17
+ /** Start over (e.g. to ask again). */
18
+ reset: () => void;
19
+ };
20
+ export type InstructionHoldOptions = {
21
+ /** How long it must be held to complete. Default 400 ms. */
22
+ holdMs?: number;
23
+ /** Dropouts shorter than this do not restart the hold. Default 150 ms. */
24
+ graceMs?: number;
25
+ /** Called once when it completes (until `reset`). */
26
+ onComplete?: () => void;
27
+ /** `false` pauses it. Default `true`. */
28
+ active?: boolean;
29
+ };
30
+ /**
31
+ * The hold state machine behind every detector hook: `step(matched)` once per
32
+ * frame; a new `resetKey` starts a new prompt.
33
+ */
34
+ export declare const useHoldTracker: (resetKey: unknown, { holdMs, graceMs, onComplete, }: Omit<InstructionHoldOptions, "active">) => {
35
+ status: GestureHoldStatus;
36
+ holdRef: MutableRefObject<GestureHoldState>;
37
+ matchedRef: MutableRefObject<boolean>;
38
+ reset: () => void;
39
+ step: (matched: boolean) => void;
40
+ };
41
+ /**
42
+ * A stable key for a gesture / expression / pose spec, so an inline rule or
43
+ * definition object does not restart the hold every render (functions are
44
+ * read live and do not re-key; change a React `key` or call `reset` for a new
45
+ * prompt with the same function).
46
+ */
47
+ export declare const specKey: (spec: unknown) => string;
48
+ export type UseInstructionHoldOptions = InstructionHoldOptions & {
49
+ /**
50
+ * Whether something usable is in view (drives the `"waiting"` status and the
51
+ * nudge). Default: always in view.
52
+ */
53
+ isInView?: () => boolean;
54
+ /** A new value starts a new prompt (the hold restarts). */
55
+ resetKey?: unknown;
56
+ };
57
+ /**
58
+ * Hold-to-complete for ANY condition: `match` is called every frame and must
59
+ * hold for `holdMs`. Combine detectors by reading their `matchedRef`s (call
60
+ * those hooks first, in the same component):
61
+ *
62
+ * ```tsx
63
+ * const hand = useHandGesture("palm");
64
+ * const face = useFaceExpression("smile");
65
+ * const both = useInstructionHold(() => hand.matchedRef.current && face.matchedRef.current, {
66
+ * isInView: () => hand.isInView() && face.isInView(),
67
+ * onComplete: start,
68
+ * });
69
+ * <Instruction detector={both} text="Wave and smile" symbol={…} />
70
+ * ```
71
+ */
72
+ export declare const useInstructionHold: (match: () => boolean, { isInView, resetKey, active, ...options }?: UseInstructionHoldOptions) => InstructionDetector;
@@ -0,0 +1,73 @@
1
+ import { IrisEye } from '../../iris/types';
2
+ import * as THREE from "three";
3
+ /**
4
+ * Uniforms every iris material receives. Values are refreshed in place each
5
+ * frame by `updateIrisUniforms`; keep the object identity stable (three
6
+ * captures it at program compile).
7
+ */
8
+ export type IrisUniforms = {
9
+ /** Iris center in MediaPipe image space (0..1, top-left origin). */
10
+ irisCenter: {
11
+ value: THREE.Vector2;
12
+ };
13
+ /** Iris radius in image-width units. */
14
+ irisRadius: {
15
+ value: number;
16
+ };
17
+ /** Iris position inside the eye opening, [-1, 1] per axis (+x person's left, +y up). Not gaze. */
18
+ irisOffset: {
19
+ value: THREE.Vector2;
20
+ };
21
+ /** 0..1 eyelid-opening confidence, scaled by the hold decay. */
22
+ irisConfidence: {
23
+ value: number;
24
+ };
25
+ /** Eyelid gap / eye width. */
26
+ irisOpenness: {
27
+ value: number;
28
+ };
29
+ /** Seconds since the effect mounted. */
30
+ time: {
31
+ value: number;
32
+ };
33
+ color: {
34
+ value: THREE.Color;
35
+ };
36
+ opacity: {
37
+ value: number;
38
+ };
39
+ /** 1 when the material is mirrored horizontally, else 0. */
40
+ mirror: {
41
+ value: number;
42
+ };
43
+ /** 1 to multiply the image by `color` in the image material, else 0. */
44
+ tintImage: {
45
+ value: number;
46
+ };
47
+ /** Image for the image material (null in shader mode). */
48
+ map: {
49
+ value: THREE.Texture | null;
50
+ };
51
+ };
52
+ export declare const createIrisUniforms: () => IrisUniforms;
53
+ /** Copy one eye's live values into the uniforms. */
54
+ export declare const updateIrisUniforms: (uniforms: IrisUniforms, eye: IrisEye, options: {
55
+ time: number;
56
+ color?: THREE.ColorRepresentation;
57
+ opacity?: number;
58
+ mirrored?: boolean;
59
+ tintImage?: boolean;
60
+ map?: THREE.Texture | null;
61
+ }) => IrisUniforms;
62
+ export declare const IRIS_VERTEX_SHADER = "\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }\n";
63
+ /**
64
+ * Built-in procedural iris: a tinted disc with radial fibre bands, a pupil
65
+ * that follows \`irisOffset\`, a limbal ring, and alpha fading with
66
+ * \`irisConfidence\` so a closing eye dissolves the effect. The quad spans
67
+ * the iris diameter (uv 0.5 is the iris center).
68
+ */
69
+ export declare const IRIS_SHADER_FRAGMENT = "\n uniform vec2 irisOffset;\n uniform float irisConfidence;\n uniform float time;\n uniform vec3 color;\n uniform float opacity;\n uniform float mirror;\n varying vec2 vUv;\n\n float hash(float n) { return fract(sin(n) * 43758.5453123); }\n\n void main() {\n vec2 p = vUv - 0.5;\n p.x = mix(p.x, -p.x, mirror);\n float r = length(p) * 2.0;\n if (r > 1.0) discard;\n float angle = atan(p.y, p.x);\n // Radial fibres: a few overlapping angular frequencies, slowly rotating.\n float fibres = 0.5\n + 0.25 * sin(angle * 36.0 + time * 0.3)\n + 0.15 * sin(angle * 91.0 - r * 6.0)\n + 0.10 * sin(angle * 17.0 + time * 0.7);\n vec3 base = color * (0.55 + 0.6 * fibres) * (1.1 - 0.5 * r);\n // Limbal ring: darken the outer edge.\n base *= 1.0 - smoothstep(0.78, 1.0, r) * 0.7;\n // Pupil: a soft dark disc offset slightly with the iris position in the eye.\n vec2 pupil = p - irisOffset * 0.08;\n float pupilR = length(pupil) * 2.0;\n float pupilMask = 1.0 - smoothstep(0.26, 0.36, pupilR);\n base = mix(base, vec3(0.02), pupilMask);\n // Specular glint.\n float glint = 1.0 - smoothstep(0.0, 0.14, length(p - vec2(-0.18, 0.2)));\n base += glint * 0.8;\n float edge = 1.0 - smoothstep(0.92, 1.0, r);\n gl_FragColor = vec4(base, opacity * edge * irisConfidence);\n #include <colorspace_fragment>\n }\n";
70
+ /** Image material: the texture covers the quad, tinted by \`color\`, fading with confidence. */
71
+ export declare const IRIS_IMAGE_FRAGMENT = "\n uniform sampler2D map;\n uniform float irisConfidence;\n uniform vec3 color;\n uniform float opacity;\n uniform float mirror;\n uniform float tintImage;\n varying vec2 vUv;\n void main() {\n vec2 uv = vUv;\n uv.x = mix(uv.x, 1.0 - uv.x, mirror);\n vec4 texel = texture2D(map, uv);\n // Image as authored; multiplied by the tint only when tintImage is on.\n vec3 rgb = texel.rgb * mix(vec3(1.0), color, tintImage);\n gl_FragColor = vec4(rgb, texel.a * opacity * irisConfidence);\n #include <colorspace_fragment>\n }\n";
72
+ export declare const createIrisShaderMaterial: (uniforms: IrisUniforms) => THREE.ShaderMaterial;
73
+ export declare const createIrisImageMaterial: (uniforms: IrisUniforms) => THREE.ShaderMaterial;
@@ -0,0 +1,51 @@
1
+ import { IrisTrackingHandle } from '../../hooks/useIrisTracking';
2
+ import { IrisResult, IrisSide } from '../../iris/types';
3
+ import { IrisUniforms } from './IrisMaterial';
4
+ import { IrisEffectSettings } from './settings';
5
+ import * as THREE from "three";
6
+ export declare const DEFAULT_IRIS_EFFECT_RENDER_ORDER: 100;
7
+ /** What a custom iris material factory receives, once per eye, when the tracker is ready. */
8
+ export type IrisMaterialContext = {
9
+ side: IrisSide;
10
+ /** Stable uniforms, refreshed in place every frame; wire them into your shader. */
11
+ uniforms: IrisUniforms;
12
+ /** The live result (stable object) for anything the uniforms do not carry. */
13
+ result: IrisResult;
14
+ /** The loaded image in `image` mode, else null. */
15
+ texture: THREE.Texture | null;
16
+ };
17
+ /**
18
+ * A three.js material instance (shared, the caller owns it), or a factory
19
+ * called once per eye for each `material` identity; the effect disposes what
20
+ * a factory created when the factory changes or on unmount. Read the live
21
+ * texture from `uniforms.map`, not from the context, which only carries the
22
+ * texture known when the factory ran.
23
+ */
24
+ export type IrisMaterialOverride = THREE.Material | ((context: IrisMaterialContext) => THREE.Material);
25
+ export type IrisEffectProps = Partial<IrisEffectSettings> & {
26
+ /** Maximum faces requested from the shared face model. Default `faceIndex + 1`. */
27
+ numFaces?: number;
28
+ /** Pauses the tracker interest. Default true. */
29
+ active?: boolean;
30
+ /** Extrapolate held faces along their velocity for up to this long (ms). Default 0. */
31
+ predictMs?: number;
32
+ /** Pre-loaded image for `image` mode; takes precedence over `textureUrl`. */
33
+ texture?: THREE.Texture | null;
34
+ /** Replace the built-in materials with your own (receives the shared uniforms). */
35
+ material?: IrisMaterialOverride;
36
+ renderOrder?: number;
37
+ /** Called with the handle once per mount, for HUDs that read `handle.result` in `useFrame`. */
38
+ onTracking?: (handle: IrisTrackingHandle) => void;
39
+ };
40
+ /**
41
+ * Draws a material over each tracked iris: the built-in procedural shader,
42
+ * an image, or your own material fed by the same uniforms. Tracking comes
43
+ * from `useIrisTracking` (the shared face model, hold/predict, smoothing);
44
+ * the quads hide as soon as the face is dropped, so no stale eye effect
45
+ * lingers. `confidence` fades the built-ins as the eye closes.
46
+ */
47
+ export declare const IrisEffect: ({ numFaces, active, predictMs, texture: textureProp, material, renderOrder, onTracking, ...settingsInput }: IrisEffectProps) => import("react/jsx-runtime").JSX.Element;
48
+ export { IRIS_IMAGE_FRAGMENT, IRIS_SHADER_FRAGMENT, IRIS_VERTEX_SHADER, createIrisImageMaterial, createIrisShaderMaterial, createIrisUniforms, updateIrisUniforms, } from './IrisMaterial';
49
+ export type { IrisUniforms } from './IrisMaterial';
50
+ export { DEFAULT_IRIS_EFFECT_SETTINGS, IRIS_EFFECT_EYES, IRIS_EFFECT_MODES, IRIS_EFFECT_SETTINGS_FIELDS, patchIrisEffectSettings, resolveIrisEffectSettings, } from './settings';
51
+ export type { IrisEffectEye, IrisEffectMode, IrisEffectSettings } from './settings';
@@ -0,0 +1,117 @@
1
+ export declare const IRIS_EFFECT_EYES: readonly ["both", "left", "right"];
2
+ export type IrisEffectEye = (typeof IRIS_EFFECT_EYES)[number];
3
+ export declare const IRIS_EFFECT_MODES: readonly ["shader", "image"];
4
+ export type IrisEffectMode = (typeof IRIS_EFFECT_MODES)[number];
5
+ /** Flat, serializable settings for `<IrisEffect>`; the debug panel edits these. */
6
+ export type IrisEffectSettings = {
7
+ eye: IrisEffectEye;
8
+ mode: IrisEffectMode;
9
+ /** Tint for the shader iris, multiplied into the image in `image` mode. */
10
+ color: string;
11
+ /** Image for `image` mode. Empty = none (the effect hides). */
12
+ textureUrl: string;
13
+ /** Multiply the image by `color` in `image` mode. Default false (image as authored). */
14
+ tintImage: boolean;
15
+ /** Multiplier on the tracked iris radius. 1 = cover the iris. */
16
+ scale: number;
17
+ opacity: number;
18
+ /**
19
+ * Inference cap (fps) requested for the shared face model; `0` keeps the
20
+ * session's `perf.targetFps`. The first mounted face consumer wins, so
21
+ * pass the same value everywhere the face model is acquired.
22
+ */
23
+ targetFps: number;
24
+ /** One Euro smoothing of the iris center and radius (0 = raw). */
25
+ smoothing: number;
26
+ /** Max extrapolation between inference samples (ms); 0 = hold-and-jump. */
27
+ leadMs: number;
28
+ /** Flip the material horizontally (image orientation / shader +x). */
29
+ mirrored: boolean;
30
+ faceIndex: number;
31
+ holdMs: number;
32
+ };
33
+ export declare const DEFAULT_IRIS_EFFECT_SETTINGS: IrisEffectSettings;
34
+ export declare const IRIS_EFFECT_SETTINGS_FIELDS: [{
35
+ readonly key: "eye";
36
+ readonly label: "Eye";
37
+ readonly type: "select";
38
+ readonly options: {
39
+ label: "left" | "right" | "both";
40
+ value: "left" | "right" | "both";
41
+ }[];
42
+ }, {
43
+ readonly key: "mode";
44
+ readonly label: "Material";
45
+ readonly type: "select";
46
+ readonly options: {
47
+ label: "image" | "shader";
48
+ value: "image" | "shader";
49
+ }[];
50
+ }, {
51
+ readonly key: "color";
52
+ readonly label: "Color / tint";
53
+ readonly type: "color";
54
+ }, {
55
+ readonly key: "textureUrl";
56
+ readonly label: "Image URL (image mode)";
57
+ readonly type: "text";
58
+ }, {
59
+ readonly key: "tintImage";
60
+ readonly label: "Tint image with color";
61
+ readonly type: "boolean";
62
+ }, {
63
+ readonly key: "scale";
64
+ readonly label: "Scale (× iris radius)";
65
+ readonly type: "number";
66
+ readonly min: 0.2;
67
+ readonly max: 4;
68
+ readonly step: 0.05;
69
+ }, {
70
+ readonly key: "opacity";
71
+ readonly label: "Opacity";
72
+ readonly type: "number";
73
+ readonly min: 0;
74
+ readonly max: 1;
75
+ readonly step: 0.05;
76
+ }, {
77
+ readonly key: "targetFps";
78
+ readonly label: "Face FPS (0 = session)";
79
+ readonly type: "number";
80
+ readonly min: 0;
81
+ readonly max: 60;
82
+ readonly step: 1;
83
+ }, {
84
+ readonly key: "smoothing";
85
+ readonly label: "Smoothing (0 = raw)";
86
+ readonly type: "number";
87
+ readonly min: 0;
88
+ readonly max: 60;
89
+ readonly step: 1;
90
+ }, {
91
+ readonly key: "leadMs";
92
+ readonly label: "Lead between samples (ms)";
93
+ readonly type: "number";
94
+ readonly min: 0;
95
+ readonly max: 200;
96
+ readonly step: 10;
97
+ }, {
98
+ readonly key: "mirrored";
99
+ readonly label: "Mirror material";
100
+ readonly type: "boolean";
101
+ }, {
102
+ readonly key: "faceIndex";
103
+ readonly label: "Face index";
104
+ readonly type: "number";
105
+ readonly min: 0;
106
+ readonly max: 3;
107
+ readonly step: 1;
108
+ }, {
109
+ readonly key: "holdMs";
110
+ readonly label: "Hold (ms)";
111
+ readonly type: "number";
112
+ readonly min: 0;
113
+ readonly max: 1000;
114
+ readonly step: 10;
115
+ }];
116
+ export declare const resolveIrisEffectSettings: (value?: Partial<IrisEffectSettings>) => IrisEffectSettings;
117
+ export declare const patchIrisEffectSettings: (current: IrisEffectSettings, patch: Partial<IrisEffectSettings>) => IrisEffectSettings;
@@ -1,2 +1,28 @@
1
1
  import { LipEffectProps } from './types';
2
- export declare const LipEffect: ({ faceIndex, designTexture, color, opacity, intensity, maskMode, shading, material, renderOrder, }: LipEffectProps) => import("react/jsx-runtime").JSX.Element;
2
+ import * as THREE from "three";
3
+ /**
4
+ * `outer-and-inner-lips` paints only the lip surface: the mouth interior
5
+ * writes the mouth stencil bit and the lip material skips those pixels.
6
+ * `outer-lips` paints everything inside the outer lip ring, interior included.
7
+ */
8
+ export declare const shouldWriteMouthStencil: (maskMode: LipEffectProps["maskMode"]) => boolean;
9
+ export declare const getLipEffectMouthStencilMaterial: () => THREE.MeshBasicMaterial;
10
+ /**
11
+ * Whether the lip layers keep the `faceUv` attribute current: the `faceUv`
12
+ * prop when given, else only for a custom (not built-in) `material` or
13
+ * `sharedMaterial`. The built-in material never reads it.
14
+ */
15
+ export declare const lipEffectWantsFaceUv: ({ faceUv, material, sharedMaterial, }: Pick<LipEffectProps, "faceUv" | "material" | "sharedMaterial">) => boolean;
16
+ /**
17
+ * Lipstick, gloss, tint, shimmer, glitter or a painted design on the lips of
18
+ * a tracked face, shaded against the person's own skin and light by the
19
+ * makeup core. It draws two `FaceAtlasLayer`s on the face's shared surface:
20
+ * the mouth interior (the stencil cut-out, or painted in `outer-lips` mode)
21
+ * and the lips, at `MAKEUP_RENDER_ORDER.lips`.
22
+ *
23
+ * It works alone (it starts the face model itself; no `FaceTracker`
24
+ * needed), inside a `FaceTracker` (that face), or nested in a `FaceRig` /
25
+ * `FaceWarp3D` / `FaceMorph` (it rides that face). Its design textures load
26
+ * through R3F's `useLoader`, so keep it under a `<Suspense>`, as in alpha.8.
27
+ */
28
+ export declare const LipEffect: ({ faceIndex, numFaces, mirrored, designTexture, lowerDesignTexture, material, sharedMaterial, faceUv, holdMs, renderOrder, ...settingsInput }: LipEffectProps) => import("react/jsx-runtime").JSX.Element | null;
@@ -1,10 +1,98 @@
1
+ import { LipEffectSettings } from './settings';
1
2
  import { LipEffectMaterialContext } from './types';
2
- export type LipEffectMaterialProps = {
3
- context: LipEffectMaterialContext;
4
- color: string;
5
- opacity: number;
6
- intensity: number;
7
- shading: boolean;
3
+ import { LipUvBounds } from './uvGuide';
4
+ import * as THREE from "three";
5
+ export { LIP_EFFECT_FRAGMENT_SHADER, LIP_EFFECT_SKIN_STATS_DEFINE, LIP_EFFECT_VERTEX_SHADER, } from './shader';
6
+ /** Everything the built-in lip material reads. */
7
+ export type LipEffectMaterialInputs = Pick<LipEffectMaterialContext, "cameraTexture" | "designTexture"> & {
8
+ settings: LipEffectSettings;
9
+ /** Lower-lip design texture, used when `settings.splitLips` is on. */
10
+ lowerDesignTexture?: THREE.Texture | null;
11
+ /** Lip region of the face atlas; defaults to the atlas's own (`getLipUvBounds()`). */
12
+ lipUvBounds?: LipUvBounds;
13
+ /** Skip pixels the mouth-interior stencil marked (see `LipEffect` mask modes). */
8
14
  subtractMouth?: boolean;
15
+ /**
16
+ * `personLeftSign(mirrored)`: −1 on the mirrored webcam flips the design so
17
+ * it keeps the person's sides. Inside a `LipEffect` the layer's own sign is
18
+ * used at draw time; this is the value outside one. Default 1.
19
+ */
20
+ personLeftSign?: 1 | -1;
9
21
  };
10
- export declare const LipEffectMaterial: ({ context, color, opacity, intensity, shading, subtractMouth, }: LipEffectMaterialProps) => import("react/jsx-runtime").JSX.Element;
22
+ export type LipEffectMaterialProps = LipEffectMaterialInputs;
23
+ type Uniform<T> = THREE.IUniform<T>;
24
+ /**
25
+ * Whether the shader decodes a design texture's sRGB itself (1) or reads it
26
+ * as linear (0); use the same rule in a custom lip shader. A texture tagged `SRGBColorSpace` is decoded by the GPU, a
27
+ * linear one or a render target's is used as is; anything else (an image,
28
+ * canvas or video loaded without a colour space, as `TextureLoader` leaves
29
+ * it) is taken as authored sRGB. Cached textures are never re-tagged.
30
+ */
31
+ export declare const lipEffectDesignDecode: (texture: THREE.Texture) => 0 | 1;
32
+ /**
33
+ * One face's per-draw values for a built-in lip material: the layer's
34
+ * uniforms (camera, presence, side sign), the face's skin probe and the
35
+ * sparkle quality of the tier. A shared material (`LipEffects`,
36
+ * `sharedMaterial`) draws several faces; it copies the face of each draw's
37
+ * geometry in `onBeforeRender`.
38
+ */
39
+ export type LipEffectFaceBinding = {
40
+ layer: {
41
+ uCameraMap: Uniform<THREE.Texture | null>;
42
+ uPresence: Uniform<number>;
43
+ uPersonLeftSign: Uniform<number>;
44
+ };
45
+ skin: {
46
+ uSkinMap: Uniform<THREE.Texture | null>;
47
+ uSkinLod: Uniform<number>;
48
+ uSkinSqrt: Uniform<number>;
49
+ uSkinStats: Uniform<THREE.Texture | null>;
50
+ uSkinStatsPacked: Uniform<number>;
51
+ };
52
+ sparkleQuality: Uniform<number>;
53
+ };
54
+ /** Ties a lip layer geometry to its face (internal: `LipEffect` binds each layer it draws). */
55
+ export declare const bindLipEffectFace: (geometry: THREE.BufferGeometry, binding: LipEffectFaceBinding) => void;
56
+ /** Copies the bound face's per-draw values into a built-in lip material. Returns whether one was bound. */
57
+ export declare const applyLipEffectFaceBinding: (material: THREE.ShaderMaterial, geometry: THREE.BufferGeometry) => boolean;
58
+ /** Whether `material` is a built-in lip material (`createLipEffectMaterial`). */
59
+ export declare const isLipEffectMaterial: (material: unknown) => material is THREE.ShaderMaterial;
60
+ /**
61
+ * Create the built-in lip material as a plain three.js object. Pair it with
62
+ * `updateLipEffectMaterial`, or let `useLipEffectMaterial` own it. One
63
+ * material can be shared by several faces and lip layers: each draw reads
64
+ * its own face (presence, skin probe, side sign).
65
+ *
66
+ * It draws `LipEffect`'s face-atlas layers (`LipEffect` binds each draw to
67
+ * its face; elsewhere it would not fade, shade or flip): opaque pass,
68
+ * premultiplied over (`MAKEUP_BLENDING`), depth-tested without depth writes,
69
+ * and the mouth stencil test on bit `FACE_ATLAS_STENCIL.mouth` only.
70
+ */
71
+ export declare const createLipEffectMaterial: () => THREE.ShaderMaterial;
72
+ /** Push the current inputs into a material made by `createLipEffectMaterial`. */
73
+ export declare const updateLipEffectMaterial: (material: THREE.ShaderMaterial, { cameraTexture, designTexture, lowerDesignTexture, settings, lipUvBounds, subtractMouth, personLeftSign, }: LipEffectMaterialInputs) => THREE.ShaderMaterial;
74
+ /**
75
+ * Like `useLipEffectMaterial`, but allocates nothing while `enabled` is false.
76
+ * Lets a component keep a constant hook order without paying for materials it
77
+ * will not render (for example when a shared or custom material is supplied).
78
+ */
79
+ export declare const useOptionalLipEffectMaterial: (inputs: LipEffectMaterialInputs, enabled: boolean) => THREE.ShaderMaterial | null;
80
+ /**
81
+ * Own one built-in lip material for the component's lifetime and keep it in
82
+ * sync with the inputs on every render. Pass the result to `LipEffect`'s
83
+ * `sharedMaterial` or return it from a `material` factory. It reads its face
84
+ * (presence fade, skin probe, side sign) only where `LipEffect` /
85
+ * `LipEffects` draw it; on another mesh it would draw unfaded, unshaded and
86
+ * unflipped.
87
+ */
88
+ export declare const useLipEffectMaterial: (inputs: LipEffectMaterialInputs) => THREE.ShaderMaterial;
89
+ /**
90
+ * The built-in lip material as a React node: the design texture (face
91
+ * atlas) or a procedural fill, tinted per lip, with gradient, inner-lip tint
92
+ * and feathered edge, shaded by the makeup core against the person's own
93
+ * skin and light (finish, coverage, `shading`), plus the extra lip
94
+ * highlight. Transparent design pixels leave the skin untouched.
95
+ *
96
+ * Each instance owns its own material; use `useLipEffectMaterial` to share one.
97
+ */
98
+ export declare const LipEffectMaterial: (props: LipEffectMaterialProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,12 @@
1
+ import { LipEffectFaceConfig, LipEffectsProps } from './types';
2
+ /** The config `LipEffects` uses for one face, or `null` to skip that face. */
3
+ export declare const resolveLipEffectFaceConfig: (faces: LipEffectsProps["faces"], faceIndex: number) => LipEffectFaceConfig | null;
4
+ /**
5
+ * Lip effects for several tracked faces at once. Pass one config for every
6
+ * face, or a function that picks settings, textures or a material per face.
7
+ * With a single config the faces share one built-in material by default:
8
+ * each draw still reads its own face (presence, skin probe, side sign).
9
+ * Without a `FaceTracker` above, the lips start the face model with
10
+ * `maxFaces` faces.
11
+ */
12
+ export declare const LipEffects: ({ maxFaces, faces, shareMaterial, holdMs, renderOrder, }: LipEffectsProps) => import("react/jsx-runtime").JSX.Element;
@@ -1,9 +1,51 @@
1
- import { LipMaskMode } from './types';
1
+ /**
2
+ * Default draw order of `LipEffect`: `MAKEUP_RENDER_ORDER.lips` (-1.64), the
3
+ * last makeup layer of the opaque face layer, so hands (`HandCutout`), the
4
+ * head occluder, glasses and accessories draw over the lips. alpha.8 drew
5
+ * them transparent at 30.
6
+ */
7
+ export declare const DEFAULT_LIP_EFFECT_RENDER_ORDER: -1.64;
8
+ /**
9
+ * How far before the lips the mouth layer draws: in `outer-and-inner-lips`
10
+ * mode it writes the mouth stencil bit the lips then test.
11
+ */
12
+ export declare const LIP_EFFECT_MOUTH_ORDER_OFFSET = 0.001;
13
+ /** Complete defaults: the serializable settings plus the render order. */
2
14
  export declare const DEFAULT_LIP_EFFECT: {
15
+ renderOrder: -1.64;
16
+ enabled: boolean;
17
+ preset: import('./settings').LipEffectPreset;
18
+ shade: import('../Makeup').MakeupShadeSetting<"lips">;
19
+ maskMode: import('./types').LipMaskMode;
20
+ colorMode: import('./settings').LipEffectColorMode;
3
21
  color: string;
4
22
  opacity: number;
23
+ coverage: number;
24
+ finish: import('../Makeup').MakeupFinish;
25
+ shine: number;
26
+ sparkleColor: string;
27
+ sparkleDensity: number;
28
+ sparkleSize: number;
5
29
  intensity: number;
6
- maskMode: LipMaskMode;
7
- shading: boolean;
8
- renderOrder: number;
30
+ shading: number;
31
+ gloss: number;
32
+ roughness: number;
33
+ highlightColor: string;
34
+ gradientColor: string;
35
+ gradientAmount: number;
36
+ gradientDirection: import('./settings').LipEffectGradientDirection;
37
+ edgeSoftness: number;
38
+ innerLipColor: string;
39
+ innerLipAmount: number;
40
+ innerLipWidth: number;
41
+ splitLips: boolean;
42
+ lowerLipColor: string;
43
+ lowerLipOpacity: number;
44
+ textureScaleX: number;
45
+ textureScaleY: number;
46
+ textureOffsetX: number;
47
+ textureOffsetY: number;
48
+ textureRotation: number;
49
+ textureFlipX: boolean;
50
+ textureFlipY: boolean;
9
51
  };
@@ -1,4 +1,12 @@
1
1
  export { LipEffect } from './LipEffect';
2
- export { LipEffectMaterial } from './LipEffectMaterial';
3
- export { DEFAULT_LIP_EFFECT } from './defaults';
4
- export type { LipEffectMaterialContext, LipEffectMaterialSpec, LipEffectProps, LipMaskMode, } from './types';
2
+ export { LipEffects, resolveLipEffectFaceConfig } from './LipEffects';
3
+ export { LIP_EFFECT_FRAGMENT_SHADER, LIP_EFFECT_VERTEX_SHADER, LipEffectMaterial, createLipEffectMaterial, lipEffectDesignDecode, updateLipEffectMaterial, useLipEffectMaterial, } from './LipEffectMaterial';
4
+ export type { LipEffectMaterialInputs, LipEffectMaterialProps } from './LipEffectMaterial';
5
+ export { useLipDesignTextures } from './useLipDesignTextures';
6
+ export type { LipDesignTextureSource } from './useLipDesignTextures';
7
+ export { DEFAULT_LIP_EFFECT, DEFAULT_LIP_EFFECT_RENDER_ORDER } from './defaults';
8
+ export { DEFAULT_LIP_EFFECT_SETTINGS, LIP_EFFECT_COLOR_MODES, LIP_EFFECT_GRADIENT_DIRECTIONS, LIP_EFFECT_PRESETS, LIP_EFFECT_PRESET_KEYS, LIP_EFFECT_SETTINGS_FIELDS, createLipTextureTransform, isLipEffectPresetKey, patchLipEffectSettings, resolveLipEffectSettings, } from './settings';
9
+ export type { LipEffectColorMode, LipEffectGradientDirection, LipEffectPreset, LipEffectPresetKey, LipEffectSettings, } from './settings';
10
+ export { CANONICAL_LIP_UV_BOUNDS, LIP_UV_GUIDE_COLORS, createLipUvGuideDataUrl, createLipUvGuidePngBlob, createLipUvGuideSvg, getLipUvBounds, lipUvToPixel, } from './uvGuide';
11
+ export type { LipUvBounds, LipUvGuideOptions } from './uvGuide';
12
+ export type { LipEffectFaceConfig, LipEffectMaterialContext, LipEffectMaterialResult, LipEffectMaterialSpec, LipEffectProps, LipEffectsProps, LipMaskMode, } from './types';