@realsee/five-webgpu 1.0.0-alpha.12 → 1.0.0-alpha.14

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 (431) hide show
  1. package/_virtual/_rolldown/runtime.js +3 -3
  2. package/docs/assets/hierarchy.js +1 -1
  3. package/docs/assets/navigation.js +1 -1
  4. package/docs/assets/search.js +1 -1
  5. package/docs/classes/index.AdaptiveLuminancePass.html +1 -1
  6. package/docs/classes/index.BoundingMesh.html +1 -1
  7. package/docs/classes/index.Camera.html +1 -1
  8. package/docs/classes/index.EyeDomeLightingPass.html +1 -1
  9. package/docs/classes/index.Five.html +41 -32
  10. package/docs/classes/index.FivePass.html +1 -1
  11. package/docs/classes/index.FiveRenderer.html +7 -2
  12. package/docs/classes/index.FlowingFireworks3DPass.html +1 -1
  13. package/docs/classes/index.FlowingLight2DPass.html +1 -1
  14. package/docs/classes/index.FlowingLight3DPass.html +1 -1
  15. package/docs/classes/index.GaussianBlurPass.html +1 -1
  16. package/docs/classes/index.InternalWebGPURenderer.html +4 -5
  17. package/docs/classes/index.Model.html +1 -1
  18. package/docs/classes/index.ModelScene.html +1 -1
  19. package/docs/classes/index.NetworkSubscribe.html +1 -1
  20. package/docs/classes/index.PBMCustomNode.html +1 -1
  21. package/docs/classes/index.PBMGaussianSplattingNodeMaterial.html +9 -9
  22. package/docs/classes/index.PBMGaussianSplattingObject.html +49 -11
  23. package/docs/classes/index.PBMGaussianSplattingRenderMesh.html +71 -16
  24. package/docs/classes/index.PBMGroup.html +1 -1
  25. package/docs/classes/index.PBMMesh.html +1 -1
  26. package/docs/classes/index.PBMMeshBasicMaterial.html +1 -1
  27. package/docs/classes/index.PBMMeshBasicNodeMaterial.html +1 -1
  28. package/docs/classes/index.PBMMeshPanoOnlyMaterial.html +1 -1
  29. package/docs/classes/index.PBMMeshPanoOnlyNodeMaterial.html +1 -1
  30. package/docs/classes/index.PBMMeshPhongMaterial.html +1 -1
  31. package/docs/classes/index.PBMMeshPhongNodeMaterial.html +1 -1
  32. package/docs/classes/index.PBMMeshPhysicalMaterial.html +1 -1
  33. package/docs/classes/index.PBMMeshPhysicalNodeMaterial.html +1 -1
  34. package/docs/classes/index.PBMPanoFilter.html +1 -1
  35. package/docs/classes/index.PBMPointCloud.html +1 -1
  36. package/docs/classes/index.PBMPointCloudMaterial.html +1 -1
  37. package/docs/classes/index.PBMSkinnedMesh.html +1 -1
  38. package/docs/classes/index.PBMUpdateable.html +1 -1
  39. package/docs/classes/index.PanoCircleMesh.html +1 -1
  40. package/docs/classes/index.PanoCircleMeshCustom.html +1 -1
  41. package/docs/classes/index.PanoCircleMeshSolid.html +1 -1
  42. package/docs/classes/index.Parameter.html +24 -22
  43. package/docs/classes/index.Scene.html +1 -1
  44. package/docs/classes/index.Subscribe.html +1 -1
  45. package/docs/classes/index.Tile3D.html +22 -22
  46. package/docs/classes/index.TileNode.html +2 -2
  47. package/docs/classes/index.TrajectoryNode.html +1 -1
  48. package/docs/classes/index.Work.html +15 -22
  49. package/docs/classes/index.WorkResolvedObserver.html +22 -22
  50. package/docs/functions/index.createWorks.html +1 -1
  51. package/docs/functions/index.parseWork.html +1 -1
  52. package/docs/hierarchy.html +1 -1
  53. package/docs/interfaces/index.AddableObject.html +1 -1
  54. package/docs/interfaces/index.AjaxOptions.html +1 -1
  55. package/docs/interfaces/index.BaseEvent.html +1 -1
  56. package/docs/interfaces/index.Clock.html +1 -1
  57. package/docs/interfaces/index.DeviceProfile.html +2 -2
  58. package/docs/interfaces/index.EventCallback.html +3 -3
  59. package/docs/interfaces/index.GestureEvent.html +1 -1
  60. package/docs/interfaces/index.IPBMMaterial.html +1 -1
  61. package/docs/interfaces/index.ImageOptions.html +1 -1
  62. package/docs/interfaces/index.IntersectEvent.html +1 -1
  63. package/docs/interfaces/index.IntersectMesh.html +1 -1
  64. package/docs/interfaces/index.IntersectMeshInterface.html +1 -1
  65. package/docs/interfaces/index.Intersection.html +1 -1
  66. package/docs/interfaces/index.LooseWorkWithExtrinsics.html +8 -8
  67. package/docs/interfaces/index.ModeChangeEvent.html +1 -1
  68. package/docs/interfaces/index.ModelControllerCustomInitArgs.html +1 -1
  69. package/docs/interfaces/index.ModelEvent.html +1 -1
  70. package/docs/interfaces/index.ModelSceneEvent.html +1 -1
  71. package/docs/interfaces/index.ModelTileEvent.html +1 -1
  72. package/docs/interfaces/index.MovePanoOptions.html +1 -1
  73. package/docs/interfaces/index.NetworkAbortError.html +1 -1
  74. package/docs/interfaces/index.NetworkFirbiddenError.html +1 -1
  75. package/docs/interfaces/index.NetworkOptions.html +1 -1
  76. package/docs/interfaces/index.NetworkProxyError.html +1 -1
  77. package/docs/interfaces/index.NetworkResourceEvent.html +1 -1
  78. package/docs/interfaces/index.NetworkResponseError.html +1 -1
  79. package/docs/interfaces/index.NetworkTimeoutError.html +1 -1
  80. package/docs/interfaces/index.ObjectEvent.html +1 -1
  81. package/docs/interfaces/index.PBMGaussianSplattingNodeMaterialOptions.html +3 -3
  82. package/docs/interfaces/index.PanoCircleMeshInterface.html +1 -1
  83. package/docs/interfaces/index.PanoEvent.html +1 -1
  84. package/docs/interfaces/index.PanoPrepareEvent.html +1 -1
  85. package/docs/interfaces/index.PanoTextureEvent.html +1 -1
  86. package/docs/interfaces/index.PanoramaControllerCustomInitArgs.html +1 -1
  87. package/docs/interfaces/index.PanoramaLikeControllerCustomInitArgs.html +1 -1
  88. package/docs/interfaces/index.ParameterMaterialValue.html +8 -6
  89. package/docs/interfaces/index.ParameterTilesetValue.html +15 -15
  90. package/docs/interfaces/index.ParameterValue.html +21 -19
  91. package/docs/interfaces/index.Pose.html +1 -1
  92. package/docs/interfaces/index.RenderEvent.html +1 -1
  93. package/docs/interfaces/index.ResolvedParameterValue.html +22 -20
  94. package/docs/interfaces/index.SplatData.html +10 -6
  95. package/docs/interfaces/index.State.html +1 -1
  96. package/docs/interfaces/index.StateEvent.html +1 -1
  97. package/docs/interfaces/index.TextureOptions.html +1 -1
  98. package/docs/interfaces/index.Tile3DOptions.html +2 -2
  99. package/docs/interfaces/index.TopviewControllerCustomInitArgs.html +1 -1
  100. package/docs/interfaces/index.VRPanoramaControllerCustomInitArgs.html +1 -1
  101. package/docs/interfaces/index.ViewLayer.html +22 -22
  102. package/docs/interfaces/index.WorkCubeHdrGainmapImage.html +2 -2
  103. package/docs/interfaces/index.WorkCubeImage.html +2 -2
  104. package/docs/interfaces/index.WorkImage.html +5 -5
  105. package/docs/interfaces/index.WorkInitial.html +8 -8
  106. package/docs/interfaces/index.WorkInitialJson.html +2 -2
  107. package/docs/interfaces/index.WorkJson.html +2 -4
  108. package/docs/interfaces/index.WorkModel.html +8 -8
  109. package/docs/interfaces/index.WorkModelJson.html +2 -2
  110. package/docs/interfaces/index.WorkModelLayer.html +6 -6
  111. package/docs/interfaces/index.WorkModelLayerJson.html +2 -2
  112. package/docs/interfaces/index.WorkObserver.html +23 -23
  113. package/docs/interfaces/index.WorkObserverJson.html +2 -2
  114. package/docs/interfaces/index.WorkPanoramaJson.html +2 -2
  115. package/docs/interfaces/index.WorkPanoramasJson.html +2 -2
  116. package/docs/interfaces/index.WorkTile.html +5 -5
  117. package/docs/interfaces/index.WorkVideo.html +4 -4
  118. package/docs/interfaces/index.WorksEvent.html +1 -1
  119. package/docs/interfaces/index.XRControllerEvent.html +1 -1
  120. package/docs/interfaces/index.XRGestureEvent.html +2 -2
  121. package/docs/interfaces/index.XRPanoramaControllerCustomInitArgs.html +1 -1
  122. package/docs/interfaces/index.XRSessionEvent.html +1 -1
  123. package/docs/modules/index.html +1 -1
  124. package/docs/types/index.LegacyEventType.html +3 -3
  125. package/docs/types/index.OutputTextureDataType.html +1 -1
  126. package/docs/types/index.ParseOptions.html +8 -8
  127. package/docs/types/index.PointCloudTransparencyMode.html +2 -0
  128. package/docs/types/index.Works.html +1 -1
  129. package/docs/variables/index.loadAt3d.html +2 -0
  130. package/docs/variables/index.loadDome.html +2 -0
  131. package/docs/variables/index.loadDomez.html +2 -0
  132. package/docs/variables/index.loadGltf.html +2 -0
  133. package/docs/variables/index.loadPbm.html +2 -0
  134. package/docs/variables/index.loadPly.html +2 -0
  135. package/five/application/five.d.ts +13 -0
  136. package/five/chunks/at3d.js +338 -0
  137. package/five/chunks/at3d.mjs +338 -0
  138. package/five/chunks/dome.js +338 -0
  139. package/five/chunks/dome.mjs +338 -0
  140. package/five/chunks/domez.js +338 -0
  141. package/five/chunks/domez.mjs +338 -0
  142. package/five/chunks/fbx.js +338 -0
  143. package/five/chunks/fbx.mjs +338 -0
  144. package/five/chunks/fflate.js +338 -0
  145. package/five/chunks/fflate.mjs +338 -0
  146. package/five/chunks/glTF-helpers.js +804 -0
  147. package/five/chunks/glTF-helpers.mjs +804 -0
  148. package/five/chunks/gltf.js +338 -0
  149. package/five/chunks/gltf.mjs +338 -0
  150. package/five/chunks/imageBitmap.js +338 -0
  151. package/five/chunks/imageBitmap.mjs +338 -0
  152. package/five/chunks/imageSupport.js +338 -0
  153. package/five/chunks/imageSupport.mjs +338 -0
  154. package/five/chunks/lzma.js +383 -0
  155. package/five/chunks/lzma.mjs +383 -0
  156. package/five/chunks/memoryUsage.js +339 -0
  157. package/five/chunks/memoryUsage.mjs +339 -0
  158. package/five/chunks/minimal.js +338 -0
  159. package/five/chunks/minimal.mjs +338 -0
  160. package/five/chunks/pbm.js +338 -0
  161. package/five/chunks/pbm.mjs +338 -0
  162. package/five/chunks/pbmGaussianSplattingObject.js +338 -0
  163. package/five/chunks/pbmGaussianSplattingObject.mjs +338 -0
  164. package/five/chunks/pbmMeshMaterial.js +338 -0
  165. package/five/chunks/pbmMeshMaterial.mjs +338 -0
  166. package/five/chunks/pick.js +338 -0
  167. package/five/chunks/pick.mjs +338 -0
  168. package/five/chunks/ply.js +339 -0
  169. package/five/chunks/ply.mjs +339 -0
  170. package/five/chunks/spz.js +364 -0
  171. package/five/chunks/spz.mjs +364 -0
  172. package/five/controllers/xrPanorama.d.ts +13 -0
  173. package/five/core/internalWebGPURenderer.d.ts +0 -3
  174. package/five/core/panoVideo.d.ts +2 -0
  175. package/five/core/webglBlendEquationFix.d.ts +41 -0
  176. package/five/gaussian-splatting/arena/splatArena.d.ts +227 -0
  177. package/five/gaussian-splatting/cullConstants.d.ts +68 -0
  178. package/five/gaussian-splatting/hybridConstants.d.ts +60 -0
  179. package/five/gaussian-splatting/instancePacking.d.ts +46 -0
  180. package/five/gaussian-splatting/mirrors/layoutMirror.d.ts +44 -0
  181. package/five/gaussian-splatting/mirrors/mirrorBuffer.d.ts +72 -0
  182. package/five/gaussian-splatting/mirrors/mirrorSet.d.ts +17 -0
  183. package/five/gaussian-splatting/mirrors/objectParamsMirror.d.ts +35 -0
  184. package/five/gaussian-splatting/mirrors/transformMirror.d.ts +26 -0
  185. package/five/gaussian-splatting/pipelines/gpuSortPipeline.d.ts +5 -31
  186. package/five/gaussian-splatting/pipelines/pipelineMode.d.ts +1 -2
  187. package/five/gaussian-splatting/sh-core/codec.d.ts +13 -0
  188. package/five/gaussian-splatting/sh-core/constants.d.ts +29 -0
  189. package/five/gaussian-splatting/sh-core/index.d.ts +4 -0
  190. package/five/gaussian-splatting/sh-core/rebakePolicy.d.ts +20 -0
  191. package/five/gaussian-splatting/sh-core/texelRange.d.ts +18 -0
  192. package/five/gaussian-splatting/shAssembler.d.ts +14 -0
  193. package/five/gaussian-splatting/shBakeScheduler.d.ts +26 -0
  194. package/five/gaussian-splatting/shBaker.d.ts +44 -0
  195. package/five/gaussian-splatting/shTileResource.d.ts +22 -0
  196. package/five/gaussian-splatting/splatAssembler.d.ts +1 -1
  197. package/five/gaussian-splatting/transformStore.d.ts +2 -2
  198. package/five/gaussian-splatting/worker/decodeWorker.d.ts +72 -0
  199. package/five/index.d.ts +0 -1
  200. package/five/index.js +138 -640
  201. package/five/index.mjs +229 -29261
  202. package/five/model/index.d.ts +18 -6
  203. package/five/model/loaders/glTF-helpers/extensions/KHR_gaussian_splatting_compression_spz.d.ts +1 -1
  204. package/five/model/loaders/glTF-helpers/extensions/KHR_gaussian_splatting_compression_spz_2.d.ts +1 -1
  205. package/five/model/loaders/ply.d.ts +22 -6
  206. package/five/model/loaders/spz.d.ts +9 -49
  207. package/five/model/loaders/spz.worker.d.ts +37 -0
  208. package/five/model/materials/pbmGaussianSplattingNodeMaterial.d.ts +6 -12
  209. package/five/model/objects/pbmGaussianSplattingObject.d.ts +91 -6
  210. package/five/model/objects/pbmGaussianSplattingRenderMesh.d.ts +357 -15
  211. package/five/model/parameter.d.ts +4 -0
  212. package/five/renderer/compute-renderers/binned/binned-core.d.ts +45 -2
  213. package/five/renderer/compute-renderers/binned/binned-pipelines.d.ts +82 -1
  214. package/five/renderer/compute-renderers/color-space.d.ts +13 -0
  215. package/five/renderer/compute-renderers/composite-pipelines.d.ts +36 -0
  216. package/five/renderer/compute-renderers/frame-plan.d.ts +166 -0
  217. package/five/renderer/compute-renderers/gsplat-hybrid-renderer.d.ts +386 -0
  218. package/five/renderer/compute-renderers/pointcloud-compute-renderer.d.ts +101 -16
  219. package/five/renderer/compute-renderers/shaders/composite-blend.d.ts +2 -0
  220. package/five/renderer/compute-renderers/shaders/gsplatHybridIndirect.d.ts +2 -0
  221. package/five/renderer/compute-renderers/shaders/gsplatProjector.d.ts +2 -0
  222. package/five/renderer/compute-renderers/shaders/gsplatQuad.d.ts +2 -0
  223. package/five/renderer/compute-renderers/shaders/lib/write-additive.d.ts +2 -0
  224. package/five/renderer/compute-renderers/shaders/lib/write-blend.d.ts +2 -0
  225. package/five/renderer/compute-renderers/shaders/lib/write-opaque.d.ts +2 -0
  226. package/five/renderer/compute-renderers/tile-uniform-writer.d.ts +70 -0
  227. package/five/renderer/compute-renderers/transparency-buffers.d.ts +59 -0
  228. package/five/renderer/compute-renderers/transparency-math.d.ts +70 -0
  229. package/five/renderer/compute-renderers/transparency-settings.d.ts +24 -0
  230. package/five/renderer/compute-renderers/uniform-layout.d.ts +11 -2
  231. package/five/renderer/five-renderer.d.ts +28 -3
  232. package/five/renderer/index.d.ts +1 -1
  233. package/five/renderer/postprocessing/passes/pass.js +3 -3
  234. package/five/renderer/postprocessing/passes/pass.mjs +3 -3
  235. package/five/renderer/tools/full-screen-quad.js +3 -3
  236. package/five/renderer/tools/full-screen-quad.mjs +3 -3
  237. package/five/texture/videoTextureBridge.d.ts +152 -0
  238. package/five/thirdparty/sha256.d.ts +149 -0
  239. package/five/utils/calculateThreeMouse.js +3 -3
  240. package/five/utils/calculateThreeMouse.mjs +3 -3
  241. package/five/utils/distance.js +3 -3
  242. package/five/utils/distance.mjs +3 -3
  243. package/five/utils/isNil.js +3 -3
  244. package/five/utils/isNil.mjs +3 -3
  245. package/five/utils/memoryUsage.d.ts +1 -1
  246. package/five/utils/uuid.js +3 -3
  247. package/five/utils/uuid.mjs +3 -3
  248. package/five/work/work.d.ts +0 -7
  249. package/five/work/workJsonType.d.ts +0 -2
  250. package/gltf-loader/index.js +3 -3
  251. package/gltf-loader/index.mjs +3 -50
  252. package/line/index.js +3 -3
  253. package/line/index.mjs +3 -88
  254. package/package.json +1 -1
  255. package/plugins/BackgroundPlugin/Controller.js +4 -4
  256. package/plugins/BackgroundPlugin/Controller.mjs +4 -4
  257. package/plugins/BackgroundPlugin/index.js +3 -3
  258. package/plugins/BackgroundPlugin/index.mjs +3 -3
  259. package/plugins/BasePlugin/index.js +3 -3
  260. package/plugins/BasePlugin/index.mjs +3 -3
  261. package/plugins/CSS2DPlugin/Controller.js +3 -3
  262. package/plugins/CSS2DPlugin/Controller.mjs +3 -3
  263. package/plugins/CSS2DPlugin/index.js +3 -3
  264. package/plugins/CSS2DPlugin/index.mjs +3 -3
  265. package/plugins/CSS2DPlugin/style.css_raw.js +4 -4
  266. package/plugins/CSS2DPlugin/style.css_raw.mjs +4 -4
  267. package/plugins/CSS3DPlugin/Controller.js +3 -3
  268. package/plugins/CSS3DPlugin/Controller.mjs +3 -3
  269. package/plugins/CSS3DPlugin/index.js +3 -3
  270. package/plugins/CSS3DPlugin/index.mjs +3 -3
  271. package/plugins/CSS3DPlugin/style.css_raw.js +4 -4
  272. package/plugins/CSS3DPlugin/style.css_raw.mjs +4 -4
  273. package/plugins/FloorplanPlugin/Controller.js +3 -3
  274. package/plugins/FloorplanPlugin/Controller.mjs +3 -3
  275. package/plugins/FloorplanPlugin/index.js +3 -3
  276. package/plugins/FloorplanPlugin/index.mjs +3 -3
  277. package/plugins/FloorplanPlugin/render/assets.js +3 -3
  278. package/plugins/FloorplanPlugin/render/assets.mjs +3 -3
  279. package/plugins/FloorplanPlugin/render/index.js +3 -3
  280. package/plugins/FloorplanPlugin/render/index.mjs +3 -3
  281. package/plugins/FloorplanPlugin/render/isPointInPolygon.js +3 -3
  282. package/plugins/FloorplanPlugin/render/isPointInPolygon.mjs +3 -3
  283. package/plugins/FloorplanPlugin/render/renderFloor.js +3 -3
  284. package/plugins/FloorplanPlugin/render/renderFloor.mjs +3 -3
  285. package/plugins/FloorplanPlugin/render/roomLabelVisibility.js +3 -3
  286. package/plugins/FloorplanPlugin/render/roomLabelVisibility.mjs +3 -3
  287. package/plugins/FloorplanPlugin/render/style.css_raw.js +4 -4
  288. package/plugins/FloorplanPlugin/render/style.css_raw.mjs +4 -4
  289. package/plugins/FloorplanPlugin/utils/changeMode.js +3 -3
  290. package/plugins/FloorplanPlugin/utils/changeMode.mjs +3 -3
  291. package/plugins/FloorplanPlugin/utils/changeModelCanvasOpacity.js +3 -3
  292. package/plugins/FloorplanPlugin/utils/changeModelCanvasOpacity.mjs +3 -3
  293. package/plugins/FloorplanPlugin/utils/correctFiveState.js +3 -3
  294. package/plugins/FloorplanPlugin/utils/correctFiveState.mjs +3 -3
  295. package/plugins/FloorplanPlugin/utils/equal.js +3 -3
  296. package/plugins/FloorplanPlugin/utils/equal.mjs +3 -3
  297. package/plugins/FloorplanPlugin/utils/filter.js +3 -3
  298. package/plugins/FloorplanPlugin/utils/filter.mjs +3 -3
  299. package/plugins/FloorplanPlugin/utils/fiveModelLoad.js +3 -3
  300. package/plugins/FloorplanPlugin/utils/fiveModelLoad.mjs +3 -3
  301. package/plugins/FloorplanPlugin/utils/formatData.js +3 -3
  302. package/plugins/FloorplanPlugin/utils/formatData.mjs +3 -3
  303. package/plugins/FloorplanPlugin/utils/formatFloorplanJson.js +3 -3
  304. package/plugins/FloorplanPlugin/utils/formatFloorplanJson.mjs +3 -3
  305. package/plugins/FloorplanPlugin/utils/formatPosition.js +3 -3
  306. package/plugins/FloorplanPlugin/utils/formatPosition.mjs +3 -3
  307. package/plugins/FloorplanPlugin/utils/getDistanceFromModel.js +3 -3
  308. package/plugins/FloorplanPlugin/utils/getDistanceFromModel.mjs +3 -3
  309. package/plugins/FloorplanPlugin/utils/getPxmm.js +3 -3
  310. package/plugins/FloorplanPlugin/utils/getPxmm.mjs +3 -3
  311. package/plugins/FloorplanPlugin/utils/isTruelyObject.js +3 -3
  312. package/plugins/FloorplanPlugin/utils/isTruelyObject.mjs +3 -3
  313. package/plugins/FloorplanPlugin/utils/nearlyEqual.js +3 -3
  314. package/plugins/FloorplanPlugin/utils/nearlyEqual.mjs +3 -3
  315. package/plugins/FloorplanPlugin/utils/polylabel.js +3 -3
  316. package/plugins/FloorplanPlugin/utils/polylabel.mjs +3 -3
  317. package/plugins/FloorplanPlugin/utils/to.js +3 -3
  318. package/plugins/FloorplanPlugin/utils/to.mjs +3 -3
  319. package/plugins/GaussianSplattingEntranceAnimationPlugin/Controller.d.ts +6 -0
  320. package/plugins/GaussianSplattingEntranceAnimationPlugin/Controller.js +3 -3
  321. package/plugins/GaussianSplattingEntranceAnimationPlugin/Controller.mjs +3 -3
  322. package/plugins/GaussianSplattingEntranceAnimationPlugin/index.js +3 -3
  323. package/plugins/GaussianSplattingEntranceAnimationPlugin/index.mjs +3 -3
  324. package/plugins/Object3DHelperPlugin/Controller.js +3 -3
  325. package/plugins/Object3DHelperPlugin/Controller.mjs +3 -3
  326. package/plugins/Object3DHelperPlugin/Controllers/BaseController.js +3 -3
  327. package/plugins/Object3DHelperPlugin/Controllers/BaseController.mjs +3 -3
  328. package/plugins/Object3DHelperPlugin/Controllers/BoundingBoxController.js +3 -3
  329. package/plugins/Object3DHelperPlugin/Controllers/BoundingBoxController.mjs +3 -3
  330. package/plugins/Object3DHelperPlugin/Controllers/MoveController.js +3 -3
  331. package/plugins/Object3DHelperPlugin/Controllers/MoveController.mjs +3 -3
  332. package/plugins/Object3DHelperPlugin/Controllers/RotateController.js +3 -3
  333. package/plugins/Object3DHelperPlugin/Controllers/RotateController.mjs +3 -3
  334. package/plugins/Object3DHelperPlugin/FiveControllerWrapper.js +3 -3
  335. package/plugins/Object3DHelperPlugin/FiveControllerWrapper.mjs +3 -3
  336. package/plugins/Object3DHelperPlugin/Helper/BaseHelper.js +3 -3
  337. package/plugins/Object3DHelperPlugin/Helper/BaseHelper.mjs +3 -3
  338. package/plugins/Object3DHelperPlugin/Helper/BoundingBoxHelper.js +3 -3
  339. package/plugins/Object3DHelperPlugin/Helper/BoundingBoxHelper.mjs +3 -3
  340. package/plugins/Object3DHelperPlugin/Helper/MoveHelper.js +3 -3
  341. package/plugins/Object3DHelperPlugin/Helper/MoveHelper.mjs +3 -3
  342. package/plugins/Object3DHelperPlugin/Helper/RotateHelper.js +3 -3
  343. package/plugins/Object3DHelperPlugin/Helper/RotateHelper.mjs +3 -3
  344. package/plugins/Object3DHelperPlugin/constant.js +3 -3
  345. package/plugins/Object3DHelperPlugin/constant.mjs +3 -3
  346. package/plugins/Object3DHelperPlugin/index.js +3 -3
  347. package/plugins/Object3DHelperPlugin/index.mjs +3 -3
  348. package/plugins/Object3DHelperPlugin/utils/ArrowGroup.js +3 -3
  349. package/plugins/Object3DHelperPlugin/utils/ArrowGroup.mjs +3 -3
  350. package/plugins/Object3DHelperPlugin/utils/CenterHandle.js +3 -3
  351. package/plugins/Object3DHelperPlugin/utils/CenterHandle.mjs +3 -3
  352. package/plugins/Object3DHelperPlugin/utils/PlaneHandle.js +3 -3
  353. package/plugins/Object3DHelperPlugin/utils/PlaneHandle.mjs +3 -3
  354. package/plugins/Object3DHelperPlugin/utils/calculateScaleByCamera.js +3 -3
  355. package/plugins/Object3DHelperPlugin/utils/calculateScaleByCamera.mjs +3 -3
  356. package/plugins/Object3DHelperPlugin/utils/cameraHooks.js +3 -3
  357. package/plugins/Object3DHelperPlugin/utils/cameraHooks.mjs +3 -3
  358. package/plugins/Object3DHelperPlugin/utils/direction.js +3 -3
  359. package/plugins/Object3DHelperPlugin/utils/direction.mjs +3 -3
  360. package/plugins/Object3DHelperPlugin/utils/getMouseRaycaster.js +3 -3
  361. package/plugins/Object3DHelperPlugin/utils/getMouseRaycaster.mjs +3 -3
  362. package/plugins/Object3DHelperPlugin/utils/getOrthographicCameraDirection.js +3 -3
  363. package/plugins/Object3DHelperPlugin/utils/getOrthographicCameraDirection.mjs +3 -3
  364. package/plugins/Object3DHelperPlugin/utils/setObjectQuaternion.js +3 -3
  365. package/plugins/Object3DHelperPlugin/utils/setObjectQuaternion.mjs +3 -3
  366. package/plugins/Object3DHelperPlugin/utils/solidGuide.js +3 -3
  367. package/plugins/Object3DHelperPlugin/utils/solidGuide.mjs +3 -3
  368. package/plugins/Object3DHelperPlugin/utils/tipsDom.js +3 -3
  369. package/plugins/Object3DHelperPlugin/utils/tipsDom.mjs +3 -3
  370. package/plugins/PanoAnimePlugin/Controller.js +3 -3
  371. package/plugins/PanoAnimePlugin/Controller.mjs +3 -3
  372. package/plugins/PanoAnimePlugin/index.js +3 -3
  373. package/plugins/PanoAnimePlugin/index.mjs +3 -3
  374. package/plugins/WordPassPlugin/Controller.js +3 -3
  375. package/plugins/WordPassPlugin/Controller.mjs +3 -3
  376. package/plugins/WordPassPlugin/hersheyFont.js +3 -3
  377. package/plugins/WordPassPlugin/hersheyFont.mjs +3 -3
  378. package/plugins/WordPassPlugin/index.js +3 -3
  379. package/plugins/WordPassPlugin/index.mjs +3 -3
  380. package/plugins/WordPassPlugin/textToStrokeOrderStrokes.js +4 -4
  381. package/plugins/WordPassPlugin/textToStrokeOrderStrokes.mjs +4 -4
  382. package/plugins/WordPassPlugin/word-pass.js +3 -3
  383. package/plugins/WordPassPlugin/word-pass.mjs +3 -3
  384. package/plugins/index.js +3 -3
  385. package/plugins/index.mjs +3 -3
  386. package/plugins/thirdParty/CSS2DRenderer.js +3 -3
  387. package/plugins/thirdParty/CSS2DRenderer.mjs +3 -3
  388. package/plugins/thirdParty/CSS3DRenderer.js +3 -3
  389. package/plugins/thirdParty/CSS3DRenderer.mjs +3 -3
  390. package/plugins/thirdParty/doctorstrange-model.js +75 -75
  391. package/plugins/thirdParty/doctorstrange-model.mjs +75 -75
  392. package/plugins/thirdParty/domevents.js +3 -3
  393. package/plugins/thirdParty/domevents.mjs +3 -3
  394. package/plugins/utils/absoluteUrl.js +3 -3
  395. package/plugins/utils/absoluteUrl.mjs +3 -3
  396. package/plugins/utils/calculatePath.js +3 -3
  397. package/plugins/utils/calculatePath.mjs +3 -3
  398. package/plugins/utils/clamp.js +3 -3
  399. package/plugins/utils/clamp.mjs +3 -3
  400. package/plugins/utils/uuid.js +3 -3
  401. package/plugins/utils/uuid.mjs +3 -3
  402. package/react/hooks/useFiveModelReadyState.d.ts +1 -1
  403. package/react/index.js +3 -3
  404. package/react/index.mjs +3 -644
  405. package/sticker/index.d.ts +7 -0
  406. package/sticker/index.js +46 -3
  407. package/sticker/index.mjs +43 -103
  408. package/umd/five-gltf-loader.js +3 -3
  409. package/umd/five-line.js +3 -3
  410. package/umd/five-plugins.js +3 -3
  411. package/umd/five-react.js +2 -2
  412. package/umd/five-sticker.js +46 -3
  413. package/umd/five-vfx.js +2 -2
  414. package/umd/five.js +216 -179
  415. package/vfx/index.js +3 -3
  416. package/vfx/index.mjs +3 -486
  417. package/work-downloader/index.js +3 -3
  418. package/work-downloader/index.mjs +3 -315
  419. package/docs/functions/index.loadAt3d.html +0 -1
  420. package/docs/functions/index.loadDome.html +0 -1
  421. package/docs/functions/index.loadDomez.html +0 -1
  422. package/docs/functions/index.loadGltf.html +0 -1
  423. package/docs/functions/index.loadPbm.html +0 -1
  424. package/docs/functions/index.loadPly.html +0 -1
  425. package/five/certificates/hardware.d.ts +0 -1
  426. package/five/gaussian-splatting/shStore.d.ts +0 -22
  427. package/five/thirdparty/jsrsasign.d.ts +0 -753
  428. package/five/work/keychain.d.ts +0 -5
  429. package/five/work/verify.d.ts +0 -7
  430. package/five/work/workVerify.d.ts +0 -2
  431. /package/five/{work/_ALLOW_HOST.d.ts → renderer/compute-renderers/shaders/composite-additive.d.ts} +0 -0
