@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,406 @@
1
+ /**
2
+ * The makeup shading core, as plain TypeScript: the constants the GLSL chunks
3
+ * (`./glsl`) are generated from, and a line-for-line mirror of the shader
4
+ * math for tests and docs. Colours are linear RGB unless a name says
5
+ * `encoded` (the output colour space, sRGB on the canvas).
6
+ *
7
+ * The model (FACE-1 #274, settled open questions 1 and 2):
8
+ * - Paint is shaded relative to the person's own skin. `S = lum(C) / lum(Rs)`
9
+ * is the light on this pixel relative to the GLOBAL settled skin reference
10
+ * `Rs`, so the shadow side of a side-lit face stays darker and skin tone
11
+ * never enters the result.
12
+ * - The LOCAL low-pass `L` only separates the skin's own highlight (`Hcam`)
13
+ * and clips it out of the diffuse term (hard for matte, soft otherwise).
14
+ * - One premultiplied operator for every finish: diffuse over the camera plus
15
+ * a specular add. Finishes differ only in their diffuse and highlight terms.
16
+ */
17
+ export type Vec3 = readonly [number, number, number];
18
+ type MVec3 = [number, number, number];
19
+ /** Finish ids, as the shader's `uFinish` uniform takes them. */
20
+ export declare const MAKEUP_FINISH_ID: Readonly<{
21
+ readonly matte: 0;
22
+ readonly satin: 1;
23
+ readonly gloss: 2;
24
+ readonly shimmer: 3;
25
+ readonly metallic: 4;
26
+ readonly glitter: 5;
27
+ }>;
28
+ /** A finish name the shading core knows. */
29
+ export type MakeupShadingFinish = keyof typeof MAKEUP_FINISH_ID;
30
+ /** Auto-shade ids, as the shader's `uAutoShade` uniform takes them (`none` uses `uColor`). */
31
+ export declare const MAKEUP_AUTO_SHADE_ID: Readonly<{
32
+ readonly none: 0;
33
+ readonly lips: 1;
34
+ readonly blush: 2;
35
+ readonly contour: 3;
36
+ readonly highlighter: 4;
37
+ readonly brows: 5;
38
+ }>;
39
+ /** A region whose `shade: "auto"` the shader derives from the person. */
40
+ export type MakeupAutoShade = keyof typeof MAKEUP_AUTO_SHADE_ID;
41
+ /** Linear-sRGB luminance weights (three.js `luminance()`). */
42
+ export declare const MAKEUP_LUMA: Vec3;
43
+ /** Skin-relative shading constants. */
44
+ export declare const MAKEUP_SHADING: Readonly<{
45
+ /** Guards every division. */
46
+ readonly epsilon: 0.0001;
47
+ /** Clamp on the light ratio `S` (and the local ratio). */
48
+ readonly maxRatio: 4;
49
+ /** Clamp on the light-colour tint `(Rf / lum Rf) / (Rs / lum Rs)`. */
50
+ readonly tintMin: 0.85;
51
+ readonly tintMax: 1.15;
52
+ /** Soft-clip headroom over the local light, for every finish except matte (0). */
53
+ readonly clip: 0.15;
54
+ /** `Hcam = max(0, lum(C) − knee · lum(L))`: the real highlight on the skin. */
55
+ readonly highlightKnee: 1.1;
56
+ /**
57
+ * Low-pass weight (`skinMap.a`) below which a mip has no skin here: the
58
+ * local skin falls back to the coarser mip, then to the fast skin.
59
+ */
60
+ readonly lowpassMinWeight: 0.02;
61
+ /** Low-pass weight from which a mip's skin is used fully. */
62
+ readonly lowpassFullWeight: 0.1;
63
+ /**
64
+ * Size (texels per side) of the `skinMap` mip the local low-pass reads, so
65
+ * the low-pass radius on the face is the same at every probe size
66
+ * (`makeupSkinLod`: mip 2 of a 128² probe, mip 1 of 64²).
67
+ */
68
+ readonly lowpassTexels: 32;
69
+ /**
70
+ * Mips above the low-pass that the local skin falls back to where the
71
+ * low-pass has no skin (lips, eyes, brows): it keeps the large-scale light.
72
+ */
73
+ readonly lowpassCoarseLods: 2;
74
+ /** Width (canonical cm along the surface) of the fade in from the face oval. */
75
+ readonly edgeFadeCm: 1;
76
+ /** Clamp on the relative light level that scales synthetic lobes and glints. */
77
+ readonly maxLightLevel: 2;
78
+ /** View-space key light, used while the light fit is not confident. */
79
+ readonly keyLight: Vec3;
80
+ /** Light-fit confidence (`|b| / a`) under which the key light is used. */
81
+ readonly lightConfidenceMin: 0.15;
82
+ /** Half-width of the blend between the key light and the fitted light. */
83
+ readonly lightConfidenceBlend: 0.03;
84
+ /** Half-width (canonical cm) of the left/right blend across the face's midline. */
85
+ readonly sideBlendCm: 0.15;
86
+ /** `dot(normal, viewDir)` where the facing fade starts and where it is full. */
87
+ readonly facingMin: 0;
88
+ readonly facingFull: 0.25;
89
+ /** Output below this (amount and highlight) is discarded. */
90
+ readonly discardBelow: number;
91
+ }>;
92
+ /**
93
+ * The `skinMap` mip the local low-pass reads (`uSkinLod`) for a probe of
94
+ * `probeSize`² texels: the mip that is `lowpassTexels` wide.
95
+ */
96
+ export declare const makeupSkinLod: (probeSize: number) => number;
97
+ /** Time constants (seconds) of the probe's skin references. */
98
+ export declare const MAKEUP_SKIN_TIME_CONSTANTS: Readonly<{
99
+ /** `Rf`, the current light, and the per-texel skin map. */
100
+ readonly fast: 0.25;
101
+ /** `Rs`, the person's skin under the settled light. */
102
+ readonly slow: 4;
103
+ }>;
104
+ /** The per-finish highlight model. Roughness maps to a Blinn-Phong exponent `2 / r² − 2`. */
105
+ export declare const MAKEUP_FINISH_MODEL: Readonly<{
106
+ readonly satin: {
107
+ readonly cameraHighlight: 0.35;
108
+ readonly roughness: 0.6;
109
+ readonly lobe: 0.15;
110
+ };
111
+ readonly gloss: {
112
+ readonly cameraHighlight: 1;
113
+ readonly cameraHighlightShine: 1.5;
114
+ readonly roughness: 0.12;
115
+ readonly lobe: 0.8;
116
+ readonly fresnel: 0.25;
117
+ readonly f0: 0.04;
118
+ };
119
+ /**
120
+ * The body scales with coverage: the diffuse colour is multiplied by
121
+ * `mix(1, metallic.diffuse, coverage)` and the reflected environment by
122
+ * coverage, so a sheer metallic is the sheer filter plus the lobe, Fresnel
123
+ * and camera highlights.
124
+ */
125
+ readonly metallic: {
126
+ readonly diffuse: 0.45;
127
+ readonly environment: 0.55;
128
+ readonly roughness: 0.35;
129
+ readonly lobe: 0.9;
130
+ };
131
+ /**
132
+ * Opacity from which the mask-scaled terms (gloss highlights, glitter
133
+ * flakes) are at full strength. Below it they fade out with opacity, so
134
+ * opacity 0 shows nothing.
135
+ */
136
+ readonly maskTermsFullOpacity: 0.1;
137
+ /** Sparkle tint when `sparkleColor` is "" : `mix(white, shade, tintMix)`. */
138
+ readonly sparkleTintMix: 0.5;
139
+ }>;
140
+ /** Flake (shimmer and glitter) model. Sizes are diameters; cells are diameter × `cellScale`. */
141
+ export declare const MAKEUP_FLAKES: Readonly<{
142
+ readonly shimmer: {
143
+ readonly cellScale: 1.5;
144
+ readonly kappa: 20;
145
+ readonly sharpness: 24;
146
+ readonly gain: 8;
147
+ readonly hueJitter: 0;
148
+ };
149
+ readonly glitter: {
150
+ readonly cellScale: 2;
151
+ readonly kappa: 8;
152
+ readonly sharpness: 60;
153
+ readonly gain: 3;
154
+ readonly hueJitter: 0.35;
155
+ readonly body: 0.6;
156
+ };
157
+ /** Flake diameter (px) from which a flake starts to resolve, and from which it is fully resolved. */
158
+ readonly resolveStartPx: 0.75;
159
+ readonly resolveFullPx: 1.5;
160
+ /** Glitter density on the low quality tier (shimmer drops to its smooth expected value). */
161
+ readonly lowQualityGlitterDensity: 0.5;
162
+ /** Offset that keeps hashed cell ids positive. */
163
+ readonly cellOffset: 32768;
164
+ }>;
165
+ /** Auto-shade recipes (`shade: "auto"`): what the shader derives from the person. */
166
+ export declare const MAKEUP_AUTO_SHADE: Readonly<{
167
+ readonly lips: {
168
+ readonly saturation: 1.2;
169
+ readonly value: 0.7;
170
+ };
171
+ readonly blush: {
172
+ readonly rose: Vec3;
173
+ readonly mix: 0.55;
174
+ readonly value: 0.92;
175
+ };
176
+ readonly contour: {
177
+ readonly saturation: 0.85;
178
+ readonly value: 0.62;
179
+ };
180
+ readonly highlighter: {
181
+ readonly warm: Vec3;
182
+ readonly mix: 0.3;
183
+ readonly value: 1.6;
184
+ };
185
+ }>;
186
+ /** Linear luminance (`makeupLuma`). */
187
+ export declare const makeupLuma: (c: Vec3) => number;
188
+ /** `mix(vec3(lum), c, amount)`: saturation scale. */
189
+ export declare const makeupSaturation: (c: Vec3, amount: number) => MVec3;
190
+ /** Linear → sRGB (three.js `sRGBTransferOETF`, the canvas output). Negative input clamps to 0. */
191
+ export declare const encodeSrgb: (c: Vec3) => MVec3;
192
+ /** sRGB → linear (three.js `sRGBTransferEOTF`, what an sRGB texture decodes to). */
193
+ export declare const decodeSrgb: (c: Vec3) => MVec3;
194
+ /** `1 − exp(−dt / τ)`: the probe's ConstantAlpha blend factor for an EMA with time constant τ. */
195
+ export declare const makeupEmaFactor: (dt: number, tau: number) => number;
196
+ /** One `skinMap` texel (or a mip's average of texels). */
197
+ export type MakeupSkinTexel = readonly [number, number, number, number];
198
+ /**
199
+ * Encodes skin colour `c` (linear) with weight `w` as the probe writes it:
200
+ * premultiplied `(c·w, w)`, or on the RGBA8 fallback (`sqrt`) `(w·√c, w)`.
201
+ * The square root is taken before premultiplying, so a mip's average still
202
+ * decodes to the weighted skin: `(Σw·√c / Σw)²`.
203
+ */
204
+ export declare const encodeMakeupSkinTexel: (c: Vec3, w: number, sqrt?: boolean) => MakeupSkinTexel;
205
+ /** The skin colour of a `skinMap` texel or mip: `rgb / a`, squared on the RGBA8 fallback. */
206
+ export declare const decodeMakeupSkinTexel: (texel: MakeupSkinTexel, sqrt?: boolean) => MVec3;
207
+ /** Raw probe inputs for one fragment. */
208
+ export type MakeupSkinInput = {
209
+ /** C: the linear camera colour at the un-warped surface point. */
210
+ camera: Vec3;
211
+ /** Rs from the probe stats. */
212
+ skinSlow: Vec3;
213
+ /** Rf from the probe stats. */
214
+ skinFast: Vec3;
215
+ /** The skin map at the low-pass mip (`uSkinLod`), as `encodeMakeupSkinTexel` writes it. */
216
+ lowpass: MakeupSkinTexel;
217
+ /**
218
+ * The skin map `lowpassCoarseLods` mips above, read where the low-pass has
219
+ * no skin (lips, eyes, brows). Omitted: no data there either.
220
+ */
221
+ lowpassCoarse?: MakeupSkinTexel;
222
+ /** 0 until the probe has data, then 1. */
223
+ ready: number;
224
+ /** The RGBA8 fallback: rgb holds `w·√c` (`uSkinSqrt`). */
225
+ sqrt?: boolean;
226
+ };
227
+ /** The resolved skin references. */
228
+ export type MakeupSkin = {
229
+ camera: Vec3;
230
+ /** Rs, or the camera itself while the probe is not ready (paint shows at once, flat). */
231
+ skinSlow: Vec3;
232
+ /** Rf, or the camera while not ready. */
233
+ skinFast: Vec3;
234
+ /**
235
+ * L, the local low-pass; where it has no skin, a coarser mip of it, then
236
+ * Rf; the camera while not ready.
237
+ */
238
+ skinLocal: Vec3;
239
+ /** The ready weight actually used (0 also when Rs is black). */
240
+ ready: number;
241
+ };
242
+ export declare const resolveMakeupSkin: (input: MakeupSkinInput) => MakeupSkin;
243
+ /** The parts of the GLSL `MakeupSample` the shading and finish math read. */
244
+ export type MakeupSample = MakeupSkin & {
245
+ /** The person's own lip colour (probe), or the region colour while not ready. */
246
+ lip: Vec3;
247
+ /** The person's own brow-hair colour (probe), or the region colour while not ready. */
248
+ brow: Vec3;
249
+ /** Rest position, canonical cm. */
250
+ rest: Vec3;
251
+ /** Unit normal of the rest-space facet under the pixel (sign free). */
252
+ facet: Vec3;
253
+ /** Pixel footprint on the surface, canonical cm. */
254
+ pixelCm: number;
255
+ /** Live metric normal, view space, unit, outward. */
256
+ normal: Vec3;
257
+ /** Rest normal × pose, view space, unit: flakes hang off it. */
258
+ flakeNormal: Vec3;
259
+ /** The head frame's +Y in view space, unit. */
260
+ headUp: Vec3;
261
+ /** Surface → eye, view space, unit. */
262
+ viewDir: Vec3;
263
+ /** Light direction, view space, unit (fitted, or the key light). */
264
+ light: Vec3;
265
+ /** side × edge × facing × presence. */
266
+ fade: number;
267
+ };
268
+ /**
269
+ * The light to shade with: the fitted direction, blended to the key light as
270
+ * the fit's confidence drops under `lightConfidenceMin` (GLSL `makeupLightDirection`).
271
+ */
272
+ export declare const makeupLightDirection: (fitted: Vec3, confidence: number) => MVec3;
273
+ /**
274
+ * The person's-left weight of a rest point: 1 on the person's own left, 0 on
275
+ * their right, blended across the midline. `personLeftSign` is #298's
276
+ * `personLeftSign(mirrored)`: canonical +X is the person's left on an
277
+ * unmirrored feed and their right on the mirrored webcam.
278
+ */
279
+ export declare const makeupPersonLeft: (restX: number, personLeftSign: number) => number;
280
+ /** The `side` weight: `uSide = (leftOn, rightOn)` mixed by the person's-left weight. */
281
+ export declare const makeupSideWeight: (restX: number, personLeftSign: number, side: readonly [leftOn: number, rightOn: number]) => number;
282
+ /** The fade in from the face oval: S1's `edge` attribute (cm from the oval) over `edgeFadeCm`. */
283
+ export declare const makeupEdgeFade: (edgeCm: number) => number;
284
+ /** The facing fade from the live normal and the view direction. */
285
+ export declare const makeupFacing: (normal: Vec3, viewDir: Vec3) => number;
286
+ /** The light terms of one fragment (GLSL `MakeupLight`). */
287
+ export type MakeupLightTerms = {
288
+ /** S = lum(C) / lum(Rs): all the light here, relative to the settled skin. */
289
+ ratio: number;
290
+ /** lum(L) / lum(Rs): the light on this region without the skin's own shine. */
291
+ local: number;
292
+ /** Sd: S with the shine clipped above `local · (1 + clip)`. */
293
+ diffuse: number;
294
+ /** Hcam: the real highlight on the skin. */
295
+ highlight: number;
296
+ /** Light-colour tint (the cast of a change in light colour), per channel. */
297
+ lightTint: MVec3;
298
+ };
299
+ /** `x` unchanged up to `knee`, then compressed toward `knee · (1 + clip)` (hard at clip 0). */
300
+ export declare const makeupSoftClip: (x: number, knee: number, clip: number) => number;
301
+ /** The soft-clip headroom of a finish: none for matte. */
302
+ export declare const makeupClipFor: (finish: MakeupShadingFinish) => 0 | 0.15;
303
+ export declare const makeupLighting: (skin: MakeupSkin, clip: number) => MakeupLightTerms;
304
+ /**
305
+ * The diffuse colour of the product (GLSL `makeupDiffuse`):
306
+ * - opaque `P · Sd · lightTint`: the shade under this light, relative to the person's skin;
307
+ * - sheer `C · P / max(max(P), lum(Rs))`: the person's own colour filtered by the
308
+ * shade (a Multiply relative to the skin, capped so it never lightens);
309
+ * - mixed by `coverage`. Matte filters the clipped camera; metallic scales by
310
+ * `mix(1, 0.45, coverage)`, so a sheer metallic is still only a filter.
311
+ */
312
+ export declare const makeupDiffuse: (skin: MakeupSkin, light: MakeupLightTerms, color: Vec3, coverage: number, finish: MakeupShadingFinish) => MVec3;
313
+ /** The shade a region with `shade: "auto"` derives from the person (GLSL `makeupAutoShade`). */
314
+ export declare const makeupAutoShade: (sample: Pick<MakeupSample, "skinSlow" | "skinLocal" | "lip" | "brow">, mode: MakeupAutoShade, color: Vec3) => MVec3;
315
+ /** PCG3D (Jarzynski & Olano 2020): the shader's integer cell hash, bit-exact. */
316
+ export declare const makeupPcg3d: (x0: number, y0: number, z0: number) => MVec3;
317
+ /** Rotates a colour's hue by `angle` radians around the grey axis. */
318
+ export declare const makeupHueRotate: (c: Vec3, angle: number) => MVec3;
319
+ /** Expected flake coverage of the surface: density × sphere volume / cell volume (Delesse). */
320
+ export declare const makeupFlakeVolume: (density: number, cellScale: number) => number;
321
+ /**
322
+ * The mean glint `exp(s · (n_f·h − 1))` over flake normals drawn from a
323
+ * von Mises–Fisher distribution of concentration κ around `n` (closed form).
324
+ */
325
+ export declare const makeupFlakeGlintMean: (n: Vec3, h: Vec3, kappa: number, sharpness: number) => number;
326
+ export type MakeupFlakeParams = {
327
+ /** Flake diameter, canonical cm (`sparkleSize` mm / 10). */
328
+ diameter: number;
329
+ /** Cell edge / flake diameter (≥ 1). */
330
+ cellScale: number;
331
+ /** Probability that a cell holds a flake, 0..1. */
332
+ density: number;
333
+ /** Concentration of flake normals around the surface normal. */
334
+ kappa: number;
335
+ /** Glint lobe sharpness. */
336
+ sharpness: number;
337
+ /** Hue jitter amplitude, radians. */
338
+ hueJitter: number;
339
+ /** 1 = resolve flakes; 0 = always their smooth expected value. */
340
+ quality: number;
341
+ };
342
+ /** What the flakes add at one pixel (GLSL `MakeupFlakes`). */
343
+ export type MakeupFlakeSample = {
344
+ /** Fraction of the pixel covered by flakes. */
345
+ cover: number;
346
+ /** Coverage-weighted glint. */
347
+ glint: number;
348
+ /** The flake tint (hue-jittered when a flake is resolved). */
349
+ tint: MVec3;
350
+ /** 0 = expected value only, 1 = fully resolved. */
351
+ resolved: number;
352
+ };
353
+ /**
354
+ * Flakes hashed on 3D cells of the rest position, so they stick to the skin.
355
+ * A flake is a sphere inside its cell; the surface (the rest-space facet)
356
+ * slices it into a disc whose edge ramp integrates to exactly the disc's
357
+ * area. Flakes under `resolveFullPx` fade to their expected value, so the
358
+ * mean energy is the same at every pixel size (GLSL `makeupFlakes`).
359
+ */
360
+ export declare const makeupFlakes: (p: Vec3, facet: Vec3, n: Vec3, up: Vec3, h: Vec3, pixelCm: number, params: MakeupFlakeParams, tint: Vec3) => MakeupFlakeSample;
361
+ /** Region settings the finish reads (the shader's uniforms). */
362
+ export type MakeupFinishParams = {
363
+ finish: MakeupShadingFinish;
364
+ opacity: number;
365
+ coverage: number;
366
+ shine: number;
367
+ /** Linear flake colour; `null` derives it from the shade (`sparkleColor: ""`). */
368
+ sparkleColor: Vec3 | null;
369
+ sparkleDensity: number;
370
+ /** Flake diameter, mm. */
371
+ sparkleSize: number;
372
+ /** 1 on the high and medium tiers, 0 on low. */
373
+ sparkleQuality: number;
374
+ };
375
+ /** One layer of product, before the output operator (GLSL `MakeupLayer`). */
376
+ export type MakeupLayer = {
377
+ diffuse: MVec3;
378
+ amount: number;
379
+ highlight: MVec3;
380
+ };
381
+ /** Blinn-Phong lobe with a peak of 1, gated to the lit side (GLSL `makeupLobe`). */
382
+ export declare const makeupLobe: (n: Vec3, h: Vec3, l: Vec3, roughness: number) => number;
383
+ /** Schlick Fresnel. */
384
+ export declare const makeupFresnel: (nv: number, f0: number) => number;
385
+ /** The flake tint: `sparkleColor`, or `mix(white, shade, sparkleTintMix)`. */
386
+ export declare const makeupSparkleTint: (color: Vec3, sparkleColor: Vec3 | null) => MVec3;
387
+ /** The flake parameters a finish uses (GLSL builds the same inline). */
388
+ export declare const makeupFlakeParamsFor: (finish: "shimmer" | "glitter", params: Pick<MakeupFinishParams, "sparkleDensity" | "sparkleSize" | "sparkleQuality">) => MakeupFlakeParams;
389
+ /**
390
+ * One region's product at one fragment (GLSL `makeupFinish`). `mask` is the
391
+ * region's shape (0..1); the sample's `fade` applies on top. Pigment scales
392
+ * with `opacity`; gloss highlights and glitter flakes scale with the mask,
393
+ * so they keep their strength at low opacity, and fade out only below
394
+ * `maskTermsFullOpacity` (opacity 0 shows nothing).
395
+ */
396
+ export declare const makeupFinishLayer: (sample: MakeupSample, color: Vec3, mask: number, params: MakeupFinishParams) => MakeupLayer;
397
+ /**
398
+ * The output operator (GLSL `makeupOutput`): premultiplied
399
+ * `(amount · enc(D) + enc(base + H) − enc(base), amount)` with
400
+ * `base = mix(C, D, amount)`, drawn with `MAKEUP_BLENDING` (One,
401
+ * OneMinusSrcAlpha). `null` where the shader discards.
402
+ */
403
+ export declare const makeupOutput: (camera: Vec3, layer: MakeupLayer) => [number, number, number, number] | null;
404
+ /** Premultiplied-over blending of an output onto an encoded destination, clamped like a UNORM target. */
405
+ export declare const makeupComposite: (destination: Vec3, output: readonly [number, number, number, number] | null) => MVec3;
406
+ export {};
@@ -0,0 +1,86 @@
1
+ import { Vec3 } from './shading';
2
+ /**
3
+ * Analytic makeup shapes (FACE-1): soft tapered capsules in the canonical
4
+ * head frame (cm, +X toward landmark 263, +Y up, +Z out of the face),
5
+ * evaluated per fragment on the interpolated rest position, so nothing is
6
+ * baked. A blob is a capsule whose ends meet; an elongated or tapered one
7
+ * gives anisotropic, Gaussian-like blush, contour lines and highlight blobs.
8
+ *
9
+ * Shapes are authored on the canonical −X half (landmark 33's side) and the
10
+ * rest point is folded onto it (`x → −|x|`), so every shape is mirror-
11
+ * symmetric; which sides show is the `uSide` weight (the person's own sides).
12
+ * This file is the TypeScript mirror of `MAKEUP_GLSL.shapes` (tests, region
13
+ * triangle selection) plus the CPU helpers that place capsules on the face.
14
+ */
15
+ /** Most capsules one region draws (`uShapeStart` / `uShapeEnd` / `uShapeWeight` length). */
16
+ export declare const MAKEUP_SHAPE_MAX = 8;
17
+ /** Softness floor of the edge profile: `softness` 0 is still antialiased over ±5 % of the radius. */
18
+ export declare const MAKEUP_SHAPE_SOFTNESS_MIN = 0.05;
19
+ /** A tapered capsule: segment `a → b` (cm) with radius `ra` at `a` and `rb` at `b`, scaled by `weight`. */
20
+ export type MakeupCapsule = {
21
+ a: Vec3;
22
+ b: Vec3;
23
+ ra: number;
24
+ rb: number;
25
+ /** 0..1: the capsule's strength in the union. */
26
+ weight: number;
27
+ };
28
+ /**
29
+ * Capsules packed as the shader reads them: `start` / `end` hold
30
+ * `[x, y, z, radius]` per capsule, `weight` one value per capsule, `count`
31
+ * the capsules in use. The arrays keep their identity (uniform values).
32
+ */
33
+ export type MakeupShapePrimitives = {
34
+ count: number;
35
+ start: Float32Array;
36
+ end: Float32Array;
37
+ weight: Float32Array;
38
+ };
39
+ export declare const createMakeupShapePrimitives: () => MakeupShapePrimitives;
40
+ /** Packs capsules into `out` (unused slots zeroed). More than `MAKEUP_SHAPE_MAX` throws. */
41
+ export declare const packMakeupShapePrimitives: (capsules: readonly MakeupCapsule[], out?: MakeupShapePrimitives) => MakeupShapePrimitives;
42
+ /**
43
+ * The edge profile at `x` = distance / radius: 1 inside, 0.5 on the radius,
44
+ * 0 from `1 + softness` out (a C¹ bump with compact support, so the shape
45
+ * ends exactly and triangles outside it can be skipped).
46
+ */
47
+ export declare const makeupShapeProfile: (x: number, softness: number) => number;
48
+ /**
49
+ * Distance (cm) from `p` to the capsule's segment and the capsule's radius at
50
+ * the closest point, written to `out` as `[distance, radius]`.
51
+ */
52
+ export declare const makeupCapsuleDistance: (p: Vec3, a: Vec3, b: Vec3, ra: number, rb: number, out?: [number, number]) => [number, number];
53
+ /**
54
+ * The shape mask at a rest point (GLSL `makeupShapeMask`): the point folded
55
+ * onto the −X half, each capsule's profile times its weight, combined as a
56
+ * soft union `1 − Π(1 − wᵢ·mᵢ)` (overlaps blend, no creases).
57
+ */
58
+ export declare const evaluateMakeupShapeMask: (primitives: MakeupShapePrimitives, softness: number, rest: Vec3) => number;
59
+ /**
60
+ * The eye guard (GLSL `makeupEyeGuard`): keeps a shape off the lash line and
61
+ * lids by the `eyeRing` attribute (edge hops from the lash ring: 0 on the
62
+ * lash line, 3 on the under-eye row and the brow's lower edge). `[start,
63
+ * full]`; `start >= full` turns it off.
64
+ */
65
+ export declare const makeupEyeGuard: (eyeRing: number, guard: readonly [number, number]) => number;
66
+ /**
67
+ * The lip guard (GLSL `makeupLipGuard`): fades a shape to 0 on the outer lip
68
+ * line by the `lipEdge` attribute (0 on the outer lip ring, 1 one triangle
69
+ * row off the lips), so a shape the lips' own triangles leave out never ends
70
+ * at a hard edge there. `guard` is the `lipEdge` where the shape is full;
71
+ * 0 turns it off.
72
+ */
73
+ export declare const makeupLipGuard: (lipEdge: number, guard: number) => number;
74
+ /**
75
+ * The face surface under a frontal point: `(x, y)` in canonical cm projected
76
+ * along Z onto the front-most atlas triangle, so a shape placed by its
77
+ * frontal outline sits on the skin. Outside the face's frontal outline it
78
+ * takes the z of the nearest landmark. Writes and returns `out`.
79
+ */
80
+ export declare const faceAtlasSurfacePoint: (x: number, y: number, out?: [number, number, number]) => [number, number, number];
81
+ /**
82
+ * Triangle indices (into `FACE_ATLAS_TRIANGLES`, sorted) of `from` with at
83
+ * least one corner where `covered(vertex)` holds: the triangles a region's
84
+ * mesh needs to draw everything its shapes can reach.
85
+ */
86
+ export declare const selectFaceAtlasTriangles: (from: ArrayLike<number>, covered: (vertex: number) => boolean) => Uint16Array;
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Sides on the face atlas (#298): every `side` setting means the PERSON'S
3
+ * OWN side on every feed. Static atlas data is keyed by canonical axis
4
+ * (`negX` / `posX`: landmark 33's half / landmark 263's half); a feed turns
5
+ * the person's side into a canonical half with `personLeftSign(mirrored)`:
6
+ * +1 (unmirrored: rear camera, image, video) puts the person's left on +X,
7
+ * −1 (the mirrored webcam) puts it on −X. Shaders do the same per fragment
8
+ * (`MAKEUP_GLSL.common`: `uSide` mixed by `vMakeupRest.x * uPersonLeftSign`).
9
+ */
10
+ /** Which of the person's own sides a sided layer paints. */
11
+ export type FaceAtlasSide = "both" | "left" | "right";
12
+ /**
13
+ * `uSide`: `[leftOn, rightOn]` for a side setting, in the person's own sides
14
+ * (the shader turns them into canonical halves with `uPersonLeftSign`).
15
+ */
16
+ export declare const makeupSideWeights: (side: FaceAtlasSide) => readonly [left: number, right: number];
17
+ /**
18
+ * The canonical halves a side setting paints on a feed: `{ negX, posX }`
19
+ * weights (1 painted, 0 not). On an unmirrored feed the person's left is
20
+ * +X; on the mirrored webcam it is −X.
21
+ */
22
+ export declare const faceAtlasSideHalves: (side: FaceAtlasSide, mirrored: boolean) => {
23
+ negX: number;
24
+ posX: number;
25
+ };
26
+ /**
27
+ * Whether art painted on the face atlas as on an unmirrored photo (image-left
28
+ * = the person's right) samples `(1 − u, v)` on this feed: only on a mirrored
29
+ * feed, so each side of the art lands on the person's own side. The atlas is
30
+ * symmetric to 0.001, so the flip is exact (`mirrorFaceAtlasUv`).
31
+ */
32
+ export declare const faceAtlasDesignFlipU: (mirrored: boolean) => boolean;
33
+ /**
34
+ * The blink blendshape of each canonical half. MediaPipe names blendshapes
35
+ * as the image shows them, so `eyeBlinkLeft` is landmark 263's eye (+X) on
36
+ * every feed: blink gating stays on mesh sides, never on the person's side.
37
+ */
38
+ export declare const FACE_ATLAS_BLINK_MORPHS: Readonly<{
39
+ readonly negX: "eyeBlinkRight";
40
+ readonly posX: "eyeBlinkLeft";
41
+ }>;
@@ -0,0 +1,35 @@
1
+ import { DataTexture } from 'three';
2
+ import { FaceAtlasMask } from './masks';
3
+ /**
4
+ * About how many cm of face one unit of atlas UV spans: the median over the
5
+ * skin's edges (3D length over UV length; p10 21, p90 30, larger toward the
6
+ * sides of the face, which the atlas foreshortens). For sizing blurs and
7
+ * erosions in cm.
8
+ */
9
+ export declare const FACE_ATLAS_CM_PER_UV = 23.5;
10
+ /** How the skin mask is cut back from the features it borders. */
11
+ export declare const FACE_SKIN_MASK: {
12
+ /** The region painted: the face without lips, brows, eye and mouth fills and nostrils. */
13
+ readonly region: "skin";
14
+ /**
15
+ * Erosion, cm: the mask is 0 on and just inside the region's edge (the
16
+ * lash line, the brows, the lips, the face oval) and reaches 1 about this
17
+ * far inside it, so lashes, liner, brow hairs, lip colour and hair at the
18
+ * hairline stay out of skin statistics.
19
+ */
20
+ readonly erodeCm: 0.5;
21
+ };
22
+ /**
23
+ * The skin of the face atlas as a coverage mask, cut back from its edges by
24
+ * `FACE_SKIN_MASK.erodeCm`: 0 outside, on and just inside the edge of the
25
+ * `skin` region, rising smoothly to 1 inside. `origin` as in
26
+ * `createFaceAtlasMask` (default `"top"`, an image's row order).
27
+ */
28
+ export declare const createFaceSkinMask: (size?: number, origin?: "top" | "bottom") => FaceAtlasMask;
29
+ /**
30
+ * The eroded skin mask (`createFaceSkinMask`) as a single-channel
31
+ * `THREE.DataTexture` sampled at atlas UVs (read `.r`; rows stored from
32
+ * `v = 0`). One shared texture per size, made on first use: never dispose it
33
+ * (16 KB at 128²).
34
+ */
35
+ export declare const getFaceSkinMaskTexture: (size?: number) => DataTexture;