@vincentt-xr/sdk 2.0.0-alpha.0 → 2.0.0-alpha.2

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 (362) hide show
  1. package/GROUNDING.md +1813 -27
  2. package/dist/{DebuggerUI-CEfdddkZ.cjs → DebuggerUI-B45_Gb9d.cjs} +1 -1
  3. package/dist/{DebuggerUI-Dgop6Q6o.js → DebuggerUI-Cq28c18s.js} +1 -1
  4. package/dist/FaceMeshRenderer-6t8OsQhK.js +1195 -0
  5. package/dist/FaceMeshRenderer-lQLhYIW-.cjs +155 -0
  6. package/dist/FaceRetouch-CDrL0pXg.js +551 -0
  7. package/dist/FaceRetouch-DtNl8-4e.cjs +134 -0
  8. package/dist/audio/AudioEngine.d.ts +3 -1
  9. package/dist/audio/AudioPlayer.d.ts +29 -0
  10. package/dist/audio/AudioPlayerLogic.d.ts +4 -0
  11. package/dist/audio/index.d.ts +2 -0
  12. package/dist/components/Axes/index.d.ts +6 -0
  13. package/dist/components/FaceMesh/FaceMeshRenderer.d.ts +17 -0
  14. package/dist/components/FaceMesh/canonical/CanonicalFaceMeshRenderer.d.ts +22 -1
  15. package/dist/components/FaceMesh/canonical/FaceMeshMaterial.d.ts +25 -0
  16. package/dist/components/FaceMesh/canonical/assets.d.ts +3 -0
  17. package/dist/components/FaceMesh/canonical/geometryGroups.d.ts +9 -0
  18. package/dist/components/FaceMesh/canonical/parseCanonicalFaceModel.d.ts +2 -0
  19. package/dist/components/FaceMesh/canonical/shaders.d.ts +2 -0
  20. package/dist/components/FaceMesh/deform.d.ts +3 -0
  21. package/dist/components/FaceMesh/index.d.ts +5 -0
  22. package/dist/components/FaceMesh/material/defaults.d.ts +74 -0
  23. package/dist/components/FaceMesh/material/index.d.ts +1 -0
  24. package/dist/components/FaceMesh/material/options.d.ts +5 -1
  25. package/dist/components/FaceMesh/material/support.d.ts +7 -2
  26. package/dist/components/FaceMesh/material/textures.d.ts +4 -0
  27. package/dist/components/FaceMesh/material/types.d.ts +4 -2
  28. package/dist/components/FaceRetouch/Background.d.ts +9 -5
  29. package/dist/components/FaceRetouch/FaceRetouch.d.ts +47 -0
  30. package/dist/components/FaceRetouch/index.d.ts +2 -6
  31. package/dist/components/FaceRetouch/landmarkMask.d.ts +4 -6
  32. package/dist/components/FaceRetouch/useFaceRetouchMask.d.ts +4 -7
  33. package/dist/components/FaceTracker/index.d.ts +5 -3
  34. package/dist/components/FaceWarp3D/FaceWarp3DHead.d.ts +15 -0
  35. package/dist/components/FaceWarp3D/defaults.d.ts +37 -0
  36. package/dist/components/FaceWarp3D/index.d.ts +3 -0
  37. package/dist/components/FaceWarp3D/warp.d.ts +13 -0
  38. package/dist/components/HandJoints2D/index.d.ts +6 -0
  39. package/dist/components/HandTracker/index.d.ts +2 -2
  40. package/dist/components/HandTracking2D/HandVisual.d.ts +12 -0
  41. package/dist/components/HandTracking2D/index.d.ts +5 -0
  42. package/dist/components/HandTracking2DController/index.d.ts +5 -0
  43. package/dist/components/HandTracking3D/index.d.ts +6 -0
  44. package/dist/components/LightObject/index.d.ts +20 -0
  45. package/dist/components/LookAt/index.d.ts +23 -0
  46. package/dist/components/MeshRenderer/index.d.ts +58 -0
  47. package/dist/components/PerspectiveCamera/index.d.ts +2 -8
  48. package/dist/components/PinToMesh/index.d.ts +47 -0
  49. package/dist/components/RenderGroupLayer/index.d.ts +6 -0
  50. package/dist/components/SceneObjectRenderer/index.d.ts +16 -0
  51. package/dist/components/Screen2D/ScreenTransformFrame.d.ts +11 -0
  52. package/dist/components/Screen2D/ScreenTransformHelpers.d.ts +19 -0
  53. package/dist/components/Screen2D/ScreenTransformInteraction.d.ts +18 -0
  54. package/dist/components/Screen2D/index.d.ts +5 -0
  55. package/dist/components/ScreenGlass/defaults.d.ts +3 -0
  56. package/dist/components/ScreenGlass/index.d.ts +5 -0
  57. package/dist/components/ScreenGlass/shaders.d.ts +2 -0
  58. package/dist/components/ScreenGlass/types.d.ts +10 -0
  59. package/dist/components/ScreenGradient/defaults.d.ts +5 -0
  60. package/dist/components/ScreenGradient/index.d.ts +5 -0
  61. package/dist/components/ScreenGradient/shaders.d.ts +2 -0
  62. package/dist/components/ScreenGradient/types.d.ts +19 -0
  63. package/dist/components/ScreenImage/ScreenImage.d.ts +4 -0
  64. package/dist/components/ScreenImage/components/DynamicTextureSync.d.ts +9 -0
  65. package/dist/components/ScreenImage/components/ScreenImageBody.d.ts +9 -0
  66. package/dist/components/ScreenImage/components/ScreenImageFrame.d.ts +9 -0
  67. package/dist/components/ScreenImage/components/ScreenImageTransformFrame.d.ts +9 -0
  68. package/dist/components/ScreenImage/fit.d.ts +52 -0
  69. package/dist/components/ScreenImage/index.d.ts +8 -0
  70. package/dist/components/ScreenImage/materials/ScreenImageBlendMaterial.d.ts +9 -0
  71. package/dist/components/ScreenImage/materials/ScreenImageMatcap.d.ts +3 -0
  72. package/dist/components/ScreenImage/source.d.ts +16 -0
  73. package/dist/components/ScreenImage/types.d.ts +37 -0
  74. package/dist/components/ScreenImage/utils/ScreenImageConstants.d.ts +9 -0
  75. package/dist/components/ScreenImage/utils/ScreenImageHelpers.d.ts +4 -0
  76. package/dist/components/ScreenShape/geometry.d.ts +5 -0
  77. package/dist/components/ScreenShape/index.d.ts +5 -0
  78. package/dist/components/ScreenShape/types.d.ts +41 -0
  79. package/dist/components/ScreenSpaceUI/ScreenTransformGuide.d.ts +15 -0
  80. package/dist/components/ScreenSpaceUI/ScreenTransformOverlayGuide.d.ts +9 -0
  81. package/dist/components/ScreenSpaceUI/index.d.ts +2 -0
  82. package/dist/components/ScreenText/components/ScreenTextBody.d.ts +2 -0
  83. package/dist/components/ScreenText/components/ScreenTextTransformFrame.d.ts +9 -0
  84. package/dist/components/ScreenText/constants.d.ts +5 -0
  85. package/dist/components/ScreenText/index.d.ts +6 -0
  86. package/dist/components/ScreenText/types.d.ts +31 -0
  87. package/dist/components/ScreenText/utils/ScreenTextHelpers.d.ts +14 -0
  88. package/dist/components/ScreenText/utils/ScreenTextMappings.d.ts +17 -0
  89. package/dist/components/SequentialRenderPasses/index.d.ts +6 -0
  90. package/dist/components/TextLabel/TextLabel.d.ts +5 -0
  91. package/dist/components/TextLabel/alignment.d.ts +4 -0
  92. package/dist/components/TextLabel/bend.d.ts +9 -0
  93. package/dist/components/TextLabel/canvas/buildTextLabelTexture.d.ts +4 -0
  94. package/dist/components/TextLabel/canvas/canvasTypography.d.ts +13 -0
  95. package/dist/components/TextLabel/canvas/drawBackground.d.ts +21 -0
  96. package/dist/components/TextLabel/canvas/drawEffects.d.ts +34 -0
  97. package/dist/components/TextLabel/canvas/drawText.d.ts +19 -0
  98. package/dist/components/TextLabel/components/TextLabelMesh.d.ts +13 -0
  99. package/dist/components/TextLabel/constants.d.ts +2 -0
  100. package/dist/components/TextLabel/hooks/useTextLabelTexture.d.ts +7 -0
  101. package/dist/components/TextLabel/index.d.ts +2 -62
  102. package/dist/components/TextLabel/layout/measurement.d.ts +8 -0
  103. package/dist/components/TextLabel/layout/resolveTextLayout.d.ts +25 -0
  104. package/dist/components/TextLabel/layout/wrapText.d.ts +6 -0
  105. package/dist/components/TextLabel/types.d.ts +227 -0
  106. package/dist/components/TrackingAnchor/index.d.ts +18 -2
  107. package/dist/components/Transform3D/index.d.ts +30 -0
  108. package/dist/components/XRMediaSurface/index.d.ts +6 -6
  109. package/dist/components/XRScene/index.d.ts +14 -3
  110. package/dist/components/XRViewport/XRViewport.d.ts +11 -0
  111. package/dist/components/XRViewport/components/HiddenMedia.d.ts +7 -0
  112. package/dist/components/XRViewport/components/MediaAssetPicker.d.ts +8 -0
  113. package/dist/components/XRViewport/components/MediaControlStack.d.ts +13 -0
  114. package/dist/components/XRViewport/components/XRViewportLayers.d.ts +30 -0
  115. package/dist/components/XRViewport/constants.d.ts +24 -0
  116. package/dist/components/XRViewport/contexts.d.ts +6 -0
  117. package/dist/components/XRViewport/hooks/useViewportExternalFaces.d.ts +13 -0
  118. package/dist/components/XRViewport/hooks/useViewportMediaSource.d.ts +16 -0
  119. package/dist/components/XRViewport/hooks/useViewportMediaTexture.d.ts +10 -0
  120. package/dist/components/XRViewport/hooks/useViewportPipeline.d.ts +41 -0
  121. package/dist/components/XRViewport/hooks/useViewportRenderState.d.ts +47 -0
  122. package/dist/components/XRViewport/index.d.ts +3 -101
  123. package/dist/components/XRViewport/layout.d.ts +16 -0
  124. package/dist/components/XRViewport/slots.d.ts +16 -0
  125. package/dist/components/XRViewport/types.d.ts +89 -0
  126. package/dist/components/XRViewport/useViewportSize.d.ts +3 -0
  127. package/dist/components/index.d.ts +19 -0
  128. package/dist/contexts-BKvTIayr.cjs +1 -0
  129. package/dist/contexts-Bk5zz_VR.js +214 -0
  130. package/dist/debug-ui/component-editor/index.d.ts +19 -0
  131. package/dist/debug-ui/default-setting/index.d.ts +37 -0
  132. package/dist/debug-ui/default-setting.cjs +21 -0
  133. package/dist/debug-ui/default-setting.js +777 -0
  134. package/dist/debug-ui/face-mesh-renderer-settings/index.d.ts +8 -0
  135. package/dist/debug-ui/face-retouch/index.d.ts +11 -0
  136. package/dist/debug-ui/face-warp-3d/index.d.ts +6 -0
  137. package/dist/debug-ui/hand-joints-2d/index.d.ts +6 -0
  138. package/dist/debug-ui/hand-tracking-2d/index.d.ts +6 -0
  139. package/dist/debug-ui/hand-tracking-2d-controller/index.d.ts +6 -0
  140. package/dist/debug-ui/hand-tracking-3d/index.d.ts +6 -0
  141. package/dist/debug-ui/hierarchy-panel/index.d.ts +29 -0
  142. package/dist/debug-ui/index.d.ts +46 -0
  143. package/dist/debug-ui/layer-panel/index.d.ts +18 -0
  144. package/dist/debug-ui/media-source/MediaSourceSwitcher.d.ts +10 -0
  145. package/dist/debug-ui/media-source/index.d.ts +6 -0
  146. package/dist/debug-ui/media-source/media-preset.d.ts +9 -0
  147. package/dist/debug-ui/media-source/session.d.ts +12 -0
  148. package/dist/debug-ui/media-source.cjs +1 -0
  149. package/dist/debug-ui/media-source.js +9 -0
  150. package/dist/debug-ui/mesh-renderer-settings/index.d.ts +6 -0
  151. package/dist/debug-ui/object-inspector-panel/index.d.ts +25 -0
  152. package/dist/debug-ui/pin-to-mesh-settings/index.d.ts +10 -0
  153. package/dist/debug-ui/scene-editor/context.d.ts +38 -0
  154. package/dist/debug-ui/scene-editor/hierarchy-panel.d.ts +9 -0
  155. package/dist/debug-ui/scene-editor/index.d.ts +11 -0
  156. package/dist/debug-ui/scene-editor/inspector-panel.d.ts +7 -0
  157. package/dist/debug-ui/scene-editor/store-utils.d.ts +2 -0
  158. package/dist/debug-ui/scene-editor/viewport-toolbar.d.ts +4 -0
  159. package/dist/debug-ui/scene-editor/viewport.d.ts +21 -0
  160. package/dist/debug-ui/screen-glass-settings/index.d.ts +6 -0
  161. package/dist/debug-ui/screen-gradient-settings/GradientStopsEditor.d.ts +5 -0
  162. package/dist/debug-ui/screen-gradient-settings/index.d.ts +6 -0
  163. package/dist/debug-ui/screen-gradient-settings/styles.d.ts +3 -0
  164. package/dist/debug-ui/screen-image-settings/index.d.ts +9 -0
  165. package/dist/debug-ui/screen-shape-settings/index.d.ts +6 -0
  166. package/dist/debug-ui/screen-text-settings/NumberField.d.ts +9 -0
  167. package/dist/debug-ui/screen-text-settings/ScreenTextSettingsPanel.d.ts +3 -0
  168. package/dist/debug-ui/screen-text-settings/controls/NestedSection.d.ts +7 -0
  169. package/dist/debug-ui/screen-text-settings/controls/Section.d.ts +8 -0
  170. package/dist/debug-ui/screen-text-settings/controls/icons.d.ts +4 -0
  171. package/dist/debug-ui/screen-text-settings/index.d.ts +2 -0
  172. package/dist/debug-ui/screen-text-settings/sections/BackgroundSection.d.ts +8 -0
  173. package/dist/debug-ui/screen-text-settings/sections/ContentSection.d.ts +5 -0
  174. package/dist/debug-ui/screen-text-settings/sections/EffectsSection.d.ts +25 -0
  175. package/dist/debug-ui/screen-text-settings/sections/StyleSection.d.ts +5 -0
  176. package/dist/debug-ui/screen-text-settings/sections/TransformSection.d.ts +5 -0
  177. package/dist/debug-ui/screen-text-settings/sections/background/BackgroundFillControls.d.ts +2 -0
  178. package/dist/debug-ui/screen-text-settings/sections/background/BackgroundSizeControls.d.ts +2 -0
  179. package/dist/debug-ui/screen-text-settings/sections/background/BackgroundStrokeControls.d.ts +2 -0
  180. package/dist/debug-ui/screen-text-settings/sections/background/types.d.ts +7 -0
  181. package/dist/debug-ui/screen-text-settings/sections/effects/BendEffectSection.d.ts +4 -0
  182. package/dist/debug-ui/screen-text-settings/sections/effects/EffectChrome.d.ts +21 -0
  183. package/dist/debug-ui/screen-text-settings/sections/effects/GlowEffectSection.d.ts +4 -0
  184. package/dist/debug-ui/screen-text-settings/sections/effects/InnerShadowEffectSection.d.ts +4 -0
  185. package/dist/debug-ui/screen-text-settings/sections/effects/OutlineEffectSection.d.ts +4 -0
  186. package/dist/debug-ui/screen-text-settings/sections/effects/ShadowEffectSection.d.ts +4 -0
  187. package/dist/debug-ui/screen-text-settings/sections/effects/types.d.ts +14 -0
  188. package/dist/debug-ui/screen-text-settings/settings.d.ts +90 -0
  189. package/dist/debug-ui/screen-text-settings/styles.d.ts +26 -0
  190. package/dist/debug-ui/screen-text-settings/transform.d.ts +6 -0
  191. package/dist/debug-ui/screen-text-settings/types.d.ts +9 -0
  192. package/dist/debug-ui/settings-panel/index.d.ts +38 -0
  193. package/dist/debug-ui/shared/MaterialSection.d.ts +13 -0
  194. package/dist/debug-ui/shared/ScreenTransformSection.d.ts +32 -0
  195. package/dist/debug-ui/transform-3d-settings/index.d.ts +11 -0
  196. package/dist/debug-ui.cjs +10 -0
  197. package/dist/debug-ui.js +8861 -0
  198. package/dist/drawNormalizedCrop-B-7zU-Xw.cjs +1 -0
  199. package/dist/drawNormalizedCrop-CRdIDyl1.js +44 -0
  200. package/dist/entries/all.d.ts +1 -0
  201. package/dist/entries/core.d.ts +55 -4
  202. package/dist/entries/face-effects.d.ts +12 -8
  203. package/dist/entries/internal.d.ts +1 -1
  204. package/dist/entries/low-level.d.ts +21 -4
  205. package/dist/entries/scene-object.d.ts +10 -0
  206. package/dist/entries/tracking.d.ts +25 -2
  207. package/dist/face-action/index.d.ts +34 -0
  208. package/dist/face-attribute-expression/index.d.ts +10 -0
  209. package/dist/face-effects.cjs +1 -252
  210. package/dist/face-effects.js +1404 -2613
  211. package/dist/face-info/blendshapes.d.ts +3 -0
  212. package/dist/face-info/derive.d.ts +8 -0
  213. package/dist/face-info/drawFaceCrop.d.ts +10 -0
  214. package/dist/face-info/getFaceInfo.d.ts +8 -0
  215. package/dist/face-info/index.d.ts +8 -0
  216. package/dist/face-info/landmarks.d.ts +21 -0
  217. package/dist/face-info/types.d.ts +52 -0
  218. package/dist/getFaceInfo-CyPAKh3h.cjs +1 -0
  219. package/dist/getFaceInfo-hUKMLFcr.js +118 -0
  220. package/dist/hand/handJoints2d.d.ts +49 -0
  221. package/dist/hand/handTracking2d.d.ts +33 -0
  222. package/dist/hand/handTracking2dController.d.ts +65 -0
  223. package/dist/hand/handTracking3d.d.ts +52 -0
  224. package/dist/hooks/faceResults.d.ts +1 -1
  225. package/dist/hooks/useCalibrationFaceTracker.d.ts +1 -1
  226. package/dist/hooks/useFaceAction.d.ts +3 -0
  227. package/dist/hooks/useFaceAttributeExpression.d.ts +16 -0
  228. package/dist/hooks/useFaceDetection.d.ts +18 -0
  229. package/dist/hooks/useFaceInfo.d.ts +7 -0
  230. package/dist/hooks/useFaceInfos.d.ts +15 -0
  231. package/dist/hooks/useFaceResultReader.d.ts +10 -0
  232. package/dist/hooks/useFrameCapture.d.ts +18 -0
  233. package/dist/hooks/useMediaRecorder.d.ts +14 -2
  234. package/dist/hooks/useOwnedTexture.d.ts +6 -0
  235. package/dist/hooks/useTrackerContext.d.ts +2 -2
  236. package/dist/hooks/useXRSession/facade.d.ts +3 -0
  237. package/dist/hooks/useXRSession/registry.d.ts +9 -0
  238. package/dist/index-82aENaRq.cjs +1 -0
  239. package/dist/{index-BD-JWMjE.js → index-BgQAX8rs.js} +198 -134
  240. package/dist/index-CEc1CAmB.cjs +1 -0
  241. package/dist/index-CTHeBQOs.js +178 -0
  242. package/dist/index-D4bLzBr6.cjs +1 -0
  243. package/dist/index-DSpzjuqd.cjs +1 -0
  244. package/dist/index-Di70KWuY.js +2049 -0
  245. package/dist/index-DzEzkBIH.cjs +17 -0
  246. package/dist/{index-CYMj26Ej.js → index-JygePOwo.js} +565 -498
  247. package/dist/index-UC0Ux38E.js +111 -0
  248. package/dist/{internal-KOKJDxCG.js → internal-DuMPpcbp.js} +86 -80
  249. package/dist/internal-i2JkM85N.cjs +1 -0
  250. package/dist/internal.cjs +1 -1
  251. package/dist/internal.js +2 -2
  252. package/dist/low-level.cjs +1 -1
  253. package/dist/low-level.js +959 -632
  254. package/dist/main.cjs +1 -1
  255. package/dist/main.js +556 -455
  256. package/dist/material/MaterialFill.d.ts +20 -0
  257. package/dist/material/MeshMaterial.d.ts +14 -0
  258. package/dist/material/index.d.ts +2 -0
  259. package/dist/models/Body/index.d.ts +1 -1
  260. package/dist/models/Face/index.d.ts +1 -0
  261. package/dist/models/Face/rotation.d.ts +3 -0
  262. package/dist/models/Hand/HandTracking.d.ts +2 -0
  263. package/dist/render/layerStack.d.ts +29 -0
  264. package/dist/render/renderGroups.d.ts +47 -0
  265. package/dist/render/renderPasses.d.ts +18 -0
  266. package/dist/renderGroups-C9QJrAXu.js +152 -0
  267. package/dist/renderGroups-Dvm1J4lW.cjs +1 -0
  268. package/dist/renderLayers-lDtL0_43.cjs +1 -0
  269. package/dist/renderLayers-zrK2pv5O.js +13 -0
  270. package/dist/renderPasses-CT5iBwtg.cjs +21 -0
  271. package/dist/renderPasses-CjgG_6kQ.js +1500 -0
  272. package/dist/scene-object/index.d.ts +146 -0
  273. package/dist/scene-object/runtimeRegistry.d.ts +14 -0
  274. package/dist/scene-object.cjs +1 -0
  275. package/dist/scene-object.js +40 -0
  276. package/dist/screen-image/screenImagePresets.d.ts +13 -0
  277. package/dist/screen-image/screenImageSettings.d.ts +57 -0
  278. package/dist/screen-text/screenTextPresets.d.ts +6 -0
  279. package/dist/screen-text/screenTextSettings.d.ts +147 -0
  280. package/dist/screen2d/coordinates.d.ts +87 -0
  281. package/dist/screen2d/index.d.ts +7 -0
  282. package/dist/screen2d/material-runtime.d.ts +32 -0
  283. package/dist/screen2d/screenTransform.d.ts +47 -0
  284. package/dist/screen2d/smoothing.d.ts +5 -0
  285. package/dist/screen2d/texture.d.ts +10 -0
  286. package/dist/screen2d/transform.d.ts +25 -0
  287. package/dist/screen2d/types.d.ts +90 -0
  288. package/dist/{selectors-Bub0o3qy.cjs → selectors-2QvO5RYY.cjs} +1 -1
  289. package/dist/{selectors-BHO6TnoC.js → selectors-Dw3C-gSk.js} +5 -5
  290. package/dist/services/MetricsCollector/index.d.ts +7 -1
  291. package/dist/services/MetricsCollector/utils.d.ts +1 -1
  292. package/dist/session-BChR4TgK.cjs +31 -0
  293. package/dist/session-C1StwN0f.js +363 -0
  294. package/dist/texture/animatedTexture.d.ts +61 -0
  295. package/dist/texture/animationMath.d.ts +8 -0
  296. package/dist/texture/sourceResolver.d.ts +30 -0
  297. package/dist/tracking.cjs +1 -1
  298. package/dist/tracking.js +582 -298
  299. package/dist/types/face.d.ts +1 -13
  300. package/dist/types/hand-tracking.d.ts +8 -0
  301. package/dist/types/index.d.ts +0 -1
  302. package/dist/types/nodes.d.ts +4 -1
  303. package/dist/types/session.d.ts +2 -0
  304. package/dist/types/tracking.d.ts +8 -2
  305. package/dist/types/util-types.d.ts +1 -1
  306. package/dist/useFaceInfo-C-WfMlYp.cjs +1 -0
  307. package/dist/useFaceInfo-CwsHZedC.js +62 -0
  308. package/dist/useFaceResults-CkFc1egZ.js +19 -0
  309. package/dist/useFaceResults-VcFdOUFV.cjs +1 -0
  310. package/dist/utils/drawNormalizedCrop.d.ts +22 -0
  311. package/dist/utils/integrity.d.ts +4 -25
  312. package/dist/utils/landmarkBounds.d.ts +1 -1
  313. package/dist/utils/logger.d.ts +2 -2
  314. package/dist/x-Co8jPhP0.js +127 -0
  315. package/dist/x-KC8E4Gaj.cjs +41 -0
  316. package/docs/MIGRATION_GUIDE.md +589 -0
  317. package/docs/SDK_DOCUMENTATION.md +1155 -0
  318. package/docs/api/audio.mdx +36 -0
  319. package/docs/api/behavior-components.mdx +164 -0
  320. package/docs/api/capture-recording.mdx +103 -0
  321. package/docs/api/debug-ui-scene-editor.mdx +249 -0
  322. package/docs/api/face-actions.mdx +104 -0
  323. package/docs/api/face-attribute-expression.mdx +87 -0
  324. package/docs/api/face-binding-anchors.mdx +53 -0
  325. package/docs/api/face-effects.mdx +19 -0
  326. package/docs/api/face-info.mdx +112 -0
  327. package/docs/api/face-mesh.mdx +98 -0
  328. package/docs/api/face-painting.mdx +33 -0
  329. package/docs/api/face-retouching.mdx +73 -0
  330. package/docs/api/material-render-state.mdx +132 -0
  331. package/docs/api/runtime-3d.mdx +311 -0
  332. package/docs/api/scene-object-store.mdx +213 -0
  333. package/docs/api/screen-image.mdx +41 -0
  334. package/docs/api/screen-shape.mdx +64 -0
  335. package/docs/api/screen-space-coordinates.mdx +41 -0
  336. package/docs/api/screen-text.mdx +39 -0
  337. package/docs/api/texture-sources.mdx +55 -0
  338. package/docs/api/trackers.mdx +46 -0
  339. package/docs/docs.json +70 -0
  340. package/docs/examples/scene-object-recipes.mdx +194 -0
  341. package/docs/guides/harness-debug-ui.mdx +139 -0
  342. package/docs/inspector/hierarchy-panel.mdx +51 -0
  343. package/docs/inspector/object-inspector-panel.mdx +51 -0
  344. package/docs/introduction.mdx +121 -0
  345. package/docs/scene-objects/overview.mdx +127 -0
  346. package/docs/scene-objects/render-groups.mdx +77 -0
  347. package/docs/scene-objects/runtime-rendering.mdx +75 -0
  348. package/docs/texture-api-consumer.md +58 -0
  349. package/package.json +55 -7
  350. package/dist/components/FaceRetouch/retouchRegions.d.ts +0 -23
  351. package/dist/components/FaceRetouch/useFaceRetouchRegions.d.ts +0 -12
  352. package/dist/index-B5J4gzn2.cjs +0 -1
  353. package/dist/index-BVBVg96G.cjs +0 -1
  354. package/dist/index-DtwHElmG.js +0 -157
  355. package/dist/index-PtFmD6B8.cjs +0 -1
  356. package/dist/internal-DH5d1Xnq.cjs +0 -1
  357. package/dist/modules/XRClient/index.d.ts +0 -9
  358. package/dist/modules/index.d.ts +0 -1
  359. package/dist/services/ApiService.d.ts +0 -12
  360. package/dist/types/client.d.ts +0 -3
  361. package/dist/useFaceResults-cpsSmKKc.js +0 -81
  362. package/dist/useFaceResults-hVUJYSEY.cjs +0 -1
