@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,73 @@
1
+ import { MakeupSkin, Vec3 } from '../../face-atlas/shading';
2
+ import { LipEffectSettings } from './settings';
3
+ /**
4
+ * The lip-specific part of the built-in lip shader, as constants the GLSL is
5
+ * generated from and a TypeScript mirror of each step (tests and docs). The
6
+ * rest of the shading is the makeup core (`lib/face-atlas/shading.ts`).
7
+ */
8
+ export declare const LIP_EFFECT_SHADING: Readonly<{
9
+ /** Half-width (atlas v) of the blend between the upper and lower lip at the mouth line. */
10
+ readonly seam: 0.004;
11
+ /** The extra lip highlight (`gloss`): Blinn-Phong exponent at `roughness` 0 … 1 (alpha.8's). */
12
+ readonly highlightSharp: 96;
13
+ readonly highlightBroad: 4;
14
+ /** `shading` at or above this follows the light fully (no flattening work in the shader). */
15
+ readonly fullShading: 0.999;
16
+ }>;
17
+ /** The opacity uniforms: `uOpacity` and the per-lip amounts `uLipOpacity = (upper, lower)`. */
18
+ export type LipEffectOpacity = {
19
+ /** `uOpacity`: the larger of the two lips' opacities (the finish's gate reads it). */
20
+ opacity: number;
21
+ /** The upper lip's opacity (both lips without `splitLips`), linear. */
22
+ upper: number;
23
+ /** The lower lip's opacity (`lowerLipOpacity` with `splitLips`), linear. */
24
+ lower: number;
25
+ };
26
+ /**
27
+ * Opacity is linear: 0.8 paints 80 % of the product. With `splitLips` the
28
+ * lower lip has its own amount; the shader scales the lip's mask by
29
+ * `lipOpacity / uOpacity`, so each lip's amount is exact and the finish's
30
+ * gloss and glitter terms keep their opacity gate.
31
+ */
32
+ export declare const resolveLipEffectOpacity: (settings: Pick<LipEffectSettings, "opacity" | "splitLips" | "lowerLipOpacity">) => LipEffectOpacity;
33
+ /** 1 on the upper lip, 0 on the lower, blended over `seam` at the mouth line (atlas v). */
34
+ export declare const lipEffectUpperWeight: (v: number, mouthLineV: number) => number;
35
+ /**
36
+ * The mask scale of one fragment: its lip's opacity relative to `uOpacity`,
37
+ * so `mask · fade · uOpacity` (the finish's amount) is that lip's opacity.
38
+ */
39
+ export declare const lipEffectMaskScale: (upperWeight: number, opacity: LipEffectOpacity) => number;
40
+ /**
41
+ * Where a lip fragment samples the design (before the texture transform).
42
+ * Designs are painted as on an unmirrored photo: image-left is the person's
43
+ * right. On the mirrored webcam (`personLeftSign` −1) the person's sides sit
44
+ * at the other atlas side, so the design is read at `(1 − u, v)`; the atlas
45
+ * is symmetric, so this is exact.
46
+ */
47
+ export declare const lipEffectDesignUv: (u: number, v: number, personLeftSign: number) => [number, number];
48
+ /** The extra lip highlight's Blinn-Phong exponent for `roughness` (0 tight … 1 broad). */
49
+ export declare const lipEffectHighlightExponent: (roughness: number) => number;
50
+ /**
51
+ * Lips are darker and redder than the skin, so measured against the skin
52
+ * (`Rs`) their own colour would read as shadow and darken an opaque shade.
53
+ * The lip shader re-bases the light terms on the person's own lip colour
54
+ * (the probe's settled lip average, `lipStat`): `Rs' = lip`, so
55
+ * `S = lum(C) / lum(lip)` (1 on the average lip under the settled light);
56
+ * the local low-pass `L` is scaled by `lum(lip) / lum(Rs)`, so the local
57
+ * light level is unchanged and the camera highlight is measured above the
58
+ * lip's level; `Rf` keeps its light colour relative to the new reference.
59
+ * Until the probe has a lip colour (`ready`, or no lip seen) the sample is
60
+ * unchanged. Mirrors GLSL `lipReferenceSample`.
61
+ */
62
+ export declare const lipEffectReferenceSample: <T extends MakeupSkin>(sample: T, lipStat: Vec3, ready: number) => T;
63
+ /**
64
+ * `shading` (0..1): how much of the camera's light the paint follows.
65
+ * 1 is the full skin-relative shading (`S = lum(C) / lum(Rs)`, the local
66
+ * clip, the camera highlight, the light colour); lower values move the
67
+ * skin references toward this pixel's own light, so at 0 the paint shows
68
+ * the shade as picked, with no camera highlight and no colour cast. The
69
+ * finish's own highlights stay. Mirrors GLSL `lipShadingSample`: the light
70
+ * terms of the result (`makeupLighting`) are `S' = mix(1, S, t)`,
71
+ * `local' = mix(1, local, t)`, `lightTint' = mix(1, lightTint, t)`.
72
+ */
73
+ export declare const lipEffectShadingSample: <T extends MakeupSkin>(sample: T, shading: number) => T;
@@ -0,0 +1,375 @@
1
+ import { MakeupFinish } from '../Makeup/constants';
2
+ import { MakeupShadeSetting } from '../Makeup/shades';
3
+ import { LipMaskMode } from './types';
4
+ import { LipUvBounds } from './uvGuide';
5
+ import * as THREE from "three";
6
+ export declare const LIP_EFFECT_PRESET_KEYS: readonly ["lipstick", "gloss", "matte", "tint", "metallic", "gradient", "shimmer", "glitter"];
7
+ export type LipEffectPresetKey = (typeof LIP_EFFECT_PRESET_KEYS)[number];
8
+ export type LipEffectPreset = LipEffectPresetKey | "custom";
9
+ export declare const LIP_EFFECT_COLOR_MODES: readonly ["texture", "solid"];
10
+ /** `texture` samples the design texture when one is given; `solid` ignores it. */
11
+ export type LipEffectColorMode = (typeof LIP_EFFECT_COLOR_MODES)[number];
12
+ export declare const LIP_EFFECT_GRADIENT_DIRECTIONS: readonly ["outward", "vertical", "horizontal"];
13
+ /** `outward` runs from the mouth line to the outer edge; the others span the lip box. */
14
+ export type LipEffectGradientDirection = (typeof LIP_EFFECT_GRADIENT_DIRECTIONS)[number];
15
+ /**
16
+ * Serializable lip effect settings. Every field is a plain value so the set
17
+ * can live in a scene store and drive the `LipEffectSettingsPanel` directly.
18
+ *
19
+ * Texture transform fields act on the design texture around the lip region:
20
+ * scale is a multiplier, offset is a fraction of the lip region's size
21
+ * (`1` = one lip width / height), rotation is degrees counter-clockwise as
22
+ * seen on the face, and the flips mirror the design across the lip centre.
23
+ * The design and the transform keep the person's sides on every feed (the
24
+ * lip material flips the design on the mirrored webcam).
25
+ */
26
+ export type LipEffectSettings = {
27
+ /** `false` draws nothing. Looks use it for lips they leave bare. */
28
+ enabled: boolean;
29
+ preset: LipEffectPreset;
30
+ /**
31
+ * A named colour from `MAKEUP_SHADES.lips` (sets `color`), `"auto"` (the
32
+ * person's own lip colour, deepened; `color` is the fallback until it is
33
+ * measured) or `"custom"` (`color` as given). An explicit `color` that
34
+ * differs from the shade wins and the shade becomes `"custom"`.
35
+ */
36
+ shade: MakeupShadeSetting<"lips">;
37
+ maskMode: LipMaskMode;
38
+ /** `solid` paints procedurally (colour and gradient only), even if a design texture is set. */
39
+ colorMode: LipEffectColorMode;
40
+ /** Tint multiplied into the design (or the fill colour without a design texture). */
41
+ color: string;
42
+ opacity: number;
43
+ /** 0 = sheer (filters the person's own lip colour, never lightens), 1 = opaque (covers it). */
44
+ coverage: number;
45
+ /** How the lips reflect light. Choosing a finish sets `shine` and the sparkle fields. */
46
+ finish: MakeupFinish;
47
+ /** Strength of the finish highlight, 0..1. */
48
+ shine: number;
49
+ /** Flake colour for `shimmer` / `glitter`; `""` derives it from the shade. */
50
+ sparkleColor: string;
51
+ /** Flake density, 0..1 (`shimmer` and `glitter` only). */
52
+ sparkleDensity: number;
53
+ /** Flake size in millimetres, 0.1..1.5. */
54
+ sparkleSize: number;
55
+ /** 0 shows the design as painted, 1 multiplies it fully by `color`. */
56
+ intensity: number;
57
+ /**
58
+ * How much of the camera's light and shadow the paint follows, 0..1. 1 (the
59
+ * default) is the full skin-relative shading: the lips' own light and
60
+ * shadow, their real highlight and the light's colour. 0 flattens the
61
+ * opaque part: the shade as picked, with only the finish's own highlight.
62
+ * The sheer part (`coverage` below 1) still filters the live lips, so their
63
+ * own light and texture show through it; use `coverage: 1` for a fully
64
+ * flat fill.
65
+ */
66
+ shading: number;
67
+ /** Extra specular lip highlight on top of the finish. */
68
+ gloss: number;
69
+ /** Highlight spread: 0 = tight mirror-like, 1 = broad and soft. */
70
+ roughness: number;
71
+ highlightColor: string;
72
+ /** Second colour blended in towards the outer lip edge by `gradientAmount`. */
73
+ gradientColor: string;
74
+ gradientAmount: number;
75
+ gradientDirection: LipEffectGradientDirection;
76
+ /** Feather width at the outer lip boundary as a fraction of the lip band. 0 = hard edge. */
77
+ edgeSoftness: number;
78
+ /** Separate tint for the inner lip (and the mouth interior in `outer-lips` mode). */
79
+ innerLipColor: string;
80
+ innerLipAmount: number;
81
+ /** How far the inner tint reaches out from the mouth line, as a fraction of the band. */
82
+ innerLipWidth: number;
83
+ /** Give the lower lip its own colour, opacity and (via `lowerDesignTexture`) texture. */
84
+ splitLips: boolean;
85
+ lowerLipColor: string;
86
+ lowerLipOpacity: number;
87
+ textureScaleX: number;
88
+ textureScaleY: number;
89
+ textureOffsetX: number;
90
+ textureOffsetY: number;
91
+ textureRotation: number;
92
+ textureFlipX: boolean;
93
+ textureFlipY: boolean;
94
+ };
95
+ export declare const DEFAULT_LIP_EFFECT_SETTINGS: LipEffectSettings;
96
+ /**
97
+ * Built-in looks. A preset sets the material fields and the finish; it never
98
+ * touches the mask mode or the texture transform, which belong to the design.
99
+ * The finish then sets `shine` and the sparkle fields.
100
+ */
101
+ export declare const LIP_EFFECT_PRESETS: Record<LipEffectPresetKey, Partial<LipEffectSettings>>;
102
+ export declare const isLipEffectPresetKey: (value: unknown) => value is LipEffectPresetKey;
103
+ /**
104
+ * Resolve partial settings to a complete, clamped set. Defaults come first,
105
+ * then the named preset (if any), then the finish's `shine` and sparkle
106
+ * values, then the shade's colour, then every explicitly provided value.
107
+ *
108
+ * A resolved object carries the values its preset and finish produced, so a
109
+ * `preset` or `finish` spread after it changes nothing else: edit resolved
110
+ * settings with `patchLipEffectSettings`. A named shade spread after it still
111
+ * replaces a colour that a shade or the preset produced, not a custom one.
112
+ */
113
+ export declare const resolveLipEffectSettings: (input?: Partial<LipEffectSettings>) => LipEffectSettings;
114
+ /**
115
+ * Apply an edit, from a panel (the whole object) or from code (a sparse
116
+ * patch).
117
+ *
118
+ * - Choosing a different preset re-applies that preset's values.
119
+ * - Choosing a different finish (directly or through the preset) re-applies
120
+ * its `shine` and sparkle values.
121
+ * - A named or `"auto"` shade keeps setting `color` (also across a preset
122
+ * switch); a `color` that differs from the current one makes the shade
123
+ * `"custom"`.
124
+ * - The patch's other values win over the preset's and finish's values.
125
+ *
126
+ * A whole-object patch counts only the fields that differ from `current`, so
127
+ * its unchanged fields never pin the old preset's or finish's values. A
128
+ * sparse patch (one that leaves out fields of `current`) keeps every value it
129
+ * sets, also one equal to the current value: `{ finish: "gloss", shine: 0.3 }`
130
+ * keeps `shine` 0.3.
131
+ */
132
+ export declare const patchLipEffectSettings: (current: LipEffectSettings, patch: Partial<LipEffectSettings>) => LipEffectSettings;
133
+ export declare const LIP_EFFECT_SETTINGS_FIELDS: [{
134
+ readonly key: "enabled";
135
+ readonly label: "On";
136
+ readonly type: "boolean";
137
+ }, {
138
+ readonly key: "preset";
139
+ readonly label: "Preset";
140
+ readonly type: "select";
141
+ readonly options: [{
142
+ readonly label: "Custom";
143
+ readonly value: "custom";
144
+ }, ...{
145
+ label: string;
146
+ value: "gradient" | "tint" | "matte" | "gloss" | "shimmer" | "metallic" | "glitter" | "lipstick";
147
+ }[]];
148
+ }, {
149
+ readonly key: "shade";
150
+ readonly label: "Shade";
151
+ readonly type: "select";
152
+ readonly options: {
153
+ label: string;
154
+ value: string;
155
+ }[];
156
+ }, {
157
+ readonly key: "maskMode";
158
+ readonly label: "Mask mode";
159
+ readonly type: "select";
160
+ readonly options: [{
161
+ readonly label: "Outer + inner lips (mouth cut out)";
162
+ readonly value: "outer-and-inner-lips";
163
+ }, {
164
+ readonly label: "Outer lips (mouth included)";
165
+ readonly value: "outer-lips";
166
+ }];
167
+ }, {
168
+ readonly key: "colorMode";
169
+ readonly label: "Color mode";
170
+ readonly type: "select";
171
+ readonly options: [{
172
+ readonly label: "Design texture";
173
+ readonly value: "texture";
174
+ }, {
175
+ readonly label: "Procedural (solid / gradient)";
176
+ readonly value: "solid";
177
+ }];
178
+ }, {
179
+ readonly key: "color";
180
+ readonly label: "Tint color";
181
+ readonly type: "color";
182
+ }, {
183
+ readonly min: 0;
184
+ readonly max: 1;
185
+ readonly step: 0.01;
186
+ readonly key: "opacity";
187
+ readonly label: "Opacity";
188
+ readonly type: "number";
189
+ }, {
190
+ readonly min: 0;
191
+ readonly max: 1;
192
+ readonly step: 0.01;
193
+ readonly key: "coverage";
194
+ readonly label: "Coverage (sheer → opaque)";
195
+ readonly type: "number";
196
+ }, {
197
+ readonly key: "finish";
198
+ readonly label: "Finish";
199
+ readonly type: "select";
200
+ readonly options: {
201
+ label: string;
202
+ value: "matte" | "satin" | "gloss" | "shimmer" | "metallic" | "glitter";
203
+ }[];
204
+ }, {
205
+ readonly min: 0;
206
+ readonly max: 1;
207
+ readonly step: 0.01;
208
+ readonly key: "shine";
209
+ readonly label: "Shine";
210
+ readonly type: "number";
211
+ }, {
212
+ readonly key: "sparkleColor";
213
+ readonly label: "Sparkle color (blank = from shade)";
214
+ readonly type: "text";
215
+ }, {
216
+ readonly min: 0;
217
+ readonly max: 1;
218
+ readonly step: 0.01;
219
+ readonly key: "sparkleDensity";
220
+ readonly label: "Sparkle density";
221
+ readonly type: "number";
222
+ }, {
223
+ readonly key: "sparkleSize";
224
+ readonly label: "Sparkle size (mm)";
225
+ readonly type: "number";
226
+ readonly min: 0.1;
227
+ readonly max: 1.5;
228
+ readonly step: 0.05;
229
+ }, {
230
+ readonly min: 0;
231
+ readonly max: 1;
232
+ readonly step: 0.01;
233
+ readonly key: "intensity";
234
+ readonly label: "Tint intensity";
235
+ readonly type: "number";
236
+ }, {
237
+ readonly min: 0;
238
+ readonly max: 1;
239
+ readonly step: 0.01;
240
+ readonly key: "shading";
241
+ readonly label: "Follow light (0 = flat)";
242
+ readonly type: "number";
243
+ }, {
244
+ readonly min: 0;
245
+ readonly max: 1;
246
+ readonly step: 0.01;
247
+ readonly key: "gloss";
248
+ readonly label: "Gloss";
249
+ readonly type: "number";
250
+ }, {
251
+ readonly min: 0;
252
+ readonly max: 1;
253
+ readonly step: 0.01;
254
+ readonly key: "roughness";
255
+ readonly label: "Roughness";
256
+ readonly type: "number";
257
+ }, {
258
+ readonly key: "highlightColor";
259
+ readonly label: "Highlight color";
260
+ readonly type: "color";
261
+ }, {
262
+ readonly key: "gradientColor";
263
+ readonly label: "Gradient color";
264
+ readonly type: "color";
265
+ }, {
266
+ readonly min: 0;
267
+ readonly max: 1;
268
+ readonly step: 0.01;
269
+ readonly key: "gradientAmount";
270
+ readonly label: "Gradient amount";
271
+ readonly type: "number";
272
+ }, {
273
+ readonly key: "gradientDirection";
274
+ readonly label: "Gradient direction";
275
+ readonly type: "select";
276
+ readonly options: [{
277
+ readonly label: "Mouth line → outer edge";
278
+ readonly value: "outward";
279
+ }, {
280
+ readonly label: "Bottom → top";
281
+ readonly value: "vertical";
282
+ }, {
283
+ readonly label: "Person's right → left corner";
284
+ readonly value: "horizontal";
285
+ }];
286
+ }, {
287
+ readonly min: 0;
288
+ readonly max: 1;
289
+ readonly step: 0.01;
290
+ readonly key: "edgeSoftness";
291
+ readonly label: "Edge softness";
292
+ readonly type: "number";
293
+ }, {
294
+ readonly key: "innerLipColor";
295
+ readonly label: "Inner lip color";
296
+ readonly type: "color";
297
+ }, {
298
+ readonly min: 0;
299
+ readonly max: 1;
300
+ readonly step: 0.01;
301
+ readonly key: "innerLipAmount";
302
+ readonly label: "Inner lip amount";
303
+ readonly type: "number";
304
+ }, {
305
+ readonly min: 0;
306
+ readonly max: 1;
307
+ readonly step: 0.01;
308
+ readonly key: "innerLipWidth";
309
+ readonly label: "Inner lip width";
310
+ readonly type: "number";
311
+ }, {
312
+ readonly key: "splitLips";
313
+ readonly label: "Separate lower lip";
314
+ readonly type: "boolean";
315
+ }, {
316
+ readonly key: "lowerLipColor";
317
+ readonly label: "Lower lip color";
318
+ readonly type: "color";
319
+ }, {
320
+ readonly min: 0;
321
+ readonly max: 1;
322
+ readonly step: 0.01;
323
+ readonly key: "lowerLipOpacity";
324
+ readonly label: "Lower lip opacity";
325
+ readonly type: "number";
326
+ }, {
327
+ readonly key: "textureScaleX";
328
+ readonly label: "Texture scale X";
329
+ readonly type: "number";
330
+ readonly min: 0.1;
331
+ readonly max: 10;
332
+ readonly step: 0.05;
333
+ }, {
334
+ readonly key: "textureScaleY";
335
+ readonly label: "Texture scale Y";
336
+ readonly type: "number";
337
+ readonly min: 0.1;
338
+ readonly max: 10;
339
+ readonly step: 0.05;
340
+ }, {
341
+ readonly key: "textureOffsetX";
342
+ readonly label: "Texture offset X";
343
+ readonly type: "number";
344
+ readonly min: -1;
345
+ readonly max: 1;
346
+ readonly step: 0.01;
347
+ }, {
348
+ readonly key: "textureOffsetY";
349
+ readonly label: "Texture offset Y";
350
+ readonly type: "number";
351
+ readonly min: -1;
352
+ readonly max: 1;
353
+ readonly step: 0.01;
354
+ }, {
355
+ readonly key: "textureRotation";
356
+ readonly label: "Texture rotation°";
357
+ readonly type: "number";
358
+ readonly min: -180;
359
+ readonly max: 180;
360
+ readonly step: 1;
361
+ }, {
362
+ readonly key: "textureFlipX";
363
+ readonly label: "Flip horizontal";
364
+ readonly type: "boolean";
365
+ }, {
366
+ readonly key: "textureFlipY";
367
+ readonly label: "Flip vertical";
368
+ readonly type: "boolean";
369
+ }];
370
+ /**
371
+ * The UV-space sampling matrix for the design texture: `designUv = M * [u, v, 1]`.
372
+ * It is the inverse of the visual transform (scale, rotate, offset, flip
373
+ * about the lip region centre), so the design moves the way the settings read.
374
+ */
375
+ export declare const createLipTextureTransform: (settings: Pick<LipEffectSettings, "textureScaleX" | "textureScaleY" | "textureOffsetX" | "textureOffsetY" | "textureRotation" | "textureFlipX" | "textureFlipY">, bounds: LipUvBounds, target?: THREE.Matrix3) => THREE.Matrix3;
@@ -0,0 +1,39 @@
1
+ /**
2
+ * The define that makes `LIP_EFFECT_VERTEX_SHADER` read the skin probe's
3
+ * stats (`uSkinStats`, `uSkinStatsPacked`: spread `skin.uniforms`). The
4
+ * built-in material sets it; without it the probe varyings read "not
5
+ * ready" and the shader binds no probe texture.
6
+ */
7
+ export declare const LIP_EFFECT_SKIN_STATS_DEFINE = "LIP_EFFECT_SKIN_STATS";
8
+ /**
9
+ * The lip vertex shader, for a `FaceAtlasLayer` geometry (the face-atlas
10
+ * surface's attributes). It writes every varying of the makeup core
11
+ * (`MAKEUP_VARYINGS_GLSL`: the camera at the un-warped point, the atlas uv,
12
+ * rest point and normals, `lipEdge`, and, with `LIP_EFFECT_SKIN_STATS`
13
+ * defined, the skin probe's stats) and, for custom lip shaders written
14
+ * against alpha.8, the old varyings:
15
+ *
16
+ * - `vUv`: the face-atlas uv (`FACE_ATLAS_UVS`, the design texture's layout);
17
+ * - `vFaceUv`: the camera-image uv (the `faceUv` attribute; `LipEffect` keeps
18
+ * it current for custom materials);
19
+ * - `vLipEdge`: 0 on the outer lip ring, 1 at the mouth line;
20
+ * - `vNormal`: the live normal in view space; `vViewDir`: surface → eye, view space.
21
+ *
22
+ * `gl_Position` is computed exactly as the face's depth pre-pass does.
23
+ */
24
+ export declare const LIP_EFFECT_VERTEX_SHADER: string;
25
+ /**
26
+ * The lip-specific fragment code, after the makeup core chunks: the design
27
+ * (flipped on mirrored feeds, sRGB-decoded when the GPU does not), the
28
+ * per-lip shade, gradient and inner-lip tint, the feathered mask with each
29
+ * lip's linear opacity, `shading`, the finish (`makeupFinish`) and the
30
+ * alpha.8 extra highlight (`gloss`, `roughness`, `highlightColor`).
31
+ * Mirrors `lipShading.ts`.
32
+ */
33
+ export declare const LIP_EFFECT_GLSL: string;
34
+ /**
35
+ * The built-in lip fragment shader: the makeup core (`common` → `shading`
36
+ * → `sparkle` → `finish`) plus the lip code. Premultiplied output; draw it
37
+ * with `MAKEUP_BLENDING`.
38
+ */
39
+ export declare const LIP_EFFECT_FRAGMENT_SHADER: string;
@@ -1,22 +1,141 @@
1
1
  import { ReactNode } from 'react';