@@ -1,5 +1,25 @@
1
1
  import * as THREE from 'three/webgpu';
2
+ import { type BinnedStage } from './binned/binned-pipelines';
3
+ import { type ExtraBufferKind } from './transparency-buffers';
4
+ import type { TileCategory } from './transparency-math';
2
5
  import type { PBMPointCloud } from '../../model/objects/pbmPointCloud';
6
+ /** 透明阶段可用性:true = 本帧该阶段的缓冲、流水线与绑定组均已就绪 */
7
+ export interface TransparentStageAvailability {
8
+ blend: boolean;
9
+ additive: boolean;
10
+ }
11
+ /** 每块计算步骤回调:由上层逐块 setPointCloud → writeTileUniform → encodeRasterizeStage */
12
+ export type PointCloudComputeSteps = (computePass: GPUComputePassEncoder) => void;
13
+ /** 一个半透明组:组透明度 a(层合成的混合常量)与组内各块的计算步骤 */
14
+ export interface BlendGroupSteps {
15
+ alpha: number;
16
+ steps: PointCloudComputeSteps;
17
+ }
18
+ /** submitTransparentStages 的结果:实际编码的半透明组数、叠加是否编码 */
19
+ export interface TransparentStagesResult {
20
+ blendGroups: number;
21
+ additive: boolean;
22
+ }
3
23
  /**
4
24
  * 基于 Compute Shader 的点云渲染器
5
25
  *
@@ -32,12 +52,10 @@ export declare class PointCloudComputeRenderer {
32
52
  private placeholderGradientTexture;
33
53
  private placeholderGradientView;
34
54
  private gradientSampler;
35
- private fullscreenQuadPipelineAdditive;
36
55
  private ready;
37
56
  private binnedCore;
38
57
  /** 本帧 viewProj,用于计算 tile mvp */