@@ -0,0 +1,155 @@
1
+ "use strict";const u=require("react/jsx-runtime"),ee=require("@react-three/fiber"),i=require("react"),J=require("three"),q=require("./index-D4bLzBr6.cjs"),je=require("./selectors-2QvO5RYY.cjs"),_e=require("./index-82aENaRq.cjs"),Xt=require("@react-three/drei");function Wt(e){const n=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const t in e)if(t!=="default"){const r=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,r.get?r:{enumerable:!0,get:()=>e[t]})}}return n.default=e,Object.freeze(n)}const y=Wt(J),ue=8,V={type:"linear",stops:[{offset:0,color:"#38bdf8"},{offset:1,color:"#a78bfa"}],angle:0,center:{x:.5,y:.5},radius:.5},Yt=e=>{const n=e.slice(0,ue).map(t=>({...t,offset:J.MathUtils.clamp(t.offset,0,1)})).sort((t,r)=>t.offset-r.offset);return n.length>=2?n:V.stops.map(t=>({...t}))},Be=e=>({...V,...e,center:{...V.center,...e==null?void 0:e.center},radius:Math.max(.01,(e==null?void 0:e.radius)??V.radius),stops:Yt((e==null?void 0:e.stops)??V.stops)}),Kt=`
2
+ varying vec2 vPosition;
3
+ void main() {
4
+ vPosition = position.xy;
5
+ gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
6
+ }
7
+ `,$t=`
8
+ #define MAX_STOPS 8
9
+ uniform vec3 stopColors[MAX_STOPS];
10
+ uniform float stopOffsets[MAX_STOPS];
11
+ uniform int stopCount;
12
+ uniform int gradientType;
13
+ uniform vec2 direction;
14
+ uniform vec2 center;
15
+ uniform float radius;
16
+ uniform float angleOffset;
17
+ uniform float opacity;
18
+ varying vec2 vPosition;
19
+
20
+ vec3 sampleGradient(float amount) {
21
+ vec3 color = stopColors[0];
22
+ for (int index = 1; index < MAX_STOPS; index++) {
23
+ if (index >= stopCount) break;
24
+ if (amount <= stopOffsets[index]) {
25
+ float width = max(0.0001, stopOffsets[index] - stopOffsets[index - 1]);
26
+ return mix(stopColors[index - 1], stopColors[index], clamp((amount - stopOffsets[index - 1]) / width, 0.0, 1.0));
27
+ }
28
+ color = stopColors[index];
29
+ }
30
+ return color;
31
+ }
32
+
33
+ void main() {
34
+ vec2 delta = vPosition - center;
35
+ float amount;
36
+ if (gradientType == 1) {
37
+ amount = clamp(length(delta) / radius, 0.0, 1.0);
38
+ } else if (gradientType == 2) {
39
+ amount = fract(atan(delta.y, delta.x) / 6.28318530718 + 0.5 + angleOffset);
40
+ } else {
41
+ amount = clamp(dot(delta, direction) + 0.5, 0.0, 1.0);
42
+ }
43
+ gl_FragColor = vec4(sampleGradient(amount), opacity);
44
+ }
45
+ `,qt={linear:0,radial:1,angular:2},Ve=({opacity:e=1,value:n})=>{const t=i.useMemo(()=>{const r=Be(n),a=J.MathUtils.degToRad(r.angle),o=r.stops.map(c=>new J.Color(c.color)),s=r.stops.map(c=>c.offset);for(;o.length<ue;)o.push(o[o.length-1]);for(;s.length<ue;)s.push(1);return{stopColors:{value:o},stopOffsets:{value:s},stopCount:{value:r.stops.length},gradientType:{value:qt[r.type]},direction:{value:new J.Vector2(Math.cos(a),Math.sin(a))},center:{value:new J.Vector2(r.center.x-.5,.5-r.center.y)},radius:{value:r.radius},angleOffset:{value:r.angle/360},opacity:{value:e}}},[e,n]);return u.jsx("shaderMaterial",{uniforms:t,vertexShader:Kt,fragmentShader:$t,transparent:e<1,depthTest:!1,depthWrite:!1,toneMapped:!1})},Qt="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAwMCAO2YpZcAAAAASUVORK5CYII=",Zt={source:"solid",color:"#ffffff",opacity:1,textureUrl:"",gradient:V},ke=e=>({...V,stops:[{offset:0,color:"#ffffff"},{offset:1,color:e}]}),Jt=({depthTest:e,depthWrite:n,settings:t,side:r,toneMapped:a})=>{const o=ee.useLoader(y.TextureLoader,t.textureUrl||Qt);return u.jsx("meshBasicMaterial",{color:t.color,map:o,transparent:!0,opacity:t.opacity,side:r,depthWrite:n,depthTest:e,toneMapped:a})},Xe=({depthTest:e=!1,depthWrite:n=!1,settings:t,side:r,toneMapped:a=!1})=>{const o=i.useMemo(()=>t.gradient??ke(t.color),[t.color,t.gradient]);return t.source==="gradient"?u.jsx(Ve,{value:o,opacity:t.opacity}):t.source==="texture"?u.jsx(Jt,{settings:t,side:r,depthTest:e,depthWrite:n,toneMapped:a}):u.jsx("meshBasicMaterial",{color:t.color,transparent:!0,opacity:t.opacity,side:r,depthWrite:n,depthTest:e,toneMapped:a})},be=Math.PI/180,xe=180/Math.PI,N=e=>Number(e.toFixed(6)),Ce={enabled:!0,linked:{position:!1,rotation:!1,scale:!1},showTransformControls:!1,transformControlMode:"translate",transformControlSpace:"local",position:{x:0,y:0,z:0},rotation:{x:0,y:0,z:0},scale:{x:1,y:1,z:1},visible:!0},en=({children:e,objectRef:n,onChange:t,value:r})=>{const a=i.useRef(null),o=i.useRef(n);o.current=n;const[s,c]=i.useState(null),_=i.useCallback(d=>{var S;a.current=d,c(d),(S=o.current)==null||S.call(o,d)},[]),R=i.useCallback(()=>{const d=a.current;!d||!t||t({...r,position:{x:N(d.position.x),y:N(d.position.y),z:N(d.position.z)},rotation:{x:N(d.rotation.x*xe),y:N(d.rotation.y*xe),z:N(d.rotation.z*xe)},scale:{x:N(d.scale.x),y:N(d.scale.y),z:N(d.scale.z)}})},[t,r]);return r.enabled?u.jsxs(u.Fragment,{children:[u.jsx("group",{ref:_,position:[r.position.x,r.position.y,r.position.z],rotation:[r.rotation.x*be,r.rotation.y*be,r.rotation.z*be],scale:[r.scale.x,r.scale.y,r.scale.z],visible:r.visible,children:e}),s&&r.showTransformControls&&u.jsx(Xt.TransformControls,{object:s,mode:r.transformControlMode,space:r.transformControlSpace,size:.85,onMouseUp:R,onObjectChange:R})]}):null},ae=e=>Math.min(1,Math.max(0,e)),k=(e,n,t)=>ae(1-Math.abs(e-n)/t),tn=e=>{let n=1/0,t=-1/0,r=1/0,a=-1/0;for(const c of e)n=Math.min(n,c.x),t=Math.max(t,c.x),r=Math.min(r,c.y),a=Math.max(a,c.y);const o=Math.max(t-n,.001),s=Math.max(a-r,.001);return{centerX:n+o*.5,centerY:r+s*.5,width:o,height:s}},nn=e=>e!=null&&e.enabled?(e.strength??1)!==0&&Object.entries(e).some(([n,t])=>n!=="enabled"&&n!=="strength"&&typeof t=="number"&&t!==0):!1,rn=(e,n,t,r)=>{const a=t.enabled?t.strength??1:0;if(a===0)return r.x=e.x,r.y=e.y,r.z=e.z,r;const o=(e.x-n.centerX)/n.width,s=(e.y-n.centerY)/n.height,c=Math.abs(o),_=ae((-s+.42)/.55),R=k(s,-.02,.34),d=k(s,-.24,.16)*ae((c-.05)/.28),S=k(s,.02,.26)*k(c,0,.18),C=k(s,.29,.18)*k(c,0,.36),I=ae((s-.16)/.36),b=R*k(c,.34,.22),m=_*k(c,0,.48),x=k(s,-.19,.1)*ae((c-.05)/.3),X=k(s,.48,.2)*k(c,0,.26);let f=e.x,l=e.y,h=e.z;const A=(K,U=1)=>{f+=o*n.width*K*a*U},E=(K,U=1)=>{l+=s*n.height*K*a*U};A(t.faceWidth??0),E(t.faceHeight??0),A(t.faceRoundness??0,R*(1-c)),l-=n.height*(t.midfaceHeight??0)*a*R*.25,E(-(t.foreheadHeight??0),m),A(t.foreheadWidth??0,m),A(t.cheekboneWidth??0,k(s,-.06,.16)*k(c,.34,.2)),A(t.cheekWidth??0,b),A(t.jawWidth??0,I),E(t.chinHeight??0,X),l-=n.height*(t.scalpHeight??0)*a*_*.3,h-=(t.midfaceDepth??0)*a*R*.08,h+=(t.cheekHollowness??0)*a*b*.06,h-=(t.browDepth??0)*a*x*.05,l-=n.height*(t.browHeight??0)*a*x*.2,f+=Math.sign(o||1)*n.width*(t.browDistance??0)*a*x*.16;const v=(t.headCurve??0)*a*(s+.1);h-=v*v*.04*Math.sign(t.headCurve??0),f+=n.width*(t.faceTwist??0)*a*s*.18;const j=(t.faceSwirl??0)*a*.22;f+=-s*n.width*j,l+=o*n.height*j;const W=o<0?t.leftEyeSize??0:t.rightEyeSize??0,L=((t.eyeSize??0)+W)*a*d;f+=o*n.width*L*.45,l+=(s+.24)*n.height*L*.7,f+=Math.sign(o||1)*n.width*(t.eyeDistance??0)*a*d*.2,f+=n.width*(o<0?t.leftEyeX??0:t.rightEyeX??0)*a*d*.15,l+=n.height*(o<0?t.leftEyeY??0:t.rightEyeY??0)*a*d*.15;const Y=(t.noseSize??0)*a*S;return f+=o*n.width*Y*.7,l+=(s-.02)*n.height*Y*.5,l+=n.height*(t.noseLength??0)*a*S*Math.max(s+.08,0)*.4,h-=(t.noseSize??0)*a*S*.08,f+=o*n.width*(t.mouthWidth??0)*a*C,l+=(s-.29)*n.height*(t.mouthHeight??0)*a*C,r.x=f,r.y=l,r.z=h,r},ge=new Set([61,146,91,181,84,17,314,405,321,375,291,78,95,88,178,87,14,317,402,318,324,308,191,80,81,82,13,312,311,310,415]),Re=new Set([33,7,163,144,145,153,154,155,133,173,157,158,159,160,161,246]),Se=new Set([362,382,381,380,374,373,390,249,263,466,388,387,386,385,384,398]),an=new Set([814,815,816,817,818,819,830,831,832,833]),on=(e,n,t)=>{const r=ge.has(e)&&ge.has(n)&&ge.has(t),a=Re.has(e)&&Re.has(n)&&Re.has(t),o=Se.has(e)&&Se.has(n)&&Se.has(t);return r?"mouth":a?"leftEye":o?"rightEye":"base"},We=e=>{const n=[],t=[],r=[],a=[],o=[],s=[],c=[];let _=0,R=0;e.split(`
46
+ `).forEach(b=>{const m=b.trim();if(!m)return;if(m.startsWith("v ")){_+=1;return}if(m.startsWith("vt ")){const[,l,h]=m.split(/\s+/);s.push([Number(l),Number(h)]);return}if(!m.startsWith("f "))return;const x=R;R+=1;const[,...X]=m.split(/\s+/),f=X.map(l=>{const[h,A]=l.split("/"),E=Number(h)-1,v=Number(A)-1;return v>=0&&s[v]&&!c[E]&&(c[E]=s[v]),E});if(!(f.length<3))for(let l=1;l<f.length-1;l+=1){const h=f[0],A=f[l],E=f[l+1],v=on(h,A,E);an.has(x)?o.push(h,A,E):v==="mouth"?t.push(h,A,E):v==="leftEye"?r.push(h,A,E):v==="rightEye"?a.push(h,A,E):n.push(h,A,E)}});const d=[];for(let b=0;b<_;b+=1){const[m,x]=c[b]??[0,0];d.push(m,x)}const S=new Uint16Array(r),C=new Uint16Array(a),I=new Uint16Array(r.length+a.length);return I.set(S),I.set(C,S.length),{baseIndices:new Uint16Array(n),mouthIndices:new Uint16Array(t),leftEyeIndices:S,rightEyeIndices:C,eyeIndices:I,noseIndices:new Uint16Array(o),uvs:new Float32Array(d),vertexCount:_}},sn="canonical_face_model.obj",cn=new TextDecoder("utf-8"),ve=new Map,ln=e=>{const n=ve.get(e);if(n)return n;const t=q.fetchAndVerify(e).then(r=>We(cn.decode(r))).catch(r=>{throw ve.delete(e),r});return ve.set(e,t),t},Ye=e=>{const{mesh:n,url:t}=e??{},r=t??`${q.libConfig.sdkAssetsBaseUrl}/${sn}`,[a,o]=i.useState(n??null);return i.useEffect(()=>{if(n){o(n);return}let s=!1;return ln(r).then(c=>{s||o(c)}).catch(c=>{s||console.error(`${q.libConfig.loggerPrefix} canonical face mesh load failed`,c)}),()=>{s=!0}},[n,r]),a},g={basic:"basic",standard:"standard",physical:"physical",toon:"toon",normal:"normal",matcap:"matcap",wireframe:"wireframe",shader:"shader"},G={originalFace:"originalFace",composite:"composite"},H={none:"none",canonical:"canonical",style2:"style2"},$={none:"none",canonical:"canonical"},re={solid:"solid",gradient:"gradient",imageUrl:"imageUrl",mediaUrl:"mediaUrl"},te={front:"front",back:"back",double:"double"},Ue={normal:"normal",add:"add",subtract:"subtract",multiply:"multiply",screen:"screen",overlay:"overlay",softLight:"softLight",hardLight:"hardLight",lighten:"lighten",darken:"darken",difference:"difference",exclusion:"exclusion"},un={textureMap:H.canonical,alphaMap:$.canonical,alphaOpacity:1},ze={...un,blendMode:Ue.hardLight,blendOpacity:.85,baseColor:"#ffffff",opacity:1,compositeShading:!0},O={materialType:g.basic,shaderPreset:G.originalFace,textureMap:H.none,alphaMap:$.none,alphaOpacity:1,side:te.front,blendMode:Ue.normal,blendOpacity:1,baseColor:"#38bdf8",opacity:.45,compositeShading:!1};g.shader,G.composite,te.front;const le={mouth:!0,eyes:!0,nose:!0},ne={textureSource:re.solid,color:"#111111",opacity:.5},dn=24,Ke=10,we=(e,n,t)=>e!==g.shader?"none":n===G.originalFace?"originalFace":n===G.composite?t===H.none?"originalFace":"composite":"none",fn=(e,n)=>e===g.basic||e===g.standard||e===g.physical||e===g.toon||e===g.shader&&n===G.composite,hn=(e,n,t=H.canonical)=>we(e,n,t)==="composite",mn=(e,n,t)=>we(e,n,t)==="originalFace",de=e=>e===re.imageUrl||e===re.mediaUrl,$e=e=>e===re.solid||e===re.gradient,Fe={normal:0,add:1,subtract:2,multiply:3,screen:4,overlay:5,softLight:6,hardLight:7,lighten:8,darken:9,difference:10,exclusion:11},Te="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAwMCAO2YpZcAAAAASUVORK5CYII=",pn=()=>{const e=new Uint8Array([32,32,32,255,96,96,96,255,176,176,176,255,255,255,255,255]),n=new y.DataTexture(e,4,1,y.RGBAFormat);return n.minFilter=y.NearestFilter,n.magFilter=y.NearestFilter,n.generateMipmaps=!1,n.needsUpdate=!0,n},En=()=>{const e=document.createElement("canvas");e.width=256,e.height=256;const n=e.getContext("2d");if(!n)return new y.CanvasTexture(e);const t=n.createRadialGradient(96,80,10,128,128,128);t.addColorStop(0,"#ffffff"),t.addColorStop(.18,"#f7d794"),t.addColorStop(.45,"#d97706"),t.addColorStop(.72,"#78350f"),t.addColorStop(1,"#120701"),n.fillStyle=t,n.fillRect(0,0,e.width,e.height);const r=new y.CanvasTexture(e);return r.needsUpdate=!0,r},Mn=`
47
+ attribute vec2 faceUv;
48
+ varying vec2 vUv;
49
+ varying vec2 vFaceUv;
50
+ varying vec3 vNormal;
51
+
52
+ void main() {
53
+ vUv = uv;
54
+ vFaceUv = faceUv;
55
+ vNormal = normalize(normalMatrix * normal);
56
+ gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
57
+ }
58
+ `,yn=`
59
+ uniform sampler2D cameraTexture;
60
+ uniform sampler2D canonicalTexture;
61
+ uniform sampler2D alphaMask;
62
+ uniform vec3 textureTint;
63
+ uniform float opacity;
64
+ uniform int blendMode;
65
+ uniform float blendOpacity;
66
+ uniform float useCanonicalTexture;
67
+ uniform float useAlphaMask;
68
+ uniform float alphaOpacity;
69
+ uniform float compositeShading;
70
+ uniform vec3 lightDirection;
71
+ uniform float ambientStrength;
72
+ uniform float directionalStrength;
73
+ varying vec2 vUv;
74
+ varying vec2 vFaceUv;
75
+ varying vec3 vNormal;
76
+
77
+ vec3 linearToSrgb(vec3 value) {
78
+ vec3 low = value * 12.92;
79
+ vec3 high = 1.055 * pow(max(value, vec3(0.0)), vec3(1.0 / 2.4)) - 0.055;
80
+ return mix(high, low, step(value, vec3(0.0031308)));
81
+ }
82
+
83
+ vec3 srgbToLinear(vec3 value) {
84
+ vec3 low = value / 12.92;
85
+ vec3 high = pow(max((value + 0.055) / 1.055, vec3(0.0)), vec3(2.4));
86
+ return mix(high, low, step(value, vec3(0.04045)));
87
+ }
88
+
89
+ float overlayChannel(float base, float blend) {
90
+ return base < 0.5 ? 2.0 * base * blend : 1.0 - 2.0 * (1.0 - base) * (1.0 - blend);
91
+ }
92
+
93
+ float hardLightChannel(float base, float blend) {
94
+ return blend < 0.5 ? 2.0 * base * blend : 1.0 - 2.0 * (1.0 - base) * (1.0 - blend);
95
+ }
96
+
97
+ float softLightChannel(float base, float blend) {
98
+ if (blend <= 0.5) {
99
+ return base - (1.0 - 2.0 * blend) * base * (1.0 - base);
100
+ }
101
+
102
+ float d = base <= 0.25
103
+ ? ((16.0 * base - 12.0) * base + 4.0) * base
104
+ : sqrt(base);
105
+
106
+ return base + (2.0 * blend - 1.0) * (d - base);
107
+ }
108
+
109
+ vec3 applyBlendMode(vec3 base, vec3 blend, int mode) {
110
+ if (mode == 0) return blend;
111
+ if (mode == 1) return min(base + blend, 1.0);
112
+ if (mode == 2) return max(base - blend, 0.0);
113
+ if (mode == 3) return base * blend;
114
+ if (mode == 4) return 1.0 - (1.0 - base) * (1.0 - blend);
115
+ if (mode == 5) {
116
+ return vec3(
117
+ overlayChannel(base.r, blend.r),
118
+ overlayChannel(base.g, blend.g),
119
+ overlayChannel(base.b, blend.b)
120
+ );
121
+ }
122
+ if (mode == 6) {
123
+ return vec3(
124
+ softLightChannel(base.r, blend.r),
125
+ softLightChannel(base.g, blend.g),
126
+ softLightChannel(base.b, blend.b)
127
+ );
128
+ }
129
+ if (mode == 7) {
130
+ return vec3(
131
+ hardLightChannel(base.r, blend.r),
132
+ hardLightChannel(base.g, blend.g),
133
+ hardLightChannel(base.b, blend.b)
134
+ );
135
+ }
136
+ if (mode == 8) return max(base, blend);
137
+ if (mode == 9) return min(base, blend);
138
+ if (mode == 10) return abs(base - blend);
139
+ return base + blend - 2.0 * base * blend;
140
+ }
141
+
142
+ void main() {
143
+ vec3 base = linearToSrgb(texture2D(cameraTexture, vFaceUv).rgb);
144
+ vec4 textureSample = texture2D(canonicalTexture, vUv);
145
+ vec3 blend = linearToSrgb(textureSample.rgb) * textureTint;
146
+ float light = ambientStrength + max(dot(normalize(vNormal), normalize(lightDirection)), 0.0) * directionalStrength;
147
+ blend *= mix(1.0, clamp(light, 0.35, 1.35), compositeShading);
148
+ float maskSample = texture2D(alphaMask, vUv).r;
149
+ float mask = useAlphaMask > 0.5 ? mix(1.0, maskSample, alphaOpacity) : 1.0;
150
+ float textureAlpha = useCanonicalTexture > 0.5 ? textureSample.a : 1.0;
151
+ vec3 blended = applyBlendMode(base, blend, blendMode);
152
+ vec3 color = useCanonicalTexture > 0.5 ? mix(base, blended, blendOpacity) : base;
153
+ gl_FragColor = vec4(srgbToLinear(color), opacity * mask * textureAlpha);
154
+ }
155
+ `,qe=({alphaMap:e,alphaOpacity:n,blendMode:t,blendOpacity:r,cameraTexture:a,color:o,compositeShading:s,faceAlphaMaskUrl:c,faceTextureStyle2Url:_,faceTextureUrl:R,masked:d=!1,maskColor:S,maskOpacity:C,maskSourceUrl:I,maskTextureSource:b,materialType:m,opacity:x,shaderPreset:X,side:f,textureMap:l})=>{const h=ee.useLoader(y.TextureLoader,R||Te),A=ee.useLoader(y.TextureLoader,_||R||Te),E=ee.useLoader(y.TextureLoader,c||Te),v=i.useMemo(()=>pn(),[]),j=i.useMemo(()=>En(),[]);i.useEffect(()=>()=>{v.dispose(),j.dispose()},[j,v]);const W=l===H.style2?A:h,L=l!==H.none,Y=we(m,X,l),K=["composite-material",l,e,n,t,r,s?"lit":"flat",o,x,R,_,c].join("|"),U={side:f,transparent:!0,opacity:x,wireframe:!1},fe=i.useMemo(()=>({source:de(b)?"texture":b,color:$e(b)?S:"#ffffff",opacity:C,textureUrl:de(b)?I:"",gradient:ke(S)}),[S,C,I,b]),T=i.useMemo(()=>({cameraTexture:{value:null},canonicalTexture:{value:null},alphaMask:{value:null},textureTint:{value:new y.Color(o)},opacity:{value:x},blendMode:{value:Fe[t]},blendOpacity:{value:r},useCanonicalTexture:{value:L?1:0},useAlphaMask:{value:e===$.canonical?1:0},alphaOpacity:{value:n},compositeShading:{value:s?1:0},lightDirection:{value:new y.Vector3(.3,.65,.7).normalize()},ambientStrength:{value:.78},directionalStrength:{value:.38}}),[e,n,t,r,o,s,L,x]);if(i.useEffect(()=>{T.cameraTexture.value=a??h,T.canonicalTexture.value=W,T.alphaMask.value=E,T.textureTint.value.set(o),T.opacity.value=x,T.blendMode.value=Fe[t],T.blendOpacity.value=r,T.useCanonicalTexture.value=L?1:0,T.useAlphaMask.value=e===$.canonical?1:0,T.alphaOpacity.value=n,T.compositeShading.value=s?1:0},[e,E,n,t,r,a,o,s,T,h,L,x,W]),d)return u.jsx(Xe,{settings:fe,side:f},`masked-${b}-material`);if(m===g.wireframe)return u.jsx("meshBasicMaterial",{color:o,transparent:!0,opacity:x,side:f,depthWrite:!1,depthTest:!1,wireframe:!0,toneMapped:!1},"wireframe-material");if(Y==="originalFace"&&a)return u.jsx("meshBasicMaterial",{map:a,alphaMap:E,transparent:!0,opacity:x,side:f,depthWrite:!1,depthTest:!0,toneMapped:!1},"use-original-face-material");if(Y==="composite"&&a)return u.jsx("shaderMaterial",{uniforms:T,vertexShader:Mn,fragmentShader:yn,transparent:!0,side:f,depthWrite:!1,depthTest:!0,toneMapped:!1},K);const z=L?W:null,Q=e===$.canonical&&n>0?E:null,B=`${m}-${l}-${e}-${n>0?"alpha-on":"alpha-off"}`;return m===g.standard?u.jsx("meshStandardMaterial",{...U,color:o,map:z??void 0,alphaMap:Q??void 0,depthWrite:!0,depthTest:!0,metalness:.05,roughness:.72},B):m===g.physical?u.jsx("meshPhysicalMaterial",{...U,color:o,map:z??void 0,alphaMap:Q??void 0,depthWrite:!0,depthTest:!0,roughness:.58,metalness:.08,clearcoat:.35,clearcoatRoughness:.4},B):m===g.toon?u.jsx("meshToonMaterial",{...U,color:o,map:z??void 0,alphaMap:Q??void 0,gradientMap:v,depthWrite:!0,depthTest:!0},B):m===g.normal?u.jsx("meshNormalMaterial",{...U,depthWrite:!0,depthTest:!0,flatShading:!1},"normal-material"):m===g.matcap?u.jsx("meshMatcapMaterial",{...U,color:o,matcap:j,depthWrite:!0,depthTest:!0},"matcap-material"):u.jsx("meshBasicMaterial",{...U,color:o,map:z??void 0,alphaMap:Q??void 0,depthWrite:!1,depthTest:l!==H.none||e!==$.none,toneMapped:!1},B)},Qe=[{key:"base",getIndices:e=>e.baseIndices,masked:!1,renderOrderOffset:0},{key:"mouth",getIndices:e=>e.mouthIndices,masked:!1,renderOrderOffset:2},{key:"left-eye",getIndices:e=>e.leftEyeIndices,masked:!1,renderOrderOffset:2},{key:"right-eye",getIndices:e=>e.rightEyeIndices,masked:!1,renderOrderOffset:2},{key:"nose",getIndices:e=>e.noseIndices,masked:!1,renderOrderOffset:2},{key:"mouth-mask",getIndices:e=>e.mouthIndices,masked:!0,renderOrderOffset:3},{key:"left-eye-mask",getIndices:e=>e.leftEyeIndices,masked:!0,renderOrderOffset:3},{key:"right-eye-mask",getIndices:e=>e.rightEyeIndices,masked:!0,renderOrderOffset:3},{key:"nose-mask",getIndices:e=>e.noseIndices,masked:!0,renderOrderOffset:3}],An={[te.front]:y.FrontSide,[te.back]:y.BackSide,[te.double]:y.DoubleSide},bn=(e,n,t)=>{e.setAttribute("position",n.position),e.setAttribute("uv",n.uv),e.setAttribute("faceUv",n.faceUv),e.setIndex(new y.BufferAttribute(t,1))},Ze=({faceIndex:e=0,baseColor:n,color:t=O.baseColor,opacity:r=O.opacity,materialType:a=O.materialType,shaderPreset:o=O.shaderPreset,textureMap:s=O.textureMap,alphaMap:c=O.alphaMap,alphaOpacity:_=O.alphaOpacity,side:R=O.side,blendMode:d=O.blendMode,blendOpacity:S=O.blendOpacity,showOverlayMask:C=!1,showMouthMask:I=le.mouth,showEyeMask:b=le.eyes,showLeftEyeMask:m,showRightEyeMask:x,showNoseMask:X=le.nose,showEyeGeometry:f=!0,showLeftEyeGeometry:l,showRightEyeGeometry:h,showMouthGeometry:A=!0,showNoseGeometry:E=!0,maskTextureSource:v=ne.textureSource,maskSourceUrl:j="",maskColor:W=ne.color,maskOpacity:L=ne.opacity,faceTextureUrl:Y="",faceTextureStyle2Url:K="",faceAlphaMaskUrl:U="",compositeShading:fe=!1,faceWarp3D:T,transform:z,renderOrder:Q=Ke,externalScale:B=1,mesh:at,meshUrl:ot})=>{const he=je.useXRModelNode(q.XRModel.FACE_TRACKER),st=je.useXRCameraTexture(),{camera:it}=ee.useThree(),D=Ye({mesh:at,url:ot}),Oe=i.useRef(null),ct=i.useRef(null),lt=i.useRef(null),ut=i.useRef(null),dt=i.useRef(null),ft=i.useRef(null),ht=i.useRef(null),mt=i.useRef(null),pt=i.useRef(null),Et=i.useRef(null),Mt=i.useRef(null),yt=i.useRef(null),At=i.useRef(null),bt=i.useRef(null),xt=i.useRef(null),gt=i.useRef(null),Rt=i.useRef(null),St=i.useRef(null),me=i.useRef(null),pe=i.useRef(null),Ee=i.useRef(null),Ie=i.useRef(null),vt=i.useRef(new y.Vector3),Tt=i.useRef({x:0,y:0,z:0}),_t=i.useRef({x:0,y:0,z:0}),Ct=i.useRef({x:0,y:0,z:0}),oe=i.useRef(!1),Ft=An[R],kt=n??t,Ut=l??f,wt=h??f,Ot=C||(m??b),It=C||(x??b),Lt=C||I,Dt=C||X,Pt={base:Oe,mouth:ct,"left-eye":lt,"right-eye":ut,nose:dt,"mouth-mask":ft,"left-eye-mask":ht,"right-eye-mask":mt,"nose-mask":pt},Nt={base:Et,mouth:Mt,"left-eye":yt,"right-eye":At,nose:bt,"mouth-mask":xt,"left-eye-mask":gt,"right-eye-mask":Rt,"nose-mask":St},Gt={base:!0,mouth:A,"left-eye":Ut,"right-eye":wt,nose:E,"mouth-mask":Lt,"left-eye-mask":Ot,"right-eye-mask":It,"nose-mask":Dt},Ht=M=>u.jsx(qe,{alphaMap:c,alphaOpacity:_,blendMode:d,blendOpacity:S,cameraTexture:st,color:kt,compositeShading:fe,faceAlphaMaskUrl:U,faceTextureStyle2Url:K,faceTextureUrl:Y,masked:M,maskColor:W,maskOpacity:L,maskSourceUrl:j,maskTextureSource:v,materialType:a,opacity:r,shaderPreset:o,side:Ft,textureMap:s}),Z=Qe.map(M=>({...M,geometryRef:Pt[M.key],meshRef:Nt[M.key],visible:Gt[M.key]})),jt=M=>_e.projectLandmarkWithDepth(M,it,vt.current);return ee.useFrame(()=>{var Ne,Ge;const M=Oe.current,P=(Ge=(Ne=he==null?void 0:he.detectionResults)==null?void 0:Ne.faceLandmarks)==null?void 0:Ge[e],zt=Z.every(p=>p.geometryRef.current&&p.meshRef.current);if(!D||!M||!zt)return;if(!P||P.length<D.vertexCount){Z.forEach(p=>{p.meshRef.current.visible=!1});return}if(Ie.current!==D){me.current=new Float32Array(D.vertexCount*3),pe.current=new Float32Array(D.uvs),Ee.current=new Float32Array(D.vertexCount*2);const p={position:new y.BufferAttribute(me.current,3),uv:new y.BufferAttribute(pe.current,2),faceUv:new y.BufferAttribute(Ee.current,2)};Z.forEach(F=>{bn(F.geometryRef.current,p,F.getIndices(D))}),p.uv.needsUpdate=!0,Ie.current=D,oe.current=!1}const se=me.current,Me=Ee.current,ie=pe.current;if(!se||!Me||!ie)return;const Le=mn(a,o,s),De=nn(T),Pe=De?tn(P):null,w=z?Ct.current:null;if(w){w.x=0,w.y=0,w.z=0;for(let p=0;p<P.length;p++){const F=P[p];w.x+=F.x,w.y+=F.y,w.z+=F.z}w.x/=P.length,w.y/=P.length,w.z/=P.length}const Bt=Math.min(P.length,D.vertexCount);for(let p=0;p<Bt;p++){const F=P[p],He=De&&Pe?rn(F,Pe,T,Tt.current):F,Vt=z&&w?_e.transformFaceMeshLandmark(He,w,z,_t.current):He,ye=p*3,ce=p*2,Ae=jt(Vt);se[ye]=Ae.x,se[ye+1]=Ae.y,se[ye+2]=Ae.z,Me[ce]=F.x,Me[ce+1]=1-F.y,Le&&(ie[ce]=F.x,ie[ce+1]=1-F.y)}Le?(M.attributes.uv.needsUpdate=!0,oe.current=!0):oe.current&&(ie.set(D.uvs),M.attributes.uv.needsUpdate=!0,oe.current=!1),Z.forEach(p=>{p.meshRef.current.visible=p.visible}),M.attributes.position.needsUpdate=!0,M.attributes.faceUv.needsUpdate=!0,Z.forEach(p=>{p.geometryRef.current.computeVertexNormals()})}),u.jsx("group",{scale:[B,B,B],children:Z.map(M=>u.jsxs("mesh",{ref:M.meshRef,renderOrder:Q+M.renderOrderOffset,frustumCulled:!1,children:[u.jsx("bufferGeometry",{ref:M.geometryRef}),Ht(M.masked)]},M.key))})},Je=`${q.libConfig.sdkAssetsBaseUrl}/Canonical_Face_Color.png`,et=`${q.libConfig.sdkAssetsBaseUrl}/Canonical_Face_Color_style_2.png`,tt=`${q.libConfig.sdkAssetsBaseUrl}/Canonical_Face_Color_Mask.png`,nt={...Ce,position:{...Ce.position,y:.001}},xn={enabled:!0,faceIndex:0,targetFps:dn,...O,showLeftEyeGeometry:!0,showRightEyeGeometry:!0,showMouthGeometry:!0,showNoseGeometry:!0,externalScale:1,showOverlayMask:!1,showMouthMask:!1,showLeftEyeMask:!1,showRightEyeMask:!1,showNoseMask:!1,maskTextureSource:ne.textureSource,maskSourceUrl:"",maskColor:ne.color,maskOpacity:ne.opacity,faceTextureUrl:Je,faceTextureStyle2Url:et,faceAlphaMaskUrl:tt,renderOrder:Ke},rt=e=>{const{externalMeshUrl:n,...t}=e;return{...t,color:t.baseColor,meshUrl:n}},gn=(e,n)=>{const t={...e,...n};return n.maskTextureSource&&!de(n.maskTextureSource)&&(t.maskSourceUrl=""),t.materialType===g.shader&&n.shaderPreset===G.composite?{...t,...ze,materialType:g.shader,shaderPreset:G.composite}:t.materialType===g.shader&&t.shaderPreset===G.composite&&t.textureMap===H.none?{...t,textureMap:ze.textureMap}:t},Rn=({transform:e,value:n})=>n.enabled?u.jsxs(u.Fragment,{children:[u.jsx(_e.FaceTracker,{active:n.enabled,faceIndex:n.faceIndex,numFaces:n.faceIndex+1,targetFps:n.targetFps}),u.jsx(Ze,{...rt(n),transform:e??nt})]}):null;exports.CANONICAL_FACE_MESH_GEOMETRY_SPECS=Qe;exports.CanonicalFaceMeshRenderer=Ze;exports.DEFAULT_APPEARANCE=O;exports.DEFAULT_FACE_MESH_RENDERER=xn;exports.DEFAULT_FACE_MESH_TRANSFORM=nt;exports.DEFAULT_MASKING=le;exports.DEFAULT_MATERIAL_FILL=Zt;exports.DEFAULT_SCREEN_GRADIENT=V;exports.DEFAULT_TRANSFORM_3D=Ce;exports.FACE_MESH_ALPHA_MAPS=$;exports.FACE_MESH_BLEND_MODES=Ue;exports.FACE_MESH_MASK_TEXTURE_SOURCES=re;exports.FACE_MESH_MATERIAL_TYPES=g;exports.FACE_MESH_SHADER_PRESETS=G;exports.FACE_MESH_SIDES=te;exports.FACE_MESH_TEXTURE_MAPS=H;exports.FaceMeshMaterial=qe;exports.FaceMeshRenderer=Rn;exports.MAX_SCREEN_GRADIENT_STOPS=ue;exports.MaterialFill=Xe;exports.ScreenGradientMaterial=Ve;exports.Transform3D=en;exports.blendModeIndices=Fe;exports.canonicalFaceAlphaMaskUrl=tt;exports.canonicalFaceTextureStyle2Url=et;exports.canonicalFaceTextureUrl=Je;exports.createTwoStopGradient=ke;exports.mapFaceMeshRendererSettingsToProps=rt;exports.normalizeScreenGradient=Be;exports.parseCanonicalFaceModel=We;exports.resolveFaceMeshRendererSettings=gn;exports.supportsBlendMode=hn;exports.supportsTexturePanel=fn;exports.useCanonicalFaceMesh=Ye;exports.usesMaskColor=$e;exports.usesMaskSourceUrl=de;