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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (517) hide show
  1. package/GROUNDING.md +4643 -170
  2. package/README.md +1 -0
  3. package/dist/CanonicalHeadFrame-BHcWyaiK.js +1506 -0
  4. package/dist/CanonicalHeadFrame-D-_T1OMU.cjs +1 -0
  5. package/dist/DebuggerUI-7ngnJsBe.js +275 -0
  6. package/dist/DebuggerUI-CoglgKdO.cjs +1 -0
  7. package/dist/FaceRetouch-CLoTfrcs.js +1071 -0
  8. package/dist/FaceRetouch-J1lC1WbS.cjs +134 -0
  9. package/dist/FaceSurface-CHAMEeG1.cjs +1 -0
  10. package/dist/FaceSurface-DmP9AEeC.js +27 -0
  11. package/dist/SegmentationOverlay-D_FWkcyP.cjs +35 -0
  12. package/dist/SegmentationOverlay-vn5x_knv.js +6237 -0
  13. package/dist/SkeletonUtils-C2r90MtN.js +21 -0
  14. package/dist/SkeletonUtils-CddIup1F.cjs +1 -0
  15. package/dist/TextLabel-XE0rQSDn.cjs +2 -0
  16. package/dist/TextLabel-c9BCucOI.js +961 -0
  17. package/dist/assets/gltfLoader.d.ts +16 -0
  18. package/dist/assets/loaders.d.ts +16 -1
  19. package/dist/body-pose/index.d.ts +521 -0
  20. package/dist/body-trigger/__fixtures__/syntheticBody.d.ts +83 -0
  21. package/dist/body-trigger/frame.d.ts +88 -0
  22. package/dist/body-trigger/index.d.ts +6 -0
  23. package/dist/body-trigger/moves.d.ts +235 -0
  24. package/dist/body-trigger/trigger.d.ts +75 -0
  25. package/dist/calibration/calibration.d.ts +11 -6
  26. package/dist/canonicalFace-BHwyCx1c.js +9 -0
  27. package/dist/canonicalFace-C83I225R.cjs +1 -0
  28. package/dist/components/BodyInstruction/BodyPoseHint.d.ts +63 -0
  29. package/dist/components/BodyInstruction/index.d.ts +69 -0
  30. package/dist/components/BodyInstruction/useBodyPose.d.ts +23 -0
  31. package/dist/components/BodyTracker/index.d.ts +10 -2
  32. package/dist/components/BodyTrigger/index.d.ts +49 -0
  33. package/dist/components/Debugger/DebuggerProvider.d.ts +14 -1
  34. package/dist/components/Debugger/DebuggerUI.d.ts +3 -1
  35. package/dist/components/FaceAtlas/FaceAtlasLayer.d.ts +114 -0
  36. package/dist/components/FaceAtlas/MadeUpCamera.d.ts +80 -0
  37. package/dist/components/FaceAtlas/constants.d.ts +8 -0
  38. package/dist/components/FaceAtlas/index.d.ts +7 -0
  39. package/dist/components/FaceAtlas/useFaceAtlasSurface.d.ts +84 -0
  40. package/dist/components/FaceAtlas/useFaceSkin.d.ts +84 -0
  41. package/dist/components/FaceCharacter/ExternalFaceMesh.d.ts +109 -0
  42. package/dist/components/FaceCharacter/FaceExpressionController.d.ts +53 -0
  43. package/dist/components/FaceCharacter/FaceMorph.d.ts +71 -0
  44. package/dist/components/FaceCharacter/FacePiercing.d.ts +65 -0
  45. package/dist/components/FaceCharacter/FaceReprojection.d.ts +85 -0
  46. package/dist/components/FaceCharacter/FaceRig.d.ts +38 -0
  47. package/dist/components/FaceCharacter/FaceSurface.d.ts +49 -0
  48. package/dist/components/FaceCharacter/FaceSurfaceOccluder.d.ts +39 -0
  49. package/dist/components/FaceCharacter/PinToFaceMesh.d.ts +68 -0
  50. package/dist/components/FaceCharacter/index.d.ts +18 -0
  51. package/dist/components/FaceCharacter/useFaceReprojector.d.ts +10 -0
  52. package/dist/components/FaceInset/FaceInset.d.ts +68 -0
  53. package/dist/components/FaceInset/frame.d.ts +94 -0
  54. package/dist/components/FaceInset/index.d.ts +6 -0
  55. package/dist/components/FaceInset/material.d.ts +40 -0
  56. package/dist/components/FaceInset/useFaceInsetTexture.d.ts +37 -0
  57. package/dist/components/FaceInstruction/FaceExpressionHint.d.ts +43 -0
  58. package/dist/components/FaceInstruction/index.d.ts +56 -0
  59. package/dist/components/FaceInstruction/useFaceExpression.d.ts +20 -0
  60. package/dist/components/FaceLiquify/FaceLiquify.d.ts +49 -0
  61. package/dist/components/FaceLiquify/debug.d.ts +37 -0
  62. package/dist/components/FaceLiquify/frame.d.ts +55 -0
  63. package/dist/components/FaceLiquify/index.d.ts +10 -0
  64. package/dist/components/FaceLiquify/material.d.ts +39 -0
  65. package/dist/components/FaceLiquify/pass.d.ts +49 -0
  66. package/dist/components/FaceLiquify/presence.d.ts +25 -0
  67. package/dist/components/FaceLiquify/presets.d.ts +82 -0
  68. package/dist/components/FaceLiquify/selfTest.d.ts +66 -0
  69. package/dist/components/FaceLiquify/target.d.ts +85 -0
  70. package/dist/components/FaceLiquify/warp.d.ts +72 -0
  71. package/dist/components/FaceMesh/canonical/CanonicalFaceMeshRenderer.d.ts +5 -3
  72. package/dist/components/FaceMesh/canonical/geometryGroups.d.ts +21 -0
  73. package/dist/components/FaceMesh/canonical/parseCanonicalFaceModel.d.ts +9 -0
  74. package/dist/components/FaceMesh/index.d.ts +1 -1
  75. package/dist/components/FaceRetouch/Background.d.ts +3 -1
  76. package/dist/components/FaceRetouch/FaceRetouch.d.ts +5 -0
  77. package/dist/components/FaceRetouch/renderState.d.ts +19 -0
  78. package/dist/components/FaceSwap/FaceMirror.d.ts +46 -0
  79. package/dist/components/FaceSwap/FaceSwap.d.ts +58 -0
  80. package/dist/components/FaceSwap/FaceTextureLayer.d.ts +72 -0
  81. package/dist/components/FaceSwap/faceSwapPlan.d.ts +91 -0
  82. package/dist/components/FaceSwap/index.d.ts +13 -0
  83. package/dist/components/FaceSwap/settings.d.ts +300 -0
  84. package/dist/components/FaceSwap/useFaceTexture.d.ts +35 -0
  85. package/dist/components/FaceSwap/useLiveFace.d.ts +38 -0
  86. package/dist/components/FaceSwap/useLiveFaceTexture.d.ts +31 -0
  87. package/dist/components/FaceWarp3D/FaceWarp3D.d.ts +50 -0
  88. package/dist/components/FaceWarp3D/index.d.ts +2 -3
  89. package/dist/components/Faceless/Faceless.d.ts +51 -0
  90. package/dist/components/Faceless/index.d.ts +2 -0
  91. package/dist/components/HairLock/HairLock.d.ts +39 -0
  92. package/dist/components/HairLock/index.d.ts +2 -0
  93. package/dist/components/HairLock/lockGeometry.d.ts +15 -0
  94. package/dist/components/HandCutout/index.d.ts +35 -0
  95. package/dist/components/HandInstruction/HandGestureHint.d.ts +70 -0
  96. package/dist/components/HandInstruction/index.d.ts +74 -0
  97. package/dist/components/HandInstruction/useHandGesture.d.ts +22 -0
  98. package/dist/components/HandRig/ForearmOccluder.d.ts +29 -0
  99. package/dist/components/HandRig/HandAttachment.d.ts +34 -0
  100. package/dist/components/HandRig/HandOccluder.d.ts +55 -0
  101. package/dist/components/HandRig/HandTattoo.d.ts +61 -0
  102. package/dist/components/HandRig/WristAttachment.d.ts +34 -0
  103. package/dist/components/HandRig/index.d.ts +101 -0
  104. package/dist/components/HandRig/useArmMask.d.ts +29 -0
  105. package/dist/components/HandRig/wristSolve.d.ts +69 -0
  106. package/dist/components/HandTouch/HandTouch.d.ts +62 -0
  107. package/dist/components/HandTouch/Touchable.d.ts +36 -0
  108. package/dist/components/HandTouch/index.d.ts +2 -0
  109. package/dist/components/HeadBinding/index.d.ts +14 -0
  110. package/dist/components/HeadOccluder/CanonicalHeadFrame.d.ts +22 -0
  111. package/dist/components/HeadOccluder/Earrings.d.ts +55 -0
  112. package/dist/components/HeadOccluder/HeadAttachment.d.ts +38 -0
  113. package/dist/components/HeadOccluder/NeckOccluder.d.ts +64 -0
  114. package/dist/components/HeadOccluder/earringPlacement.d.ts +31 -0
  115. package/dist/components/HeadOccluder/headAttachmentPoints.d.ts +69 -0
  116. package/dist/components/HeadOccluder/index.d.ts +57 -3
  117. package/dist/components/HeadOccluder/useCanonicalHeadFit.d.ts +36 -0
  118. package/dist/components/HeadOccluder/useLandmarkPoseFit.d.ts +80 -0
  119. package/dist/components/Instruction/HintStage.d.ts +29 -0
  120. package/dist/components/Instruction/InstructionCue.d.ts +126 -0
  121. package/dist/components/Instruction/gestureHold.d.ts +20 -0
  122. package/dist/components/Instruction/ghost.d.ts +129 -0
  123. package/dist/components/Instruction/hintBlend.d.ts +19 -0
  124. package/dist/components/Instruction/hintLook.d.ts +81 -0
  125. package/dist/components/Instruction/hintLoop.d.ts +36 -0
  126. package/dist/components/Instruction/index.d.ts +41 -0
  127. package/dist/components/Instruction/useGhostModel.d.ts +33 -0
  128. package/dist/components/Instruction/useInstructionHold.d.ts +72 -0
  129. package/dist/components/LipEffect/LipEffect.d.ts +22 -2
  130. package/dist/components/LipEffect/LipEffectMaterial.d.ts +62 -10
  131. package/dist/components/LipEffect/LipEffects.d.ts +5 -2
  132. package/dist/components/LipEffect/defaults.d.ts +21 -2
  133. package/dist/components/LipEffect/index.d.ts +1 -1
  134. package/dist/components/LipEffect/lipShading.d.ts +73 -0
  135. package/dist/components/LipEffect/settings.d.ts +117 -13
  136. package/dist/components/LipEffect/shader.d.ts +39 -0
  137. package/dist/components/LipEffect/types.d.ts +82 -10
  138. package/dist/components/LipEffect/useLipDesignTextures.d.ts +6 -0
  139. package/dist/components/LipEffect/uvGuide.d.ts +31 -16
  140. package/dist/components/Makeup/Blush.d.ts +18 -0
  141. package/dist/components/Makeup/Brows.d.ts +20 -0
  142. package/dist/components/Makeup/Contour.d.ts +17 -0
  143. package/dist/components/Makeup/Eyeliner.d.ts +20 -0
  144. package/dist/components/Makeup/Eyeshadow.d.ts +20 -0
  145. package/dist/components/Makeup/Highlighter.d.ts +18 -0
  146. package/dist/components/Makeup/MakeupDesign.d.ts +37 -0
  147. package/dist/components/Makeup/MakeupRegion.d.ts +132 -0
  148. package/dist/components/Makeup/constants.d.ts +44 -0
  149. package/dist/components/Makeup/design.d.ts +106 -0
  150. package/dist/components/Makeup/designSamples.d.ts +42 -0
  151. package/dist/components/Makeup/eyes.d.ts +114 -0
  152. package/dist/components/Makeup/fields.d.ts +10 -0
  153. package/dist/components/Makeup/geometry.d.ts +106 -0
  154. package/dist/components/Makeup/index.d.ts +26 -0
  155. package/dist/components/Makeup/looks.d.ts +28 -0
  156. package/dist/components/Makeup/material.d.ts +239 -0
  157. package/dist/components/Makeup/settings.d.ts +54 -0
  158. package/dist/components/Makeup/shades.d.ts +143 -0
  159. package/dist/components/Makeup/shapes.d.ts +27 -0
  160. package/dist/components/Makeup/skinTone.d.ts +135 -0
  161. package/dist/components/Makeup/types.d.ts +110 -0
  162. package/dist/components/Makeup/useMakeupSkinTone.d.ts +40 -0
  163. package/dist/components/Necklace/Necklace.d.ts +44 -0
  164. package/dist/components/Necklace/index.d.ts +1 -0
  165. package/dist/components/ParticleEmitter/ParticleEmitter.d.ts +69 -0
  166. package/dist/components/ParticleEmitter/index.d.ts +1 -0
  167. package/dist/components/ShoulderOccluder/index.d.ts +43 -0
  168. package/dist/components/ShoulderOccluder/useCanonicalTorsoFit.d.ts +24 -0
  169. package/dist/components/SpringSwing/SpringSwing.d.ts +22 -0
  170. package/dist/components/SpringSwing/index.d.ts +1 -0
  171. package/dist/components/XRScene/renderOutputTarget.d.ts +12 -0
  172. package/dist/components/index.d.ts +8 -0
  173. package/dist/config/index.d.ts +0 -1
  174. package/dist/context-DTxSQvp4.js +13 -0
  175. package/dist/context-hA0Rb2Xa.cjs +1 -0
  176. package/dist/contexts-BH7PdKFS.cjs +1 -0
  177. package/dist/contexts-jak8-tND.js +667 -0
  178. package/dist/coordinates/index.d.ts +2 -0
  179. package/dist/coordinates/side.d.ts +40 -0
  180. package/dist/debug-ui/default-setting.cjs +2 -2
  181. package/dist/debug-ui/face-swap-settings/index.d.ts +22 -0
  182. package/dist/debug-ui/hierarchy-panel/index.d.ts +3 -2
  183. package/dist/debug-ui/index.d.ts +4 -3
  184. package/dist/debug-ui/media-source/index.d.ts +1 -1
  185. package/dist/debug-ui/media-source/session.d.ts +30 -2
  186. package/dist/debug-ui/media-source.cjs +1 -1
  187. package/dist/debug-ui/media-source.js +1 -1
  188. package/dist/debug-ui/object-inspector-panel/index.d.ts +3 -2
  189. package/dist/debug-ui/product-hotspots/index.d.ts +3 -2
  190. package/dist/debug-ui/scene-editor/hierarchy-panel.d.ts +3 -1
  191. package/dist/debug-ui/scene-editor/inspector-panel.d.ts +3 -1
  192. package/dist/debug-ui/screen-image-settings/index.d.ts +3 -1
  193. package/dist/debug-ui/screen-text-settings/ScreenTextSettingsPanel.d.ts +1 -1
  194. package/dist/debug-ui/screen-text-settings/types.d.ts +2 -0
  195. package/dist/debug-ui/settings-panel/index.d.ts +6 -1
  196. package/dist/debug-ui/shared/debugWindow.d.ts +51 -0
  197. package/dist/debug-ui/xr-diagnostics/index.d.ts +3 -2
  198. package/dist/debug-ui.cjs +3 -3
  199. package/dist/debug-ui.js +2250 -2472
  200. package/dist/entries/all.d.ts +3 -1
  201. package/dist/entries/core.d.ts +3 -2
  202. package/dist/entries/face-effects.d.ts +114 -8
  203. package/dist/entries/instructions.d.ts +48 -0
  204. package/dist/entries/internal.d.ts +2 -1
  205. package/dist/entries/low-level.d.ts +28 -1
  206. package/dist/entries/particles.d.ts +11 -0
  207. package/dist/entries/tracking.d.ts +37 -2
  208. package/dist/face-atlas/attributes.d.ts +30 -0
  209. package/dist/face-atlas/eyes.d.ts +272 -0
  210. package/dist/face-atlas/faceAtlas.generated.d.ts +46 -0
  211. package/dist/face-atlas/glsl/atlasVertex.d.ts +46 -0
  212. package/dist/face-atlas/glsl/common.d.ts +55 -0
  213. package/dist/face-atlas/glsl/design.d.ts +49 -0
  214. package/dist/face-atlas/glsl/eyes.d.ts +73 -0
  215. package/dist/face-atlas/glsl/finish.d.ts +24 -0
  216. package/dist/face-atlas/glsl/format.d.ts +4 -0
  217. package/dist/face-atlas/glsl/index.d.ts +59 -0
  218. package/dist/face-atlas/glsl/shading.d.ts +15 -0
  219. package/dist/face-atlas/glsl/shapes.d.ts +66 -0
  220. package/dist/face-atlas/glsl/sparkle.d.ts +19 -0
  221. package/dist/face-atlas/glsl/uniforms.d.ts +106 -0
  222. package/dist/face-atlas/guide.d.ts +51 -0
  223. package/dist/face-atlas/index.d.ts +25 -0
  224. package/dist/face-atlas/lead.d.ts +117 -0
  225. package/dist/face-atlas/madeUpCamera.d.ts +125 -0
  226. package/dist/face-atlas/masks.d.ts +53 -0
  227. package/dist/face-atlas/obj.d.ts +69 -0
  228. package/dist/face-atlas/polylines.d.ts +63 -0
  229. package/dist/face-atlas/probe/FaceSkinProbe.d.ts +208 -0
  230. package/dist/face-atlas/probe/__fixtures__/emulate.d.ts +9 -0
  231. package/dist/face-atlas/probe/__fixtures__/face.d.ts +24 -0
  232. package/dist/face-atlas/probe/constants.d.ts +137 -0
  233. package/dist/face-atlas/probe/glsl.d.ts +43 -0
  234. package/dist/face-atlas/probe/lightFit.d.ts +108 -0
  235. package/dist/face-atlas/probe/schedule.d.ts +44 -0
  236. package/dist/face-atlas/probe/selfTest.d.ts +87 -0
  237. package/dist/face-atlas/probe/stats.d.ts +143 -0
  238. package/dist/face-atlas/probe/targets.d.ts +70 -0
  239. package/dist/face-atlas/probe/unwrap.d.ts +76 -0
  240. package/dist/face-atlas/quality.d.ts +28 -0
  241. package/dist/face-atlas/regions.d.ts +31 -0
  242. package/dist/face-atlas/registry.d.ts +252 -0
  243. package/dist/face-atlas/renderState.d.ts +86 -0
  244. package/dist/face-atlas/selfOcclusion.d.ts +62 -0
  245. package/dist/face-atlas/shading.d.ts +406 -0
  246. package/dist/face-atlas/shapes.d.ts +86 -0
  247. package/dist/face-atlas/sides.d.ts +41 -0
  248. package/dist/face-atlas/skinMask.d.ts +35 -0
  249. package/dist/face-atlas/surface.d.ts +155 -0
  250. package/dist/face-atlas/topology.d.ts +44 -0
  251. package/dist/face-character/__fixtures__/faceImageDetections.d.ts +25 -0
  252. package/dist/face-character/__fixtures__/faceNode.d.ts +22 -0
  253. package/dist/face-character/bindFaceModel.d.ts +106 -0
  254. package/dist/face-character/canonicalFace.d.ts +17 -0
  255. package/dist/face-character/canonicalFaceGeometry.d.ts +11 -0
  256. package/dist/face-character/canonicalFacePositions.d.ts +7 -0
  257. package/dist/face-character/driveFaceModel.d.ts +57 -0
  258. package/dist/face-character/expressionOutputs.d.ts +45 -0
  259. package/dist/face-character/faceExpressions.d.ts +104 -0
  260. package/dist/face-character/faceImageLandmarker.d.ts +93 -0
  261. package/dist/face-character/faceMeshBinding.d.ts +62 -0
  262. package/dist/face-character/faceMorph.d.ts +77 -0
  263. package/dist/face-character/faceMorphs.d.ts +46 -0
  264. package/dist/face-character/facePhoto.d.ts +138 -0
  265. package/dist/face-character/facePiercings.d.ts +116 -0
  266. package/dist/face-character/facePin.d.ts +131 -0
  267. package/dist/face-character/faceReprojection.d.ts +273 -0
  268. package/dist/face-character/faceReprojector.d.ts +171 -0
  269. package/dist/face-character/faceRig.d.ts +176 -0
  270. package/dist/face-character/faceSwapPresence.d.ts +85 -0
  271. package/dist/face-character/faceTexture.d.ts +169 -0
  272. package/dist/face-character/faceTextureBaker.d.ts +86 -0
  273. package/dist/face-character/faceTextureGuide.d.ts +106 -0
  274. package/dist/face-character/faceTextureStats.d.ts +298 -0
  275. package/dist/face-character/faceTransfer.d.ts +396 -0
  276. package/dist/face-character/faceTransferGeometry.d.ts +109 -0
  277. package/dist/face-character/faceTransferSelfTest.d.ts +94 -0
  278. package/dist/face-character/faceWarp3D.d.ts +101 -0
  279. package/dist/face-character/faceless.d.ts +79 -0
  280. package/dist/face-character/featureWarp.d.ts +28 -0
  281. package/dist/face-character/liveFaceRegistry.d.ts +370 -0
  282. package/dist/face-character/liveValue.d.ts +12 -0
  283. package/dist/face-character/memo.d.ts +15 -0
  284. package/dist/face-effects.cjs +2252 -83
  285. package/dist/face-effects.js +14234 -1231
  286. package/dist/face-expression/index.d.ts +182 -0
  287. package/dist/face-info/landmarks.d.ts +17 -3
  288. package/dist/face-info/types.d.ts +20 -3
  289. package/dist/gestures/definitions.d.ts +15 -2
  290. package/dist/gestures/index.d.ts +1 -1
  291. package/dist/gestures/measures.d.ts +21 -8
  292. package/dist/getFaceInfo-B1otSDMX.cjs +1 -0
  293. package/dist/getFaceInfo-Cu4xDWiL.js +62 -0
  294. package/dist/hand/armFit.d.ts +46 -0
  295. package/dist/hand/armMask.d.ts +178 -0
  296. package/dist/hand/handCutout.d.ts +23 -0
  297. package/dist/hand/handCutoutRegistry.d.ts +7 -0
  298. package/dist/hand/handGestures.d.ts +524 -0
  299. package/dist/hand/handPose.d.ts +98 -0
  300. package/dist/hand/handRigSolver.d.ts +159 -0
  301. package/dist/hand/handTattoo.d.ts +81 -0
  302. package/dist/hand/handTouch.d.ts +240 -0
  303. package/dist/hand/wrist.d.ts +44 -0
  304. package/dist/hand/wristFilter.d.ts +44 -0
  305. package/dist/hooks/selectors.d.ts +8 -0
  306. package/dist/hooks/useFaceModelAcquisition.d.ts +38 -0
  307. package/dist/hooks/useTrackerContext.d.ts +6 -0
  308. package/dist/index-B1_TzJaI.js +1104 -0
  309. package/dist/index-BavF06C6.js +190 -0
  310. package/dist/index-BfFmpddl.cjs +21 -0
  311. package/dist/index-BuBzneeW.cjs +46 -0
  312. package/dist/index-CGsQWodV.cjs +1 -0
  313. package/dist/index-CIe7eCMH.js +3200 -0
  314. package/dist/index-CfSF8LXa.cjs +1 -0
  315. package/dist/index-D5GTzOzD.cjs +1 -0
  316. package/dist/index-DBhQzvVa.js +314 -0
  317. package/dist/index-DE17y0ZI.cjs +1 -0
  318. package/dist/index-JII7huPk.js +442 -0
  319. package/dist/index-tpCr9CLj.cjs +1 -0
  320. package/dist/{renderPasses-NnKZVfBy.js → index-w1S7fI2B.js} +219 -247
  321. package/dist/index-zGaqrz_K.js +188 -0
  322. package/dist/instructions.cjs +30 -0
  323. package/dist/instructions.js +1507 -0
  324. package/dist/{internal-vsfNQycj.js → internal-B90P-clC.js} +138 -118
  325. package/dist/internal-Cjinca64.cjs +1 -0
  326. package/dist/internal.cjs +1 -1
  327. package/dist/internal.js +15 -10
  328. package/dist/iris/compute.d.ts +7 -5
  329. package/dist/iris/types.d.ts +6 -4
  330. package/dist/{landmarkMask-CbTFzBYG.js → landmarkMask-BFDyBnKM.js} +6 -6
  331. package/dist/landmarks-BlUqf5MZ.cjs +1 -0
  332. package/dist/landmarks-bftdwq6Z.js +76 -0
  333. package/dist/loaders-BGAUACsd.js +363 -0
  334. package/dist/loaders-BJ1_QCHt.cjs +1 -0
  335. package/dist/low-level.cjs +1 -1
  336. package/dist/low-level.js +666 -602
  337. package/dist/main.cjs +1 -1
  338. package/dist/main.js +866 -1182
  339. package/dist/models/Body/index.d.ts +2 -0
  340. package/dist/models/Face/constants.d.ts +8 -0
  341. package/dist/models/Face/index.d.ts +3 -11
  342. package/dist/models/Face/rotation.d.ts +18 -3
  343. package/dist/models/Hand/HandTracking.d.ts +17 -1
  344. package/dist/models/Segmentation/index.d.ts +2 -0
  345. package/dist/models/nodeSource.d.ts +9 -0
  346. package/dist/particles/emission.d.ts +24 -0
  347. package/dist/particles/eyes.d.ts +24 -0
  348. package/dist/particles/glsl.d.ts +14 -0
  349. package/dist/particles/index.d.ts +10 -0
  350. package/dist/particles/motion.d.ts +42 -0
  351. package/dist/particles/presets.d.ts +12 -0
  352. package/dist/particles/ring.d.ts +58 -0
  353. package/dist/particles/selfTest.d.ts +53 -0
  354. package/dist/particles/settings.d.ts +127 -0
  355. package/dist/particles/shapes.d.ts +29 -0
  356. package/dist/particles/spawner.d.ts +60 -0
  357. package/dist/particles/system.d.ts +64 -0
  358. package/dist/particles.cjs +122 -0
  359. package/dist/particles.js +774 -0
  360. package/dist/product.cjs +1 -1
  361. package/dist/product.js +29 -29
  362. package/dist/{providers-C0Dlhh9Z.js → providers-C8rE26Uf.js} +127 -126
  363. package/dist/providers-DHsrhDI2.cjs +62 -0
  364. package/dist/render/renderPasses.d.ts +8 -0
  365. package/dist/render/sceneBeforeRender.d.ts +12 -0
  366. package/dist/{renderGroups-CN1cGFUo.js → renderGroups-B38pUaX2.js} +1 -1
  367. package/dist/{renderGroups-O4KmaMl9.cjs → renderGroups-Cb_4Ar1Q.cjs} +1 -1
  368. package/dist/renderPasses-B6l8IpJv.js +1290 -0
  369. package/dist/renderPasses-dqmkft4P.cjs +158 -0
  370. package/dist/renderState-CJNmj5jz.js +39 -0
  371. package/dist/renderState-apSfg4eR.cjs +1 -0
  372. package/dist/scene-object.cjs +1 -1
  373. package/dist/scene-object.js +2 -2
  374. package/dist/segmentation-Cb3ouK6Z.js +1758 -0
  375. package/dist/segmentation-D9pYO6aR.cjs +1 -0
  376. package/dist/segmentation2d/types.d.ts +6 -0
  377. package/dist/select-Ck5LGz-J.cjs +1 -0
  378. package/dist/select-pYRo_win.js +233 -0
  379. package/dist/selectors-C4X71aoD.cjs +1 -0
  380. package/dist/selectors-DmNaKIwE.js +196 -0
  381. package/dist/session-BrH8G7iJ.cjs +31 -0
  382. package/dist/session-DgA_z6O1.js +418 -0
  383. package/dist/{settings-aQk845NJ.js → settings-BJ7FMBsO.js} +53 -15
  384. package/dist/settings-C63FMBlF.cjs +1 -0
  385. package/dist/similarityFit-BFqHND2e.cjs +1 -0
  386. package/dist/similarityFit-Bbz-R8AY.js +91 -0
  387. package/dist/spring/index.d.ts +2 -0
  388. package/dist/spring/spring.d.ts +69 -0
  389. package/dist/spring/swing.d.ts +54 -0
  390. package/dist/tracking.cjs +10 -1
  391. package/dist/tracking.js +1002 -855
  392. package/dist/trigger-D0Pm9noT.cjs +49 -0
  393. package/dist/trigger-IQeys0oS.js +2128 -0
  394. package/dist/types/face.d.ts +20 -1
  395. package/dist/types/hand-tracking.d.ts +9 -0
  396. package/dist/types/nodes.d.ts +20 -1
  397. package/dist/types/segmentation.d.ts +5 -0
  398. package/dist/updateThrottle-BseecYag.js +4 -0
  399. package/dist/updateThrottle-Of5Y4SVa.cjs +1 -0
  400. package/dist/useFaceInfo-BHDNCvsJ.cjs +1 -0
  401. package/dist/useFaceInfo-J4x7LsqL.js +76 -0
  402. package/dist/useFaceResultReader-BvEo5REG.js +61 -0
  403. package/dist/useFaceResultReader-DuaL1KJG.cjs +1 -0
  404. package/dist/useInstructionHold-DOu-RpCM.js +53 -0
  405. package/dist/useInstructionHold-DwJY1Alr.cjs +1 -0
  406. package/dist/useLandmarkPoseFit-Bg-h9BPb.cjs +1 -0
  407. package/dist/useLandmarkPoseFit-Bmb3h6Mw.js +87 -0
  408. package/dist/{useXRCapabilities-B1R2ghy-.cjs → useXRCapabilities-Cr3RzuAW.cjs} +1 -1
  409. package/dist/{useXRCapabilities-C68v__wB.js → useXRCapabilities-Cxmlmpbd.js} +1 -1
  410. package/dist/utils/canonicalRigidLandmarks.d.ts +8 -0
  411. package/dist/utils/headOccluderFit.d.ts +42 -0
  412. package/dist/utils/integrity.d.ts +17 -0
  413. package/dist/utils/resolveNumFaces.d.ts +13 -0
  414. package/dist/utils/shoulderOccluderFit.d.ts +38 -0
  415. package/dist/utils/similarityFit.d.ts +23 -0
  416. package/dist/uv-BMFt19bg.cjs +1 -0
  417. package/dist/{index-CsUdQ-pn.js → uv-DJU_XfmN.js} +15 -249
  418. package/docs/SDK_DOCUMENTATION.md +1 -2
  419. package/docs/api/adaptive-quality.mdx +1 -1
  420. package/docs/api/body-instructions.mdx +285 -0
  421. package/docs/api/body-triggers.mdx +234 -0
  422. package/docs/api/camera-permission.mdx +1 -1
  423. package/docs/api/coordinate-spaces.mdx +7 -4
  424. package/docs/api/cross-camera.mdx +3 -2
  425. package/docs/api/debug-ui-scene-editor.mdx +23 -2
  426. package/docs/api/external-face-mesh.mdx +231 -0
  427. package/docs/api/face-actions.mdx +20 -16
  428. package/docs/api/face-attribute-expression.mdx +1 -1
  429. package/docs/api/face-binding-anchors.mdx +4 -2
  430. package/docs/api/face-character.mdx +157 -0
  431. package/docs/api/face-effects.mdx +3 -0
  432. package/docs/api/face-expression-controller.mdx +153 -0
  433. package/docs/api/face-info.mdx +17 -11
  434. package/docs/api/face-inset.mdx +204 -0
  435. package/docs/api/face-instructions.mdx +183 -0
  436. package/docs/api/face-liquify.mdx +196 -0
  437. package/docs/api/face-mesh.mdx +4 -7
  438. package/docs/api/face-morph.mdx +117 -0
  439. package/docs/api/face-painting.mdx +7 -0
  440. package/docs/api/face-reprojection.mdx +154 -0
  441. package/docs/api/face-retouching.mdx +18 -10
  442. package/docs/api/face-swap.mdx +350 -0
  443. package/docs/api/face-warp-3d.mdx +166 -0
  444. package/docs/api/faceless.mdx +143 -0
  445. package/docs/api/gestures.mdx +68 -32
  446. package/docs/api/hair.mdx +97 -0
  447. package/docs/api/hand-instructions.mdx +222 -0
  448. package/docs/api/hand-rig.mdx +535 -0
  449. package/docs/api/hand-touch.mdx +162 -0
  450. package/docs/api/head-occluder.mdx +563 -0
  451. package/docs/api/holistic-tracker.mdx +6 -1
  452. package/docs/api/instructions.mdx +323 -0
  453. package/docs/api/iris-tracking.mdx +24 -19
  454. package/docs/api/made-up-camera.mdx +131 -0
  455. package/docs/api/makeup-skin-tone.mdx +135 -0
  456. package/docs/api/makeup.mdx +353 -0
  457. package/docs/api/multi-subject.mdx +4 -1
  458. package/docs/api/particles.mdx +155 -0
  459. package/docs/api/person-cutout.mdx +1 -1
  460. package/docs/api/pin-to-face-mesh.mdx +274 -0
  461. package/docs/api/product-ar.mdx +5 -2
  462. package/docs/api/segmentation-overlay.mdx +1 -1
  463. package/docs/docs.json +29 -1
  464. package/docs/examples/lip-shaders.mdx +82 -33
  465. package/docs/guides/face-atlas-template.svg +1 -0
  466. package/docs/guides/face-atlas-textures.mdx +186 -0
  467. package/docs/guides/face-texture-template.svg +1 -0
  468. package/docs/guides/harness-debug-ui.mdx +4 -4
  469. package/docs/guides/lip-effect-textures.mdx +178 -102
  470. package/docs/guides/lip-uv-template.png +0 -0
  471. package/docs/guides/lip-uv-template.svg +1 -1
  472. package/docs/guides/makeup-design-textures.mdx +109 -0
  473. package/docs/introduction.mdx +1 -2
  474. package/package.json +11 -1
  475. package/dist/DebuggerUI-C-ldiozL.js +0 -269
  476. package/dist/DebuggerUI-CWX5EtQv.cjs +0 -1
  477. package/dist/FaceMeshRenderer-BEEXZwS6.cjs +0 -158
  478. package/dist/FaceMeshRenderer-UuH5sTXG.js +0 -1322
  479. package/dist/FaceRetouch-C7h7x9kd.js +0 -683
  480. package/dist/FaceRetouch-DqftT26Y.cjs +0 -134
  481. package/dist/GLTFLoader-C5q63sKO.js +0 -1633
  482. package/dist/GLTFLoader-Cb_CRwmG.cjs +0 -1
  483. package/dist/SegmentationOverlay-DQuW3dsc.js +0 -133
  484. package/dist/SegmentationOverlay-aWVod8Kl.cjs +0 -1
  485. package/dist/components/FaceWarp3D/FaceWarp3DHead.d.ts +0 -15
  486. package/dist/components/FaceWarp3D/defaults.d.ts +0 -37
  487. package/dist/components/FaceWarp3D/warp.d.ts +0 -13
  488. package/dist/contexts-CO0sd4JQ.cjs +0 -1
  489. package/dist/contexts-FzlnnMYD.js +0 -669
  490. package/dist/debug-ui/face-warp-3d/index.d.ts +0 -6
  491. package/dist/getFaceInfo-BkZfaQs-.js +0 -118
  492. package/dist/getFaceInfo-ahPxQFGu.cjs +0 -1
  493. package/dist/index--RgGzZ6X.cjs +0 -47
  494. package/dist/index-CHVbH0hz.js +0 -214
  495. package/dist/index-CeVkgsag.cjs +0 -1
  496. package/dist/index-CnGox6Xr.js +0 -3054
  497. package/dist/index-DKBAh6hV.cjs +0 -1
  498. package/dist/index-DsZwTfG0.cjs +0 -1
  499. package/dist/index-Dw6tj2Mi.js +0 -144
  500. package/dist/index-OCPjOaeP.cjs +0 -1
  501. package/dist/index-s9pF4zkG.js +0 -2053
  502. package/dist/internal-BYza1h8_.cjs +0 -1
  503. package/dist/measures-9dQPdw96.js +0 -154
  504. package/dist/measures-KfJzpvod.cjs +0 -1
  505. package/dist/providers-YNwkmNeK.cjs +0 -62
  506. package/dist/renderPasses-Cg-zqmEz.cjs +0 -21
  507. package/dist/screenTransform-BenfCtZt.js +0 -44
  508. package/dist/screenTransform-BiXdpVf0.cjs +0 -1
  509. package/dist/segmentation-9PhSvc-R.cjs +0 -1
  510. package/dist/segmentation-CeOTKemr.js +0 -5
  511. package/dist/selectors-C5G1PMYL.js +0 -195
  512. package/dist/selectors-Du_PsVnW.cjs +0 -1
  513. package/dist/session-BBr0yN8h.cjs +0 -31
  514. package/dist/session-Cy0m7l7-.js +0 -363
  515. package/dist/settings-DRR7-snV.cjs +0 -1
  516. package/dist/useFaceInfo-Blf7FCu3.js +0 -303
  517. package/dist/useFaceInfo-C5mO8NQY.cjs +0 -1