39
58
  private readonly frameViewProj;
40
- private readonly tileMvpScratch;
41
59
  /**
42
60
  * tile 级 GPU 资源缓存:用强引用 Map 而非 WeakMap,配合 PBMPointCloud.dispose
43
61
  * 派发的 'dispose' 事件主动销毁 buffer,确保 tile 卸载后内存立即归还。
@@ -50,10 +68,20 @@ export declare class PointCloudComputeRenderer {
50
68
  private packedColorScratch;
51
69
  /** GPU 法线 Int8×4 打包 scratch,跨 tile 复用(与 packedColorScratch 同策略)。 */
52
70
  private packedNormalScratch;
53
- private readonly tmpVec3a;
54
- private readonly tmpVec3b;
55
71
  private readonly tmpVec3c;
56
72
  private readonly tmpVec3d;
73
+ /** 当前 setPointCloud 所选块的缓存键(用于透明块绑定组懒创建) */
74
+ private currentTileKey;
75
+ /** 额外缓冲(叠加平面 / 透明层);构造时不分配任何 GPU 内存,按需 ensure */
76
+ private readonly transparency;
77
+ /** 合成管线:首次需要时创建;创建失败记为 Error,之后不再重试 */
78
+ private compositePipelines;
79
+ /** 合成绑定组,按 TransparencyBuffers.revision 缓存(颜色格式随实例固定) */
80
+ private compositeBindGroups;
81
+ /** 透明层清空绑定组(clear.wgsl 布局 + 透明层 + 帧参数),按额外缓冲 revision 缓存 */
82
+ private layerClearBindGroup;
83
+ /** 本帧已 prepareStage 成功的透明阶段;每帧由 prepareTransparentStages 重置,透明阶段提交后清空 */
84
+ private readonly stageReady;
57
85
  constructor(device: GPUDevice, format: GPUTextureFormat);
