@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,59 @@
1
+ /**
2
+ * GLSL chunks for makeup shaders (FACE-1).
3
+ *
4
+ * `atlasVertex` is the whole vertex shader of a layer on the face-atlas
5
+ * surface (`FaceAtlasLayer`): it writes every varying the fragment chunks
6
+ * read. For the fragment shader, concatenate these in order, then your
7
+ * `main()`:
8
+ *
9
+ * `common` → `shading` → `sparkle` → `finish` → `shapes`
10
+ *
11
+ * ```glsl
12
+ * void main() {
13
+ * MakeupSample s = makeupSample(); // first: it takes derivatives
14
+ * float mask = blushShape(s.rest); // or your own shape
15
+ * makeupOutput(s, makeupFinish(s, makeupShade(s), mask));
16
+ * }
17
+ * ```
18
+ *
19
+ * With a mask, split the sample around an early out, so fragments outside
20
+ * the shape read no texture:
21
+ *
22
+ * ```glsl
23
+ * MakeupSample s = makeupSampleGeometry(); // derivatives, rest point, fades
24
+ * float mask = blushShape(s.rest);
25
+ * if (mask * s.fade < 1.0 / 255.0) discard;
26
+ * makeupSampleColor(s); // camera and skin, explicit LODs
27
+ * ```
28
+ *
29
+ * `common` alone with `shading` is enough for a matte layer:
30
+ * `makeupOutput(s, makeupDiffuse(s, uColor, uCoverage), mask * s.fade * uOpacity, vec3(0.0))`.
31
+ * Draw with `MAKEUP_BLENDING` (premultiplied over). A custom vertex side
32
+ * declares `MAKEUP_VARYINGS_GLSL` and writes every varying in it.
33
+ *
34
+ * `design` (after `common`) samples creator art in the face atlas
35
+ * (`MakeupDesign`): `makeupDesignSample(s.uv)` returns linear rgb and
36
+ * straight alpha, flipped on mirrored feeds so each side stays on the
37
+ * person's own side. Call it before any `discard`.
38
+ *
39
+ * `eyes` (after `shapes`) holds the eye regions' masks (`Eyeshadow`,
40
+ * `Eyeliner`, `Brows`): `eyelinerShape`, `eyeshadowZones` / `eyeshadowMask`
41
+ * / `eyeshadowColor`, and `browGeometry` / `browReach` / `browMask`, on the
42
+ * rest point in canonical cm, with blink fades from `uBlink`.
43
+ */
44
+ export declare const MAKEUP_GLSL: Readonly<{
45
+ atlasVertex: string;
46
+ common: string;
47
+ shading: string;
48
+ sparkle: string;
49
+ finish: string;
50
+ shapes: string;
51
+ design: "\nuniform sampler2D uDesignMap;\nuniform float uDesignSrgb;\nuniform float uDesignPremultiplied;\n\n// The art's uv on this feed: (1 - u, v) on a mirrored feed (uPersonLeftSign < 0).\nvec2 makeupDesignUv(vec2 uv) {\n return vec2(uPersonLeftSign < 0.0 ? 1.0 - uv.x : uv.x, uv.y);\n}\n\nvec3 makeupDesignDecode(vec3 c) {\n vec3 low = c / 12.92;\n vec3 high = pow((c + 0.055) / 1.055, vec3(2.4));\n return mix(low, high, step(vec3(0.04045), c));\n}\n\n// The art at an atlas uv: linear rgb, straight alpha. Implicit derivatives: call before any discard.\nvec4 makeupDesignSample(vec2 uv) {\n vec4 texel = texture(uDesignMap, makeupDesignUv(uv));\n float a = clamp(texel.a, 0.0, 1.0);\n vec3 c = uDesignPremultiplied > 0.5 ? texel.rgb / max(a, 1e-4) : texel.rgb;\n c = clamp(c, 0.0, 1.0);\n return vec4(uDesignSrgb > 0.5 ? makeupDesignDecode(c) : c, a);\n}\n";
52
+ eyes: string;
53
+ }>;
54
+ export { MAKEUP_VARYINGS_GLSL } from './common';
55
+ export { FACE_ATLAS_ATTRIBUTES_GLSL, FACE_SKIN_STATS_TEXELS } from './atlasVertex';
56
+ export { createMakeupShadingUniforms, type MakeupShadingUniforms } from './uniforms';
57
+ export { createMakeupShapeUniforms, type MakeupShapeUniforms } from './shapes';
58
+ export { createMakeupDesignUniforms, type MakeupDesignUniforms } from './design';
59
+ export { createMakeupEyeUniforms, type MakeupEyeUniforms } from './eyes';
@@ -0,0 +1,15 @@
1
+ /**
2
+ * `MAKEUP_GLSL.shading` (after `common`): skin-relative light terms, the
3
+ * diffuse (sheer / opaque coverage), auto shades and the output operator.
4
+ * Mirrors `makeupLighting`, `makeupDiffuse`, `makeupAutoShade` and
5
+ * `makeupOutput` in `lib/face-atlas/shading.ts`.
6
+ *
7
+ * - `S = lum(C) / lum(Rs)`: light on this pixel relative to the GLOBAL
8
+ * settled skin, so a side-lit face keeps its shadow side and skin tone
9
+ * never enters the paint.
10
+ * - `L` (local low-pass) only clips the skin's own shine out of the diffuse
11
+ * (`Sd`) and measures the real highlight `Hcam`.
12
+ * - `makeupOutput` writes premultiplied `(k·enc(D) + enc(base+H) − enc(base), k)`;
13
+ * draw it with `MAKEUP_BLENDING` (One, OneMinusSrcAlpha): opacity is linear.
14
+ */
15
+ export declare const MAKEUP_SHADING_GLSL: string;
@@ -0,0 +1,66 @@
1
+ import * as THREE from "three";
2
+ /**
3
+ * `MAKEUP_GLSL.shapes` (after `common`, `shading`, `sparkle` and `finish`):
4
+ * the region shapes, evaluated per fragment on the rest position (canonical
5
+ * cm). Mirrors `lib/face-atlas/shapes.ts`.
6
+ *
7
+ * Face regions (blush, contour, highlighter) are up to `MAKEUP_SHAPE_MAX`
8
+ * soft tapered capsules, set as uniforms from the settings (shape, size,
9
+ * lift), so a shape or size change never recompiles:
10
+ *
11
+ * - `uShapeStart[i]` / `uShapeEnd[i]`: `xyz` the capsule's ends on the
12
+ * canonical −X half (cm), `w` the radius there; `uShapeWeight[i]` its
13
+ * strength; `uShapeCount` the capsules in use.
14
+ * - `uSoftness`: the edge profile, `1 − smoothstep(1 − s, 1 + s, d / r)`.
15
+ * - `uEyeGuard`: `(start, full)` in `eyeRing` hops: fades the shape off the
16
+ * lash line and lids (start ≥ full: off).
17
+ * - `uLipGuard`: the `lipEdge` where the shape is full: fades it to 0 on the
18
+ * outer lip line, where the lips' own triangles (never drawn by a face
19
+ * region) begin, so no shape ends at a hard edge there (0: off).
20
+ *
21
+ * The rest point is folded onto the −X half (`x → −|x|`), so shapes are
22
+ * mirror-symmetric; `s.fade` (from `makeupSample()`) applies the person's
23
+ * own sides. Capsules combine as a soft union, `1 − Π(1 − wᵢ·mᵢ)`.
24
+ *
25
+ * `blushShape`, `contourShape` and `highlighterShape` are the region masks
26
+ * custom materials call (`blushShape(s.rest)`); all three read the same
27
+ * uniforms, which each region's material holds for its own shape.
28
+ */
29
+ export declare const MAKEUP_SHAPES_GLSL: string;
30
+ /**
31
+ * The uniforms `MAKEUP_GLSL.shapes` declares, empty (no capsules: the mask is
32
+ * 0). `uShapeStart` / `uShapeEnd` / `uShapeWeight` hold Float32Arrays whose
33
+ * identity never changes (`packMakeupShapePrimitives` writes into them).
34
+ */
35
+ export declare const createMakeupShapeUniforms: () => {
36
+ /** `[x, y, z, radius]` per capsule: the start, canonical −X half, cm. */
37
+ uShapeStart: {
38
+ value: Float32Array<ArrayBuffer>;
39
+ };
40
+ /** `[x, y, z, radius]` per capsule: the end. */
41
+ uShapeEnd: {
42
+ value: Float32Array<ArrayBuffer>;
43
+ };
44
+ /** Each capsule's strength, 0..1. */
45
+ uShapeWeight: {
46
+ value: Float32Array<ArrayBuffer>;
47
+ };
48
+ /** Capsules in use. */
49
+ uShapeCount: {
50
+ value: number;
51
+ };
52
+ /** Edge feather, 0..1 (`softness`). */
53
+ uSoftness: {
54
+ value: number;
55
+ };
56
+ /** `(start, full)` of the eye guard in `eyeRing` hops; `(0, 0)` is off. */
57
+ uEyeGuard: {
58
+ value: THREE.Vector2;
59
+ };
60
+ /** The `lipEdge` where the shape is full (the lip guard); 0 is off. */
61
+ uLipGuard: {
62
+ value: number;
63
+ };
64
+ };
65
+ /** The uniforms `MAKEUP_GLSL.shapes` reads. */
66
+ export type MakeupShapeUniforms = ReturnType<typeof createMakeupShapeUniforms>;
@@ -0,0 +1,19 @@
1
+ /**
2
+ * `MAKEUP_GLSL.sparkle` (after `common`): antialiased flakes for shimmer and
3
+ * glitter. Mirrors `makeupFlakes` in `lib/face-atlas/shading.ts` (the hash
4
+ * is integer PCG3D, bit-exact with the mirror).
5
+ *
6
+ * - Flakes hash 3D cells of the rest position (canonical cm), so they stick
7
+ * to the skin. A flake is a sphere inside its cell; the rest-space facet
8
+ * slices it into a disc whose edge ramp integrates to the disc's exact area,
9
+ * so the mean coverage is the flake volume fraction (Delesse).
10
+ * - Flake normals follow a von Mises-Fisher distribution (concentration
11
+ * kappa) around the rest-normal-times-pose, in a frame tied to the head's
12
+ * up, so a still face keeps its sparkle pattern. The glint is
13
+ * `exp(sharpness * (dot(nf, h) - 1))`, whose mean over the flake normals has
14
+ * a closed form.
15
+ * - A flake smaller than `MAKEUP_FLAKES.resolveFullPx` (1.5 px) fades to that
16
+ * expected value (fully at `resolveStartPx`, 0.75 px), so the mean energy is
17
+ * the same at every pixel size. `quality` 0 always returns the expected value.
18
+ */
19
+ export declare const MAKEUP_SPARKLE_GLSL: string;
@@ -0,0 +1,106 @@
1
+ import * as THREE from "three";
2
+ /**
3
+ * Every uniform `MAKEUP_GLSL.common` and `MAKEUP_GLSL.atlasVertex` declare,
4
+ * with neutral defaults: a white matte layer at full opacity on both sides,
5
+ * no skin data (`uSkinMap` and `uSkinStats` null; the probe's readiness
6
+ * comes through the vertex stats). Colours are linear (`THREE.Color.set("#hex")`
7
+ * converts from sRGB). Spread `useFaceSkin().uniforms` after these to bind
8
+ * the probe (`uSkinMap`, `uSkinLod`, `uSkinSqrt`, `uSkinStats`,
9
+ * `uSkinStatsPacked`).
10
+ */
11
+ export declare const createMakeupShadingUniforms: () => {
12
+ /** The camera feed (an sRGB texture, so samples are linear). */
13
+ uCameraMap: {
14
+ value: THREE.Texture | null;
15
+ };
16
+ /**
17
+ * The skin probe's statistics (`FACE_SKIN_STATS_TEXELS`), read by the
18
+ * atlas vertex chunk. Null binds three's 1×1 empty texture, which reads as
19
+ * "not ready"; a sampler missing from the material would read texture
20
+ * unit 0 (often the camera) as the probe.
21
+ */
22
+ uSkinStats: {
23
+ value: THREE.Texture | null;
24
+ };
25
+ /**
26
+ * 1 when `uSkinStats` is the packed RGBA8 layout (three bytes per value,
27
+ * `FaceSkinProbe.statsFormat` "packed"), 0 for float stats.
28
+ */
29
+ uSkinStatsPacked: {
30
+ value: number;
31
+ };
32
+ /** `FaceSkinProbe.skinMap`: atlas, premultiplied linear `(c·w, w)`, mipmapped. */
33
+ uSkinMap: {
34
+ value: THREE.Texture | null;
35
+ };
36
+ /** The low-pass mip of `uSkinMap`: `makeupSkinLod(probeSize)` (2 at 128², 1 at 64²). */
37
+ uSkinLod: {
38
+ value: number;
39
+ };
40
+ /** 1 when the probe fell back to RGBA8: rgb holds `w·√c` (the root before premultiplying). */
41
+ uSkinSqrt: {
42
+ value: number;
43
+ };
44
+ /** P: the shade, linear. */
45
+ uColor: {
46
+ value: THREE.Color;
47
+ };
48
+ /** `MAKEUP_AUTO_SHADE_ID`; 0 uses `uColor`. */
49
+ uAutoShade: {
50
+ value: number;
51
+ };
52
+ /**
53
+ * Pigment amount, linear: 0.8 renders 80%. Gloss highlights and glitter
54
+ * flakes follow the mask instead and fade out only below
55
+ * `MAKEUP_FINISH_MODEL.maskTermsFullOpacity`.
56
+ */
57
+ uOpacity: {
58
+ value: number;
59
+ };
60
+ /** 0 sheer (filters the person's colour, never lighter) … 1 opaque. */
61
+ uCoverage: {
62
+ value: number;
63
+ };
64
+ /** `MAKEUP_FINISH_ID`. */
65
+ uFinish: {
66
+ value: number;
67
+ };
68
+ /** Finish highlight strength, 0..1. */
69
+ uShine: {
70
+ value: number;
71
+ };
72
+ /** Flake colour, linear (used when `uSparkleAuto` is 0). */
73
+ uSparkleColor: {
74
+ value: THREE.Color;
75
+ };
76
+ /** 1 derives the flake colour from the shade (`sparkleColor: ""`). */
77
+ uSparkleAuto: {
78
+ value: number;
79
+ };
80
+ /** Flake density, 0..1. */
81
+ uSparkleDensity: {
82
+ value: number;
83
+ };
84
+ /** Flake diameter, mm. */
85
+ uSparkleSize: {
86
+ value: number;
87
+ };
88
+ /** 1 on the high and medium tiers, 0 on low. */
89
+ uSparkleQuality: {
90
+ value: number;
91
+ };
92
+ /** `(leftOn, rightOn)`: the person's own sides. */
93
+ uSide: {
94
+ value: THREE.Vector2;
95
+ };
96
+ /** #298 `personLeftSign(mirrored)`: +1 unmirrored, −1 on the mirrored webcam. */
97
+ uPersonLeftSign: {
98
+ value: number;
99
+ };
100
+ /** The hold / hide fade, 0..1. */
101
+ uPresence: {
102
+ value: number;
103
+ };
104
+ };
105
+ /** The uniforms `MAKEUP_GLSL.common` reads. */
106
+ export type MakeupShadingUniforms = ReturnType<typeof createMakeupShadingUniforms>;
@@ -0,0 +1,51 @@
1
+ import { FaceAtlasRegion } from './regions';
2
+ /**
3
+ * Atlas UV → pixel in a `size`-pixel square image. Images load with `flipY`,
4
+ * so `v = 1` is the image's top row.
5
+ */
6
+ export declare const faceAtlasUvToPixel: (u: number, v: number, size: number) => {
7
+ x: number;
8
+ y: number;
9
+ };
10
+ /**
11
+ * The same point of the face on the other side: `(1 − u, v)`. Exact for the
12
+ * face atlas (its layout is symmetric to 0.001), so art can be mirrored by
13
+ * flipping the image horizontally. Not valid for `CANONICAL_FACE_UVS`.
14
+ */
15
+ export declare const mirrorFaceAtlasUv: (u: number, v: number) => {
16
+ u: number;
17
+ v: number;
18
+ };
19
+ export type FaceAtlasGuideOptions = {
20
+ /** Pixel size of the square canvas the guide represents. Default 1024. */
21
+ size?: number;
22
+ /** Regions to outline and tint. Default every region except `face` and `skin`. */
23
+ regions?: readonly FaceAtlasRegion[];
24
+ /** Draw the whole triangle wireframe. Default true. */
25
+ wireframe?: boolean;
26
+ /** Draw the title, region names and side labels. Default true. */
27
+ labels?: boolean;
28
+ /** Fill the canvas with a colour. Omit for a transparent background. */
29
+ background?: string;
30
+ };
31
+ export declare const FACE_ATLAS_GUIDE_COLORS: Readonly<Record<FaceAtlasRegion | "wireframe" | "text" | "frame", string>>;
32
+ /**
33
+ * A creator template of the face atlas as an SVG string: every region's
34
+ * triangles tinted and outlined, the wireframe, and which side of the image
35
+ * is which side of the person. Derived from the bundled atlas data, so it
36
+ * registers exactly with what the SDK samples.
37
+ */
38
+ export declare const createFaceAtlasGuideSvg: (options?: FaceAtlasGuideOptions) => string;
39
+ /** The guide as an `image/svg+xml` data URL, loadable with `THREE.TextureLoader` or an `<img>`. */
40
+ export declare const createFaceAtlasGuideDataUrl: (options?: FaceAtlasGuideOptions) => string;
41
+ /**
42
+ * Rasterize a square guide SVG to a PNG `Blob` in the browser (an `<img>` and
43
+ * a 2D canvas). Shared by the atlas guide and the face-texture guide; `name`
44
+ * prefixes the error messages.
45
+ */
46
+ export declare const rasterizeGuideSvg: (svg: string, size: number, name: string) => Promise<Blob>;
47
+ /**
48
+ * Rasterize the guide to a PNG `Blob` in the browser (an `<img>` and a 2D
49
+ * canvas), for download or as a texture. Transparent unless `background` is set.
50
+ */
51
+ export declare const createFaceAtlasGuidePngBlob: (options?: FaceAtlasGuideOptions) => Promise<Blob>;
@@ -0,0 +1,25 @@
1
+ /**
2
+ * The face atlas: the SDK's one texture layout for painting on the face
3
+ * (makeup, face swap, faceless, LipEffect designs). It is the canonical face
4
+ * OBJ's `vt` layout, bundled as generated data, plus regions, feature lines,
5
+ * static vertex attributes, masks and the creator guide. SDK modules import
6
+ * from here; the public subset is re-exported from `entries/face-effects.ts`.
7
+ * The live-surface registry (`./registry`) and the GLSL chunks (`./glsl`)
8
+ * are imported by path: they pull in the face rig and generated shader
9
+ * text, which a consumer of the atlas data alone should not bundle.
10
+ */
11
+ export { FACE_ATLAS_EYE_FILLS, FACE_ATLAS_EYE_RINGS, FACE_ATLAS_LIP_RINGS, FACE_ATLAS_MIRROR, FACE_ATLAS_MOUTH_FILL, FACE_ATLAS_NOSTRILS, FACE_ATLAS_OVAL_RING, FACE_ATLAS_SOURCE, FACE_ATLAS_TRIANGLES, FACE_ATLAS_UVS, } from './faceAtlas.generated';
12
+ export { faceAtlasOpenTriangles, getFaceAtlasAttributes, getFaceAtlasLipBand, type FaceAtlasAttributes, } from './attributes';
13
+ export { collectRingBandTriangles, computeEdgeDistance, computeHopDistance, computeRingDistance, computeVertexNormals, triangleIdsToVertices, } from './topology';
14
+ export { FACE_ATLAS_ANCHORS, FACE_ATLAS_POLYLINES, FACE_ATLAS_POLYLINE_NAMES, createFaceAtlasPolylineGlsl, faceAtlasAnchorPosition, mirrorFaceAtlasPolyline, type FaceAtlasAnchorName, type FaceAtlasPolyline, type FaceAtlasPolylineName, } from './polylines';
15
+ export { FACE_ATLAS_REGIONS, getFaceAtlasRegionBounds, getFaceAtlasRegionIndices, getFaceAtlasRegionTriangles, type FaceAtlasRegion, type FaceAtlasRegionSelection, type FaceAtlasUvBounds, } from './regions';
16
+ export { createFaceAtlasMask, createFaceAtlasMaskTexture, faceAtlasMaskToRgba, type FaceAtlasMask, type FaceAtlasMaskOptions, type FaceAtlasMaskTextureOptions, } from './masks';
17
+ export { FACE_ATLAS_CM_PER_UV, FACE_SKIN_MASK, createFaceSkinMask, getFaceSkinMaskTexture, } from './skinMask';
18
+ export { FACE_ATLAS_GUIDE_COLORS, createFaceAtlasGuideDataUrl, createFaceAtlasGuidePngBlob, createFaceAtlasGuideSvg, faceAtlasUvToPixel, mirrorFaceAtlasUv, type FaceAtlasGuideOptions, } from './guide';
19
+ export { LANDMARK_LEAD, LANDMARK_LEAD_COUNT, LandmarkLead, createFaceLandmarkLead, createLandmarkNeighbours, getFaceLandmarkNeighbours, type LandmarkLeadPoint, type LandmarkLeadStep, type LandmarkLeadTuning, type LandmarkNeighbours, } from './lead';
20
+ export { FACE_ATLAS_SURFACE, FACE_ATLAS_SURFACE_ATTRIBUTES, FaceAtlasSurface, faceAtlasSelectionIndices, writeFaceAtlasNormals, type FaceAtlasSurfaceAttributeName, type FaceAtlasSurfaceInput, type FaceAtlasSurfaceTracking, type FaceAtlasTriangleSelection, } from './surface';
21
+ export { FACE_ATLAS_STENCIL, FACE_RETOUCH_RENDER_ORDER, MAKEUP_BLENDING, MAKEUP_RENDER_ORDER, faceAtlasLayerSelfOccludes, } from './renderState';
22
+ export { FACE_ATLAS_PREPASS_STATE, FACE_ATLAS_RESTORE_STATE, createFaceAtlasPrepassMaterial, createFaceAtlasRestoreMaterial, faceAtlasTargetHasStencil, guardFaceAtlasStencilDraw, } from './selfOcclusion';
23
+ export { FACE_ATLAS_QUALITY, resolveFaceAtlasQualityKey, type FaceAtlasQualityKey, } from './quality';
24
+ export { FACE_ATLAS_BLINK_MORPHS, faceAtlasDesignFlipU, faceAtlasSideHalves, makeupSideWeights, type FaceAtlasSide, } from './sides';
25
+ export { MAKEUP_SHAPE_MAX, MAKEUP_SHAPE_SOFTNESS_MIN, createMakeupShapePrimitives, evaluateMakeupShapeMask, faceAtlasSurfacePoint, makeupCapsuleDistance, makeupEyeGuard, makeupLipGuard, makeupShapeProfile, packMakeupShapePrimitives, selectFaceAtlasTriangles, type MakeupCapsule, type MakeupShapePrimitives, } from './shapes';
@@ -0,0 +1,117 @@
1
+ /** The face mesh landmarks a lead follows by default (MediaPipe's 468, without the iris points). */
2
+ export declare const LANDMARK_LEAD_COUNT = 468;
3
+ /**
4
+ * Tuning of `LandmarkLead`, set on synthetic jitter and motion at 30 Hz
5
+ * inference: a still face's jitter drops more than 3×, a steady motion is
6
+ * followed within a pixel while the lead covers the gap, and on the face
7
+ * mesh a mouth opening 6 px at 1–3 Hz and a blink trail by under a pixel
8
+ * (RMS over the inner lips and lash lines). Device tuning may change it.
9
+ */
10
+ export declare const LANDMARK_LEAD: Readonly<{
11
+ /** One Euro cutoff (Hz) of a still point: heavy smoothing of MediaPipe's jitter. */
12
+ minCutoffHz: 0.5;
13
+ /** Cutoff added per feed width per second of the point's speed: little lag while it moves. */
14
+ beta: 200;
15
+ /** Cutoff (Hz) of the speed estimate the cutoff adapts to. */
16
+ derivativeCutoffHz: 2;
17
+ /**
18
+ * Speed (feed widths per second, about 19 px/s on a 640 px feed) below
19
+ * which a point counts as still: the jitter's own apparent speed, so it
20
+ * does not open the filter.
21
+ */
22
+ speedFloor: 0.03;
23
+ /** Blend of each sample's velocity into the lead velocity (1 = the last sample's alone). */
24
+ velocityBlend: 0.5;
25
+ /** Samples further apart than this (ms) snap: the face was not followed in between. */
26
+ maxGapMs: 500;
27
+ /** A jump of the face's centre larger than this (feed widths) snaps: another face. */
28
+ snapJump: 0.1;
29
+ }>;
30
+ /** The tunable numbers of a `LandmarkLead` (`LANDMARK_LEAD` by default). */
31
+ export type LandmarkLeadTuning = {
32
+ -readonly [K in keyof typeof LANDMARK_LEAD]: number;
33
+ };
34
+ /**
35
+ * Each point's mesh neighbours, compressed: the neighbours of point `i` are
36
+ * `indices[offsets[i] … offsets[i + 1] − 1]` (`createLandmarkNeighbours`).
37
+ */
38
+ export type LandmarkNeighbours = {
39
+ offsets: Uint32Array;
40
+ indices: Uint16Array;
41
+ };
42
+ /** The edge neighbours of every vertex of a triangle list (flat vertex indices, three per triangle). */
43
+ export declare const createLandmarkNeighbours: (triangles: ArrayLike<number>, count: number) => LandmarkNeighbours;
44
+ /** What one `observe` did: snapped to the raw points, filtered them, or skipped the sample. */
45
+ export type LandmarkLeadStep = "snap" | "smooth" | "skip";
46
+ /** A landmark as the face model reports it (`z` optional). */
47
+ export type LandmarkLeadPoint = {
48
+ x: number;
49
+ y: number;
50
+ z?: number;
51
+ };
52
+ /**
53
+ * One Euro filter plus a capped velocity lead over the first `count` face
54
+ * landmarks. Call `observe` once per NEW landmark array (not every frame),
55
+ * then `apply(nowMs, leadMs)` every frame and read `points`.
56
+ *
57
+ * ```ts
58
+ * const lead = new LandmarkLead();
59
+ * // in useFrame:
60
+ * if (landmarks !== last) lead.observe(landmarks, performance.now(), aspect);
61
+ * const points = lead.apply(performance.now(), 33); // x, y, z per landmark
62
+ * ```
63
+ */
64
+ export declare class LandmarkLead {
65
+ /** Points filtered and led: the first `count` landmarks of every sample. */
66
+ readonly count: number;
67
+ /** The led points, `count × 3` (x, y, z), written by `apply`. */
68
+ readonly points: Float32Array;
69
+ /** The filtered points at the last sample. */
70
+ private readonly filtered;
71
+ /** One Euro speed estimate per coordinate (feed units per second). */
72
+ private readonly derivative;
73
+ /** Lead velocity per coordinate (feed units per second). */
74
+ private readonly velocity;
75
+ /** The filter's lag behind a steadily moving point, per landmark (ms). */
76
+ private readonly lagMs;
77
+ private readonly tuning;
78
+ private readonly neighbours;
79
+ private initialized;
80
+ private sampleMs;
81
+ private centreX;
82
+ private centreY;
83
+ constructor(count?: number, { neighbours, ...tuning }?: Partial<LandmarkLeadTuning> & {
84
+ neighbours?: LandmarkNeighbours | null;
85
+ });
86
+ /** False until the first sample and after `reset`: the next sample snaps. */
87
+ get ready(): boolean;
88
+ /** Time of the last sample (ms). */
89
+ get lastSampleMs(): number;
90
+ /** The next sample snaps (a new face, a new camera source, a reacquired face). */
91
+ reset(): void;
92
+ /**
93
+ * A new landmark sample taken at `timeMs`. Snaps on the first sample, after
94
+ * `reset`, after a gap over `maxGapMs` and on a face-centre jump over
95
+ * `snapJump`; skips a sample with too few points or no time step.
96
+ */
97
+ observe(landmarks: ArrayLike<LandmarkLeadPoint>, timeMs: number, aspect?: number): LandmarkLeadStep;
98
+ /**
99
+ * Writes the led points for `nowMs` into `points` and returns it: each
100
+ * filtered point moved along its velocity for its filter lag plus the time
101
+ * since the sample, at most `leadMs`. `leadMs` 0 gives the filtered points.
102
+ * Before the first sample the points are left as they are.
103
+ */
104
+ apply(nowMs: number, leadMs: number): Float32Array;
105
+ private snap;
106
+ }
107
+ /**
108
+ * The face mesh's landmark neighbours, built once: the edges of
109
+ * `FACE_ATLAS_TRIANGLES` without the eye and mouth fills
110
+ * (`faceAtlasOpenTriangles`). The fills join each lip to the other lip and
111
+ * each lid to the other lid; those move apart when the mouth or an eye
112
+ * opens, so their speeds would cancel and hold the filter shut exactly
113
+ * where the lips and lash lines move.
114
+ */
115
+ export declare const getFaceLandmarkNeighbours: () => LandmarkNeighbours;
116
+ /** A `LandmarkLead` over the 468 face landmarks, its speeds averaged over mesh neighbours. */
117
+ export declare const createFaceLandmarkLead: (tuning?: Partial<LandmarkLeadTuning>) => LandmarkLead;
@@ -0,0 +1,125 @@
1
+ import * as THREE from "three";
2
+ /**
3
+ * The made-up camera (FACE-1): the camera image with the makeup drawn over
4
+ * it, in a feed-size texture laid out exactly as the camera texture (same
5
+ * uv, same aspect, sRGB). Components that sample the camera image (a face
6
+ * inset, a face warp or morph, a face swap's live source) can sample it
7
+ * instead and show the makeup. Opt-in: one shared target per renderer,
8
+ * rendered once per frame while anyone holds it (`<MadeUpCamera>`,
9
+ * `useMadeUpCamera`).
10
+ *
11
+ * Each frame (`MadeUpCameraTarget.render`):
12
+ * 1. **Draw** into a working target (RGBA8, depth and stencil): the camera
13
+ * image, then the scene through `MADE_UP_CAMERA_LAYER` only, which holds
14
+ * every face-atlas layer drawn between `MAKEUP_RENDER_ORDER.prepass` and
15
+ * `.restore` (makeup regions, lips, designs, the self-occlusion passes;
16
+ * re-marked every frame) plus `HandCutout`, lit by the lights the main
17
+ * camera sees (put on the layer for the pass). The working target is flagged
18
+ * as three.js flags WebXR targets, so materials write sRGB-encoded colour
19
+ * and blend exactly as they do on the canvas, with the same shader
20
+ * programs. Faces riding a warp draw unwarped (where the camera sees
21
+ * them).
22
+ * 2. **Copy** it into the output texture (SRGB8_ALPHA8), decoding on the way,
23
+ * so the output samples like the camera texture (linear, decoded by the
24
+ * GPU).
25
+ */
26
+ /**
27
+ * The three.js layer the made-up camera's pass renders (30; 31 is
28
+ * `EXTERNAL_BACKGROUND_RENDER_LAYER`).
29
+ * The face-atlas makeup layers are put on it every frame; add your own
30
+ * objects to the made-up feed with `object.layers.enable(MADE_UP_CAMERA_LAYER)`.
31
+ * Keep it free for this: anything on it is drawn into the made-up camera.
32
+ */
33
+ export declare const MADE_UP_CAMERA_LAYER = 30;
34
+ /**
35
+ * Frame priority of the made-up pass: after the face-atlas surfaces update
36
+ * (-0.4), before default-priority frame callbacks (0) that read the texture.
37
+ * A reader that runs earlier (a face swap's live map, -0.75) gets the
38
+ * previous frame's image.
39
+ */
40
+ export declare const MADE_UP_CAMERA_FRAME_PRIORITY = -0.3;
41
+ /** Whether a face-atlas mesh at `renderOrder` is drawn into the made-up camera (the makeup orders, pre-pass to restore). */
42
+ export declare const madeUpCameraDraws: (renderOrder: number) => boolean;
43
+ /**
44
+ * Puts the makeup meshes of every face of `scene` on `MADE_UP_CAMERA_LAYER`
45
+ * (and every other face-atlas mesh off it), and draws warped faces unwarped
46
+ * while `unwarped` is true. The made-up pass calls it with `true` before
47
+ * drawing and `false` after.
48
+ */
49
+ export declare const markMadeUpCameraLayers: (scene: THREE.Object3D, unwarped: boolean) => void;
50
+ /** The shader sources, for the static tests. */
51
+ export declare const MADE_UP_CAMERA_GLSL: Readonly<{
52
+ vertex: "\nvarying vec2 vUv;\nvoid main() {\n vUv = position.xy * 0.5 + 0.5;\n gl_Position = vec4(position.xy, 0.0, 1.0);\n}\n";
53
+ camera: "\nuniform sampler2D uMap;\nvarying vec2 vUv;\nvoid main() {\n gl_FragColor = vec4(texture2D(uMap, vUv).rgb, 1.0);\n #include <colorspace_fragment>\n}\n";
54
+ decode: "\nuniform sampler2D uMap;\nvarying vec2 vUv;\nvoid main() {\n gl_FragColor = vec4(sRGBTransferEOTF(texture2D(uMap, vUv)).rgb, 1.0);\n}\n";
55
+ }>;
56
+ /**
57
+ * The working target: 8-bit storage holding sRGB-encoded colour. Tagged
58
+ * sRGB and flagged `isXRRenderTarget` (three.js then writes and tone-maps
59
+ * for it as for the canvas: `outputColorSpace` = the texture's), with an
60
+ * explicit `RGBA8` internal format (no GPU sRGB conversion), so blending
61
+ * happens on encoded values exactly as on the canvas.
62
+ */
63
+ export declare const createMadeUpCameraWorkTarget: (width: number, height: number) => THREE.WebGLRenderTarget<THREE.Texture>;
64
+ /** The output: SRGB8_ALPHA8 (decoded by the GPU when sampled, as the camera texture is). */
65
+ export declare const createMadeUpCameraOutputTarget: (width: number, height: number) => THREE.WebGLRenderTarget<THREE.Texture>;
66
+ /**
67
+ * A feed texture's content version: the made-up camera's pass count for its
68
+ * texture (a render target's texture never bumps `version`), else
69
+ * `texture.version` (the camera texture bumps it on every new frame).
70
+ * Compare it from frame to frame to skip work when the image is unchanged.
71
+ */
72
+ export declare const feedTextureVersion: (texture: THREE.Texture) => number;
73
+ /** The camera image with the makeup over it, feed size. See the module doc. */
74
+ export declare class MadeUpCameraTarget {
75
+ private readonly work;
76
+ private readonly output;
77
+ private readonly cameraPass;
78
+ private readonly decodePass;
79
+ private readonly quadCamera;
80
+ private passes;
81
+ /** The last pass drew an image (false again once the camera is gone). */
82
+ private live;
83
+ private stamp;
84
+ constructor();
85
+ /**
86
+ * The made-up feed: the camera texture's layout (uv, aspect, image top at
87
+ * v = 1), sRGB, decoded by the GPU when sampled. The same object for the
88
+ * target's life (a resize keeps it).
89
+ */
90
+ get texture(): THREE.Texture;
91
+ /** Passes rendered (0: nothing yet, the texture is empty). */
92
+ get frame(): number;
93
+ /**
94
+ * The texture holds the current camera image: a pass has run and the
95
+ * camera has not gone since (`render` without a camera texture ends it).
96
+ */
97
+ get ready(): boolean;
98
+ get width(): number;
99
+ get height(): number;
100
+ /** `render` once per `stamp` (R3F's `clock.elapsedTime`), whoever calls first. Returns whether it rendered. */
101
+ renderOnce(stamp: number, renderer: THREE.WebGLRenderer, scene: THREE.Object3D, camera: THREE.Camera, cameraTexture: THREE.Texture | null): boolean;
102
+ /**
103
+ * One pass: `cameraTexture` (the session camera) with the scene's
104
+ * `MADE_UP_CAMERA_LAYER` drawn over it through `camera`, into the
105
+ * texture. Feed size: the camera image's (the canvas's drawing buffer
106
+ * when it has none). Leaves the renderer's target, clear colour,
107
+ * `autoClear`, XR and shadow state, the camera's layers and the scene's
108
+ * background and override material as they were. Returns false (nothing
109
+ * drawn) without a camera texture.
110
+ */
111
+ render(renderer: THREE.WebGLRenderer, scene: THREE.Object3D, camera: THREE.Camera, cameraTexture: THREE.Texture | null): boolean;
112
+ dispose(): void;
113
+ /** Both targets at the camera image's size (capped at the GPU's texture limit). */
114
+ private fitSize;
115
+ }
116
+ /** The renderer's shared made-up camera, with one more holder (made on first use). Pair with `releaseMadeUpCamera`. */
117
+ export declare const acquireMadeUpCamera: (renderer: THREE.WebGLRenderer) => MadeUpCameraTarget;
118
+ /** One holder fewer; the last one disposes the target. */
119
+ export declare const releaseMadeUpCamera: (renderer: THREE.WebGLRenderer, target: MadeUpCameraTarget) => void;
120
+ /**
121
+ * The renderer's made-up camera when someone holds it and it has rendered
122
+ * (never starts one): for shared consumers that serve several components,
123
+ * such as a face's live map.
124
+ */
125
+ export declare const peekMadeUpCamera: (renderer: THREE.WebGLRenderer) => MadeUpCameraTarget | null;
@@ -0,0 +1,53 @@
1
+ import { DataTexture } from 'three';
2
+ import { FaceAtlasRegionSelection } from './regions';
3
+ export type FaceAtlasMaskOptions = {
4
+ /** Regions painted white (their union). */
5
+ include: FaceAtlasRegionSelection;
6
+ /** Regions cut back out of `include`. */
7
+ exclude?: FaceAtlasRegionSelection;
8
+ /** Width and height in pixels. Default 256. */
9
+ size?: number;
10
+ /**
11
+ * Edge softness as a fraction of the atlas width: the edge fades over about
12
+ * this distance (0.02 = 2 % of the width). Default 0 (antialiased edge only).
13
+ */
14
+ feather?: number;
15
+ /**
16
+ * Where row 0 sits. `"top"` (default): row 0 is `v = 1`, as in an image, an
17
+ * `ImageData` or a canvas. `"bottom"`: row 0 is `v = 0`, as a
18
+ * `THREE.DataTexture` samples it (`flipY` is false for data textures); use
19
+ * `createFaceAtlasMaskTexture`, which sets this for you.
20
+ */
21
+ origin?: "top" | "bottom";
22
+ };
23
+ /** A single-channel coverage mask in atlas space (0 outside, 255 inside). */
24
+ export type FaceAtlasMask = {
25
+ width: number;
26
+ height: number;
27
+ data: Uint8ClampedArray;
28
+ };
29
+ /**
30
+ * Rasterize face atlas regions into a coverage mask in plain JavaScript (no
31
+ * canvas, no `ctx.filter`, so it works in workers, Node and iOS Safari):
32
+ * `include` minus `exclude`, 2×2 supersampled, then feathered by a
33
+ * three-pass box blur. Row 0 is `v = 1` by default, ready for an
34
+ * `ImageData` via `faceAtlasMaskToRgba`. For the GPU, use
35
+ * `createFaceAtlasMaskTexture` (or pass `origin: "bottom"` before building
36
+ * your own `THREE.DataTexture`, whose `flipY` is false), or the mask lands
37
+ * upside down.
38
+ */
39
+ export declare const createFaceAtlasMask: (options: FaceAtlasMaskOptions) => FaceAtlasMask;
40
+ /** Options of `createFaceAtlasMaskTexture`: the mask options without `origin`. */
41
+ export type FaceAtlasMaskTextureOptions = Omit<FaceAtlasMaskOptions, "origin">;
42
+ /**
43
+ * Rasterize face atlas regions straight into a single-channel
44
+ * `THREE.DataTexture` (`RedFormat`, linear filtering, read `.r` in a shader)
45
+ * sampled with the atlas UVs: rows are stored from `v = 0`, so no flip is
46
+ * needed. The caller owns the texture and disposes it.
47
+ */
48
+ export declare const createFaceAtlasMaskTexture: (options: FaceAtlasMaskTextureOptions) => DataTexture;
49
+ /**
50
+ * Expand a mask to RGBA (`color` RGB, alpha = coverage), e.g.
51
+ * `new ImageData(faceAtlasMaskToRgba(mask), mask.width, mask.height)`.
52
+ */
53
+ export declare const faceAtlasMaskToRgba: (mask: FaceAtlasMask, color?: readonly [number, number, number]) => Uint8ClampedArray;