@@ -2,27 +2,75 @@ import { LipEffectSettings } from './settings';
2
2
  import { LipEffectMaterialContext } from './types';
3
3
  import { LipUvBounds } from './uvGuide';
4
4
  import * as THREE from "three";
5
+ export { LIP_EFFECT_FRAGMENT_SHADER, LIP_EFFECT_SKIN_STATS_DEFINE, LIP_EFFECT_VERTEX_SHADER, } from './shader';
5
6
  /** Everything the built-in lip material reads. */
6
7
  export type LipEffectMaterialInputs = Pick<LipEffectMaterialContext, "cameraTexture" | "designTexture"> & {
7
8
  settings: LipEffectSettings;
8
9
  /** Lower-lip design texture, used when `settings.splitLips` is on. */
9
10
  lowerDesignTexture?: THREE.Texture | null;
10
- /** Lip region of the UV atlas; defaults to the canonical mesh's bounds. */
11
+ /** Lip region of the face atlas; defaults to the atlas's own (`getLipUvBounds()`). */
11
12
  lipUvBounds?: LipUvBounds;
12
13
  /** Skip pixels the mouth-interior stencil marked (see `LipEffect` mask modes). */
13
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;
14
21
  };
15
22
  export type LipEffectMaterialProps = LipEffectMaterialInputs;