58
86
  /**
59
87
  * 上传点云数据到 GPU 缓冲区。
@@ -68,11 +96,14 @@ export declare class PointCloudComputeRenderer {
68
96
  /** 每帧编码 tile 之前调用:按本帧总点数准备分桶资源 */
69
97
  prepareFrame(totalPointCount: number): void;
70
98
  /**
71
- * 每帧调用一次:写入共享 frame uniform(viewProj、屏幕、点大小、相机、材质、裁切)。
99
+ * 每帧调用一次:写入帧级量(viewProj、屏幕、点大小、相机、尺寸分类、桶容量)。
100
+ * 块级样式参数(材质、楼层、裁剪体等)不在此写入,见 writeTileUniform。
101
+ */
102
+ beginPointCloudFrame(camera: THREE.Camera, scratchM4: THREE.Matrix4): void;
103
+ /**
104
+ * 每块单次 writeBuffer:几何、块级样式、裁剪体、类别与点透明度 a。
72
105
  */
73
- beginPointCloudFrame(camera: THREE.Camera, representativePc: PBMPointCloud, scratchM4: THREE.Matrix4): void;
74
- /** 每 tile 单次 writeBuffer:model、bbox、pointCount、flags。 */
75
- writeTileUniform(pc: PBMPointCloud, pointCount: number): void;
106
+ writeTileUniform(pc: PBMPointCloud, pointCount: number, category: TileCategory, alpha: number): void;
76
107
  /** 写入点大小相关参数。 */
