@realsee/five-webgpu 1.0.0-alpha.5 → 1.0.0-alpha.7

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 (378) hide show
  1. package/ai_guides/api.md +9 -8
  2. package/ai_guides/features/camera-animation.md +1 -1
  3. package/ai_guides/features/event.md +0 -1
  4. package/ai_guides/features/five.md +78 -9
  5. package/ai_guides/features/gesture.md +1 -1
  6. package/ai_guides/features/load-external-model.md +6 -6
  7. package/ai_guides/features/load-progress.md +2 -2
  8. package/ai_guides/features/material.md +35 -8
  9. package/ai_guides/features/mode.md +26 -29
  10. package/ai_guides/features/model.md +1 -1
  11. package/ai_guides/features/state.md +2 -2
  12. package/ai_guides/features/ultra-hdr.md +41 -32
  13. package/ai_guides/quick-start.md +2 -2
  14. package/ai_guides/release_notes/6.8.md +2 -2
  15. package/ai_guides/support.md +0 -4
  16. package/docs/assets/hierarchy.js +1 -1
  17. package/docs/assets/navigation.js +1 -1
  18. package/docs/assets/search.js +1 -1
  19. package/docs/classes/index.AdaptiveLuminancePass.html +1 -1
  20. package/docs/classes/index.BoundingMesh.html +1 -1
  21. package/docs/classes/index.Camera.html +1 -1
  22. package/docs/classes/index.EffectComposer.html +1 -1
  23. package/docs/classes/index.EyeDomeLightingPass.html +1 -1
  24. package/docs/classes/index.Five.html +69 -67
  25. package/docs/classes/index.FivePass.html +1 -1
  26. package/docs/classes/index.FlowingFireworks3DPass.html +1 -1
  27. package/docs/classes/index.FlowingLight2DPass.html +1 -1
  28. package/docs/classes/index.FlowingLight3DPass.html +2 -2
  29. package/docs/classes/index.GaussianBlurPass.html +1 -1
  30. package/docs/classes/index.InternalWebGPURenderer.html +8 -5
  31. package/docs/classes/index.Model.html +1 -1
  32. package/docs/classes/index.ModelScene.html +1 -1
  33. package/docs/classes/index.NetworkSubscribe.html +1 -1
  34. package/docs/classes/index.PBMCustomNode.html +8 -8
  35. package/docs/classes/index.PBMGaussianSplattingNodeMaterial.html +8 -6
  36. package/docs/classes/index.PBMGaussianSplattingObject.html +10 -4
  37. package/docs/classes/index.PBMGaussianSplattingRenderMesh.html +26 -15
  38. package/docs/classes/index.PBMGroup.html +1 -1
  39. package/docs/classes/index.PBMMesh.html +1 -1
  40. package/docs/classes/index.PBMMeshBasicMaterial.html +13 -8
  41. package/docs/classes/index.PBMMeshBasicNodeMaterial.html +15 -10
  42. package/docs/classes/index.PBMMeshPanoOnlyMaterial.html +13 -8
  43. package/docs/classes/index.PBMMeshPanoOnlyNodeMaterial.html +13 -8
  44. package/docs/classes/index.PBMMeshPhongMaterial.html +13 -8
  45. package/docs/classes/index.PBMMeshPhongNodeMaterial.html +15 -10
  46. package/docs/classes/index.PBMMeshPhysicalMaterial.html +13 -8
  47. package/docs/classes/index.PBMMeshPhysicalNodeMaterial.html +15 -10
  48. package/docs/classes/index.PBMPanoFilter.html +8 -8
  49. package/docs/classes/index.PBMPointCloud.html +6 -7
  50. package/docs/classes/index.PBMPointCloudMaterial.html +83 -0
  51. package/docs/classes/index.PBMSkinnedMesh.html +1 -1
  52. package/docs/classes/index.PBMUpdateable.html +1 -1
  53. package/docs/classes/index.PanoCircleMesh.html +1 -1
  54. package/docs/classes/index.PanoCircleMeshCustom.html +5 -5
  55. package/docs/classes/index.PanoCircleMeshSolid.html +1 -1
  56. package/docs/classes/index.Parameter.html +57 -56
  57. package/docs/classes/index.Scene.html +1 -1
  58. package/docs/classes/index.Subscribe.html +1 -1
  59. package/docs/classes/index.TextureLoader.html +4 -1
  60. package/docs/classes/index.Tile3D.html +23 -21
  61. package/docs/classes/index.TileNode.html +1 -1
  62. package/docs/classes/index.Tileset.html +4 -4
  63. package/docs/classes/index.TrajectoryNode.html +3 -3
  64. package/docs/classes/index.Work.html +20 -18
  65. package/docs/classes/index.WorkResolvedObserver.html +22 -22
  66. package/docs/classes/index.XRButton.html +3 -0
  67. package/docs/documents/api.html +11 -10
  68. package/docs/documents/features_camera-animation.html +1 -1
  69. package/docs/documents/features_event.html +0 -1
  70. package/docs/documents/features_five.html +51 -9
  71. package/docs/documents/features_gesture.html +1 -1
  72. package/docs/documents/features_load-external-model.html +6 -6
  73. package/docs/documents/features_load-progress.html +1 -1
  74. package/docs/documents/features_material.html +20 -9
  75. package/docs/documents/features_mode.html +28 -13
  76. package/docs/documents/features_model.html +1 -1
  77. package/docs/documents/features_state.html +1 -1
  78. package/docs/documents/features_ultra-hdr.html +50 -44
  79. package/docs/documents/quick-start.html +1 -1
  80. package/docs/documents/release_notes_6.8.html +2 -2
  81. package/docs/documents/support.html +1 -3
  82. package/docs/functions/index.customNodesCacheKey.html +1 -1
  83. package/docs/functions/index.parseWork.html +1 -1
  84. package/docs/functions/index.workToJson.html +1 -1
  85. package/docs/hierarchy.html +1 -1
  86. package/docs/interfaces/index.AddableObject.html +1 -1
  87. package/docs/interfaces/index.AjaxOptions.html +1 -1
  88. package/docs/interfaces/index.BaseEvent.html +2 -2
  89. package/docs/interfaces/index.Clock.html +24 -0
  90. package/docs/interfaces/index.DeviceProfile.html +8 -0
  91. package/docs/interfaces/index.EventCallback.html +49 -47
  92. package/docs/interfaces/index.FiveInitArgs.html +65 -41
  93. package/docs/interfaces/index.GainmapCfgData.html +15 -0
  94. package/docs/interfaces/index.GestureEvent.html +2 -2
  95. package/docs/interfaces/index.IPBMMaterial.html +12 -7
  96. package/docs/interfaces/index.ImageOptions.html +1 -1
  97. package/docs/interfaces/index.IntersectEvent.html +2 -2
  98. package/docs/interfaces/index.IntersectMesh.html +1 -1
  99. package/docs/interfaces/index.IntersectMeshInterface.html +1 -1
  100. package/docs/interfaces/index.Intersection.html +1 -1
  101. package/docs/interfaces/index.LoosePanoWork.html +2 -2
  102. package/docs/interfaces/index.LooseWork.html +2 -2
  103. package/docs/interfaces/index.LooseWorkInitial.html +2 -2
  104. package/docs/interfaces/index.LooseWorkModel.html +2 -2
  105. package/docs/interfaces/index.LooseWorkObserver.html +2 -2
  106. package/docs/interfaces/index.LooseWorkPanorama.html +4 -3
  107. package/docs/interfaces/index.LooseWorkWithExtrinsics.html +15 -9
  108. package/docs/interfaces/index.ModeChangeEvent.html +2 -2
  109. package/docs/interfaces/index.ModelControllerCustomInitArgs.html +1 -1
  110. package/docs/interfaces/index.ModelEvent.html +2 -2
  111. package/docs/interfaces/index.ModelSceneEvent.html +2 -2
  112. package/docs/interfaces/index.ModelTileEvent.html +2 -2
  113. package/docs/interfaces/index.MovePanoOptions.html +1 -1
  114. package/docs/interfaces/index.NetworkAbortError.html +1 -1
  115. package/docs/interfaces/index.NetworkFirbiddenError.html +1 -1
  116. package/docs/interfaces/index.NetworkOptions.html +1 -1
  117. package/docs/interfaces/index.NetworkProxyError.html +1 -1
  118. package/docs/interfaces/index.NetworkResourceEvent.html +2 -2
  119. package/docs/interfaces/index.NetworkResponseError.html +1 -1
  120. package/docs/interfaces/index.NetworkTimeoutError.html +1 -1
  121. package/docs/interfaces/index.ObjectEvent.html +2 -2
  122. package/docs/interfaces/index.PBMClipperParameter.html +2 -2
  123. package/docs/interfaces/index.PBMCustomNodeContext.html +60 -12
  124. package/docs/interfaces/index.PBMCustomNodeOptions.html +4 -4
  125. package/docs/interfaces/index.PBMCustomNodePanoContext.html +13 -6
  126. package/docs/interfaces/index.PBMCustomNodeSlots.html +6 -6
  127. package/docs/interfaces/index.PBMGaussianSplattingNodeMaterialOptions.html +4 -0
  128. package/docs/interfaces/index.PBMPanoDepth.html +5 -5
  129. package/docs/interfaces/index.PBMPanoFilterValue.html +2 -2
  130. package/docs/interfaces/index.PBMPanoGainmap.html +6 -0
  131. package/docs/interfaces/index.PBMPanoPicture.html +9 -8
  132. package/docs/interfaces/index.PBMRefinedScreen.html +2 -2
  133. package/docs/interfaces/index.PanoCircleMeshCustomOptions.html +2 -2
  134. package/docs/interfaces/index.PanoCircleMeshInterface.html +1 -1
  135. package/docs/interfaces/index.PanoEvent.html +2 -2
  136. package/docs/interfaces/index.PanoPrepareEvent.html +15 -0
  137. package/docs/interfaces/index.PanoTextureEvent.html +2 -2
  138. package/docs/interfaces/index.PanoramaControllerCustomInitArgs.html +9 -9
  139. package/docs/interfaces/index.PanoramaLikeControllerCustomInitArgs.html +1 -1
  140. package/docs/interfaces/index.ParameterMaterialValue.html +42 -41
  141. package/docs/interfaces/index.ParameterTilesetValue.html +15 -15
  142. package/docs/interfaces/index.ParameterValue.html +56 -55
  143. package/docs/interfaces/index.Pose.html +1 -1
  144. package/docs/interfaces/index.RenderEvent.html +2 -2
  145. package/docs/interfaces/index.ResolvedParameterValue.html +56 -55
  146. package/docs/interfaces/index.State.html +1 -1
  147. package/docs/interfaces/index.StateEvent.html +2 -2
  148. package/docs/interfaces/index.TextureOptions.html +1 -1
  149. package/docs/interfaces/index.TilesetOptions.html +7 -2
  150. package/docs/interfaces/index.TopviewControllerCustomInitArgs.html +1 -1
  151. package/docs/interfaces/index.VRPanoramaControllerCustomInitArgs.html +37 -0
  152. package/docs/interfaces/index.ViewLayer.html +23 -21
  153. package/docs/interfaces/index.WorkCubeHdrGainmapImage.html +10 -0
  154. package/docs/interfaces/index.WorkCubeImage.html +5 -9
  155. package/docs/interfaces/index.WorkImage.html +8 -12
  156. package/docs/interfaces/index.WorkInitial.html +8 -8
  157. package/docs/interfaces/index.WorkModel.html +8 -8
  158. package/docs/interfaces/index.WorkModelLayer.html +6 -6
  159. package/docs/interfaces/index.WorkObserver.html +23 -23
  160. package/docs/interfaces/index.WorkPanoramaJson.html +3 -2
  161. package/docs/interfaces/index.WorkTile.html +8 -12
  162. package/docs/interfaces/index.WorksEvent.html +2 -2
  163. package/docs/interfaces/index.XRControllerEvent.html +2 -2
  164. package/docs/interfaces/index.XRGestureEvent.html +2 -2
  165. package/docs/interfaces/index.XRPanoramaControllerCustomInitArgs.html +52 -0
  166. package/docs/interfaces/index.XRSessionEvent.html +2 -2
  167. package/docs/modules/index.html +1 -1
  168. package/docs/types/index.ControllerCustomInitTypes.html +4 -2
  169. package/docs/types/index.ControllerEventTypes.html +25 -23
  170. package/docs/types/index.DeviceProfileOverride.html +5 -0
  171. package/docs/types/index.EventTypes.html +26 -26
  172. package/docs/types/index.FlowingLightLineInput.html +11 -0
  173. package/docs/types/index.Mode.html +6 -3
  174. package/docs/types/index.OutputTextureDataType.html +1 -1
  175. package/docs/types/index.PBMCustomNodeTargetType.html +1 -1
  176. package/docs/types/index.ParseOptions.html +14 -8
  177. package/docs/types/index.XRMachineType.html +7 -0
  178. package/docs/variables/index.GSPLAT_PIPELINE_AUTO.html +2 -0
  179. package/docs/variables/index.GSPLAT_PIPELINE_RASTER_CPU_SORT.html +2 -0
  180. package/docs/variables/index.GSPLAT_PIPELINE_RASTER_GPU_SORT.html +2 -0
  181. package/docs/variables/index.PBMVertexMarkFlag.html +4 -0
  182. package/docs/variables/index.PROXY_CONTROLLER_EVENT_NAMES.html +1 -1
  183. package/docs/variables/index.controllersDefaultInitArgs.html +1 -1
  184. package/five/application/controllers.d.ts +8 -0
  185. package/five/application/events.d.ts +1 -1
  186. package/five/application/five.d.ts +6 -1
  187. package/five/application/fiveInitArgs.d.ts +32 -1
  188. package/five/application/mode.d.ts +8 -1
  189. package/five/cardboard/helper.d.ts +2 -0
  190. package/five/cardboard/index.d.ts +13 -0
  191. package/five/cardboard/sensor.d.ts +158 -0
  192. package/five/controllers/base.d.ts +3 -0
  193. package/five/controllers/events.d.ts +5 -3
  194. package/five/controllers/panorama.d.ts +2 -2
  195. package/five/controllers/vrPanorama.d.ts +56 -0
  196. package/five/controllers/xrPanorama.d.ts +506 -0
  197. package/five/core/internalWebGPURenderer.d.ts +7 -1
  198. package/five/core/panoVideo.d.ts +4 -1
  199. package/five/core/tiling.d.ts +25 -11
  200. package/five/core/webglAsyncReadFix.d.ts +25 -0
  201. package/five/gaussian-splatting/gpu-sort/prefixSumKernel.d.ts +65 -0
  202. package/five/gaussian-splatting/gpu-sort/radixSortModule.d.ts +128 -0
  203. package/five/gaussian-splatting/gpu-sort/shaders/prefixSum.d.ts +2 -0
  204. package/five/gaussian-splatting/gpu-sort/shaders/radixHistogram.d.ts +2 -0
  205. package/five/gaussian-splatting/gpu-sort/shaders/radixReorder.d.ts +2 -0
  206. package/five/gaussian-splatting/gpu-sort/shaders/sortKeygen.d.ts +2 -0
  207. package/five/gaussian-splatting/gpu-sort/sortAdapter.d.ts +234 -0
  208. package/five/gaussian-splatting/pipelines/cpuSortPipeline.d.ts +159 -0
  209. package/five/gaussian-splatting/pipelines/gpuSortPipeline.d.ts +98 -0
  210. package/five/gaussian-splatting/pipelines/gsplatPipeline.d.ts +104 -0
  211. package/five/gaussian-splatting/pipelines/pipelineMode.d.ts +42 -0
  212. package/five/gaussian-splatting/pipelines/sortThrottle.d.ts +45 -0
  213. package/five/index.d.ts +8 -2
  214. package/five/index.js +272 -269
  215. package/five/index.mjs +8389 -4487
  216. package/five/meshes/panoCircleMeshCustom.d.ts +1 -0
  217. package/five/model/index.d.ts +3 -2
  218. package/five/model/materials/pbmGaussianSplattingNodeMaterial.d.ts +4 -0
  219. package/five/model/materials/pbmMaterial.d.ts +126 -19
  220. package/five/model/materials/pbmMeshMaterial.d.ts +0 -9
  221. package/five/model/materials/pbmPointCloudNodeMaterial.d.ts +1 -1
  222. package/five/model/materials/tsl/defines.d.ts +6 -1
  223. package/five/model/materials/tsl/outputBuilder.d.ts +1 -12
  224. package/five/model/materials/tsl/panoColor.d.ts +8 -2
  225. package/five/model/materials/tsl/utils.d.ts +13 -0
  226. package/five/model/objects/pbmGaussianSplattingObject.d.ts +9 -0
  227. package/five/model/objects/pbmGaussianSplattingRenderMesh.d.ts +67 -101
  228. package/five/model/objects/pbmPointCloud.d.ts +0 -1
  229. package/five/model/objects/pbmPointCloudObject.d.ts +1 -1
  230. package/five/model/parameter.d.ts +5 -4
  231. package/five/model/tile3d/index.d.ts +2 -0
  232. package/five/model/tile3d/tileset.d.ts +5 -0
  233. package/five/model/tile3d/trajectory-content.d.ts +53 -0
  234. package/five/renderer/index.d.ts +1 -1
  235. package/five/renderer/postprocessing/index.d.ts +1 -1
  236. package/five/texture/loader.d.ts +6 -0
  237. package/five/types/cube.d.ts +0 -1
  238. package/five/utils/detector.d.ts +11 -1
  239. package/five/utils/error.d.ts +1 -0
  240. package/five/utils/event.d.ts +26 -3
  241. package/five/utils/gainmap-data.d.ts +23 -0
  242. package/five/webxr/XRControllerModelFactory.d.ts +55 -0
  243. package/five/webxr/buttonStateMachine.d.ts +31 -0
  244. package/five/webxr/deviceProfile.d.ts +70 -0
  245. package/five/webxr/inputSourceTracker.d.ts +59 -0
  246. package/five/webxr/referenceSpace.d.ts +60 -0
  247. package/five/webxr/renderTargetBridge.d.ts +45 -0
  248. package/five/webxr/xrButton.d.ts +4 -0
  249. package/five/webxr/xrManager.d.ts +174 -0
  250. package/five/work/index.d.ts +1 -1
  251. package/five/work/looseWorkType.d.ts +2 -1
  252. package/five/work/work.d.ts +30 -7
  253. package/five/work/workJsonType.d.ts +2 -1
  254. package/gltf-loader/gltf-object.d.ts +17 -0
  255. package/gltf-loader/index.d.ts +45 -0
  256. package/gltf-loader/index.js +255 -0
  257. package/gltf-loader/index.mjs +302 -0
  258. package/line/circle_png.d.ts +1 -0
  259. package/line/index.d.ts +49 -0
  260. package/line/index.js +255 -0
  261. package/line/index.mjs +340 -0
  262. package/package.json +30 -5
  263. package/plugins/BackgroundPlugin/Controller.d.ts +20 -0
  264. package/plugins/BackgroundPlugin/index.d.ts +5 -0
  265. package/plugins/BackgroundPlugin/typings.d.ts +44 -0
  266. package/plugins/CSS2DPlugin/Controller.d.ts +59 -0
  267. package/plugins/CSS2DPlugin/index.d.ts +5 -0
  268. package/plugins/CSS2DPlugin/typing.d.ts +31 -0
  269. package/plugins/CSS3DPlugin/Controller.d.ts +64 -0
  270. package/plugins/CSS3DPlugin/index.d.ts +5 -0
  271. package/plugins/CSS3DPlugin/typing.d.ts +33 -0
  272. package/plugins/FloorplanPlugin/Controller.d.ts +100 -0
  273. package/plugins/FloorplanPlugin/index.d.ts +6 -0
  274. package/plugins/FloorplanPlugin/render/assets.d.ts +9 -0
  275. package/plugins/FloorplanPlugin/render/index.d.ts +35 -0
  276. package/plugins/FloorplanPlugin/render/isPointInPolygon.d.ts +5 -0
  277. package/plugins/FloorplanPlugin/render/renderFloor.d.ts +22 -0
  278. package/plugins/FloorplanPlugin/render/roomLabelVisibility.d.ts +10 -0
  279. package/plugins/FloorplanPlugin/typing.d.ts +156 -0
  280. package/plugins/FloorplanPlugin/typings/floorplanData.d.ts +112 -0
  281. package/plugins/FloorplanPlugin/typings/floorplanJson.d.ts +167 -0
  282. package/plugins/FloorplanPlugin/typings/floorplanServerData.d.ts +78 -0
  283. package/plugins/FloorplanPlugin/typings/index.d.ts +3 -0
  284. package/plugins/FloorplanPlugin/utils/changeMode.d.ts +5 -0
  285. package/plugins/FloorplanPlugin/utils/changeModelCanvasOpacity.d.ts +6 -0
  286. package/plugins/FloorplanPlugin/utils/correctFiveState.d.ts +11 -0
  287. package/plugins/FloorplanPlugin/utils/equal.d.ts +9 -0
  288. package/plugins/FloorplanPlugin/utils/filter.d.ts +8 -0
  289. package/plugins/FloorplanPlugin/utils/fiveModelLoad.d.ts +6 -0
  290. package/plugins/FloorplanPlugin/utils/formatData.d.ts +6 -0
  291. package/plugins/FloorplanPlugin/utils/formatFloorplanJson.d.ts +20 -0
  292. package/plugins/FloorplanPlugin/utils/formatPosition.d.ts +33 -0
  293. package/plugins/FloorplanPlugin/utils/getDistanceFromModel.d.ts +6 -0
  294. package/plugins/FloorplanPlugin/utils/getPxmm.d.ts +19 -0
  295. package/plugins/FloorplanPlugin/utils/isTruelyObject.d.ts +4 -0
  296. package/plugins/FloorplanPlugin/utils/nearlyEqual.d.ts +8 -0
  297. package/plugins/FloorplanPlugin/utils/polylabel.d.ts +8 -0
  298. package/plugins/FloorplanPlugin/utils/to.d.ts +5 -0
  299. package/plugins/Object3DHelperPlugin/Controller.d.ts +99 -0
  300. package/plugins/Object3DHelperPlugin/Controllers/BaseController.d.ts +142 -0
  301. package/plugins/Object3DHelperPlugin/Controllers/BoundingBoxController.d.ts +16 -0
  302. package/plugins/Object3DHelperPlugin/Controllers/MoveController.d.ts +66 -0
  303. package/plugins/Object3DHelperPlugin/Controllers/RotateController.d.ts +61 -0
  304. package/plugins/Object3DHelperPlugin/FiveControllerWrapper.d.ts +17 -0
  305. package/plugins/Object3DHelperPlugin/Helper/BaseHelper.d.ts +97 -0
  306. package/plugins/Object3DHelperPlugin/Helper/BoundingBoxHelper.d.ts +16 -0
  307. package/plugins/Object3DHelperPlugin/Helper/MoveHelper.d.ts +37 -0
  308. package/plugins/Object3DHelperPlugin/Helper/RotateHelper.d.ts +93 -0
  309. package/plugins/Object3DHelperPlugin/constant.d.ts +27 -0
  310. package/plugins/Object3DHelperPlugin/index.d.ts +6 -0
  311. package/plugins/Object3DHelperPlugin/typing.d.ts +143 -0
  312. package/plugins/Object3DHelperPlugin/utils/ArrowGroup.d.ts +22 -0
  313. package/plugins/Object3DHelperPlugin/utils/CenterHandle.d.ts +23 -0
  314. package/plugins/Object3DHelperPlugin/utils/PlaneHandle.d.ts +19 -0
  315. package/plugins/Object3DHelperPlugin/utils/calculateScaleByCamera.d.ts +5 -0
  316. package/plugins/Object3DHelperPlugin/utils/cameraHooks.d.ts +3 -0
  317. package/plugins/Object3DHelperPlugin/utils/direction.d.ts +14 -0
  318. package/plugins/Object3DHelperPlugin/utils/getMouseRaycaster.d.ts +5 -0
  319. package/plugins/Object3DHelperPlugin/utils/getOrthographicCameraDirection.d.ts +8 -0
  320. package/plugins/Object3DHelperPlugin/utils/setObjectQuaternion.d.ts +8 -0
  321. package/plugins/Object3DHelperPlugin/utils/solidGuide.d.ts +27 -0
  322. package/plugins/Object3DHelperPlugin/utils/tipsDom.d.ts +8 -0
  323. package/plugins/PanoAnimePlugin/Controller.d.ts +49 -0
  324. package/plugins/PanoAnimePlugin/index.d.ts +5 -0
  325. package/plugins/PanoAnimePlugin/typing.d.ts +37 -0
  326. package/plugins/index.d.ts +6 -0
  327. package/plugins/index.js +748 -3
  328. package/plugins/index.mjs +28761 -88
  329. package/plugins/thirdParty/CSS2DRenderer.d.ts +37 -0
  330. package/plugins/thirdParty/CSS3DRenderer.d.ts +45 -0
  331. package/plugins/thirdParty/OrbitControls.d.ts +78 -0
  332. package/plugins/thirdParty/doctorstrange-model.d.ts +92 -0
  333. package/plugins/thirdParty/domevents.d.ts +36 -0
  334. package/plugins/utils/clamp.d.ts +2 -0
  335. package/plugins/utils/uuid.d.ts +2 -0
  336. package/react/index.js +2 -2
  337. package/react/index.mjs +2 -2
  338. package/sticker/geometry.d.ts +3 -0
  339. package/sticker/index.d.ts +68 -0
  340. package/sticker/index.js +255 -0
  341. package/sticker/index.mjs +358 -0
  342. package/umd/five-gltf-loader.js +255 -0
  343. package/umd/five-line.js +322 -0
  344. package/umd/five-plugins.js +816 -3
  345. package/umd/five-react.js +2 -2
  346. package/umd/five-sticker.js +255 -0
  347. package/umd/five-vfx.js +323 -0
  348. package/umd/five.js +347 -344
  349. package/vfx/airflow/airflow.d.ts +18 -0
  350. package/vfx/common/simplex-noise.d.ts +2 -0
  351. package/vfx/frame/frame.d.ts +27 -0
  352. package/vfx/index.d.ts +7 -0
  353. package/vfx/index.js +255 -0
  354. package/vfx/index.mjs +738 -0
  355. package/vfx/particle/instance.d.ts +36 -0
  356. package/vfx/particle/particle.d.ts +119 -0
  357. package/vfx/particle/utils.d.ts +11 -0
  358. package/vfx/particle-gpu/particle.d.ts +75 -0
  359. package/vfx/particle-gpu/utils.d.ts +11 -0
  360. package/vfx/spotLight/spotLight.d.ts +15 -0
  361. package/work-downloader/components/model-3d-tile.d.ts +2 -0
  362. package/work-downloader/components/model.d.ts +3 -0
  363. package/work-downloader/components/observer.d.ts +9 -0
  364. package/work-downloader/download.d.ts +16 -0
  365. package/work-downloader/index.d.ts +2 -0
  366. package/work-downloader/index.js +255 -0
  367. package/work-downloader/index.mjs +595 -0
  368. package/work-downloader/type.d.ts +28 -0
  369. package/work-downloader/utils/download-to-file.d.ts +1 -0
  370. package/work-downloader/utils/image-processing.d.ts +7 -0
  371. package/work-downloader/utils/join-url.d.ts +2 -0
  372. package/work-downloader/utils/log.d.ts +1 -0
  373. package/work-downloader/utils/relative-url.d.ts +1 -0
  374. package/docs/interfaces/index.PBMHDRConfig.html +0 -12
  375. package/five/gaussian-splatting/worker/dataWorker.d.ts +0 -1
  376. package/five/three-version-check.d.ts +0 -1
  377. package/five/utils/hdr-data.d.ts +0 -13
  378. package/five/utils/shaderContentFix.d.ts +0 -7