16
- export declare const LIP_EFFECT_VERTEX_SHADER = "\nattribute vec2 faceUv;\nattribute float lipEdge;\nvarying vec2 vFaceUv;\nvarying vec2 vUv;\nvarying float vLipEdge;\nvarying vec3 vNormal;\nvarying vec3 vViewDir;\nvoid main() {\n vUv = uv;\n vFaceUv = faceUv;\n vLipEdge = lipEdge;\n vec4 mvPosition = modelViewMatrix * vec4(position, 1.0);\n vNormal = normalize(normalMatrix * normal);\n vViewDir = -mvPosition.xyz;\n gl_Position = projectionMatrix * mvPosition;\n}";
17
- export declare const LIP_EFFECT_FRAGMENT_SHADER = "\nuniform sampler2D cameraTexture;\nuniform sampler2D designTexture;\nuniform sampler2D lowerDesignTexture;\nuniform vec3 tint;\nuniform vec3 lowerTint;\nuniform vec3 highlightColor;\nuniform vec3 gradientColor;\nuniform vec3 innerLipColor;\nuniform vec3 lightDirection;\nuniform float opacity;\nuniform float lowerOpacity;\nuniform float intensity;\nuniform float shading;\nuniform float gloss;\nuniform float roughness;\nuniform float gradientAmount;\nuniform float gradientDirection;\nuniform float edgeSoftness;\nuniform float innerLipAmount;\nuniform float innerLipWidth;\nuniform float mouthLineV;\nuniform vec2 lipMin;\nuniform vec2 lipSize;\nuniform mat3 textureTransform;\nvarying vec2 vFaceUv;\nvarying vec2 vUv;\nvarying float vLipEdge;\nvarying vec3 vNormal;\nvarying vec3 vViewDir;\nvoid main() {\n vec3 base = texture2D(cameraTexture, vFaceUv).rgb;\n\n // Upper / lower lip, blended over a thin band at the mouth line so the\n // corners do not show a seam.\n float upper = smoothstep(-0.004, 0.004, vUv.y - mouthLineV);\n vec2 designUv = (textureTransform * vec3(vUv, 1.0)).xy;\n vec4 design = mix(\n texture2D(lowerDesignTexture, designUv),\n texture2D(designTexture, designUv),\n upper\n );\n vec3 lipTint = mix(lowerTint, tint, upper);\n float lipOpacity = mix(lowerOpacity, opacity, upper);\n\n // Gradient: outward from the mouth line, or across the lip box.\n float gradientT = gradientDirection < 0.5\n ? 1.0 - vLipEdge\n : gradientDirection < 1.5\n ? clamp((vUv.y - lipMin.y) / max(lipSize.y, 1e-4), 0.0, 1.0)\n : clamp((vUv.x - lipMin.x) / max(lipSize.x, 1e-4), 0.0, 1.0);\n lipTint = mix(lipTint, gradientColor, gradientT * gradientAmount);\n\n // Inner lip tint, reaching innerLipWidth of the band out from the mouth line.\n float inner = smoothstep(1.0 - max(innerLipWidth, 1e-4), 1.0, vLipEdge);\n lipTint = mix(lipTint, innerLipColor, inner * innerLipAmount);\n\n vec3 painted = mix(design.rgb, design.rgb * lipTint, intensity);\n\n // Keep the lips' own light and shadow under the paint.\n float luminance = dot(base, vec3(0.299, 0.587, 0.114));\n painted = mix(painted, painted * min(luminance * 2.0, 1.5), shading);\n\n // Blinn-Phong highlight; roughness widens and softens it.\n vec3 n = normalize(vNormal);\n if (!gl_FrontFacing) n = -n;\n vec3 h = normalize(normalize(lightDirection) + normalize(vViewDir));\n float shininess = mix(96.0, 4.0, roughness);\n float specular = pow(max(dot(n, h), 0.0), shininess) * gloss;\n\n // Feather the outer boundary.\n float edgeFade = edgeSoftness > 0.0 ? smoothstep(0.0, edgeSoftness, vLipEdge) : 1.0;\n\n float coverage = design.a * lipOpacity * edgeFade;\n vec3 color = mix(base, painted, coverage) + highlightColor * specular * coverage;\n gl_FragColor = vec4(color, coverage);\n // Inputs are linear (sRGB textures decode on sample); encode for the output.\n #include <colorspace_fragment>\n}";
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;
18
60
  /**
19
61
  * Create the built-in lip material as a plain three.js object. Pair it with
20
62
  * `updateLipEffectMaterial`, or let `useLipEffectMaterial` own it. One
21
- * material can be shared by several faces and lip groups.
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.
22
70
  */