77
108
  setPointSizeParams(params: {
78
109
  sizeMode: 'FIXED' | 'ATTENUATION';
@@ -86,13 +117,12 @@ export declare class PointCloudComputeRenderer {
86
117
  }): void;
87
118
  /** 占位渐变纹理 view(无梯度图或纹理未上 GPU 时使用)。 */
88
119
  getPlaceholderGradientView(): GPUTextureView;
89
- private static tileFlags;
90
120
  /** 与 five vertex.glsl 中 ATTENUATION 分支一致,避免透视/正交 matrixLerp 时 clip.w 失真。 */
91
121
  private writePointAttenuationUniforms;
122
+ /** 只写帧级量(同一帧所有块共用);块级样式参数由 writeTileUniform 按块写入。 */
92
123
  private writeFrameUniformsDataView;
93
124
  /** 写入尺寸分类阈值与桶容量 */
94
125
  private writeRasterUniforms;
95
- private writeTileUniformsDataView;
96
126
  /**
97
127
  * 调整 framebuffer 大小并更新屏幕尺寸 uniform。
98
128
  * 销毁旧 framebuffer,创建新的,并重建 bind groups。
@@ -100,16 +130,71 @@ export declare class PointCloudComputeRenderer {
100
130
  resize(width: number, height: number): void;
101
131
  /** 写入 clear:可并入同一 compute pass,与其它 rasterize dispatch 一起提交。 */
102
132
  encodeFramebufferClear(computePass: GPUComputePassEncoder): void;
103
- /** 为当前 tile 追加一次分类 dispatch(需先 setPointCloud + writeTileUniform)。 */
133
+ /** 为当前 tile 追加一次不透明分类 dispatch(需先 setPointCloud + writeTileUniform);即 encodeRasterizeStage(pass, 'opaque')。 */
104
134
  encodeRasterize(computePass: GPUComputePassEncoder): void;
105
- encodeFramebufferDisplay(renderPass: GPURenderPassEncoder, options?: {
106
- additive?: boolean;
135
+ /**
136
+ * 为当前 setPointCloud 所选块追加一次指定阶段的分类 dispatch(需先 writeTileUniform)。
137
+ * 不透明用含 framebuffer 的块绑定组;透明阶段用透明块绑定组(懒创建),且本帧须已准备该阶段。
138
+ * 未编码(未就绪、点数为 0、阶段未准备、绑定组创建失败)时返回 false。
139
+ */
140
+ encodeRasterizeStage(computePass: GPUComputePassEncoder, stage: BinnedStage): boolean;
141
+ /** 惰性创建 / 调整某类额外缓冲;本帧就绪返回 true(失败不抛异常)。 */
142
+ ensureTransparencyBuffers(kind: ExtraBufferKind): boolean;
143
+ /** 释放叠加平面(所有点云块的 useAddBlend 都为假时由上层调用;不存在时为空操作)。 */
144
+ releaseAdditiveBuffers(): void;
145
+ /** 释放透明层缓冲('blend' → 'opaque' 后由上层调用;不存在时为空操作)。 */
146
+ releaseBlendBuffers(): void;
147
+ /**
148
+ * 每帧调用一次(在 prepareFrame 之后、编码不透明阶段之前):重置每帧尝试标记,
149
+ * 对本帧需要的透明阶段创建缓冲、准备流水线与绑定组,返回各阶段是否可用。
150
+ * 透明层只在 needBlend(mode = 'blend' 且本帧有混合半透明块)时创建;叠加平面只在 needAdditive 时创建。
151
+ * 上层据此重新分类:blend=false 时半透明块按不透明绘制,additive=false 时跳过叠加块。
152
+ * @param depthView 合成渲染目标的深度视图,层写入时读取;为 null 时混合半透明不可用
153
+ */
154
+ prepareTransparentStages(needBlend: boolean, needAdditive: boolean, depthView: GPUTextureView | null): TransparentStageAvailability;
155
+ /**
156
+ * 单个透明阶段准备:binned 流水线 + 平面绑定组 + 合成管线与合成绑定组均可用才算成功;
157
+ * 混合半透明还需要透明层清空绑定组。
158
+ */
159
+ private prepareStage;
160
+ /** 透明层清空绑定组:clear.wgsl 的布局 + {0: 透明层, 1: 帧参数},按额外缓冲 revision 缓存。 */
161
+ private getLayerClearBindGroup;
162
+ /** 清透明层:组计算通道内的第一个调度,写 0xFFFFFFFF(只清 W × H 个像素)。 */
163
+ private encodeLayerClear;
164
+ /** 惰性创建合成管线;失败时记录一次错误并返回 null。 */
165
+ private getCompositePipelines;
166
+ /**
167
+ * 合成绑定组(group0 = 叠加平面 / 透明层 + displayParams{width,height}),按额外缓冲 revision 缓存。
168
+ */
169
+ private getCompositeBindGroup;
170
+ /** 当前块的透明块绑定组(binding 1..7);与不透明块绑定组同条目缓存、同失效。 */
171
+ private ensureTransparentTileBindGroup;
172
+ encodeFramebufferDisplay(renderPass: GPURenderPassEncoder): void;
173
+ /** 等同 submitOpaqueStage。 */
174
+ submitMergedPointCloudFrame(colorTextureView: GPUTextureView, depthTextureView: GPUTextureView, rasterizeSteps: PointCloudComputeSteps, options?: {
175
+ clear?: boolean;
176
+ display?: boolean;
107
177
  }): void;
108
- /** 单帧:clear + 各 tile 分类 + 协作光栅 + display,一次 queue.submit。 */
109
- submitMergedPointCloudFrame(colorTextureView: GPUTextureView, depthTextureView: GPUTextureView, rasterizeSteps: (computePass: GPUComputePassEncoder) => void, options?: {
178
+ /**
179
+ * 透明阶段(单个编码器、一次 queue.submit),须在 three 不透明段之后调用:
180
+ * - 对每个半透明组 g(`groups` 已按远 → 近排序):清计数器 → 计算通道(清透明层调度 → g.steps 中各块
181
+ * blend 分类 → args + coop)→ 层合成渲染通道(setBlendConstant(g.alpha)、draw(3));
182
+ * - [additiveSteps] clearBuffer(叠加平面,整个缓冲 = 三段) + 清计数器 → 叠加计算通道 → 叠加合成通道。
183
+ * 合成通道只挂颜色附件。某阶段本帧未准备成功时跳过该阶段,不抛异常;
184
+ * 未先调用 prepareTransparentStages 时会在此处补做准备。
185
+ * 返回实际编码的半透明组数与叠加是否编码;提交后清空本帧阶段就绪标记。
186
+ */
187
+ submitTransparentStages(colorTextureView: GPUTextureView, depthTextureView: GPUTextureView | null, groups: readonly BlendGroupSteps[], additiveSteps: PointCloudComputeSteps | null): TransparentStagesResult;
188
+ /** 合成渲染通道:只挂颜色附件(不挂深度),全屏三角形。 */
189
+ private encodeComposite;
190
+ private resetStageReady;
191
+ /**
192
+ * 不透明阶段:清计数器 → 计算通道(清像素缓冲 + 各块不透明分类 + 协作光栅)→ 显示通道(颜色 + 深度),一次 queue.submit。
193
+ * 非拆分帧与拆分帧都走此方法。
194
+ */
195
+ submitOpaqueStage(colorTextureView: GPUTextureView, depthTextureView: GPUTextureView, rasterizeSteps: PointCloudComputeSteps, options?: {
110
196
  clear?: boolean;
111
197
  display?: boolean;
112
- displayAdditive?: boolean;
113
198
  }): void;
114
199
  /** 销毁所有 GPU 缓冲区。 */
115
200
  dispose(): void;
@@ -0,0 +1,2 @@
1
+ declare const _default: string;
2
+ export default _default;
@@ -0,0 +1,2 @@
1
+ declare const _default: string;
2
+ export default _default;
@@ -0,0 +1,2 @@
1
+ declare const _default: string;
2
+ export default _default;
@@ -0,0 +1,2 @@
1
+ declare const _default: string;
2
+ export default _default;
@@ -0,0 +1,2 @@
1
+ declare const _default: string;
2
+ export default _default;
@@ -0,0 +1,2 @@
1
+ declare const _default: string;
2
+ export default _default;
@@ -0,0 +1,2 @@
1
+ declare const _default: string;
2
+ export default _default;
@@ -0,0 +1,70 @@
1
+ import type { TileCategory } from './transparency-math';
2
+ /** 列主序 4×4 矩阵(与 `THREE.Matrix4.elements` 相同) */
3
+ export interface Mat4Like {
4
+ readonly elements: ArrayLike<number>;
5
+ }
6
+ export interface Vec3Like {
7
+ readonly x: number;
8
+ readonly y: number;
9
+ readonly z: number;
10
+ }
11
+ /** 裁剪体参数,与 `PBMClipperParameter` 结构兼容 */
12
+ export interface TileClipperInput {
13
+ readonly clippingBoxMatrix: Mat4Like;
14
+ readonly floorIndex?: number;
15
+ }
16
+ /** 写入一个块的块参数所需的全部输入 */
17
+ export interface TileUniformInput {
18
+ readonly modelMatrix: Mat4Like;
19
+ readonly bboxMin: Vec3Like;
20
+ readonly bboxMax: Vec3Like;
21
+ /** 亮度系数,写入 bboxMax.w */
22
+ readonly brightness: number;
23
+ readonly pointCount: number;
24
+ readonly hasNormals: boolean;
25
+ readonly category: TileCategory;
26
+ /** 点透明度 a(CPU 64 位算好,写入时舍入为 f32) */
27
+ readonly alpha: number;
28
+ readonly floorIndex: number;
29
+ readonly shownFloorIndex: number;
30
+ readonly opacity: number;
31
+ readonly modelAlpha: number;
32
+ /** 'OPACITY' 写 1,其余写 0 */
33
+ readonly floorStyle: string;
34
+ /** 空数组表示不裁剪:两个裁剪体 Meta.w 写 0 */
35
+ readonly clippers: readonly TileClipperInput[];
36
+ /** 'ALTITUDE' 写 1,'CONSTANT' 写 2,其余写 0 */
37
+ readonly colorStyle: string;
38
+ readonly useAddBlend: boolean;
39
+ readonly constantColor: Vec3Like;
40
+ readonly colorSaturation: number;
41
+ readonly colorBrightness: number;
42
+ readonly outlineGain: number;
43
+ readonly distanceGain: number;
44
+ /** 'HIDDEN' 写 1,'DARK' 写 2,其余写 0 */
45
+ readonly pointBack: string;
46
+ }
47
+ export declare function encodeColorStyle(colorStyle: string): number;
48
+ export declare function encodeFloorStyle(floorStyle: string): number;
49
+ export declare function encodePointBack(pointBack: string): number;
50
+ /** tilePack.y:bit0 有法线、bit3 useAddBlend */
51
+ export declare function encodeTileFlags(hasNormals: boolean, useAddBlend: boolean): number;
52
+ /** out = a × b(列主序),与 three `Matrix4.multiplyMatrices` 计算步骤相同 */
53
+ export declare function multiplyMat4(a: ArrayLike<number>, b: ArrayLike<number>, out: Float64Array): Float64Array;
54
+ /**
55
+ * out = m⁻¹(列主序),与 three `Matrix4.invert` 计算步骤相同;
56
+ * 行列式为 0 时 out 为全 0 矩阵(three 的行为)。
57
+ */
58
+ export declare function invertMat4(m: ArrayLike<number>, out: Float64Array): Float64Array;
59
+ /**
60
+ * 把一个块的块参数写入 `dv[byteOffset, byteOffset + TILE.size)`(416 B)。
61
+ *
62
+ * 该范围内每个字节都被写入(含填充位写 0),因此输出只由 `tile` 与 `viewProj` 决定,
63
+ * 与 DataView 原有内容无关。
64
+ *
65
+ * @param dv - 目标 DataView,长度至少 byteOffset + TILE.size
66
+ * @param tile - 本块参数
67
+ * @param viewProj - 本帧相机 projectionMatrix × matrixWorldInverse,用于 mvp = viewProj × modelMatrix
68
+ * @param byteOffset - 写入起点,默认 0
69
+ */
70
+ export declare function writeTileUniformsDataView(dv: DataView, tile: TileUniformInput, viewProj: Mat4Like, byteOffset?: number): void;
@@ -0,0 +1,59 @@
1
+ /**
2
+ * 半透明点云额外缓冲,两类各自独立:
3
+ *
4
+ * - 叠加平面('additive'):一个缓冲内分 R、G、B 三段,每段 W × H 个 u32,合计 12 B/px;
5
+ * usage = STORAGE | COPY_DST(每帧叠加阶段前 encoder.clearBuffer 清零)。
6
+ * - 透明层('layer'):一个 u32 缓冲,4 B/px;usage = STORAGE(用 clear.wgsl 计算管线清空)。
7
+ *
8
+ * 规则:
9
+ * - 只在本帧确实需要某类时调用 ensure,所以从未用到的类不分配;未创建的类不因画布尺寸变化而创建。
10
+ * - 尺寸不符时同帧销毁旧缓冲再建新缓冲。
11
+ * - 创建失败:limits 预检失败 / 同步异常当帧判失败;错误作用域异步报告失败时销毁该缓冲、置空、
12
+ * revision++,下一个需要它的帧重试。每帧每类最多尝试 1 次、最多 1 条 console.error。
13
+ *
14
+ * 不在模块顶层引用全局 GPUBufferUsage(无 WebGPU 的环境中不存在),改用与之相同的数值常量。
15
+ */
16
+ /** GPUBufferUsage.STORAGE */
17
+ export declare const BUFFER_USAGE_STORAGE = 128;
18
+ /** GPUBufferUsage.COPY_DST */
19
+ export declare const BUFFER_USAGE_COPY_DST = 8;
20
+ export type ExtraBufferKind = 'additive' | 'layer';
21
+ /** 各类缓冲每像素字节数 */
22
+ export declare const EXTRA_BUFFER_BYTES_PER_PIXEL: Readonly<Record<ExtraBufferKind, number>>;
23
+ /** 各类缓冲 usage */
24
+ export declare const EXTRA_BUFFER_USAGE: Readonly<Record<ExtraBufferKind, number>>;
25
+ /** 透明阶段可能用到的额外缓冲(未创建时为 null) */
26
+ export interface ExtraBuffers {
27
+ additive: GPUBuffer | null;
28
+ layer: GPUBuffer | null;
29
+ }
30
+ export declare class TransparencyBuffers {
31
+ /** 缓冲对象发生任何变化(创建 / 销毁)时递增,供绑定组缓存失效 */
32
+ revision: number;
33
+ private readonly device;
34
+ private readonly slots;
35
+ private disposed;
36
+ constructor(device: GPUDevice);
37
+ /** 叠加平面(12 × W × H 字节) */
38
+ get additive(): GPUBuffer | null;
39
+ /** 透明层缓冲(4 × W × H 字节) */
40
+ get layer(): GPUBuffer | null;
41
+ /** 每帧开始调用:重置每帧每类的尝试 / 日志标记 */
42
+ beginFrame(): void;
43
+ /**
44
+ * 惰性创建 / 调整尺寸。本帧该类缓冲就绪(尺寸 = 当前宽高)返回 true,否则 false。
45
+ */
46
+ ensure(kind: ExtraBufferKind, width: number, height: number): boolean;
47
+ /** 释放某类缓冲(不存在时为空操作) */
48
+ release(kind: ExtraBufferKind): void;
49
+ /** 释放全部缓冲;之后 ensure 恒返回 false */
50
+ dispose(): void;
51
+ private destroySlot;
52
+ private watchAsyncFailure;
53
+ /**
54
+ * 异步报告失败:若该缓冲仍由槽持有则销毁并置空,下一个需要它的帧重试。
55
+ * 不再持有的缓冲已在尺寸变化 / 释放 / dispose 时销毁过,不重复 destroy。
56
+ */
57
+ private onAsyncFailure;
58
+ private reportError;
59
+ }
@@ -0,0 +1,70 @@
1
+ /**
2
+ * 计算着色器点云透明相关的纯函数与常量。
3
+ *
4
+ * CPU 端每块每帧计算点透明度 a,写入块参数 `tile.alphaPack`。
5
+ * WGSL 侧的透明常量也由 `TRANSPARENCY_CONSTANTS` 生成,保证 CPU 与 GPU 同源。
6
+ */
7
+ /** 每块绘制类别,与 `tilePack.z` 的取值一致。 */
8
+ export declare const TILE_CATEGORY: {
9
+ /** 不透明绘制(atomicMin 写像素缓冲) */
10
+ readonly OPAQUE: 0;
11
+ /** 叠加模式(原子加写叠加缓冲) */
12
+ readonly ADDITIVE: 1;
13
+ /** 混合半透明(普通混合,写透明层缓冲后逐组合成) */
14
+ readonly BLEND: 2;
15
+ };
16
+ export type TileCategory = (typeof TILE_CATEGORY)[keyof typeof TILE_CATEGORY];
17
+ export declare const TRANSPARENCY_CONSTANTS: {
18
+ /** 点透明度 a 小于该值时剔除 */
19
+ readonly ALPHA_CULL_THRESHOLD: 0.0001;
20
+ /** 非选中楼层且 floorStyle = 'OPACITY' 时楼层透明度的基数 */
21
+ readonly FLOOR_OPACITY_BASE: 0.2;
22
+ /** 选中楼层判断阈值,与 cull.wgsl 一致:shownFloor < −0.01 表示显示全部楼层 */
23
+ readonly SHOWN_FLOOR_ALL_THRESHOLD: -0.01;
24
+ /** 选中楼层判断阈值,与 cull.wgsl 一致:|floorIndex − shownFloor| < 0.99 视为相等 */
25
+ readonly FLOOR_EQUAL_EPSILON: 0.99;
26
+ readonly additive: {
27
+ /** 叠加缩放系数:每通道贡献 = round(K · a · c);K 为 2 的幂,K · a 与 ÷ K 在 f32 中无舍入 */
28
+ readonly K: 4096;
29
+ /** rgba16float 的最大有限值;合成时加数先限制到该值 */
30
+ readonly HALF_FLOAT_MAX: 65504;
31
+ };
32
+ readonly layer: {
33
+ /** "无点"值,与 clear.wgsl 写入的值相同 */
34
+ readonly EMPTY: 4294967295;
35
+ /** 层写入的深度比较统一换算到 24 位整数 */
36
+ readonly DEPTH_U24_MAX: 16777215;
37
+ };
38
+ };
39
+ /** clamp(x, lo, hi);x 为 NaN 时返回 lo。 */
40
+ export declare function clamp(x: number, lo: number, hi: number): number;
41
+ /** 计算点透明度所需的块级参数。 */
42
+ export interface FloorOpacityInput {
43
+ floorIndex: number;
44
+ shownFloorIndex: number;
45
+ /** 'OPACITY' 时非选中楼层半透明,其余值不影响透明度 */
46
+ floorStyle: string;
47
+ }
48
+ /**
49
+ * 点云块是否属于选中楼层。
50
+ * 选中楼层号 < 0(显示全部楼层),或块楼层号等于选中楼层号时为真。
51
+ * 判断阈值与 cull.wgsl 的 `is_current_floor` 相同,楼层号为整数时等价于精确比较。
52
+ */
53
+ export declare function isSelectedFloor(floorIndex: number, shownFloorIndex: number): boolean;
54
+ /**
55
+ * 楼层透明度(64 位计算)。
56
+ * 非选中楼层且 floorStyle = 'OPACITY' 时为 clamp(0.2 × min(1 + 相机朝向y, 1), 0, 1),其余为 1。
57
+ */
58
+ export declare function floorOpacity(tile: FloorOpacityInput, cameraForwardY: number): number;
59
+ /**
60
+ * 点透明度 a = clamp(opacity × 楼层透明度 × modelAlpha, 0, 1),64 位计算。
61
+ * 写入块参数时由 Float32 存储舍入为 f32。
62
+ */
63
+ export declare function pointAlpha(opacity: number, floorOpacityValue: number, modelAlpha: number): number;
64
+ /** 点透明度是否低于剔除阈值。 */
65
+ export declare function isAlphaCulled(a: number): boolean;
66
+ /**
67
+ * 由 `TRANSPARENCY_CONSTANTS` 生成 WGSL 常量声明(叠加、透明层与共用常量),
68
+ * 供写像素变体与合成着色器拼接。
69
+ */
70
+ export declare function transparencyWgslConstants(): string;
@@ -0,0 +1,24 @@
1
+ /**
2
+ * 计算着色器点云的半透明设置项:半透明处理方式。
3
+ *
4
+ * 本文件不依赖 GPU,只负责取值校验与状态标记:
5
+ * - 非法值保持原值,不抛错,每次非法设置输出一条 `console.warn`;
6
+ * - 值确实改变时置 `needsRender = true`,由上层同步到 `Five.needsRender`;
7
+ * - 'blend' → 'opaque' 时置 `pendingBlendRelease = true`,由下一次 `renderPointCloudCompute`
8
+ * 开头释放透明层缓冲后清零。
9
+ */
10
+ /** 半透明处理方式:'blend' 为普通混合,'opaque' 为按不透明绘制。 */
11
+ export type PointCloudTransparencyMode = 'blend' | 'opaque';
12
+ /** 半透明处理方式默认值。 */
13
+ export declare const DEFAULT_POINT_CLOUD_TRANSPARENCY_MODE: PointCloudTransparencyMode;
14
+ /** 是否为合法的半透明处理方式。 */
15
+ export declare function isPointCloudTransparencyMode(v: unknown): v is PointCloudTransparencyMode;
16
+ export declare class TransparencySettings {
17
+ /** 设置项发生改变、需要重绘时为 true;由使用方读取后清零。 */
18
+ needsRender: boolean;
19
+ /** 由 'blend' 切到 'opaque' 后为 true,表示需要在下一帧开头释放透明层缓冲。 */
20
+ pendingBlendRelease: boolean;
21
+ private _mode;
22
+ get mode(): PointCloudTransparencyMode;
23
+ set mode(value: PointCloudTransparencyMode);
24
+ }
@@ -8,8 +8,17 @@ interface StructLayout<F extends FieldTable> {
8
8
  readonly size: number;
9
9
  readonly wgsl: string;
10
10
  }
11
- export declare const FRAME: StructLayout<readonly [readonly ["viewProj", "mat4x4<f32>"], readonly ["screenInfo", "vec4<u32>"], readonly ["pointAttenPack", "vec4<f32>"], readonly ["viewZRow", "vec4<f32>"], readonly ["sizeInfo0", "vec4<f32>"], readonly ["sizeInfo1", "vec4<u32>"], readonly ["cameraWorld", "vec4<f32>"], readonly ["cameraForward", "vec4<f32>"], readonly ["constantColor", "vec4<f32>"], readonly ["colorGain", "vec4<f32>"], readonly ["stylePack", "vec4<u32>"], readonly ["floorPack", "vec4<f32>"], readonly ["clip0Inv", "mat4x4<f32>"], readonly ["clip0Meta", "vec4<f32>"], readonly ["clip1Inv", "mat4x4<f32>"], readonly ["clip1Meta", "vec4<f32>"], readonly ["rasterParams", "vec4<f32>"], readonly ["binnedInfo", "vec4<u32>"]]>;
12
- export declare const TILE: StructLayout<readonly [readonly ["modelMatrix", "mat4x4<f32>"], readonly ["bboxMin", "vec4<f32>"], readonly ["bboxMax", "vec4<f32>"], readonly ["tilePack", "vec4<u32>"], readonly ["mvp", "mat4x4<f32>"]]>;
11
+ /** 帧级量:只放同一帧所有块共用的参数,块级样式参数见 TILE */
12
+ export declare const FRAME: StructLayout<readonly [readonly ["viewProj", "mat4x4<f32>"], readonly ["screenInfo", "vec4<u32>"], readonly ["pointAttenPack", "vec4<f32>"], readonly ["viewZRow", "vec4<f32>"], readonly ["sizeInfo0", "vec4<f32>"], readonly ["sizeInfo1", "vec4<u32>"], readonly ["cameraWorld", "vec4<f32>"], readonly ["cameraForward", "vec4<f32>"], readonly ["rasterParams", "vec4<f32>"], readonly ["binnedInfo", "vec4<u32>"]]>;
13
+ /** 块级量:每块一次 writeBuffer,块之间互不影响 */
14
+ export declare const TILE: StructLayout<readonly [readonly ["modelMatrix", "mat4x4<f32>"], readonly ["bboxMin", "vec4<f32>"], readonly ["bboxMax", "vec4<f32>"], readonly ["tilePack", "vec4<u32>"], readonly ["mvp", "mat4x4<f32>"], readonly ["constantColor", "vec4<f32>"], readonly ["colorGain", "vec4<f32>"], readonly ["stylePack", "vec4<u32>"], readonly ["floorPack", "vec4<f32>"], readonly ["alphaPack", "vec4<f32>"], readonly ["clip0Inv", "mat4x4<f32>"], readonly ["clip0Meta", "vec4<f32>"], readonly ["clip1Inv", "mat4x4<f32>"], readonly ["clip1Meta", "vec4<f32>"]]>;
15
+ /** tilePack.y(flags)位定义 */
16
+ export declare const TILE_FLAG_HAS_NORMAL: number;
17
+ export declare const TILE_FLAG_ADD_BLEND: number;
18
+ /** tilePack.z(category)取值 */
19
+ export declare const TILE_CATEGORY_OPAQUE = 0;
20
+ export declare const TILE_CATEGORY_ADDITIVE = 1;
21
+ export declare const TILE_CATEGORY_BLEND = 2;
13
22
  export declare const BUCKET_ENTRY_BYTES = 16;
14
23
  export declare const SUB_BLOCK_ENTRY_BYTES = 8;
15
24
  export declare const SUB_BLOCK_SIZE = 8;
@@ -3,26 +3,40 @@ import { type Scene } from '../core/scene';
3
3
  import { type Camera } from '../core/camera';
4
4
  import { type OutputTextureDataType } from '../core/internalWebGPURenderer';
5
5
  import { type ModelScene } from '../model';
6
+ import { type PointCloudTransparencyMode } from './compute-renderers/transparency-settings';
6
7
  import { EffectComposer } from './postprocessing/composer';
8
+ export type { PointCloudTransparencyMode };
7
9
  export declare class FiveRenderer {
8
10
  renderMode: string;
9
11
  composer: EffectComposer;
10
12
  composerVersion: string;
11
13
  outputType: OutputTextureDataType;
12
14
  private sceneRenders;
13
- private computeRenderer;
15
+ private pointcloudComputeRenderer;
14
16
  private useComputePointCloud;
15
17
  private compositeRenderTarget;
16
18
  private lastWidth;
17
19
  private lastHeight;
18
20
  private readonly gpuTextureViewCache;
21
+ /** 含模板的深度纹理需要单独的 depth-only 视图才能绑定为 texture_depth_2d */
22
+ private readonly depthOnlyViewCache;
23
+ /** 只存值与标记,不触碰 GPU,WebGL 后端下同样可安全读写 */
24
+ private readonly transparencySettings;
25
+ /**
26
+ * 计算着色器点云的半透明处理方式:'blend' | 'opaque',默认 'blend'。
27
+ * 非法值保持原值并输出警告;值改变时置 needsRender。
28
+ */
29
+ get pointCloudTransparencyMode(): PointCloudTransparencyMode;
30
+ set pointCloudTransparencyMode(value: PointCloudTransparencyMode);
31
+ /** 设置项改变后为 true,由 Five 在同步状态阶段读取并清零。 */
32
+ get needsRender(): boolean;
33
+ set needsRender(value: boolean);
19
34
  constructor(options: {
20
35
  outputType?: OutputTextureDataType;
21
36
  });
22
37
  render(renderer: THREE.WebGPURenderer, scene: Scene, modelScene: ModelScene, camera: Camera, sceneUpdated: boolean): boolean;
23
- /** 将场景(点云 compute pass + three 场景)合成到 `compositeRenderTarget`。 */
24
38
  private renderSceneToComposite;
25
- /** 按相机到点云世界包围盒的距离由近到远排序 */
39
+ /** 按相机到点云世界包围盒的距离由近到远排序(缺失包围盒的块排在最后) */
26
40
  private sortByDistance;
27
41
  /**
28
42
  * WebGPU 路径:Compute Shader 光栅化点云 → 再渲染 three 场景叠加。
@@ -30,6 +44,17 @@ export declare class FiveRenderer {
30
44
  */
31
45
  private renderPointCloudCompute;
32
46
  dispose(): void;
47
+ /**
48
+ * 合成渲染目标的原生视图。
49
+ * - depthView:默认视图,作为不透明显示通道的深度附件;
50
+ * - layerDepthView:层写入以 texture_depth_2d 读取的视图。
51
+ *
52
+ * three WebGPU 后端下 `new THREE.DepthTexture(w, h)` 映射为 `depth24plus`(无模板),usage 含 TEXTURE_BINDING,
53
+ * 可直接绑定为 texture_depth_2d。若将来改为带模板的格式,默认视图(aspect = 'all')不能这样绑定,
54
+ * 因此改用单独缓存的 `aspect: 'depth-only'` 视图;无模板时与 depthView 为同一视图。
55
+ */
33
56
  private getCompositeTargetViews;
34
57
  private getCachedGpuTextureView;
58
+ private getLayerDepthView;
59
+ private getCachedView;
35
60
  }
@@ -1,3 +1,3 @@
1
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
- export { FiveRenderer } from './five-renderer';
3
+ export { FiveRenderer, type PointCloudTransparencyMode } from './five-renderer';
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * @license
3
3
  * @realsee/five-webgpu
4
- * Generated: 2026/10/29
5
- * Version: 1.0.0-alpha.12
4
+ * Generated: 2026/11/3
5
+ * Version: 1.0.0-alpha.14
6
6
  * License:
7
7
  * Realsee SDK License Agreement
8
8
 
@@ -335,4 +335,4 @@
335
335
  * writing and signed by Realsee. You and Realsee hereto confirm that this
336
336
  * Agreement and all related documents shall be drafted in English.
337
337
 
338
- */const e=require("../../tools/full-screen-quad.js");var t=class{constructor(e){this.enabled=!0,this.needsSwap=!0,this.clear=!1,this.renderToScreen=!0,this.dependencies=e==null?[]:e}setSize(e,t){}render(e,t,n,r,i){}dispose(){}};t.FullScreenQuad=e.FullScreenQuad,exports.FivePass=t;
338
+ */const require_full_screen_quad=require("../../tools/full-screen-quad.js");var FivePass=class{constructor(dependencies){this.enabled=!0,this.needsSwap=!0,this.clear=!1,this.renderToScreen=!0,this.dependencies=dependencies==null?[]:dependencies}setSize(width,height){}render(renderer,writeBuffer,readBuffer,deltaTime,maskActive){}dispose(){}};FivePass.FullScreenQuad=require_full_screen_quad.FullScreenQuad,exports.FivePass=FivePass;
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * @license
3
3
  * @realsee/five-webgpu
4
- * Generated: 2026/10/29
5
- * Version: 1.0.0-alpha.12
4
+ * Generated: 2026/11/3
5
+ * Version: 1.0.0-alpha.14
6
6
  * License:
7
7
  * Realsee SDK License Agreement
8
8
 
@@ -335,4 +335,4 @@
335
335
  * writing and signed by Realsee. You and Realsee hereto confirm that this
336
336
  * Agreement and all related documents shall be drafted in English.
337
337
 
338
- */import{FullScreenQuad as e}from"../../tools/full-screen-quad.mjs";var t=class{constructor(e){this.enabled=!0,this.needsSwap=!0,this.clear=!1,this.renderToScreen=!0,this.dependencies=e==null?[]:e}setSize(e,t){}render(e,t,n,r,i){}dispose(){}};t.FullScreenQuad=e;export{t as FivePass};
338
+ */import{FullScreenQuad}from"../../tools/full-screen-quad.mjs";var FivePass=class{constructor(dependencies){this.enabled=!0,this.needsSwap=!0,this.clear=!1,this.renderToScreen=!0,this.dependencies=dependencies==null?[]:dependencies}setSize(width,height){}render(renderer,writeBuffer,readBuffer,deltaTime,maskActive){}dispose(){}};FivePass.FullScreenQuad=FullScreenQuad;export{FivePass};
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * @license
3
3
  * @realsee/five-webgpu
4
- * Generated: 2026/10/29
5
- * Version: 1.0.0-alpha.12
4
+ * Generated: 2026/11/3
5
+ * Version: 1.0.0-alpha.14
6
6
  * License:
7
7
  * Realsee SDK License Agreement
8
8
 
@@ -335,4 +335,4 @@
335
335
  * writing and signed by Realsee. You and Realsee hereto confirm that this
336
336
  * Agreement and all related documents shall be drafted in English.
337
337
 
338
- */const e=require("../../../_virtual/_rolldown/runtime.js");let t=require("three/webgpu");t=e.__toESM(t,1);var n=class e{constructor(n){this._scene=new t.Scene,this._mesh=new t.Mesh(e.geometry,n),this._mesh.frustumCulled=!1,this._scene.add(this._mesh)}get material(){return this._mesh.material}set material(e){this._mesh.material=e}dispose(){this._mesh.geometry.dispose()}render(t){t.render(this._scene,e.camera)}};n.camera=new t.OrthographicCamera(-1,1,1,-1,0,1),n.geometry=(()=>{let e=new t.PlaneGeometry(2,2,1,1);for(let t=1;t<e.attributes.uv.array.length;t+=2)e.attributes.uv.array[t]=1-e.attributes.uv.array[t];return e})(),exports.FullScreenQuad=n;
338
+ */const require_runtime=require("../../../_virtual/_rolldown/runtime.js");let three_webgpu=require("three/webgpu");three_webgpu=require_runtime.__toESM(three_webgpu,1);var FullScreenQuad=class FullScreenQuad{constructor(material){this._scene=new three_webgpu.Scene,this._mesh=new three_webgpu.Mesh(FullScreenQuad.geometry,material),this._mesh.frustumCulled=!1,this._scene.add(this._mesh)}get material(){return this._mesh.material}set material(value){this._mesh.material=value}dispose(){this._mesh.geometry.dispose()}render(renderer){renderer.render(this._scene,FullScreenQuad.camera)}};FullScreenQuad.camera=new three_webgpu.OrthographicCamera(-1,1,1,-1,0,1),FullScreenQuad.geometry=(()=>{let ge=new three_webgpu.PlaneGeometry(2,2,1,1);for(let i=1;i<ge.attributes.uv.array.length;i+=2)ge.attributes.uv.array[i]=1-ge.attributes.uv.array[i];return ge})(),exports.FullScreenQuad=FullScreenQuad;
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * @license
3
3
  * @realsee/five-webgpu
4
- * Generated: 2026/10/29
5
- * Version: 1.0.0-alpha.12
4
+ * Generated: 2026/11/3
5
+ * Version: 1.0.0-alpha.14
6
6
  * License:
7
7
  * Realsee SDK License Agreement
8
8
 
@@ -335,4 +335,4 @@
335
335
  * writing and signed by Realsee. You and Realsee hereto confirm that this
336
336
  * Agreement and all related documents shall be drafted in English.
337
337
 
338
- */import*as e from"three/webgpu";var t=class t{constructor(n){this._scene=new e.Scene,this._mesh=new e.Mesh(t.geometry,n),this._mesh.frustumCulled=!1,this._scene.add(this._mesh)}get material(){return this._mesh.material}set material(e){this._mesh.material=e}dispose(){this._mesh.geometry.dispose()}render(e){e.render(this._scene,t.camera)}};t.camera=new e.OrthographicCamera(-1,1,1,-1,0,1),t.geometry=(()=>{let t=new e.PlaneGeometry(2,2,1,1);for(let e=1;e<t.attributes.uv.array.length;e+=2)t.attributes.uv.array[e]=1-t.attributes.uv.array[e];return t})();export{t as FullScreenQuad};
338
+ */import*as THREE from"three/webgpu";var FullScreenQuad=class FullScreenQuad{constructor(material){this._scene=new THREE.Scene,this._mesh=new THREE.Mesh(FullScreenQuad.geometry,material),this._mesh.frustumCulled=!1,this._scene.add(this._mesh)}get material(){return this._mesh.material}set material(value){this._mesh.material=value}dispose(){this._mesh.geometry.dispose()}render(renderer){renderer.render(this._scene,FullScreenQuad.camera)}};FullScreenQuad.camera=new THREE.OrthographicCamera(-1,1,1,-1,0,1),FullScreenQuad.geometry=(()=>{let ge=new THREE.PlaneGeometry(2,2,1,1);for(let i=1;i<ge.attributes.uv.array.length;i+=2)ge.attributes.uv.array[i]=1-ge.attributes.uv.array[i];return ge})();export{FullScreenQuad};