2
+ import { FaceAtlasUniforms } from '../../face-atlas/registry';
3
+ import { FaceSkinReference, FaceSkinUniforms } from '../FaceAtlas/useFaceSkin';
4
+ import { LipEffectSettings } from './settings';
5
+ import { LipUvBounds } from './uvGuide';
2
6
  import type * as THREE from "three";
3
7
  export type LipMaskMode = "outer-lips" | "outer-and-inner-lips";
8
+ /**
9
+ * Inputs handed to a custom lip material factory: everything alpha.8 gave,
10
+ * plus the face-atlas surface's rest positions, the face's skin probe, the
11
+ * side sign and the layer's uniforms. The default `LipEffectMaterial` is
12
+ * built from the same inputs.
13
+ */
4
14
  export type LipEffectMaterialContext = {
15
+ /** Live camera frame; sample it with `faceUv` to read the skin under the lips. */
5
16
  cameraTexture: THREE.Texture | null;
17
+ /** The creator's design texture in the face atlas (`FACE_ATLAS_UVS`), or `null` when none was given. */
6
18
  designTexture: THREE.Texture | null;
7
- lipMask: THREE.Texture | null;
8
- faceUv: THREE.BufferAttribute | null;
19
+ /**
20
+ * Live per-vertex camera-texture UVs. The same attribute is bound to the lip
21
+ * geometry as `attribute vec2 faceUv` (kept current while a custom material
22
+ * is in use), so a custom vertex shader can read it directly; the object is
23
+ * exposed for uniforms, debugging, or readback.
24
+ */
25
+ faceUv: THREE.BufferAttribute;
26
+ /** Static per-vertex lip band position, bound as `attribute float lipEdge` (0 outer ring, 1 mouth line). */
27
+ lipEdge: THREE.BufferAttribute;
28
+ /** Rest position of each vertex in canonical cm (+X is canonical, not a side), `attribute vec3 restPosition`. */
29
+ restPosition: THREE.BufferAttribute;
30
+ /** Design texture for the lower lip when `splitLips` is on, or `null`. */
31
+ lowerDesignTexture: THREE.Texture | null;
9
32
  faceIndex: number;
33
+ /** The active mask mode, so a custom material can decide whether to honour the mouth stencil. */
34
+ maskMode: LipMaskMode;
35
+ /** Lip region of the face atlas, for texture transforms and gradients. */
36
+ lipUvBounds: LipUvBounds;
37
+ /** The resolved settings driving the built-in material. */
38
+ settings: LipEffectSettings;
39
+ /**
40
+ * `personLeftSign(mirrored)`: +1 on an unmirrored feed, −1 on the mirrored
41
+ * webcam. Designs are painted as on an unmirrored photo; sample them at
42
+ * `(1 − u, v)` when it is −1 so they keep the person's sides.
43
+ */
44
+ personLeftSign: 1 | -1;
45
+ /**
46
+ * The face's skin probe (`useFaceSkin`): spread `skin.uniforms` into a
47
+ * material whose vertex shader is `LIP_EFFECT_VERTEX_SHADER` (it reads
48
+ * `uSkinStats`), or read the person's skin, light and lip colour yourself.
49
+ */
50
+ skin: FaceSkinReference;
51
+ /**
52
+ * The layer's uniforms with the face's live skin probe: `uCameraMap`,
53
+ * `uPresence` (fade in / out with the face), `uPersonLeftSign`, and
54
+ * `skin.uniforms` (`uSkinStats`, `uSkinStatsPacked`, `uSkinMap`, `uSkinLod`,
55
+ * `uSkinSqrt`). Spread it whole into a material's `uniforms`; the `{ value }`
56
+ * objects are the ones the SDK updates every frame.
57
+ */
58
+ uniforms: FaceAtlasUniforms & FaceSkinUniforms;
10
59
  };