23
71
  export declare const createLipEffectMaterial: () => THREE.ShaderMaterial;
24
72
  /** Push the current inputs into a material made by `createLipEffectMaterial`. */
25
- export declare const updateLipEffectMaterial: (material: THREE.ShaderMaterial, { cameraTexture, designTexture, lowerDesignTexture, settings, lipUvBounds, subtractMouth, }: LipEffectMaterialInputs) => THREE.ShaderMaterial;
73
+ export declare const updateLipEffectMaterial: (material: THREE.ShaderMaterial, { cameraTexture, designTexture, lowerDesignTexture, settings, lipUvBounds, subtractMouth, personLeftSign, }: LipEffectMaterialInputs) => THREE.ShaderMaterial;
26
74
  /**
27
75
  * Like `useLipEffectMaterial`, but allocates nothing while `enabled` is false.
28
76
  * Lets a component keep a constant hook order without paying for materials it
@@ -32,14 +80,18 @@ export declare const useOptionalLipEffectMaterial: (inputs: LipEffectMaterialInp
32
80
  /**
33
81
  * Own one built-in lip material for the component's lifetime and keep it in
34
82
  * sync with the inputs on every render. Pass the result to `LipEffect`'s
35
- * `sharedMaterial`, return it from a `material` factory, or set it on a mesh.
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.
36
87
  */