@@ -60,7 +60,6 @@ export declare class PBMPointCloud extends THREE.Mesh<THREE.InstancedBufferGeome
60
60
  outlineGain: number;
61
61
  distanceGain: number;
62
62
  useAddBlend: boolean;
63
- vertexMarks: boolean;
64
63
  clippers: readonly PBMClipperParameter[];
65
64
  readonly modelBoundingMin: THREE.Vector3;
66
65
  readonly modelBoundingMax: THREE.Vector3;
@@ -42,7 +42,7 @@ export declare class PBMPointCloudObject extends THREE.Object3D {
42
42
  outlineGain: number;
43
43
  distanceGain: number;
44
44
  useAddBlend: boolean;
45
- vertexMarks: boolean;
45
+ vertexMarks: boolean | number;
46
46
  clippers: readonly PBMClipperParameter[];
47
47
  readonly modelBoundingMin: THREE.Vector3;
48
48
  readonly modelBoundingMax: THREE.Vector3;
@@ -4,11 +4,12 @@ import type { TileRequestOrder } from './tile3d/types';
4
4
  import type { Camera } from '../core/camera';
5
5
  export interface ParameterMaterialValue {
6
6
  /**
7
- * 是否生效标注
8
- * 开启后,模型顶点上会预置 `_feature_id_rsmask` 标记。
9
- * _feature_id_rsmask=1,在俯视等特定视角下,引擎会自动隐藏被标记的顶点对应的 Mesh,从而实现“开盖”效果,让室内布局观测更加清晰、观感更好。
7
+ * 是否生效标注(按位掩码 PBMVertexMarkFlag)
8
+ * 开启后,模型顶点上会预置 `_feature_id_rsmask` 标记,可按位独立控制开盖(roof)与隐藏(hidden)。
9
+ * _feature_id_rsmask=1 对应 roof,在俯视等特定视角下引擎会自动隐藏被标记的顶点对应的 Mesh,从而实现“开盖”效果,让室内布局观测更加清晰、观感更好。
10
+ * 兼容旧的 boolean:true=全开(all),false=全关(none)。
10
11
  */
11
- vertexMarks: boolean;
12
+ vertexMarks: boolean | number;
12
13
  /** 起始点 */
13
14
  pano0: PBMPanoPicture | null;
14
15
  /** 结束点 */
@@ -73,6 +73,8 @@ export declare class Tile3D extends THREE.Object3D {
73
73
  loadContent(tile: Tile): Promise<void>;
74
74
  unloadContent(tile: Tile): Promise<void>;
75
75
  loadAllTilesets(): Promise<void>;
76
+ loadTrajectory(trajectory: Trajectory): Promise<void>;
77
+ unloadTrajectory(trajectory: Trajectory): Promise<void>;
76
78
  intersectRaycaster(raycaster: THREE.Raycaster, target?: Intersection[]): Intersection[];
77
79
  update(renderer: THREE.WebGPURenderer, camera: Camera, modelScene: ModelScene, model: Model): boolean;
78
80
  dispose(): void;
@@ -12,6 +12,11 @@ export interface TilesetOptions {
12
12
  onTileLoad: (tile: Tile) => any;
13
13
  onTileUnload: (tile: Tile) => any;
14
14
  onTileError: (tile: Tile, error: Error) => any;
15
+ trajectoryLoader: (trajectory: Trajectory) => Promise<void>;
16
+ trajectoryUnloader: (trajectory: Trajectory) => Promise<void>;
17
+ onTrajectoryLoad: (trajectory: Trajectory) => any;
18
+ onTrajectoryUnload: (trajectory: Trajectory) => any;
19
+ onTrajectoryError: (trajectory: Trajectory, error: Error) => any;
15
20
  }
16
21
  export declare class Tileset {
17
22
  asset: {
@@ -0,0 +1,53 @@
1
+ import * as THREE from 'three/webgpu';
2
+ import type { Trajectory } from './trajectory';
3
+ import { Fetcher } from '../../utils/ajax';
4
+ /**
5
+ * 轨迹的两套自定义着色器原为 GLSL `ShaderMaterial`,WebGPURenderer 只支持 NodeMaterial
6
+ * (其它材质类型会被退化成空白 NodeMaterial),这里按 GLSL 逐层翻译为 TSL:
7
+ *
8
+ * 管道 TRAJECTOR_PIPE:
9
+ * vertex: `vUv = uv;` + `transformed += normalize(objectNormal) * displacementScalar`
10
+ * fragment: `if (mod(abs(vUv.x * totalLength + dashOffset), dashSize.x + dashSize.y) > dashSize.x) discard;`
11
+ * `vec4 diffuseColor = vec4(mix(diffuse, diffuse2, vUv.x), opacity);`
12
+ * 圆球 TRAJECTOR_SPHERE:
13
+ * vertex: `transformed += normalize(objectNormal) * displacementScalar`
14
+ * fragment: `vec4 diffuseColor = vec4(diffuse, opacity);`
15
+ *
16
+ * 说明:
17
+ * - 原 shader 里的 `<tonemapping_fragment>` / `<colorspace_fragment>` 由渲染器的 Output 通道统一处理
18
+ * (WebGPURenderer 把 tone mapping 与输出色彩空间放到独立的输出 pass),<fog_fragment> /
19
+ * `<premultiplied_alpha_fragment>` 对应 NodeMaterial 的 `fog` / `premultipliedAlpha` 属性(默认 fog 生效)。
20
+ * - 颜色不再调用 `convertSRGBToLinear()`:r152+ 的 `new THREE.Color(hex)` 已经按 sRGB 解释并转到线性工作空间,
21
+ * 再转换一次会变暗。
22
+ * - `uniform()` 生成的 uniform 节点保留 `.value` 读写,所以材质上挂的 `uniforms` 与 GLSL 版本用法一致
23
+ * (见 trajectory-node.ts 的 dashOffset 动画)。
24
+ */
25
+ declare function createPipeUniforms(): {
26
+ diffuse: THREE.UniformNode<"color", THREE.Color>;
27
+ diffuse2: THREE.UniformNode<"color", THREE.Color>;
28
+ opacity: THREE.UniformNode<"float", number>;
29
+ displacementScalar: THREE.UniformNode<"float", number>;
30
+ totalLength: THREE.UniformNode<"float", number>;
31
+ dashSize: THREE.UniformNode<"vec2", THREE.Vector2>;
32
+ dashOffset: THREE.UniformNode<"float", number>;
33
+ };
34
+ declare function createSphereUniforms(): {
35
+ diffuse: THREE.UniformNode<"color", THREE.Color>;
36
+ opacity: THREE.UniformNode<"float", number>;
37
+ displacementScalar: THREE.UniformNode<"float", number>;
38
+ };
39
+ export type TrajectoryPipeUniforms = ReturnType<typeof createPipeUniforms>;
40
+ export type TrajectorySphereUniforms = ReturnType<typeof createSphereUniforms>;
41
+ export type TrajectoryPipeMaterial = THREE.NodeMaterial & {
42
+ uniforms: TrajectoryPipeUniforms;
43
+ };
44
+ export type TrajectorySphereMaterial = THREE.NodeMaterial & {
45
+ uniforms: TrajectorySphereUniforms;
46
+ };
47
+ export declare function loadTrajectory<T extends Trajectory>(trajectory: T, options: {
48
+ fetcher: Fetcher;
49
+ search?: string;
50
+ renderer?: THREE.WebGPURenderer;
51
+ }): Promise<T>;
52
+ export declare function unloadTrajectory(trajectory: Trajectory): void;
53
+ export {};
@@ -1,3 +1,3 @@
1
- export { EffectComposer, FivePass, type Pass, AdaptiveLuminancePass, EyeDomeLightingPass, FlowingLight2DPass, type FlowingLight2DPassLine, FlowingLight3DPass, type FlowingLight3DPassLine, GaussianBlurPass, FlowingFireworks3DPass, type FlowingFireworks3DPassLine, } from './postprocessing';
1
+ export { EffectComposer, FivePass, type Pass, AdaptiveLuminancePass, EyeDomeLightingPass, FlowingLight2DPass, type FlowingLight2DPassLine, FlowingLight3DPass, type FlowingLight3DPassLine, type FlowingLightLineInput, GaussianBlurPass, FlowingFireworks3DPass, type FlowingFireworks3DPassLine, } from './postprocessing';
2
2
  export { FullScreenQuad } from './tools/full-screen-quad';
3
3
  export { FiveRenderer } from './five-renderer';
@@ -4,5 +4,5 @@ export { AdaptiveLuminancePass } from './passes/adaptive-luminance-pass';
4
4
  export { EyeDomeLightingPass } from './passes/eye-dome-lighting-pass';
5
5
  export { GaussianBlurPass } from './passes/gaussian-blur-pass';
6
6
  export { FlowingLight2DPass, type FlowingLight2DPassLine } from './passes/flowing-light-2d-pass';
7
- export { FlowingLight3DPass, type FlowingLight3DPassLine } from './passes/flowing-light-3d-pass';
7
+ export { FlowingLight3DPass, type FlowingLight3DPassLine, type FlowingLightLineInput } from './passes/flowing-light-3d-pass';
8
8
  export { FlowingFireworks3DPass, type FlowingFireworks3DPassLine } from './passes/flowing-fireworks-3d-pass';
@@ -27,6 +27,12 @@ export declare class TextureLoader {
27
27
  options?: ImageURLOptions;
28
28
  };
29
29
  format?: THREE.PixelFormat;
30
+ /**
31
+ * 色彩空间
32
+ * @description 缺省为 `SRGBColorSpace`(颜色贴图)。非颜色数据(如 gainmap)应显式传 `NoColorSpace`,
33
+ * 否则会被当成 sRGB 解码(WebGPU 下会创建 `rgba8unorm-srgb` 做硬件解码)。
34
+ */
35
+ colorSpace?: THREE.ColorSpace;
30
36
  minFilter?: THREE.TextureFilter;
31
37
  magFilter?: THREE.TextureFilter;
32
38
  generateMipmaps?: boolean;
@@ -1,2 +1 @@
1
1
  export type CubeFace = 'right' | 'left' | 'up' | 'down' | 'front' | 'back';
2
- export type GainMapFace = 'gainmap_right' | 'gainmap_left' | 'gainmap_up' | 'gainmap_down' | 'gainmap_front' | 'gainmap_back';
@@ -1,8 +1,18 @@
1
1
  declare const userAgent: string;
2
+ declare const isHdrHighDynamicRange: () => boolean;
2
3
  /**
3
4
  * 是否可以使用 webgl
4
5
  */
5
6
  declare const canWebGL: boolean;
7
+ /**
8
+ * 是否可以使用 webgpu
9
+ * @description
10
+ * 初始值基于 `navigator.gpu` 是否存在做同步判断,随后通过 `navigator.gpu.requestAdapter()`
11
+ * 异步校正(部分设备/浏览器声明了 `navigator.gpu` 但实际无可用 adapter)。
12
+ * 因此该值在页面刚加载的极短时间内可能还未完成校正,如需强一致的判断请使用 `canWebGPUAsync`。
13
+ */
14
+ declare let canWebGPU: boolean;
15
+ declare const canWebGPUAsync: Promise<boolean>;
6
16
  /**
7
17
  * 是否可以 pushState
8
18
  */
@@ -11,4 +21,4 @@ declare const canPushState: boolean;
11
21
  * 是否是通过手机访问
12
22
  */
13
23
  declare const isMobile: boolean;
14
- export { userAgent, canWebGL, canPushState, isMobile, };
24
+ export { userAgent, isHdrHighDynamicRange, canWebGL, canWebGPU, canWebGPUAsync, canPushState, isMobile, };
@@ -0,0 +1 @@
1
+ export declare function toError(error: any): Error;
@@ -12,7 +12,10 @@ export interface BaseEvent {
12
12
  type: string;
13
13
  timeStamp: number;
14
14
  preventDefault(): void;
15
- defaultPrevented: boolean;
15
+ readonly defaultPrevented: boolean;
16
+ }
17
+ export interface BaseExtendableEvent extends BaseEvent {
18
+ waitUntil(f: Promise<any>): void;
16
19
  }
17
20
  export interface IntersectEvent extends BaseEvent {
18
21
  object: THREE.Object3D;
@@ -29,6 +32,17 @@ export interface PanoEvent extends StateEvent {
29
32
  options: MovePanoOptions;
30
33
  error: Error | null;
31
34
  }
35
+ /** 全景图准备事件 */
36
+ export interface PanoPrepareEvent extends BaseExtendableEvent {
37
+ /** 切换时选项 */
38
+ options: MovePanoOptions;
39
+ /** 切换前模态 */
40
+ prevMode: Mode;
41
+ /** 切换前的全景图 */
42
+ prevPano: Pano;
43
+ /** 全景图 */
44
+ pano: Pano;
45
+ }
32
46
  export interface PanoTextureEvent extends BaseEvent {
33
47
  pano: Pano;
34
48
  progress: number;
@@ -73,9 +87,16 @@ export interface GestureEvent extends StateEvent {
73
87
  overallVelocityX: number;
74
88
  overallVelocityY: number;
75
89
  }
90
+ /**
91
+ * XR 设备类型。
92
+ * - `Pico`:字节 Pico 系列
93
+ * - `Oculus`:Meta Quest / Oculus 系列
94
+ * - `VP`:Apple Vision Pro
95
+ */
96
+ export type XRMachineType = 'Pico' | 'Oculus' | 'VP';
76
97
  export interface XRSessionEvent extends BaseEvent {
77
98
  session: XRSession | null;
78
- machineType: 'Pico' | 'Oculus';
99
+ machineType: XRMachineType;
79
100
  }
80
101
  export interface XRControllerEvent extends BaseEvent {
81
102
  left: {
@@ -112,7 +133,7 @@ export interface XRControllerEvent extends BaseEvent {
112
133
  export interface XRGestureEvent extends BaseEvent {
113
134
  session: XRSession | null;
114
135
  buttons: 'A' | 'B' | 'X' | 'Y' | 'RightTrigger' | 'RightPinch' | 'LeftTrigger' | 'LeftPinch' | 'LeftAxesLeft' | 'LeftAxesRight' | 'LeftAxesUp' | 'LeftAxesDown' | 'RightAxesLeft' | 'RightAxesRight' | 'RightAxesUp' | 'RightAxesDown';
115
- machineType: 'Pico' | 'Oculus';
136
+ machineType: XRMachineType;
116
137
  isFirst: boolean;
117
138
  isFinal: boolean;
118
139
  controllers: {
@@ -157,3 +178,5 @@ export interface NetworkResourceEvent extends BaseEvent {
157
178
  detail: string;
158
179
  }
159
180
  export declare function createEvent<T extends BaseEvent = BaseEvent>(type: string, eventArgs: Omit<T, keyof BaseEvent>): T;
181
+ export declare function createExtendableEvent<T extends BaseExtendableEvent = BaseExtendableEvent>(type: string, eventArgs: Omit<T, keyof BaseExtendableEvent>): T;
182
+ export declare function waitForExtendableEvent(event: BaseExtendableEvent): Promise<void>;
@@ -0,0 +1,23 @@
1
+ export interface GainmapCfgData {
2
+ /** gainmap 最大亮度增益 */
3
+ maxContentBoost: number;
4
+ /** gainmap 最小亮度增益(通常为 1) */
5
+ minContentBoost: number;
6
+ /** 显示器 HDR 容量下限(通常为 1) */
7
+ hdrCapacityMin: number;
8
+ /** 显示器 HDR 容量上限 */
9
+ hdrCapacityMax: number;
10
+ /** gainmap gamma 值 */
11
+ gamma: number;
12
+ /** SDR 偏移,缺省 1/64(UltraHDR 规范) */
13
+ offsetSdr: number;
14
+ /** HDR 偏移,缺省 1/64(UltraHDR 规范) */
15
+ offsetHdr: number;
16
+ }
17
+ /**
18
+ * `GainmapCfgData` 的默认值(UltraHDR 规范默认值)
19
+ *
20
+ * offset 取规范默认 1/64:编码/解码 offset 必须一致,数据里显式提供时以数据为准
21
+ */
22
+ export declare const DEFAULT_GAINMAP_CFG_DATA: Readonly<GainmapCfgData>;
23
+ export declare function parseGainmapCfgData(input: unknown): GainmapCfgData;
@@ -0,0 +1,55 @@
1
+ import { Object3D } from 'three/webgpu';
2
+ import * as THREE from 'three/webgpu';
3
+ /**
4
+ * @description Builds a motion controller with components and visual responses based on the
5
+ * supplied profile description. Data is polled from the xrInputSource's gamepad.
6
+ * @author Nell Waliczek / https://github.com/NellWaliczek
7
+ */
8
+ declare class MotionController {
9
+ /**
10
+ * @param {Object} xrInputSource - The XRInputSource to build the MotionController around
11
+ * @param {Object} profile - The best matched profile description for the supplied xrInputSource
12
+ * @param {Object} assetUrl
13
+ */
14
+ xrInputSource: XRInputSource;
15
+ assetUrl: string;
16
+ id: any;
17
+ layoutDescription: any;
18
+ components: any;
19
+ constructor(xrInputSource: XRInputSource, profile: any, assetUrl: string);
20
+ get gripSpace(): XRSpace | undefined;
21
+ get targetRaySpace(): XRSpace;
22
+ /**
23
+ * @description Returns a subset of component data for simplified debugging
24
+ */
25
+ get data(): any[];
26
+ /**
27
+ * @description Poll for updated data based on current gamepad state
28
+ */
29
+ updateFromGamepad(): void;
30
+ }
31
+ declare class XRControllerModel extends Object3D {
32
+ motionController: MotionController | null;
33
+ envMap: THREE.Texture | null;
34
+ constructor();
35
+ setEnvironmentMap(envMap: THREE.Texture): this;
36
+ /**
37
+ * Polls data from the XRInputSource and updates the model's components to match
38
+ * the real world data
39
+ */
40
+ updateMatrixWorld(force: boolean): void;
41
+ }
42
+ declare class XRControllerModelFactory {
43
+ path: string;
44
+ _assetCache: any;
45
+ gltfLoader: {
46
+ load: (url: string, callback: (result: {
47
+ scene: THREE.Object3D;
48
+ }) => void) => any;
49
+ } | null;
50
+ constructor(gltfLoader?: {
51
+ load: () => any;
52
+ } | null);
53
+ createControllerModel(controller: any): XRControllerModel;
54
+ }
55
+ export { XRControllerModelFactory };
@@ -0,0 +1,31 @@
1
+ export type ButtonName = 'A' | 'B' | 'X' | 'Y' | 'LeftTrigger' | 'RightTrigger' | 'LeftPinch' | 'RightPinch';
2
+ export type ButtonEventType = 'buttonDown' | 'press' | 'buttonUp' | 'tap';
3
+ export interface ButtonEvent {
4
+ type: ButtonEventType;
5
+ name: ButtonName;
6
+ source: XRInputSource;
7
+ time: number;
8
+ duration: number;
9
+ }
10
+ /** 区分 tap 与 press 的阈值(毫秒):时长 < 300 为 tap,>= 300(含恰好 300)为 press */
11
+ export declare const TAP_PRESS_THRESHOLD_MS = 300;
12
+ export declare class ButtonStateMachine {
13
+ /** 以输入源对象为外层键;使用 Map 以便 removeSource / reset 遍历 */
14
+ private readonly states;
15
+ /**
16
+ * 采样一个按键,返回按派发顺序排列的事件(可能为空)。
17
+ * 严格遵循设计 4.5 的状态转移表。
18
+ */
19
+ sample(source: XRInputSource, name: ButtonName, pressed: boolean, time: number): ButtonEvent[];
20
+ /**
21
+ * 输入源被移除:该输入源每个按下中的键只派发 buttonUp(不派发 tap / press),
22
+ * 并清除该输入源的全部状态。
23
+ */
24
+ removeSource(source: XRInputSource, time: number): ButtonEvent[];
25
+ /**
26
+ * 会话结束:全部按下中的键只派发 buttonUp(不派发 tap / press),并清空全部状态。
27
+ */
28
+ reset(time: number): ButtonEvent[];
29
+ /** 删除单个键的状态;输入源下无按下键时一并移除外层条目 */
30
+ private deleteState;
31
+ }
@@ -0,0 +1,70 @@
1
+ export type DeviceType = 'Pico' | 'Oculus' | 'VP' | 'Default';
2
+ /** 对外事件(`machineType`)中出现的设备类型,不含 `Default`。 */
3
+ export type PublicMachineType = 'Pico' | 'Oculus' | 'VP';
4
+ /** 手柄按键 / 轴映射与模型选择(需求 11.11)。 */
5
+ export interface DeviceProfile {
6
+ /** `gamepad.buttons` 下标,`null` 表示不映射(VP) */
7
+ buttons: {
8
+ trigger: number | null;
9
+ grip: number | null;
10
+ primary: number | null;
11
+ secondary: number | null;
12
+ pinch: number | null;
13
+ };
14
+ /** `gamepad.axes` 下标,`null` 表示不映射 */
15
+ axes: {
16
+ x: number | null;
17
+ y: number | null;
18
+ };
19
+ /** `'auto'`:由 `XRControllerModelFactory` 按 profiles 加载;`'none'`:不加载模型 */
20
+ model: 'auto' | 'none';
21
+ }
22
+ /** 调用方对 {@link DeviceProfile} 的按字段覆盖(需求 11.4)。 */
23
+ export type DeviceProfileOverride = {
24
+ buttons?: Partial<DeviceProfile['buttons']>;
25
+ axes?: Partial<DeviceProfile['axes']>;
26
+ model?: DeviceProfile['model'];
27
+ };
28
+ /** 非法覆盖字段的告警回调,参数为字段名,例如 `'buttons.trigger'`、`'axes.x'`、`'model'`。 */
29
+ export type DeviceProfileWarn = (field: string) => void;
30
+ /**
31
+ * 四种设备类型的默认 Device_Profile(深冻结,只读)。
32
+ *
33
+ * 需要可修改的副本时使用 {@link resolveProfile}。
34
+ */
35
+ export declare const DEFAULT_PROFILES: Readonly<Record<DeviceType, Readonly<DeviceProfile>>>;
36
+ /**
37
+ * 通过 UA 判定设备类型(需求 11.3)。
38
+ *
39
+ * 判定顺序,命中第一个即返回:
40
+ * 1. UA 含 `PICO` 或 `Pico`(区分大小写)→ `Pico`(Pico 4 的 UA 同时含 `OculusBrowser`,必须先判 Pico)
41
+ * 2. UA 含 `Macintosh` 且 `maxTouchPoints === 5` → `VP`
42
+ * 3. UA 含 `Oculus` → `Oculus`
43
+ * 4. 其它 → `Default`
44
+ *
45
+ * 参数缺省时读取 `navigator.userAgent` / `navigator.maxTouchPoints`;读取抛错一律返回 `Default`,永不抛错。
46
+ *
47
+ * @param ua - User-Agent,缺省取 `navigator.userAgent`
48
+ * @param maxTouchPoints - 最大触点数,缺省取 `navigator.maxTouchPoints`
49
+ */
50
+ export declare function detectDeviceType(ua?: string, maxTouchPoints?: number): DeviceType;
51
+ /**
52
+ * 生成实际生效的 Device_Profile(需求 11.4)。
53
+ *
54
+ * - 先深拷贝 `type` 对应的默认值(未知类型回落 `Default`),不修改 {@link DEFAULT_PROFILES}。
55
+ * - 覆盖字段为合法值(`null` 或 ≥ 0 的整数)才覆盖;非法下标回落默认值并调用 `warn(字段名)`。
56
+ * - `model` 只接受 `'auto'` / `'none'`,非法回落默认值并 `warn('model')`。
57
+ * - 未提供(`undefined`)的字段保留默认值,不告警。
58
+ *
59
+ * @param type - 设备类型
60
+ * @param override - 调用方覆盖
61
+ * @param warn - 非法字段告警回调,参数为字段名(如 `'buttons.trigger'`)
62
+ * @returns 新对象,可自由修改
63
+ */
64
+ export declare function resolveProfile(type: DeviceType, override?: DeviceProfileOverride, warn?: DeviceProfileWarn): DeviceProfile;
65
+ /**
66
+ * 把内部设备类型映射为事件中 `machineType` 的公开取值(需求 13.1)。
67
+ *
68
+ * `Default` 映射为 `'Pico'`,与迁移前“其余归为 Pico”的行为一致;其余原样返回。
69
+ */
70
+ export declare function toPublicMachineType(device: DeviceType): PublicMachineType;
@@ -0,0 +1,59 @@
1
+ import * as THREE from "three/webgpu";
2
+ /**
3
+ * 单个输入源的追踪条目。
4
+ */
5
+ export interface TrackedInput {
6
+ /** 对应的 XR 输入源(条目的键,与 `session.inputSources` 下标无关) */
7
+ source: XRInputSource;
8
+ /** target ray 节点,位置/朝向直接写世界值(已加 offset) */
9
+ targetRay: THREE.Object3D;
10
+ /** grip 节点,位置/朝向直接写世界值(已加 offset) */
11
+ grip: THREE.Object3D;
12
+ /** 最近一次 target ray 成功更新(pose 非空)时的帧号 */
13
+ rayFrame: number;
14
+ }
15
+ export declare class InputSourceTracker {
16
+ /** 所有手柄节点的父节点;调用方负责把它加入 scene,`clear()` 不会移除它自身 */
17
+ readonly root: THREE.Group<THREE.Object3DEventMap>;
18
+ private readonly _entries;
19
+ /** `fill` 用的临时向量,避免每次调用分配 */
20
+ private readonly _dir;
21
+ /**
22
+ * 为 `inputsourceschange` 中 `added` 的输入源新增追踪条目。
23
+ * 已存在的输入源被忽略(不重建节点)。新节点初始不可见,待首个有效 pose 到来后显示。
24
+ */
25
+ add(sources: readonly XRInputSource[]): void;
26
+ /**
27
+ * 删除 `inputsourceschange` 中 `removed` 的输入源条目,并把节点从 `root` 移除。
28
+ *
29
+ * @returns 实际被删除的条目(未追踪的输入源不会出现在结果中)
30
+ */
31
+ remove(sources: readonly XRInputSource[]): TrackedInput[];
32
+ update(frame: XRFrame, ref: XRReferenceSpace, offset: THREE.Vector3, frameNo: number): void;
33
+ /**
34
+ * 隐藏全部节点,保持上一帧的位置与朝向不变(需求 6.10:Head_Pose 为 `null` 时调用)。
35
+ * 不触碰 `rayFrame`,由 `fill` 对 `visible` 的检查保证不会再填充射线。
36
+ */
37
+ hideAll(): void;
38
+ /**
39
+ * 用指定输入源本帧的 target ray 填充复用的 Raycaster(需求 6.8)。
40
+ *
41
+ * 仅当该输入源有条目、`rayFrame === frameNo` 且 target ray 节点可见时才写入:
42
+ * origin 为节点世界位置,direction 为局部 -Z 经世界旋转后的单位向量。
43
+ * 否则不修改 `raycaster`。
44
+ *
45
+ * @returns 本帧是否已填充
46
+ */
47
+ fill(source: XRInputSource, raycaster: THREE.Raycaster, frameNo: number): boolean;
48
+ /**
49
+ * 清空全部追踪条目,并把所有节点从 `root` 移除(需求 6.11)。
50
+ * `root` 自身不移除,由调用方管理。
51
+ */
52
+ clear(): void;
53
+ /** 当前全部追踪条目(键为 `XRInputSource` 对象) */
54
+ entries(): ReadonlyMap<XRInputSource, TrackedInput>;
55
+ /**
56
+ * 把参考空间位姿写入节点:位置加 offset、朝向直接取 pose,并同步世界矩阵。
57
+ */
58
+ private _applyPose;
59
+ }
@@ -0,0 +1,60 @@
1
+ /** 单个类型的失败原因:被拒绝 / 超时。 */
2
+ export type ReferenceSpaceFailureReason = 'rejected' | 'timeout';
3
+ /** 一次失败的尝试记录。 */
4
+ export interface ReferenceSpaceFailure {
5
+ type: XRReferenceSpaceType;
6
+ reason: ReferenceSpaceFailureReason;
7
+ }
8
+ /** 解析结果。 */
9
+ export interface ResolvedReferenceSpace {
10
+ /** 实际采用的参考空间对象 */
11
+ space: XRReferenceSpace;
12
+ /** 实际采用的类型 */
13
+ type: XRReferenceSpaceType;
14
+ /** 采用之前失败的类型(按尝试顺序) */
15
+ failures: ReferenceSpaceFailure[];
16
+ }
17
+ /** 解析选项。 */
18
+ export interface ResolveReferenceSpaceOptions {
19
+ /** 单次请求的超时毫秒数,默认 5000 */
20
+ timeoutMs?: number;
21
+ /** 会话是否已提前结束;每次 await 之后检查,为真则抛出 aborted 错误 */
22
+ isAborted?: () => boolean;
23
+ /** 注入的 setTimeout,便于假计时器;默认使用全局 setTimeout */
24
+ schedule?: (callback: () => void, ms: number) => unknown;
25
+ /** 注入的 clearTimeout,与 schedule 配对;默认使用全局 clearTimeout */
26
+ clear?: (handle: any) => void;
27
+ }
28
+ /** 全部类型失败时抛出的错误:附带按尝试顺序排列的 `attempts`。 */
29
+ export interface ReferenceSpaceExhaustedError extends Error {
30
+ attempts: ReferenceSpaceFailure[];
31
+ }
32
+ /** 会话提前结束时抛出的错误:带 `aborted: true` 标记。 */
33
+ export interface ReferenceSpaceAbortedError extends Error {
34
+ aborted: true;
35
+ }
36
+ /** 单次请求默认超时(毫秒)。 */
37
+ export declare const DEFAULT_REFERENCE_SPACE_TIMEOUT_MS = 5000;
38
+ /** 判断一个错误是否为「会话在参考空间解析前已结束」。 */
39
+ export declare function isReferenceSpaceAbortedError(error: unknown): error is ReferenceSpaceAbortedError;
40
+ /**
41
+ * 构造降级链:`[preferred, 'local', 'viewer']` 去重并保持顺序,且以 'viewer' 收尾。
42
+ *
43
+ * 去重后在第一个 'viewer' 处截断:期望类型为 'viewer' 时链仅含 'viewer',
44
+ * 不会在 viewer 失败后再多请求一次 'local'(需求 10.1)。
45
+ *
46
+ * @param preferred - 期望的参考空间类型
47
+ * @returns 降级链(preferred 为 'local' 时 ['local','viewer'];为 'viewer' 时 ['viewer'];
48
+ * 其它类型 x 时 [x,'local','viewer'])
49
+ */
50
+ export declare function buildChain(preferred: XRReferenceSpaceType): XRReferenceSpaceType[];
51
+ /**
52
+ * 解析参考空间:按降级链串行请求,采用第一个成功的类型。
53
+ *
54
+ * @param session - 当前 XRSession
55
+ * @param preferred - 期望的参考空间类型
56
+ * @param opts - 超时、中止检查与计时器注入
57
+ * @returns 采用的空间、类型与此前的失败记录
58
+ * @throws 会话提前结束时抛出 `aborted: true` 的错误;全部失败时抛出带 `attempts` 的错误
59
+ */
60
+ export declare function resolveReferenceSpace(session: XRSession, preferred: XRReferenceSpaceType, opts?: ResolveReferenceSpaceOptions): Promise<ResolvedReferenceSpace>;
@@ -0,0 +1,45 @@
1
+ import * as THREE from "three/webgpu";
2
+ /** 每只眼的渲染信息:viewport 为 XRViewport 语义(左下原点的 x, y, width, height) */
3
+ export interface BridgeEye {
4
+ camera: THREE.PerspectiveCamera;
5
+ viewport: THREE.Vector4;
6
+ }
7
+ export interface RenderTargetBridgeOptions {
8
+ /** 眼图集 MSAA 采样数,默认 0 */
9
+ atlasSamples?: number;
10
+ }
11
+ export declare class RenderTargetBridge {
12
+ private readonly renderer;
13
+ private readonly atlasSamples;
14
+ private resources;
15
+ private warnedRevision;
16
+ private _outputBufferType;
17
+ private readonly clearColorScratch;
18
+ private readonly viewportScratch;
19
+ constructor(renderer: THREE.WebGPURenderer, opts?: RenderTargetBridgeOptions);
20
+ /** `init` 时读取的 `renderer.getOutputBufferType()`(未初始化为 `null`),只供诊断(风险 R5)。 */
21
+ get outputBufferType(): number | null;
22
+ /**
23
+ * 检查 three 内部 API 是否存在、四个标志位值是否符合预期(需求 4.6)。
24
+ * 缺失或不符时抛出含全部问题名称与 `THREE.REVISION` 的错误。
25
+ */
26
+ verify(): void;
27
+ /** 检查 Eye_Camera 与 renderer 的 `coordinateSystem` 一致(design「进入时校验 camera.coordinateSystem」)。 */
28
+ verifyCameras(cameras: ReadonlyArray<THREE.Camera>): void;
29
+ /** 为 layer 创建眼图集、XR 输出目标与解析 quad;重复调用会先释放旧资源。 */
30
+ init(layer: XRWebGLLayer): void;
31
+ /**
32
+ * 一帧:清图集 → 逐眼渲染 → 解析。任何异常在 `finally` 恢复 renderer 状态后原样抛出(需求 4.7)。
33
+ * `eyes[i].viewport` 是 XRViewport 语义(左下原点)。
34
+ */
35
+ renderFrame(layer: XRWebGLLayer, scene: THREE.Scene, eyes: ReadonlyArray<BridgeEye>): void;
36
+ /** 幂等释放(需求 4.4):目标各 dispose 至多一次,输出目标与 XR framebuffer 复位为 `null`。 */
37
+ dispose(): void;
38
+ /** 尺寸或 baseLayer 变化(或尚未创建)时重建,返回当前可用的资源(需求 4.8)。 */
39
+ private syncResources;
40
+ private build;
41
+ /** 释放当前资源(不动 renderer 状态;状态由 renderFrame 的 finally 与 dispose 负责)。 */
42
+ private releaseResources;
43
+ /** 检测 `EXT_color_buffer_float` / `EXT_color_buffer_half_float`;拿不到 GL 上下文时按不支持处理。 */
44
+ private supportsHalfFloat;
45
+ }
@@ -0,0 +1,4 @@
1
+ declare class XRButton {
2
+ static createButton(onClickHook: () => void | Promise<unknown>): HTMLAnchorElement | HTMLButtonElement;
3
+ }
4
+ export { XRButton };