11
- export type LipEffectMaterialSpec = ReactNode | ((context: LipEffectMaterialContext) => ReactNode);
12
- export type LipEffectProps = {
60
+ /** A material node, or a three.js material instance (which can be shared across meshes and faces). */
61
+ export type LipEffectMaterialResult = ReactNode | THREE.Material;
62
+ export type LipEffectMaterialSpec = LipEffectMaterialResult | ((context: LipEffectMaterialContext) => LipEffectMaterialResult);
63
+ export type LipEffectProps = Partial<LipEffectSettings> & {
64
+ /**
65
+ * Which tracked face. Default: the face of the `FaceRig` / `FaceWarp3D` /
66
+ * `FaceMorph` it is nested in (it rides that face), else the enclosing
67
+ * `FaceTracker`'s `faceIndex`, else 0.
68
+ */
13
69
  faceIndex?: number;
70
+ /**
71
+ * Faces to ask the face model for when the lips start it themselves (no
72
+ * `FaceTracker` above): at least `faceIndex + 1`. Pass the same count to
73
+ * every face component; the first to start the model sets it. A
74
+ * `FaceTracker` mounted beside the lips in the same commit starts it first
75
+ * (its `numFaces` and `targetFps` win); one that mounts later, in another
76
+ * commit (a later `Suspense`), does not: give the lips its `numFaces`.
77
+ */
78
+ numFaces?: number;
79
+ /** Whether the feed is mirrored, for the design's sides. Default: the session's (`useXRMirrored`). */
80
+ mirrored?: boolean;
81
+ /**
82
+ * Design texture in the face atlas, painted as on an unmirrored photo
83
+ * (image-left = the person's right). Without one the lips are filled with `color`.
84
+ */
14
85
  designTexture?: THREE.Texture | string;
15
- color?: string;
16
- opacity?: number;
17
- intensity?: number;
18
- maskMode?: LipMaskMode;
19
- shading?: boolean;
86
+ /** Lower-lip design texture, used when `splitLips` is on. Falls back to `designTexture`. */
87
+ lowerDesignTexture?: THREE.Texture | string;
20
88
  material?: LipEffectMaterialSpec;
89
+ /**
90
+ * Use this material instead of the built-in one (and instead of `material`),
91
+ * for example one from `useLipEffectMaterial` shared by several faces.
92
+ */
93
+ sharedMaterial?: THREE.Material;
94
+ /**
95
+ * Keep the `faceUv` attribute (camera-image uv per vertex) current for a
96
+ * custom material: one projection of the face's landmarks per frame.
97
+ * Default: on for a custom `material` or `sharedMaterial`, off for the
98
+ * built-in one (a `LipEffectMaterial` node, a `createLipEffectMaterial` /
99
+ * `useLipEffectMaterial` instance). A factory function cannot be inspected
100
+ * in advance: pass `faceUv={false}` when it returns the built-in material.
101
+ */
102
+ faceUv?: boolean;
103
+ /**
104
+ * @deprecated Ignored. The lips ride the face's shared surface, which
105
+ * follows every landmark update (and leads between them by quality tier).
106
+ */
107
+ maxUpdateFps?: number;
108
+ /**
109
+ * Keep the face on its last landmarks for this long (ms) across tracker
110
+ * dropouts, then fade it out. Default 250. The hold is the face's shared
111
+ * surface's (as `FaceAtlasLayer`'s `holdMs`): every layer on the face
112
+ * shares it, and the largest `holdMs` any of them asks for wins. Nested in
113
+ * a `FaceRig` / `FaceWarp3D` / `FaceMorph`, the rig's own `holdMs` applies.
114
+ */
115
+ holdMs?: number;
116
+ /**
117
+ * @deprecated Ignored. The face's shared surface leads the landmarks by the
118
+ * quality tier's interval (`FaceAtlasLayer` `leadMs`) and holds them still
119
+ * through dropouts.
120
+ */
121
+ predictMs?: number;
122
+ /** Draw order of the lips. Default `MAKEUP_RENDER_ORDER.lips` (-1.64). */
123
+ renderOrder?: number;
124
+ };
125
+ /** Per-face configuration for `LipEffects`: everything but the face index. */
126
+ export type LipEffectFaceConfig = Omit<LipEffectProps, "faceIndex">;
127
+ export type LipEffectsProps = {
128
+ /** How many face slots to render. Match the tracker's `numFaces`. Default 2. */
129
+ maxFaces?: number;
130
+ /** One config for all faces, or a picker per face (`null` skips a face). */
131
+ faces: LipEffectFaceConfig | ((faceIndex: number) => LipEffectFaceConfig | null);
132
+ /** Share one built-in material across faces. Default: on for a single config, off for a picker. */
133
+ shareMaterial?: boolean;
134
+ /** @deprecated Ignored (see `LipEffectProps.maxUpdateFps`). */
135
+ maxUpdateFps?: number;
136
+ /** The faces' hold through dropouts (see `LipEffectProps.holdMs`: the largest on a face wins). */
137
+ holdMs?: number;
138
+ /** @deprecated Ignored (see `LipEffectProps.predictMs`). */
139
+ predictMs?: number;
21
140
  renderOrder?: number;
22
141
  };
@@ -0,0 +1,17 @@
1
+ import * as THREE from "three";
2
+ export type LipDesignTextureSource = THREE.Texture | string | undefined;
3
+ /**
4
+ * Resolve the design texture props (URL or texture object) to textures.
5
+ * URLs load through R3F's loader cache, so faces sharing a URL share one
6
+ * texture; a constant hook count keeps the pair reloadable.
7
+ *
8
+ * The textures are returned as they are: a cached texture is shared with
9
+ * every other user of its URL, so its `colorSpace` is never changed here.
10
+ * The lip material decodes sRGB itself for a texture without a colour space
11
+ * (as `TextureLoader` loads it) and lets the GPU decode one tagged
12
+ * `SRGBColorSpace`.
13
+ */
14
+ export declare const useLipDesignTextures: (designTexture: LipDesignTextureSource, lowerDesignTexture: LipDesignTextureSource) => {
15
+ designTexture: THREE.Texture | null;
16
+ lowerDesignTexture: THREE.Texture | null;
17
+ };