37
88
  export declare const useLipEffectMaterial: (inputs: LipEffectMaterialInputs) => THREE.ShaderMaterial;
38
89
  /**
39
- * The built-in lip material as a React node: the design texture (canonical
40
- * face UV space) or a procedural fill, tinted per lip, shaded by the camera
41
- * pixels under the lips, with gradient, inner-lip tint, feathered edge and
42
- * specular highlight. Transparent design pixels leave the skin untouched.
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.
43
95
  *
44
96
  * Each instance owns its own material; use `useLipEffectMaterial` to share one.
45
97
  */
@@ -4,6 +4,9 @@ export declare const resolveLipEffectFaceConfig: (faces: LipEffectsProps["faces"
4
4
  /**
5
5
  * Lip effects for several tracked faces at once. Pass one config for every
6
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.
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.
8
11
  */
9
- export declare const LipEffects: ({ maxFaces, faces, shareMaterial, maxUpdateFps, holdMs, predictMs, renderOrder, }: LipEffectsProps) => import("react/jsx-runtime").JSX.Element;
12
+ export declare const LipEffects: ({ maxFaces, faces, shareMaterial, holdMs, renderOrder, }: LipEffectsProps) => import("react/jsx-runtime").JSX.Element;
@@ -1,12 +1,31 @@
1
- export declare const DEFAULT_LIP_EFFECT_RENDER_ORDER = 30;
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;
2
13
  /** Complete defaults: the serializable settings plus the render order. */
3
14
  export declare const DEFAULT_LIP_EFFECT: {
4
- renderOrder: number;
15
+ renderOrder: -1.64;
16
+ enabled: boolean;
5
17
  preset: import('./settings').LipEffectPreset;
18
+ shade: import('../Makeup').MakeupShadeSetting<"lips">;
6
19
  maskMode: import('./types').LipMaskMode;
7
20
  colorMode: import('./settings').LipEffectColorMode;
8
21
  color: string;
9
22
  opacity: number;
23
+ coverage: number;
24
+ finish: import('../Makeup').MakeupFinish;
25
+ shine: number;
26
+ sparkleColor: string;
27
+ sparkleDensity: number;
28
+ sparkleSize: number;
10
29
  intensity: number;
11
30
  shading: number;
12
31
  gloss: number;
@@ -1,6 +1,6 @@
1
1
  export { LipEffect } from './LipEffect';
2
2
  export { LipEffects, resolveLipEffectFaceConfig } from './LipEffects';
3
- export { LIP_EFFECT_FRAGMENT_SHADER, LIP_EFFECT_VERTEX_SHADER, LipEffectMaterial, createLipEffectMaterial, updateLipEffectMaterial, useLipEffectMaterial, } from './LipEffectMaterial';
3
+ export { LIP_EFFECT_FRAGMENT_SHADER, LIP_EFFECT_VERTEX_SHADER, LipEffectMaterial, createLipEffectMaterial, lipEffectDesignDecode, updateLipEffectMaterial, useLipEffectMaterial, } from './LipEffectMaterial';
4
4
  export type { LipEffectMaterialInputs, LipEffectMaterialProps } from './LipEffectMaterial';
5
5
  export { useLipDesignTextures } from './useLipDesignTextures';
6
6
  export type { LipDesignTextureSource } from './useLipDesignTextures';
@@ -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;
@@ -1,7 +1,9 @@
1
+ import { MakeupFinish } from '../Makeup/constants';
2
+ import { MakeupShadeSetting } from '../Makeup/shades';
1
3
  import { LipMaskMode } from './types';
2
4
  import { LipUvBounds } from './uvGuide';
3
5
  import * as THREE from "three";
4
- export declare const LIP_EFFECT_PRESET_KEYS: readonly ["lipstick", "gloss", "matte", "tint", "metallic", "gradient"];
6
+ export declare const LIP_EFFECT_PRESET_KEYS: readonly ["lipstick", "gloss", "matte", "tint", "metallic", "gradient", "shimmer", "glitter"];
5
7
  export type LipEffectPresetKey = (typeof LIP_EFFECT_PRESET_KEYS)[number];
6
8
  export type LipEffectPreset = LipEffectPresetKey | "custom";
7
9
  export declare const LIP_EFFECT_COLOR_MODES: readonly ["texture", "solid"];
@@ -18,20 +20,51 @@ export type LipEffectGradientDirection = (typeof LIP_EFFECT_GRADIENT_DIRECTIONS)
18
20
  * scale is a multiplier, offset is a fraction of the lip region's size
19
21
  * (`1` = one lip width / height), rotation is degrees counter-clockwise as
20
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).
21
25
  */
22
26
  export type LipEffectSettings = {
27
+ /** `false` draws nothing. Looks use it for lips they leave bare. */
28
+ enabled: boolean;
23
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">;
24
37
  maskMode: LipMaskMode;
25
38
  /** `solid` paints procedurally (colour and gradient only), even if a design texture is set. */
26
39
  colorMode: LipEffectColorMode;
27
40
  /** Tint multiplied into the design (or the fill colour without a design texture). */
28
41
  color: string;
29
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;
30
55
  /** 0 shows the design as painted, 1 multiplies it fully by `color`. */
31
56
  intensity: number;
32
- /** How much the camera's own lip shading modulates the paint. 0 = flat. */
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
+ */
33
66
  shading: number;
34
- /** Specular highlight amount. */
67
+ /** Extra specular lip highlight on top of the finish. */
35
68
  gloss: number;
36
69
  /** Highlight spread: 0 = tight mirror-like, 1 = broad and soft. */
37
70
  roughness: number;
@@ -61,24 +94,47 @@ export type LipEffectSettings = {
61
94
  };
62
95
  export declare const DEFAULT_LIP_EFFECT_SETTINGS: LipEffectSettings;
63
96
  /**
64
- * Built-in looks. A preset sets the material fields only; it never touches
65
- * the mask mode or the texture transform, which belong to the design.
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.
66
100
  */
67
101
  export declare const LIP_EFFECT_PRESETS: Record<LipEffectPresetKey, Partial<LipEffectSettings>>;
68
102
  export declare const isLipEffectPresetKey: (value: unknown) => value is LipEffectPresetKey;
69
103
  /**
70
104
  * Resolve partial settings to a complete, clamped set. Defaults come first,
71
- * then the named preset (if any), then every explicitly provided value.
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.
72
112
  */
73
113
  export declare const resolveLipEffectSettings: (input?: Partial<LipEffectSettings>) => LipEffectSettings;
74
114
  /**
75
- * Apply an edit. Choosing a different preset re-applies that preset's values,
76
- * and only the fields the patch actually changes win over it. A panel sends
77
- * the whole object, so unchanged fields there carry the previous look and
78
- * must not override the preset; a sparse API patch keeps its explicit values.
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.
79
131
  */
80
132
  export declare const patchLipEffectSettings: (current: LipEffectSettings, patch: Partial<LipEffectSettings>) => LipEffectSettings;
81
133
  export declare const LIP_EFFECT_SETTINGS_FIELDS: [{
134
+ readonly key: "enabled";
135
+ readonly label: "On";
136
+ readonly type: "boolean";
137
+ }, {
82
138
  readonly key: "preset";
83
139
  readonly label: "Preset";
84
140
  readonly type: "select";
@@ -87,8 +143,16 @@ export declare const LIP_EFFECT_SETTINGS_FIELDS: [{
87
143
  readonly value: "custom";
88
144
  }, ...{
89
145
  label: string;
90
- value: "gradient" | "tint" | "gloss" | "lipstick" | "matte" | "metallic";
146
+ value: "gradient" | "tint" | "matte" | "gloss" | "shimmer" | "metallic" | "glitter" | "lipstick";
91
147
  }[]];
148
+ }, {
149
+ readonly key: "shade";
150
+ readonly label: "Shade";
151
+ readonly type: "select";
152
+ readonly options: {
153
+ label: string;
154
+ value: string;
155
+ }[];
92
156
  }, {
93
157
  readonly key: "maskMode";
94
158
  readonly label: "Mask mode";
@@ -122,6 +186,46 @@ export declare const LIP_EFFECT_SETTINGS_FIELDS: [{
122
186
  readonly key: "opacity";
123
187
  readonly label: "Opacity";
124
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;
125
229
  }, {
126
230
  readonly min: 0;
127
231
  readonly max: 1;
@@ -134,7 +238,7 @@ export declare const LIP_EFFECT_SETTINGS_FIELDS: [{
134
238
  readonly max: 1;
135
239
  readonly step: 0.01;
136
240
  readonly key: "shading";
137
- readonly label: "Skin shading";
241
+ readonly label: "Follow light (0 = flat)";
138
242
  readonly type: "number";
139
243
  }, {
140
244
  readonly min: 0;
@@ -176,7 +280,7 @@ export declare const LIP_EFFECT_SETTINGS_FIELDS: [{
176
280
  readonly label: "Bottom → top";
177
281
  readonly value: "vertical";
178
282
  }, {
179
- readonly label: "Left → right";
283
+ readonly label: "Person's right → left corner";
180
284
  readonly value: "horizontal";
181
285
  }];
182
286
  }, {
@@ -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,41 +1,87 @@
1
1
  import { ReactNode } from 'react';
2
+ import { FaceAtlasUniforms } from '../../face-atlas/registry';
3
+ import { FaceSkinReference, FaceSkinUniforms } from '../FaceAtlas/useFaceSkin';
2
4
  import { LipEffectSettings } from './settings';
3
5
  import { LipUvBounds } from './uvGuide';
4
6
  import type * as THREE from "three";
5
7
  export type LipMaskMode = "outer-lips" | "outer-and-inner-lips";
6
8
  /**
7
- * Stable inputs handed to a custom lip material factory. The default
8
- * `LipEffectMaterial` is built from exactly these.
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.
9
13
  */
10
14
  export type LipEffectMaterialContext = {
11
15
  /** Live camera frame; sample it with `faceUv` to read the skin under the lips. */
12
16
  cameraTexture: THREE.Texture | null;
13
- /** The creator's design texture in canonical face UV space, or `null` when none was given. */
17
+ /** The creator's design texture in the face atlas (`FACE_ATLAS_UVS`), or `null` when none was given. */
14
18
  designTexture: THREE.Texture | null;
15
19
  /**
16
20
  * Live per-vertex camera-texture UVs. The same attribute is bound to the lip
17
- * geometry as `attribute vec2 faceUv`, so a custom vertex shader can read it
18
- * directly; the object is exposed for uniforms, debugging, or readback.
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.
19
24
  */
20
25
  faceUv: THREE.BufferAttribute;
21
26
  /** Static per-vertex lip band position, bound as `attribute float lipEdge` (0 outer ring, 1 mouth line). */
22
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;
23
30
  /** Design texture for the lower lip when `splitLips` is on, or `null`. */
24
31
  lowerDesignTexture: THREE.Texture | null;
25
32
  faceIndex: number;
26
33
  /** The active mask mode, so a custom material can decide whether to honour the mouth stencil. */
27
34
  maskMode: LipMaskMode;
28
- /** Lip region of the canonical UV atlas, for texture transforms and gradients. */
35
+ /** Lip region of the face atlas, for texture transforms and gradients. */
29
36
  lipUvBounds: LipUvBounds;
30
37
  /** The resolved settings driving the built-in material. */
31
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;
32
59
  };
33
60
  /** A material node, or a three.js material instance (which can be shared across meshes and faces). */
34
61
  export type LipEffectMaterialResult = ReactNode | THREE.Material;
35
62
  export type LipEffectMaterialSpec = LipEffectMaterialResult | ((context: LipEffectMaterialContext) => LipEffectMaterialResult);
36
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
+ */
37
69
  faceIndex?: number;
38
- /** Design texture in canonical face UV space. Without one the lips are filled with `color`. */
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
+ */
39
85
  designTexture?: THREE.Texture | string;
40
86
  /** Lower-lip design texture, used when `splitLips` is on. Falls back to `designTexture`. */
41
87
  lowerDesignTexture?: THREE.Texture | string;
@@ -45,12 +91,35 @@ export type LipEffectProps = Partial<LipEffectSettings> & {
45
91
  * for example one from `useLipEffectMaterial` shared by several faces.
46
92
  */
47
93
  sharedMaterial?: THREE.Material;
48
- /** Cap how often the lip mesh follows the landmarks; omit to update every frame. */
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
+ */
49
107
  maxUpdateFps?: number;
50
- /** Keep the lips on the last landmarks for this long (ms) across tracker dropouts. Default 250. */
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
+ */
51
115
  holdMs?: number;
52
- /** While held, extrapolate the landmarks along their last velocity for up to this long (ms). Default 0. */
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
+ */
53
121
  predictMs?: number;
122
+ /** Draw order of the lips. Default `MAKEUP_RENDER_ORDER.lips` (-1.64). */
54
123
  renderOrder?: number;
55
124
  };
56
125
  /** Per-face configuration for `LipEffects`: everything but the face index. */
@@ -62,8 +131,11 @@ export type LipEffectsProps = {
62
131
  faces: LipEffectFaceConfig | ((faceIndex: number) => LipEffectFaceConfig | null);
63
132
  /** Share one built-in material across faces. Default: on for a single config, off for a picker. */
64
133
  shareMaterial?: boolean;
134
+ /** @deprecated Ignored (see `LipEffectProps.maxUpdateFps`). */
65
135
  maxUpdateFps?: number;
136
+ /** The faces' hold through dropouts (see `LipEffectProps.holdMs`: the largest on a face wins). */
66
137
  holdMs?: number;
138
+ /** @deprecated Ignored (see `LipEffectProps.predictMs`). */
67
139
  predictMs?: number;
68
140
  renderOrder?: number;
69
141
  };
@@ -4,6 +4,12 @@ export type LipDesignTextureSource = THREE.Texture | string | undefined;
4
4
  * Resolve the design texture props (URL or texture object) to textures.
5
5
  * URLs load through R3F's loader cache, so faces sharing a URL share one
6
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`.
7
13
  */
8
14
  export declare const useLipDesignTextures: (designTexture: LipDesignTextureSource, lowerDesignTexture: LipDesignTextureSource) => {
9
15
  designTexture: THREE.Texture | null;