@zephyr3d/scene 0.9.1 → 0.9.3

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 (522) hide show
  1. package/dist/animation/animationset.js +2 -0
  2. package/dist/animation/animationset.js.map +1 -1
  3. package/dist/animation/cloth/gpu_cloth_system.js +9 -1
  4. package/dist/animation/cloth/gpu_cloth_system.js.map +1 -1
  5. package/dist/animation/fixed_geometry_cache_track.js +5 -1
  6. package/dist/animation/fixed_geometry_cache_track.js.map +1 -1
  7. package/dist/animation/geometry_cache_utils.js +20 -4
  8. package/dist/animation/geometry_cache_utils.js.map +1 -1
  9. package/dist/animation/ik/ik_angle_constraint.js +2 -6
  10. package/dist/animation/ik/ik_angle_constraint.js.map +1 -1
  11. package/dist/animation/ik/ik_chain_builder.js +68 -0
  12. package/dist/animation/ik/ik_chain_builder.js.map +1 -0
  13. package/dist/animation/ik/ik_pole_constraint.js +2 -7
  14. package/dist/animation/ik/ik_pole_constraint.js.map +1 -1
  15. package/dist/animation/ik/two_bone_ik_solver.js +2 -6
  16. package/dist/animation/ik/two_bone_ik_solver.js.map +1 -1
  17. package/dist/animation/joint_dynamics/collision.js +60 -12
  18. package/dist/animation/joint_dynamics/collision.js.map +1 -1
  19. package/dist/animation/joint_dynamics/constraints.js +20 -4
  20. package/dist/animation/joint_dynamics/constraints.js.map +1 -1
  21. package/dist/animation/joint_dynamics/controller.js +94 -46
  22. package/dist/animation/joint_dynamics/controller.js.map +1 -1
  23. package/dist/animation/joint_dynamics/math.js +16 -0
  24. package/dist/animation/joint_dynamics/math.js.map +1 -0
  25. package/dist/animation/joint_dynamics/solver.js +21 -11
  26. package/dist/animation/joint_dynamics/solver.js.map +1 -1
  27. package/dist/animation/joint_dynamics/types.js +15 -3
  28. package/dist/animation/joint_dynamics/types.js.map +1 -1
  29. package/dist/animation/pca_geometry_cache_track.js +5 -1
  30. package/dist/animation/pca_geometry_cache_track.js.map +1 -1
  31. package/dist/animation/skeleton.js +2 -2
  32. package/dist/animation/skeleton.js.map +1 -1
  33. package/dist/animation/skeleton_modifier.js +2 -6
  34. package/dist/animation/skeleton_modifier.js.map +1 -1
  35. package/dist/animation/spring/spring_particle.js +4 -4
  36. package/dist/animation/spring/spring_particle.js.map +1 -1
  37. package/dist/animation/spring/spring_system.js +13 -40
  38. package/dist/animation/spring/spring_system.js.map +1 -1
  39. package/dist/animation/spring2/constraints.js.map +1 -1
  40. package/dist/animation/spring2/controller.js +64 -64
  41. package/dist/animation/spring2/controller.js.map +1 -1
  42. package/dist/animation/spring2/math.js.map +1 -1
  43. package/dist/animation/spring2/spring_system.js +8 -8
  44. package/dist/animation/spring2/spring_system.js.map +1 -1
  45. package/dist/app/app.js.map +1 -1
  46. package/dist/app/engine.js +1 -1
  47. package/dist/app/engine.js.map +1 -1
  48. package/dist/app/screen.js +4 -4
  49. package/dist/app/screen.js.map +1 -1
  50. package/dist/app/scriptingsystem.js +24 -1
  51. package/dist/app/scriptingsystem.js.map +1 -1
  52. package/dist/app/scriptregistry.js +22 -1
  53. package/dist/app/scriptregistry.js.map +1 -1
  54. package/dist/asset/assetmanager.js +2 -2
  55. package/dist/asset/assetmanager.js.map +1 -1
  56. package/dist/asset/model.js +60 -60
  57. package/dist/asset/model.js.map +1 -1
  58. package/dist/camera/camera.js +1 -1
  59. package/dist/camera/camera.js.map +1 -1
  60. package/dist/camera/orbit.js.map +1 -1
  61. package/dist/index.d.ts +795 -266
  62. package/dist/index.js +3 -2
  63. package/dist/index.js.map +1 -1
  64. package/dist/material/material.js +3 -1
  65. package/dist/material/material.js.map +1 -1
  66. package/dist/material/mixins/lightmodel/pbrmetallicroughness.js.map +1 -1
  67. package/dist/material/shader/helper.js +281 -278
  68. package/dist/material/shader/helper.js.map +1 -1
  69. package/dist/material/sprite.js +6 -6
  70. package/dist/material/sprite.js.map +1 -1
  71. package/dist/material/terrain-cm.js +2 -2
  72. package/dist/material/terrain-cm.js.map +1 -1
  73. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimemgr.js +38 -0
  74. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimemgr.js.map +1 -0
  75. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimescript.js +10 -0
  76. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimescript.js.map +1 -0
  77. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptingsystem.js +127 -0
  78. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptingsystem.js.map +1 -0
  79. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptregistry.js +263 -0
  80. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptregistry.js.map +1 -0
  81. package/dist/posteffect/taa.js +31 -39
  82. package/dist/posteffect/taa.js.map +1 -1
  83. package/dist/render/cluster_light.js +3 -4
  84. package/dist/render/cluster_light.js.map +1 -1
  85. package/dist/render/drawable.js +5 -1
  86. package/dist/render/drawable.js.map +1 -1
  87. package/dist/render/rendergraph/device_pool_allocator.js +29 -3
  88. package/dist/render/rendergraph/device_pool_allocator.js.map +1 -1
  89. package/dist/render/rendergraph/executor.js +283 -33
  90. package/dist/render/rendergraph/executor.js.map +1 -1
  91. package/dist/render/rendergraph/forward_plus_builder.js +338 -108
  92. package/dist/render/rendergraph/forward_plus_builder.js.map +1 -1
  93. package/dist/render/rendergraph/history_resource_manager.js +195 -115
  94. package/dist/render/rendergraph/history_resource_manager.js.map +1 -1
  95. package/dist/render/rendergraph/history_resources.js +10 -0
  96. package/dist/render/rendergraph/history_resources.js.map +1 -0
  97. package/dist/render/rendergraph/rendergraph.js +162 -35
  98. package/dist/render/rendergraph/rendergraph.js.map +1 -1
  99. package/dist/render/rendergraph/types.js +25 -5
  100. package/dist/render/rendergraph/types.js.map +1 -1
  101. package/dist/render/rendertarget.js +5 -1
  102. package/dist/render/rendertarget.js.map +1 -1
  103. package/dist/render/screenrendertarget.js +5 -1
  104. package/dist/render/screenrendertarget.js.map +1 -1
  105. package/dist/render/sky.js +4 -4
  106. package/dist/render/sky.js.map +1 -1
  107. package/dist/scene/basesprite.js +2 -2
  108. package/dist/scene/basesprite.js.map +1 -1
  109. package/dist/scene/graph_node.js +1 -1
  110. package/dist/scene/graph_node.js.map +1 -1
  111. package/dist/scene/mesh.js +81 -97
  112. package/dist/scene/mesh.js.map +1 -1
  113. package/dist/scene/particlesys.js +1 -1
  114. package/dist/scene/particlesys.js.map +1 -1
  115. package/dist/scene/scene_node.js +228 -228
  116. package/dist/scene/scene_node.js.map +1 -1
  117. package/dist/scene/script_attachment.js +15 -3
  118. package/dist/scene/script_attachment.js.map +1 -1
  119. package/dist/scene/terrain-cm/terrain-cm.js +3 -3
  120. package/dist/scene/terrain-cm/terrain-cm.js.map +1 -1
  121. package/dist/shadow/shadowmapper.js.map +1 -1
  122. package/dist/shapes/box.js +1 -1
  123. package/dist/shapes/box.js.map +1 -1
  124. package/dist/shapes/capsule.js +0 -3
  125. package/dist/shapes/capsule.js.map +1 -1
  126. package/dist/shapes/cylinder.js +0 -3
  127. package/dist/shapes/cylinder.js.map +1 -1
  128. package/dist/shapes/plane.js +0 -3
  129. package/dist/shapes/plane.js.map +1 -1
  130. package/dist/shapes/tetrahedron.js +3 -9
  131. package/dist/shapes/tetrahedron.js.map +1 -1
  132. package/dist/shapes/torus.js +94 -66
  133. package/dist/shapes/torus.js.map +1 -1
  134. package/dist/src/animation/animation.js +127 -0
  135. package/dist/src/animation/animation.js.map +1 -0
  136. package/dist/src/animation/animationset.js +255 -0
  137. package/dist/src/animation/animationset.js.map +1 -0
  138. package/dist/src/animation/animationtrack.js +34 -0
  139. package/dist/src/animation/animationtrack.js.map +1 -0
  140. package/dist/src/animation/eulerrotationtrack.js +52 -0
  141. package/dist/src/animation/eulerrotationtrack.js.map +1 -0
  142. package/dist/src/animation/morphtarget.js +93 -0
  143. package/dist/src/animation/morphtarget.js.map +1 -0
  144. package/dist/src/animation/morphtrack.js +70 -0
  145. package/dist/src/animation/morphtrack.js.map +1 -0
  146. package/dist/src/animation/proptrack.js +161 -0
  147. package/dist/src/animation/proptrack.js.map +1 -0
  148. package/dist/src/animation/rotationtrack.js +51 -0
  149. package/dist/src/animation/rotationtrack.js.map +1 -0
  150. package/dist/src/animation/scaletrack.js +50 -0
  151. package/dist/src/animation/scaletrack.js.map +1 -0
  152. package/dist/src/animation/skeleton.js +204 -0
  153. package/dist/src/animation/skeleton.js.map +1 -0
  154. package/dist/src/animation/translationtrack.js +50 -0
  155. package/dist/src/animation/translationtrack.js.map +1 -0
  156. package/dist/src/app/app.js +129 -0
  157. package/dist/src/app/app.js.map +1 -0
  158. package/dist/src/app/inputmgr.js +267 -0
  159. package/dist/src/app/inputmgr.js.map +1 -0
  160. package/dist/src/asset/assetmanager.js +404 -0
  161. package/dist/src/asset/assetmanager.js.map +1 -0
  162. package/dist/src/asset/builtin.js +337 -0
  163. package/dist/src/asset/builtin.js.map +1 -0
  164. package/dist/src/asset/loaders/dds/dds.js +470 -0
  165. package/dist/src/asset/loaders/dds/dds.js.map +1 -0
  166. package/dist/src/asset/loaders/dds/dds_loader.js +28 -0
  167. package/dist/src/asset/loaders/dds/dds_loader.js.map +1 -0
  168. package/dist/src/asset/loaders/gltf/gltf_loader.js +1265 -0
  169. package/dist/src/asset/loaders/gltf/gltf_loader.js.map +1 -0
  170. package/dist/src/asset/loaders/gltf/helpers.js +327 -0
  171. package/dist/src/asset/loaders/gltf/helpers.js.map +1 -0
  172. package/dist/src/asset/loaders/hdr/hdr.js +180 -0
  173. package/dist/src/asset/loaders/hdr/hdr.js.map +1 -0
  174. package/dist/src/asset/loaders/image/tga_Loader.js +116 -0
  175. package/dist/src/asset/loaders/image/tga_Loader.js.map +1 -0
  176. package/dist/src/asset/loaders/image/webimage_loader.js +63 -0
  177. package/dist/src/asset/loaders/image/webimage_loader.js.map +1 -0
  178. package/dist/src/asset/loaders/loader.js +45 -0
  179. package/dist/src/asset/loaders/loader.js.map +1 -0
  180. package/dist/src/asset/model.js +414 -0
  181. package/dist/src/asset/model.js.map +1 -0
  182. package/dist/src/blitter/bilateralblur.js +221 -0
  183. package/dist/src/blitter/bilateralblur.js.map +1 -0
  184. package/dist/src/blitter/blitter.js +390 -0
  185. package/dist/src/blitter/blitter.js.map +1 -0
  186. package/dist/src/blitter/box.js +118 -0
  187. package/dist/src/blitter/box.js.map +1 -0
  188. package/dist/src/blitter/copy.js +22 -0
  189. package/dist/src/blitter/copy.js.map +1 -0
  190. package/dist/src/blitter/gaussianblur.js +228 -0
  191. package/dist/src/blitter/gaussianblur.js.map +1 -0
  192. package/dist/src/camera/base.js +92 -0
  193. package/dist/src/camera/base.js.map +1 -0
  194. package/dist/src/camera/camera.js +1005 -0
  195. package/dist/src/camera/camera.js.map +1 -0
  196. package/dist/src/camera/fps.js +238 -0
  197. package/dist/src/camera/fps.js.map +1 -0
  198. package/dist/src/camera/orbit.js +245 -0
  199. package/dist/src/camera/orbit.js.map +1 -0
  200. package/dist/src/camera/orthocamera.js +167 -0
  201. package/dist/src/camera/orthocamera.js.map +1 -0
  202. package/dist/src/camera/perspectivecamera.js +141 -0
  203. package/dist/src/camera/perspectivecamera.js.map +1 -0
  204. package/dist/src/index.js +120 -0
  205. package/dist/src/index.js.map +1 -0
  206. package/dist/src/material/blinn.js +81 -0
  207. package/dist/src/material/blinn.js.map +1 -0
  208. package/dist/src/material/grassmaterial.js +113 -0
  209. package/dist/src/material/grassmaterial.js.map +1 -0
  210. package/dist/src/material/lambert.js +92 -0
  211. package/dist/src/material/lambert.js.map +1 -0
  212. package/dist/src/material/material.js +301 -0
  213. package/dist/src/material/material.js.map +1 -0
  214. package/dist/src/material/meshmaterial.js +704 -0
  215. package/dist/src/material/meshmaterial.js.map +1 -0
  216. package/dist/src/material/mixins/albedocolor.js +76 -0
  217. package/dist/src/material/mixins/albedocolor.js.map +1 -0
  218. package/dist/src/material/mixins/foliage.js +47 -0
  219. package/dist/src/material/mixins/foliage.js.map +1 -0
  220. package/dist/src/material/mixins/lightmodel/blinnphong.js +112 -0
  221. package/dist/src/material/mixins/lightmodel/blinnphong.js.map +1 -0
  222. package/dist/src/material/mixins/lightmodel/lambert.js +58 -0
  223. package/dist/src/material/mixins/lightmodel/lambert.js.map +1 -0
  224. package/dist/src/material/mixins/lightmodel/pbrmetallicroughness.js +178 -0
  225. package/dist/src/material/mixins/lightmodel/pbrmetallicroughness.js.map +1 -0
  226. package/dist/src/material/mixins/lightmodel/pbrspecularglossness.js +139 -0
  227. package/dist/src/material/mixins/lightmodel/pbrspecularglossness.js.map +1 -0
  228. package/dist/src/material/mixins/lit.js +476 -0
  229. package/dist/src/material/mixins/lit.js.map +1 -0
  230. package/dist/src/material/mixins/pbr/common.js +918 -0
  231. package/dist/src/material/mixins/pbr/common.js.map +1 -0
  232. package/dist/src/material/mixins/texture.js +172 -0
  233. package/dist/src/material/mixins/texture.js.map +1 -0
  234. package/dist/src/material/mixins/vertexcolor.js +56 -0
  235. package/dist/src/material/mixins/vertexcolor.js.map +1 -0
  236. package/dist/src/material/particle.js +178 -0
  237. package/dist/src/material/particle.js.map +1 -0
  238. package/dist/src/material/pbrmr.js +97 -0
  239. package/dist/src/material/pbrmr.js.map +1 -0
  240. package/dist/src/material/pbrsg.js +97 -0
  241. package/dist/src/material/pbrsg.js.map +1 -0
  242. package/dist/src/material/shader/helper.js +1209 -0
  243. package/dist/src/material/shader/helper.js.map +1 -0
  244. package/dist/src/material/terrain-cm.js +606 -0
  245. package/dist/src/material/terrain-cm.js.map +1 -0
  246. package/dist/src/material/terrainmaterial.js +375 -0
  247. package/dist/src/material/terrainmaterial.js.map +1 -0
  248. package/dist/src/material/unlit.js +41 -0
  249. package/dist/src/material/unlit.js.map +1 -0
  250. package/dist/src/material/water.js +417 -0
  251. package/dist/src/material/water.js.map +1 -0
  252. package/dist/src/posteffect/bloom.js +361 -0
  253. package/dist/src/posteffect/bloom.js.map +1 -0
  254. package/dist/src/posteffect/compositor.js +226 -0
  255. package/dist/src/posteffect/compositor.js.map +1 -0
  256. package/dist/src/posteffect/fxaa.js +273 -0
  257. package/dist/src/posteffect/fxaa.js.map +1 -0
  258. package/dist/src/posteffect/grayscale.js +69 -0
  259. package/dist/src/posteffect/grayscale.js.map +1 -0
  260. package/dist/src/posteffect/motionblur.js +96 -0
  261. package/dist/src/posteffect/motionblur.js.map +1 -0
  262. package/dist/src/posteffect/posteffect.js +126 -0
  263. package/dist/src/posteffect/posteffect.js.map +1 -0
  264. package/dist/src/posteffect/sao.js +324 -0
  265. package/dist/src/posteffect/sao.js.map +1 -0
  266. package/dist/src/posteffect/ssr.js +489 -0
  267. package/dist/src/posteffect/ssr.js.map +1 -0
  268. package/dist/src/posteffect/taa.js +172 -0
  269. package/dist/src/posteffect/taa.js.map +1 -0
  270. package/dist/src/posteffect/tonemap.js +94 -0
  271. package/dist/src/posteffect/tonemap.js.map +1 -0
  272. package/dist/src/render/abuffer_oit.js +361 -0
  273. package/dist/src/render/abuffer_oit.js.map +1 -0
  274. package/dist/src/render/clipmap.js +851 -0
  275. package/dist/src/render/clipmap.js.map +1 -0
  276. package/dist/src/render/cluster_light.js +333 -0
  277. package/dist/src/render/cluster_light.js.map +1 -0
  278. package/dist/src/render/cull_visitor.js +187 -0
  279. package/dist/src/render/cull_visitor.js.map +1 -0
  280. package/dist/src/render/depthpass.js +68 -0
  281. package/dist/src/render/depthpass.js.map +1 -0
  282. package/dist/src/render/drawable_mixin.js +227 -0
  283. package/dist/src/render/drawable_mixin.js.map +1 -0
  284. package/dist/src/render/envlight.js +463 -0
  285. package/dist/src/render/envlight.js.map +1 -0
  286. package/dist/src/render/fbm_wavegenerator.js +251 -0
  287. package/dist/src/render/fbm_wavegenerator.js.map +1 -0
  288. package/dist/src/render/fft_wavegenerator.js +1006 -0
  289. package/dist/src/render/fft_wavegenerator.js.map +1 -0
  290. package/dist/src/render/fullscreenquad.js +38 -0
  291. package/dist/src/render/fullscreenquad.js.map +1 -0
  292. package/dist/src/render/gerstner_wavegenerator.js +314 -0
  293. package/dist/src/render/gerstner_wavegenerator.js.map +1 -0
  294. package/dist/src/render/globalbindgroup_allocator.js +60 -0
  295. package/dist/src/render/globalbindgroup_allocator.js.map +1 -0
  296. package/dist/src/render/hzb.js +273 -0
  297. package/dist/src/render/hzb.js.map +1 -0
  298. package/dist/src/render/lightpass.js +172 -0
  299. package/dist/src/render/lightpass.js.map +1 -0
  300. package/dist/src/render/objectcolorpass.js +51 -0
  301. package/dist/src/render/objectcolorpass.js.map +1 -0
  302. package/dist/src/render/primitive.js +364 -0
  303. package/dist/src/render/primitive.js.map +1 -0
  304. package/dist/src/render/render_queue.js +467 -0
  305. package/dist/src/render/render_queue.js.map +1 -0
  306. package/dist/src/render/renderbundle_wrapper.js +152 -0
  307. package/dist/src/render/renderbundle_wrapper.js.map +1 -0
  308. package/dist/src/render/renderer.js +455 -0
  309. package/dist/src/render/renderer.js.map +1 -0
  310. package/dist/src/render/renderpass.js +200 -0
  311. package/dist/src/render/renderpass.js.map +1 -0
  312. package/dist/src/render/shadowmap_pass.js +56 -0
  313. package/dist/src/render/shadowmap_pass.js.map +1 -0
  314. package/dist/src/render/sky.js +1103 -0
  315. package/dist/src/render/sky.js.map +1 -0
  316. package/dist/src/render/weightedblended_oit.js +168 -0
  317. package/dist/src/render/weightedblended_oit.js.map +1 -0
  318. package/dist/src/scene/batchgroup.js +162 -0
  319. package/dist/src/scene/batchgroup.js.map +1 -0
  320. package/dist/src/scene/environment.js +209 -0
  321. package/dist/src/scene/environment.js.map +1 -0
  322. package/dist/src/scene/graph_node.js +72 -0
  323. package/dist/src/scene/graph_node.js.map +1 -0
  324. package/dist/src/scene/light.js +416 -0
  325. package/dist/src/scene/light.js.map +1 -0
  326. package/dist/src/scene/mesh.js +341 -0
  327. package/dist/src/scene/mesh.js.map +1 -0
  328. package/dist/src/scene/octree.js +649 -0
  329. package/dist/src/scene/octree.js.map +1 -0
  330. package/dist/src/scene/particlesys.js +738 -0
  331. package/dist/src/scene/particlesys.js.map +1 -0
  332. package/dist/src/scene/raycast_visitor.js +103 -0
  333. package/dist/src/scene/raycast_visitor.js.map +1 -0
  334. package/dist/src/scene/scene.js +284 -0
  335. package/dist/src/scene/scene.js.map +1 -0
  336. package/dist/src/scene/scene_node.js +732 -0
  337. package/dist/src/scene/scene_node.js.map +1 -0
  338. package/dist/src/scene/terrain/grass.js +278 -0
  339. package/dist/src/scene/terrain/grass.js.map +1 -0
  340. package/dist/src/scene/terrain/heightfield.js +475 -0
  341. package/dist/src/scene/terrain/heightfield.js.map +1 -0
  342. package/dist/src/scene/terrain/patch.js +530 -0
  343. package/dist/src/scene/terrain/patch.js.map +1 -0
  344. package/dist/src/scene/terrain/quadtree.js +461 -0
  345. package/dist/src/scene/terrain/quadtree.js.map +1 -0
  346. package/dist/src/scene/terrain/terrain.js +246 -0
  347. package/dist/src/scene/terrain/terrain.js.map +1 -0
  348. package/dist/src/scene/terrain-cm/grass.js +594 -0
  349. package/dist/src/scene/terrain-cm/grass.js.map +1 -0
  350. package/dist/src/scene/terrain-cm/grassmaterial.js +159 -0
  351. package/dist/src/scene/terrain-cm/grassmaterial.js.map +1 -0
  352. package/dist/src/scene/terrain-cm/terrain-cm.js +538 -0
  353. package/dist/src/scene/terrain-cm/terrain-cm.js.map +1 -0
  354. package/dist/src/scene/water.js +374 -0
  355. package/dist/src/scene/water.js.map +1 -0
  356. package/dist/src/shaders/atmosphere.js +957 -0
  357. package/dist/src/shaders/atmosphere.js.map +1 -0
  358. package/dist/src/shaders/fog.js +112 -0
  359. package/dist/src/shaders/fog.js.map +1 -0
  360. package/dist/src/shaders/misc.js +266 -0
  361. package/dist/src/shaders/misc.js.map +1 -0
  362. package/dist/src/shaders/noise.js +222 -0
  363. package/dist/src/shaders/noise.js.map +1 -0
  364. package/dist/src/shaders/pbr.js +51 -0
  365. package/dist/src/shaders/pbr.js.map +1 -0
  366. package/dist/src/shaders/shadow.js +636 -0
  367. package/dist/src/shaders/shadow.js.map +1 -0
  368. package/dist/src/shaders/ssr.js +490 -0
  369. package/dist/src/shaders/ssr.js.map +1 -0
  370. package/dist/src/shaders/temporal.js +215 -0
  371. package/dist/src/shaders/temporal.js.map +1 -0
  372. package/dist/src/shaders/water.js +756 -0
  373. package/dist/src/shaders/water.js.map +1 -0
  374. package/dist/src/shadow/esm.js +237 -0
  375. package/dist/src/shadow/esm.js.map +1 -0
  376. package/dist/src/shadow/pcf_opt.js +181 -0
  377. package/dist/src/shadow/pcf_opt.js.map +1 -0
  378. package/dist/src/shadow/pcf_pd.js +189 -0
  379. package/dist/src/shadow/pcf_pd.js.map +1 -0
  380. package/dist/src/shadow/shader.js +37 -0
  381. package/dist/src/shadow/shader.js.map +1 -0
  382. package/dist/src/shadow/shadow_impl.js +15 -0
  383. package/dist/src/shadow/shadow_impl.js.map +1 -0
  384. package/dist/src/shadow/shadowmapper.js +790 -0
  385. package/dist/src/shadow/shadowmapper.js.map +1 -0
  386. package/dist/src/shadow/ssm.js +159 -0
  387. package/dist/src/shadow/ssm.js.map +1 -0
  388. package/dist/src/shadow/vsm.js +297 -0
  389. package/dist/src/shadow/vsm.js.map +1 -0
  390. package/dist/src/shapes/box.js +386 -0
  391. package/dist/src/shapes/box.js.map +1 -0
  392. package/dist/src/shapes/cylinder.js +125 -0
  393. package/dist/src/shapes/cylinder.js.map +1 -0
  394. package/dist/src/shapes/plane.js +88 -0
  395. package/dist/src/shapes/plane.js.map +1 -0
  396. package/dist/src/shapes/shape.js +87 -0
  397. package/dist/src/shapes/shape.js.map +1 -0
  398. package/dist/src/shapes/sphere.js +114 -0
  399. package/dist/src/shapes/sphere.js.map +1 -0
  400. package/dist/src/shapes/tetrahedron.js +188 -0
  401. package/dist/src/shapes/tetrahedron.js.map +1 -0
  402. package/dist/src/shapes/torus.js +111 -0
  403. package/dist/src/shapes/torus.js.map +1 -0
  404. package/dist/src/utility/aabbtree.js +400 -0
  405. package/dist/src/utility/aabbtree.js.map +1 -0
  406. package/dist/src/utility/bounding_volume.js +29 -0
  407. package/dist/src/utility/bounding_volume.js.map +1 -0
  408. package/dist/src/utility/debug.js +28 -0
  409. package/dist/src/utility/debug.js.map +1 -0
  410. package/dist/src/utility/draco/decoder.js +116 -0
  411. package/dist/src/utility/draco/decoder.js.map +1 -0
  412. package/dist/src/utility/misc.js +105 -0
  413. package/dist/src/utility/misc.js.map +1 -0
  414. package/dist/src/utility/panorama.js +163 -0
  415. package/dist/src/utility/panorama.js.map +1 -0
  416. package/dist/src/utility/pmrem.js +354 -0
  417. package/dist/src/utility/pmrem.js.map +1 -0
  418. package/dist/src/utility/rendermipmap.js +115 -0
  419. package/dist/src/utility/rendermipmap.js.map +1 -0
  420. package/dist/src/utility/serialization/json.js +402 -0
  421. package/dist/src/utility/serialization/json.js.map +1 -0
  422. package/dist/src/utility/serialization/manager.js +623 -0
  423. package/dist/src/utility/serialization/manager.js.map +1 -0
  424. package/dist/src/utility/serialization/scene/animation.js +248 -0
  425. package/dist/src/utility/serialization/scene/animation.js.map +1 -0
  426. package/dist/src/utility/serialization/scene/batch.js +59 -0
  427. package/dist/src/utility/serialization/scene/batch.js.map +1 -0
  428. package/dist/src/utility/serialization/scene/camera.js +790 -0
  429. package/dist/src/utility/serialization/scene/camera.js.map +1 -0
  430. package/dist/src/utility/serialization/scene/common.js +222 -0
  431. package/dist/src/utility/serialization/scene/common.js.map +1 -0
  432. package/dist/src/utility/serialization/scene/light.js +575 -0
  433. package/dist/src/utility/serialization/scene/light.js.map +1 -0
  434. package/dist/src/utility/serialization/scene/material.js +1111 -0
  435. package/dist/src/utility/serialization/scene/material.js.map +1 -0
  436. package/dist/src/utility/serialization/scene/mesh.js +148 -0
  437. package/dist/src/utility/serialization/scene/mesh.js.map +1 -0
  438. package/dist/src/utility/serialization/scene/misc.js +39 -0
  439. package/dist/src/utility/serialization/scene/misc.js.map +1 -0
  440. package/dist/src/utility/serialization/scene/node.js +451 -0
  441. package/dist/src/utility/serialization/scene/node.js.map +1 -0
  442. package/dist/src/utility/serialization/scene/particle.js +425 -0
  443. package/dist/src/utility/serialization/scene/particle.js.map +1 -0
  444. package/dist/src/utility/serialization/scene/primitive.js +692 -0
  445. package/dist/src/utility/serialization/scene/primitive.js.map +1 -0
  446. package/dist/src/utility/serialization/scene/scene.js +704 -0
  447. package/dist/src/utility/serialization/scene/scene.js.map +1 -0
  448. package/dist/src/utility/serialization/scene/terrain.js +488 -0
  449. package/dist/src/utility/serialization/scene/terrain.js.map +1 -0
  450. package/dist/src/utility/serialization/scene/water.js +465 -0
  451. package/dist/src/utility/serialization/scene/water.js.map +1 -0
  452. package/dist/src/utility/shprojector.js +297 -0
  453. package/dist/src/utility/shprojector.js.map +1 -0
  454. package/dist/src/utility/textures/ggxlut.js +213 -0
  455. package/dist/src/utility/textures/ggxlut.js.map +1 -0
  456. package/dist/src/utility/textures/gradientnoise.js +62 -0
  457. package/dist/src/utility/textures/gradientnoise.js.map +1 -0
  458. package/dist/src/utility/textures/randomnoise.js +41 -0
  459. package/dist/src/utility/textures/randomnoise.js.map +1 -0
  460. package/dist/src/values.js +162 -0
  461. package/dist/src/values.js.map +1 -0
  462. package/dist/utility/blueprint/material/common.js +7 -0
  463. package/dist/utility/blueprint/material/common.js.map +1 -0
  464. package/dist/utility/blueprint/material/inputs.js +3 -3
  465. package/dist/utility/blueprint/material/inputs.js.map +1 -1
  466. package/dist/utility/blueprint/material/ir.js +4 -4
  467. package/dist/utility/blueprint/material/ir.js.map +1 -1
  468. package/dist/utility/serialization/blueprint/constants.js +255 -0
  469. package/dist/utility/serialization/blueprint/constants.js.map +1 -0
  470. package/dist/utility/serialization/blueprint/material/constants.js +203 -0
  471. package/dist/utility/serialization/blueprint/material/constants.js.map +1 -0
  472. package/dist/utility/serialization/blueprint/material/texture.js +165 -0
  473. package/dist/utility/serialization/blueprint/material/texture.js.map +1 -0
  474. package/dist/utility/serialization/manager.js +299 -268
  475. package/dist/utility/serialization/manager.js.map +1 -1
  476. package/dist/utility/serialization/scene/animation.js +45 -0
  477. package/dist/utility/serialization/scene/animation.js.map +1 -1
  478. package/dist/utility/serialization/scene/camera.js +53 -0
  479. package/dist/utility/serialization/scene/camera.js.map +1 -1
  480. package/dist/utility/serialization/scene/common.js +10 -0
  481. package/dist/utility/serialization/scene/common.js.map +1 -1
  482. package/dist/utility/serialization/scene/light.js +30 -0
  483. package/dist/utility/serialization/scene/light.js.map +1 -1
  484. package/dist/utility/serialization/scene/material.js +63 -0
  485. package/dist/utility/serialization/scene/material.js.map +1 -1
  486. package/dist/utility/serialization/scene/mesh.js +11 -0
  487. package/dist/utility/serialization/scene/mesh.js.map +1 -1
  488. package/dist/utility/serialization/scene/misc.js +2 -0
  489. package/dist/utility/serialization/scene/misc.js.map +1 -1
  490. package/dist/utility/serialization/scene/node.js +19 -0
  491. package/dist/utility/serialization/scene/node.js.map +1 -1
  492. package/dist/utility/serialization/scene/particle.js +22 -0
  493. package/dist/utility/serialization/scene/particle.js.map +1 -1
  494. package/dist/utility/serialization/scene/primitive.js +33 -0
  495. package/dist/utility/serialization/scene/primitive.js.map +1 -1
  496. package/dist/utility/serialization/scene/scene.js +39 -0
  497. package/dist/utility/serialization/scene/scene.js.map +1 -1
  498. package/dist/utility/serialization/scene/script.js +2 -0
  499. package/dist/utility/serialization/scene/script.js.map +1 -1
  500. package/dist/utility/serialization/scene/sprite.js +6 -0
  501. package/dist/utility/serialization/scene/sprite.js.map +1 -1
  502. package/dist/utility/serialization/scene/terrain.js +9 -0
  503. package/dist/utility/serialization/scene/terrain.js.map +1 -1
  504. package/dist/utility/serialization/scene/water.js +21 -0
  505. package/dist/utility/serialization/scene/water.js.map +1 -1
  506. package/dist/utility/serialization/types.js +5 -1
  507. package/dist/utility/serialization/types.js.map +1 -1
  508. package/dist/values.js +49 -53
  509. package/dist/values.js.map +1 -1
  510. package/package.json +2 -2
  511. package/dist/animation/joint_dynamics/vrm_spring_bone.js +0 -46
  512. package/dist/animation/joint_dynamics/vrm_spring_bone.js.map +0 -1
  513. package/dist/animation/spring/spring_bone.js +0 -240
  514. package/dist/animation/spring/spring_bone.js.map +0 -1
  515. package/dist/animation/spring/spring_bone_collider.js +0 -198
  516. package/dist/animation/spring/spring_bone_collider.js.map +0 -1
  517. package/dist/animation/spring/spring_bone_constraint.js +0 -170
  518. package/dist/animation/spring/spring_bone_constraint.js.map +0 -1
  519. package/dist/animation/spring/spring_bone_system.js +0 -328
  520. package/dist/animation/spring/spring_bone_system.js.map +0 -1
  521. package/dist/render/sky_motion_vector.js +0 -85
  522. package/dist/render/sky_motion_vector.js.map +0 -1
package/dist/index.d.ts CHANGED
@@ -243,6 +243,11 @@ declare function fetchSampler(type: SamplerType): TextureSampler<unknown> | null
243
243
  * @public
244
244
  */
245
245
  type PropertyType = string;
246
+ /**
247
+ * Maps a property type discriminator to the corresponding value lane key.
248
+ *
249
+ * @public
250
+ */
246
251
  type PropertyToType<T extends string> = T extends 'float' | 'vec2' | 'vec3' | 'vec4' | 'int' | 'int2' | 'int3' | 'int4' | 'rgb' | 'rgba' ? 'num' : T extends 'bool' ? 'bool' : T extends 'string' ? 'str' : T extends 'object' | 'object_array' ? 'object' : 'num' | 'bool' | 'str' | 'object';
247
252
  /**
248
253
  * Container for a serializable property's value.
@@ -278,6 +283,11 @@ type PropertyValue = {
278
283
  * @public
279
284
  */
280
285
  type PropEdit = 'aabb' | 'quaternion' | 'proptrack';
286
+ /**
287
+ * Extra scene-node picker hints for a property.
288
+ *
289
+ * @public
290
+ */
281
291
  type PropertySceneNodeOptions = {
282
292
  kind?: 'node' | 'mesh';
283
293
  };
@@ -321,6 +331,11 @@ type PropertyAccessorOptions = {
321
331
  values: unknown[];
322
332
  };
323
333
  };
334
+ /**
335
+ * Returns the property accessor list unchanged while preserving typing.
336
+ *
337
+ * @public
338
+ */
324
339
  declare function defineProps(accessors: PropertyAccessor<any, 'DUMMY'>[]): PropertyAccessor[];
325
340
  /**
326
341
  * Descriptor for a serializable property of a class/type.
@@ -342,6 +357,8 @@ type PropertyAccessor<T = object, U extends string = ''> = {
342
357
  type: PropertyType;
343
358
  /** Unique property name (stable identifier for tooling/serialization). */
344
359
  name: string;
360
+ /** Description of this property */
361
+ description?: string;
345
362
  /**
346
363
  * Optional evaluation phase/order hint (lower runs earlier).
347
364
  * Useful for staged initialization or batched updates in editors.
@@ -513,6 +530,11 @@ type SerializableClass = {
513
530
  * @public
514
531
  */
515
532
  type ShadowMode = 'hard' | 'vsm' | 'esm' | 'pcf-pd' | 'pcf-opt';
533
+ /**
534
+ * Preset shadow quality profiles.
535
+ *
536
+ * @public
537
+ */
516
538
  type ShadowQualityPreset = 'character-small' | 'outdoor-large';
517
539
  /**
518
540
  * The shadow map generator
@@ -1267,6 +1289,7 @@ declare class ShaderHelper {
1267
1289
  * @returns The transformed color
1268
1290
  */
1269
1291
  static encodeColorOutput(scope: PBInsideFunctionScope, outputColor: PBShaderExp): PBShaderExp;
1292
+ static getMaxClusteredLightCount(): 255 | 127;
1270
1293
  }
1271
1294
 
1272
1295
  declare const Primitive_base: (new (...args: any[]) => {
@@ -1718,6 +1741,13 @@ declare class Material extends Disposable implements Clonable<Material>, IDispos
1718
1741
  * Base returns `null`. Subclasses that support instancing can return a lightweight instance.
1719
1742
  */
1720
1743
  createInstance(): this;
1744
+ /**
1745
+ * Returns the core material that owns GPU state.
1746
+ *
1747
+ * Instances may delegate to a shared core to reuse compiled programs and caches.
1748
+ * @public
1749
+ */
1750
+ get coreMaterial(): this;
1721
1751
  /**
1722
1752
  * Prepare the material for drawing across all passes for the given draw context.
1723
1753
  *
@@ -2413,9 +2443,7 @@ declare class ClipmapTerrainMaterial extends ClipmapTerrainMaterial_base {
2413
2443
  static get MAX_DETAIL_MAP_COUNT(): number;
2414
2444
  get debugMode(): TerrainDebugMode;
2415
2445
  set debugMode(mode: TerrainDebugMode);
2416
- set region(val: Vector4);
2417
2446
  setClipmapGridInfo(gridScale: number, gridOffsetX: number, gridOffsetY: number): void;
2418
- set terrainScale(val: Vector3);
2419
2447
  get numDetailMaps(): number;
2420
2448
  set numDetailMaps(val: number);
2421
2449
  getSplatMap(): Texture2D<unknown> | Texture2DArray<unknown> | null;
@@ -3461,6 +3489,11 @@ type IMixinLight = {
3461
3489
  */
3462
3490
  declare function mixinLight<T extends typeof MeshMaterial>(BaseCls: T): T & (new (...args: any[]) => IMixinLight);
3463
3491
 
3492
+ /**
3493
+ * Reflection model used by the PBR metallic-roughness material.
3494
+ *
3495
+ * @public
3496
+ */
3464
3497
  type PBRReflectionMode = 'none' | 'ggx' | 'anisotropic' | 'glint';
3465
3498
  /**
3466
3499
  * Interface for PBRMetallicRoughness lighting model mixin
@@ -3659,9 +3692,9 @@ declare class PBRBluePrintMaterial extends PBRBluePrintMaterial_base implements
3659
3692
  * using UV information and an anchor point to control how the sprite
3660
3693
  * is positioned and textured.
3661
3694
  *
3662
- * Derived classes can override {@link internalSetupUniforms},
3663
- * {@link internalApplyUniforms} and
3664
- * {@link calcFragmentColor} to provide custom
3695
+ * Derived classes can override `internalSetupUniforms()`,
3696
+ * `internalApplyUniforms()`, and
3697
+ * `calcFragmentColor()` to provide custom
3665
3698
  * uniforms and shading logic (e.g. sampling a texture).
3666
3699
  *
3667
3700
  * @public
@@ -3769,9 +3802,9 @@ declare class SpriteMaterial extends MeshMaterial implements Clonable<SpriteMate
3769
3802
  * @remarks
3770
3803
  * This method:
3771
3804
  * - Calls the base implementation.
3772
- * - Invokes {@link SpriteMaterial.internalSetupUniforms} for
3805
+ * - Invokes `internalSetupUniforms()` for
3773
3806
  * fragment-stage specific uniform declarations.
3774
- * - Computes fragment color by calling {@link SpriteMaterial.calcFragmentColor}
3807
+ * - Computes fragment color by calling `calcFragmentColor()`
3775
3808
  * if fragment color is needed.
3776
3809
  * - Outputs the final fragment color via {@link MeshMaterial.outputFragmentColor}.
3777
3810
  *
@@ -3789,7 +3822,7 @@ declare class SpriteMaterial extends MeshMaterial implements Clonable<SpriteMate
3789
3822
  * for non-instanced rendering. For instanced rendering, these values
3790
3823
  * are expected to be provided as per-instance uniforms instead.
3791
3824
  *
3792
- * It also calls {@link SpriteMaterial.internalApplyUniforms} to allow
3825
+ * It also calls `internalApplyUniforms()` to allow
3793
3826
  * derived classes to bind additional resources (e.g. textures).
3794
3827
  *
3795
3828
  * @param bindGroup - The bind group to which uniforms and resources are bound.
@@ -4507,8 +4540,6 @@ declare class SkyRenderer extends Disposable {
4507
4540
  /** Which type of the sky should be rendered */
4508
4541
  get skyType(): SkyType;
4509
4542
  set skyType(val: SkyType);
4510
- set panoramaTextureAsset(id: string);
4511
- set skyboxTextureSize(size: number);
4512
4543
  /** Baked sky texture */
4513
4544
  getBakedSkyTexture(ctx: DrawContext): TextureCube<unknown>;
4514
4545
  /**
@@ -4619,11 +4650,9 @@ declare class SkyRenderer extends Disposable {
4619
4650
  */
4620
4651
  get skyboxRotation(): Immutable<Vector3>;
4621
4652
  set skyboxRotation(val: Immutable<Vector3>);
4622
- set skyWorldMatrix(val: Immutable<Matrix4x4>);
4623
4653
  /** Current fog type */
4624
4654
  get fogType(): FogType;
4625
4655
  set fogType(val: FogType);
4626
- set aerialPerspectiveDebug(val: number);
4627
4656
  /**
4628
4657
  * Force the radiance map and irradiance map to be regenerated.
4629
4658
  */
@@ -6256,6 +6285,11 @@ declare class FBMWaveGenerator extends Disposable implements WaveGenerator {
6256
6285
  getHash(): string;
6257
6286
  }
6258
6287
 
6288
+ /**
6289
+ * Abstract render target used to derive viewports and projection matrices.
6290
+ *
6291
+ * @public
6292
+ */
6259
6293
  declare abstract class RenderTarget {
6260
6294
  abstract getVersion(): number;
6261
6295
  abstract calcViewport(outViewport?: Nullable<number[]>): number[];
@@ -6294,6 +6328,8 @@ type ScreenConfig = {
6294
6328
  *
6295
6329
  * outX = inX * scaleX + offsetX
6296
6330
  * outY = inY * scaleY + offsetY
6331
+ *
6332
+ * @public
6297
6333
  */
6298
6334
  type PointTransform = {
6299
6335
  scaleX: number;
@@ -6304,6 +6340,8 @@ type PointTransform = {
6304
6340
  /**
6305
6341
  * Resolution transform information derived from a {@link ScreenConfig}
6306
6342
  * and a concrete viewport rectangle.
6343
+ *
6344
+ * @public
6307
6345
  */
6308
6346
  type ResolutionTransform = {
6309
6347
  /**
@@ -6357,7 +6395,7 @@ declare class ScreenAdapter {
6357
6395
  * Creates a new {@link ScreenAdapter}.
6358
6396
  *
6359
6397
  * @param config - Optional initial screen configuration. If omitted,
6360
- * a default of 1280×720 with 'cover' mode is used.
6398
+ * a default of `1280 x 720` with `cover` mode is used.
6361
6399
  */
6362
6400
  constructor(config?: Immutable<ScreenConfig>);
6363
6401
  /**
@@ -6423,7 +6461,7 @@ declare class ScreenAdapter {
6423
6461
  *
6424
6462
  * @param canvasPos - Point in canvas coordinates (CSS pixels).
6425
6463
  * @param viewportPosOut - Optional output vector. If provided, it will be
6426
- * written into and returned; otherwise a new {@link Vector2} is allocated.
6464
+ * written into and returned; otherwise a new `Vector2` is allocated.
6427
6465
  * @returns The point in viewport-local coordinates.
6428
6466
  */
6429
6467
  canvasPosToViewport(canvasPos: Vector2, viewportPosOut?: Vector2): Vector2;
@@ -6437,7 +6475,7 @@ declare class ScreenAdapter {
6437
6475
  *
6438
6476
  * @param canvasPos - Point in canvas coordinates (CSS pixels).
6439
6477
  * @param logicPosOut - Optional output vector. If provided, it will be
6440
- * written into and returned; otherwise a new {@link Vector2} is allocated.
6478
+ * written into and returned; otherwise a new `Vector2` is allocated.
6441
6479
  * @returns The point in logical (design resolution) coordinates.
6442
6480
  */
6443
6481
  canvasPosToLogic(canvasPos: Vector2, logicPosOut?: Vector2): Vector2;
@@ -6452,7 +6490,7 @@ declare class ScreenAdapter {
6452
6490
  * @param transform - Transform parameters (scale and offset).
6453
6491
  * @param pointIn - Input point.
6454
6492
  * @param pointOut - Optional output vector. If provided, it will be
6455
- * written into and returned; otherwise a new {@link Vector2} is allocated.
6493
+ * written into and returned; otherwise a new `Vector2` is allocated.
6456
6494
  * @returns The transformed point.
6457
6495
  */
6458
6496
  transformPoint(transform: PointTransform, pointIn: Vector2, pointOut?: Vector2): Vector2;
@@ -6463,6 +6501,11 @@ declare class ScreenAdapter {
6463
6501
  private getDefaultConfig;
6464
6502
  }
6465
6503
 
6504
+ /**
6505
+ * Render target backed by the engine screen adapter.
6506
+ *
6507
+ * @public
6508
+ */
6466
6509
  declare class ScreenRenderTarget extends RenderTarget {
6467
6510
  private readonly screenAdapter;
6468
6511
  constructor(screenAdapter?: ScreenAdapter);
@@ -6506,9 +6549,9 @@ interface RGTextureDesc {
6506
6549
  /**
6507
6550
  * Opaque handle referencing a resource within the render graph.
6508
6551
  *
6509
- * Handles are obtained from {@link RGPassBuilder.createTexture}, {@link RenderGraph.importTexture},
6510
- * or {@link RGPassBuilder.write}. They are lightweight identifiers used to declare
6511
- * dependencies between passes.
6552
+ * Handles are obtained from {@link RGPassBuilder.createTexture}, {@link RGPassBuilder.createFramebuffer},
6553
+ * {@link RenderGraph.importTexture}, or {@link RGPassBuilder.write}. They are lightweight identifiers
6554
+ * used to declare dependencies between passes.
6512
6555
  *
6513
6556
  * @public
6514
6557
  */
@@ -6517,7 +6560,7 @@ declare class RGHandle {
6517
6560
  get name(): string;
6518
6561
  }
6519
6562
  /** @public */
6520
- type RGResourceKind = 'transient' | 'imported';
6563
+ type RGResourceKind = 'transient' | 'imported' | 'token' | 'framebuffer';
6521
6564
  /**
6522
6565
  * Internal bookkeeping for a resource within the render graph.
6523
6566
  * @public
@@ -6526,12 +6569,14 @@ declare class RGResource {
6526
6569
  readonly id: number;
6527
6570
  readonly name: string;
6528
6571
  readonly kind: RGResourceKind;
6529
- readonly desc: RGTextureDesc | null;
6572
+ readonly desc: RGTextureDesc | RGFramebufferDesc | null;
6573
+ /** Resource ID of the physical backing resource used by imported versions. */
6574
+ readonly physicalId: number;
6530
6575
  /** The pass that creates / writes this resource (null for imported until written). */
6531
6576
  producer: RGPass | null;
6532
6577
  /** Passes that read this resource. */
6533
6578
  readonly consumers: RGPass[];
6534
- constructor(id: number, name: string, kind: RGResourceKind, desc: RGTextureDesc | null);
6579
+ constructor(id: number, name: string, kind: RGResourceKind, desc: RGTextureDesc | RGFramebufferDesc | null, physicalId?: number);
6535
6580
  }
6536
6581
  /**
6537
6582
  * Context passed to pass execute callbacks during graph execution.
@@ -6546,12 +6591,48 @@ interface RGExecuteContext {
6546
6591
  *
6547
6592
  * For transient resources, this returns the texture allocated by the executor.
6548
6593
  * For imported resources, this returns the texture registered via
6549
- * {@link RenderGraphExecutor.setImportedTexture}.
6594
+ * {@link RenderGraphExecutor.setImportedTexture}. The handle must be declared
6595
+ * by the current pass with {@link RGPassBuilder.read} or {@link RGPassBuilder.write}.
6550
6596
  *
6551
6597
  * @param handle - Handle of the resource to resolve.
6552
6598
  * @returns The resolved texture object (type depends on the allocator).
6553
6599
  */
6554
6600
  getTexture<TTexture = unknown>(handle: RGHandle): TTexture;
6601
+ /**
6602
+ * Resolve a framebuffer handle to the actual backend framebuffer object.
6603
+ *
6604
+ * The handle must be declared by the current pass with {@link RGPassBuilder.read}
6605
+ * or created by the same pass with {@link RGPassBuilder.createFramebuffer}.
6606
+ *
6607
+ * @param handle - Handle returned from {@link RGPassBuilder.createFramebuffer}.
6608
+ * @returns The resolved framebuffer object (type depends on the allocator).
6609
+ */
6610
+ getFramebuffer<TFramebuffer = unknown>(handle: RGHandle): TFramebuffer;
6611
+ /**
6612
+ * Create a temporary framebuffer managed by the graph executor.
6613
+ *
6614
+ * The framebuffer is released automatically when graph execution finishes or
6615
+ * aborts. Attachments may be actual backend resources or texture formats,
6616
+ * depending on the allocator implementation. If an attachment is an
6617
+ * {@link RGHandle}, the current pass must declare it with
6618
+ * {@link RGPassBuilder.read} or {@link RGPassBuilder.write}.
6619
+ *
6620
+ * @param desc - Framebuffer descriptor.
6621
+ * @returns The allocated framebuffer object (type depends on the allocator).
6622
+ */
6623
+ createFramebuffer<TFramebuffer = unknown>(desc: RGFramebufferDesc): TFramebuffer;
6624
+ /**
6625
+ * Register a cleanup callback to run when graph execution finishes or aborts.
6626
+ *
6627
+ * Callbacks run in reverse registration order. Use this for temporary objects
6628
+ * created inside pass execution that are not graph resources, such as pooled
6629
+ * framebuffers wrapping graph-managed textures. If pass execution throws, the
6630
+ * executor still runs cleanup callbacks and preserves the original pass error
6631
+ * ahead of cleanup errors.
6632
+ *
6633
+ * @param callback - Cleanup function to invoke after execution.
6634
+ */
6635
+ deferCleanup(callback: () => void): void;
6555
6636
  }
6556
6637
  /**
6557
6638
  * Execute callback signature.
@@ -6562,6 +6643,20 @@ interface RGExecuteContext {
6562
6643
  * @public
6563
6644
  */
6564
6645
  type RGExecuteFn<T = void> = (ctx: RGExecuteContext, data: T) => void;
6646
+ /**
6647
+ * Ordered execution step inside a render graph pass.
6648
+ *
6649
+ * Subpasses share the parent pass's resource declarations, lifetime, culling,
6650
+ * and access validation. They are intended to make multi-step pass bodies
6651
+ * explicit without splitting graph-level resource dependencies.
6652
+ *
6653
+ * @public
6654
+ */
6655
+ declare class RGSubpass<T = unknown> {
6656
+ readonly name: string;
6657
+ readonly executeFn: RGExecuteFn<T>;
6658
+ constructor(name: string, executeFn: RGExecuteFn<T>);
6659
+ }
6565
6660
  /**
6566
6661
  * Internal bookkeeping for a pass within the render graph.
6567
6662
  * @public
@@ -6573,12 +6668,16 @@ declare class RGPass<T = unknown> {
6573
6668
  readonly reads: RGResource[];
6574
6669
  /** Resources this pass creates or writes. */
6575
6670
  readonly writes: RGResource[];
6671
+ /** Passes that must complete before this pass due to non-resource hazards. */
6672
+ readonly dependencies: RGPass[];
6576
6673
  /** Whether this pass has side effects and must not be culled. */
6577
6674
  hasSideEffect: boolean;
6578
6675
  /** User data returned from the setup function. */
6579
6676
  data: T | null;
6580
6677
  /** Execute callback. */
6581
6678
  executeFn: RGExecuteFn<T> | null;
6679
+ /** Ordered subpasses for passes with multiple logical execution steps. */
6680
+ readonly subpasses: RGSubpass<T>[];
6582
6681
  /** Set during compilation: true if this pass is needed. */
6583
6682
  alive: boolean;
6584
6683
  constructor(index: number, name: string);
@@ -6599,11 +6698,19 @@ interface RGPassBuilder {
6599
6698
  */
6600
6699
  read(handle: RGHandle): void;
6601
6700
  /**
6602
- * Declare that this pass writes to an existing resource (typically an imported resource).
6701
+ * Declare that this pass writes a new version of an existing resource.
6702
+ *
6703
+ * The returned handle represents the post-write version. Use it for subsequent
6704
+ * reads and as the graph output passed to {@link RenderGraph.compile}. Passing
6705
+ * an older version of the same resource to `compile()` is rejected because it
6706
+ * usually means the caller ignored the handle returned by `write()`. If the pass
6707
+ * needs the previous contents, call {@link RGPassBuilder.read} on the input handle explicitly
6708
+ * before writing.
6603
6709
  *
6604
6710
  * @param handle - Handle of the resource to write to.
6711
+ * @returns A handle referencing the newly written version.
6605
6712
  */
6606
- write(handle: RGHandle): void;
6713
+ write(handle: RGHandle): RGHandle;
6607
6714
  /**
6608
6715
  * Create a new transient texture resource that this pass will produce.
6609
6716
  *
@@ -6611,6 +6718,27 @@ interface RGPassBuilder {
6611
6718
  * @returns A handle referencing the newly created resource.
6612
6719
  */
6613
6720
  createTexture(desc: RGTextureDesc): RGHandle;
6721
+ /**
6722
+ * Create a logical dependency token produced by this pass.
6723
+ *
6724
+ * Tokens do not resolve to GPU resources and are not allocated by the executor.
6725
+ * They are useful for ordering passes whose dependencies are side effects rather
6726
+ * than texture reads/writes.
6727
+ *
6728
+ * @param name - Debug label for this token.
6729
+ * @returns A handle referencing the newly created token.
6730
+ */
6731
+ createToken(name?: string): RGHandle;
6732
+ /**
6733
+ * Create a graph-managed framebuffer view.
6734
+ *
6735
+ * The graph compiler infers dependencies from any attachment handles in the
6736
+ * descriptor. The executor creates and releases the framebuffer automatically.
6737
+ *
6738
+ * @param desc - Framebuffer descriptor.
6739
+ * @returns A handle referencing the framebuffer view.
6740
+ */
6741
+ createFramebuffer(desc: RGFramebufferDesc): RGHandle;
6614
6742
  /**
6615
6743
  * Mark this pass as having side effects.
6616
6744
  *
@@ -6619,9 +6747,22 @@ interface RGPassBuilder {
6619
6747
  * debug overlays, etc.
6620
6748
  */
6621
6749
  sideEffect(): void;
6750
+ /**
6751
+ * Add an ordered logical subpass to this pass.
6752
+ *
6753
+ * Subpasses execute in registration order and share the parent pass's declared
6754
+ * reads, writes, framebuffer views, and user data. A pass may use either
6755
+ * subpasses or {@link RGPassBuilder.setExecute}, but not both.
6756
+ *
6757
+ * @param name - Debug label for the subpass.
6758
+ * @param fn - Callback invoked when this subpass executes.
6759
+ */
6760
+ addSubpass<D>(name: string, fn: RGExecuteFn<D>): void;
6622
6761
  /**
6623
6762
  * Set the execution callback for this pass.
6624
6763
  *
6764
+ * A pass may use either this method or {@link RGPassBuilder.addSubpass}, but not both.
6765
+ *
6625
6766
  * @param fn - Callback invoked during graph execution.
6626
6767
  */
6627
6768
  setExecute<D>(fn: RGExecuteFn<D>): void;
@@ -6661,17 +6802,50 @@ interface RGResolvedSize {
6661
6802
  width: number;
6662
6803
  height: number;
6663
6804
  }
6805
+ /**
6806
+ * Descriptor for a framebuffer view managed by the graph or created temporarily during pass execution.
6807
+ *
6808
+ * This is intentionally backend-agnostic: graph-managed descriptors may use
6809
+ * {@link RGHandle} attachments, and executor-created descriptors use resolved
6810
+ * resources or texture formats understood by the allocator.
6811
+ *
6812
+ * @public
6813
+ */
6814
+ interface RGFramebufferDesc {
6815
+ /** Debug label for this framebuffer. */
6816
+ label?: string;
6817
+ /** Framebuffer width. Required when attachments are formats. */
6818
+ width?: number;
6819
+ /** Framebuffer height. Required when attachments are formats. */
6820
+ height?: number;
6821
+ /** Color attachments or formats. */
6822
+ colorAttachments: unknown | unknown[] | null;
6823
+ /** Depth/stencil attachment or format. */
6824
+ depthAttachment?: unknown | null;
6825
+ /** Whether color attachments created from formats should support mipmapping. */
6826
+ mipmapping?: boolean;
6827
+ /** Framebuffer sample count. */
6828
+ sampleCount?: number;
6829
+ /** Whether to ignore depth/stencil during MSAA resolve. */
6830
+ ignoreDepthStencil?: boolean;
6831
+ /** Attachment mip level. */
6832
+ attachmentMipLevel?: number;
6833
+ /** Attachment cubemap face. */
6834
+ attachmentCubeface?: number;
6835
+ /** Attachment array layer. */
6836
+ attachmentLayer?: number;
6837
+ }
6664
6838
  /**
6665
6839
  * Interface for allocating and releasing transient textures.
6666
6840
  *
6667
6841
  * Implement this to bridge the render graph with your GPU device's resource pool.
6668
- * The executor calls {@link allocate} before a resource's first use and
6669
- * {@link release} after its last use.
6842
+ * The executor calls `allocate()` before a resource's first use and
6843
+ * `release()` after its last use.
6670
6844
  *
6671
6845
  * @typeParam TTexture - The concrete texture type (e.g. `Texture2D`).
6672
6846
  * @public
6673
6847
  */
6674
- interface RGTextureAllocator<TTexture = unknown> {
6848
+ interface RGTextureAllocator<TTexture = unknown, TFramebuffer = unknown> {
6675
6849
  /**
6676
6850
  * Allocate a transient texture matching the given descriptor and resolved size.
6677
6851
  *
@@ -6686,6 +6860,22 @@ interface RGTextureAllocator<TTexture = unknown> {
6686
6860
  * @param texture - The texture to release.
6687
6861
  */
6688
6862
  release(texture: TTexture): void;
6863
+ /**
6864
+ * Allocate a temporary framebuffer matching the given descriptor.
6865
+ *
6866
+ * Implementations should not auto-release this framebuffer; the graph executor
6867
+ * calls {@link RGTextureAllocator.releaseFramebuffer} when execution completes or aborts.
6868
+ *
6869
+ * @param desc - Framebuffer descriptor.
6870
+ * @returns The allocated framebuffer object.
6871
+ */
6872
+ allocateFramebuffer?(desc: RGFramebufferDesc): TFramebuffer;
6873
+ /**
6874
+ * Release a previously allocated temporary framebuffer.
6875
+ *
6876
+ * @param framebuffer - The framebuffer to release.
6877
+ */
6878
+ releaseFramebuffer?(framebuffer: TFramebuffer): void;
6689
6879
  }
6690
6880
 
6691
6881
  /**
@@ -6694,7 +6884,7 @@ interface RGTextureAllocator<TTexture = unknown> {
6694
6884
  * Usage:
6695
6885
  * ```ts
6696
6886
  * const graph = new RenderGraph();
6697
- * const backbuffer = graph.importTexture('backbuffer');
6887
+ * let backbuffer = graph.importTexture('backbuffer');
6698
6888
  *
6699
6889
  * let linearDepth: RGHandle;
6700
6890
  * graph.addPass('DepthPrepass', (builder) => {
@@ -6704,7 +6894,7 @@ interface RGTextureAllocator<TTexture = unknown> {
6704
6894
  *
6705
6895
  * graph.addPass('LightPass', (builder) => {
6706
6896
  * builder.read(linearDepth);
6707
- * builder.write(backbuffer);
6897
+ * backbuffer = builder.write(backbuffer);
6708
6898
  * builder.setExecute(() => { ... });
6709
6899
  * });
6710
6900
  *
@@ -6743,6 +6933,8 @@ declare class RenderGraph {
6743
6933
  * Performs dead-pass culling, topological sorting, and resource lifetime analysis.
6744
6934
  *
6745
6935
  * @param outputs - Handles of resources that must be produced (graph sinks).
6936
+ * If a resource was passed to {@link RGPassBuilder.write}, use the returned
6937
+ * post-write handle here, not the original handle.
6746
6938
  * Passes that do not contribute to these outputs (directly or transitively)
6747
6939
  * are culled, unless marked as side-effect passes.
6748
6940
  * @returns The compiled graph ready for execution.
@@ -6753,7 +6945,7 @@ declare class RenderGraph {
6753
6945
  *
6754
6946
  * For automatic resource allocation/release, use {@link RenderGraphExecutor} instead.
6755
6947
  *
6756
- * @param compiled - The compiled graph from {@link compile}.
6948
+ * @param compiled - The compiled graph from {@link RenderGraph.compile}.
6757
6949
  */
6758
6950
  execute(compiled: CompiledRenderGraph): void;
6759
6951
  /**
@@ -6781,8 +6973,8 @@ declare class RenderGraph {
6781
6973
  * @typeParam TTexture - The concrete texture type (e.g. `Texture2D`).
6782
6974
  * @public
6783
6975
  */
6784
- declare class RenderGraphExecutor<TTexture = unknown> {
6785
- constructor(allocator: RGTextureAllocator<TTexture>, backbufferWidth: number, backbufferHeight: number);
6976
+ declare class RenderGraphExecutor<TTexture = unknown, TFramebuffer = unknown> {
6977
+ constructor(allocator: RGTextureAllocator<TTexture, TFramebuffer>, backbufferWidth: number, backbufferHeight: number);
6786
6978
  /**
6787
6979
  * Update the backbuffer dimensions used for 'backbuffer-relative' sizing.
6788
6980
  */
@@ -6816,8 +7008,8 @@ declare class RenderGraphExecutor<TTexture = unknown> {
6816
7008
  * Bridges the render graph's {@link RGTextureAllocator} interface to the
6817
7009
  * engine's device resource pool (`device.pool`).
6818
7010
  *
6819
- * Transient textures are fetched from the pool on {@link allocate} and
6820
- * returned to the pool on {@link release}, enabling automatic reuse
7011
+ * Transient textures are fetched from the pool on `allocate()` and
7012
+ * returned to the pool on `release()`, enabling automatic reuse
6821
7013
  * across frames without manual lifecycle management.
6822
7014
  *
6823
7015
  * Usage:
@@ -6828,7 +7020,7 @@ declare class RenderGraphExecutor<TTexture = unknown> {
6828
7020
  *
6829
7021
  * @public
6830
7022
  */
6831
- declare class DevicePoolAllocator implements RGTextureAllocator<Texture2D> {
7023
+ declare class DevicePoolAllocator implements RGTextureAllocator<Texture2D, FrameBuffer> {
6832
7024
  /**
6833
7025
  * Allocate a transient texture from the device pool.
6834
7026
  *
@@ -6843,32 +7035,38 @@ declare class DevicePoolAllocator implements RGTextureAllocator<Texture2D> {
6843
7035
  * @param texture - The texture to release.
6844
7036
  */
6845
7037
  release(texture: Texture2D): void;
7038
+ /**
7039
+ * Allocate a temporary framebuffer from the device pool.
7040
+ *
7041
+ * @param desc - Framebuffer descriptor from the render graph pass.
7042
+ * @returns A pooled FrameBuffer instance.
7043
+ */
7044
+ allocateFramebuffer(desc: RGFramebufferDesc): FrameBuffer;
7045
+ /**
7046
+ * Release a temporary framebuffer back to the device pool.
7047
+ *
7048
+ * @param framebuffer - The framebuffer to release.
7049
+ */
7050
+ releaseFramebuffer(framebuffer: FrameBuffer): void;
6846
7051
  }
6847
7052
 
6848
7053
  /**
6849
- * Manages cross-frame history resources with automatic ping-pong buffering.
7054
+ * Manages cross-frame history resources that can be imported into a render graph.
6850
7055
  *
6851
7056
  * History resources are textures that persist across frames for temporal effects
6852
- * like TAA, motion blur, or temporal upscaling. The manager maintains two copies
6853
- * of each resource and automatically swaps them at frame boundaries.
7057
+ * like TAA, motion blur, or temporal upscaling. Previous-frame textures can be
7058
+ * imported into a {@link RenderGraph}, and current-frame textures are committed
7059
+ * only after graph execution succeeds.
6854
7060
  *
6855
7061
  * Usage:
6856
7062
  * ```ts
6857
7063
  * const historyMgr = new HistoryResourceManager(allocator);
6858
- *
6859
- * // Register a history resource (typically once at initialization)
6860
- * historyMgr.register('taaHistory', {
6861
- * format: TextureFormat.RGBA16F,
6862
- * width: 1920,
6863
- * height: 1080
6864
- * }, { width: 1920, height: 1080 });
6865
- *
6866
- * // In your render pass:
6867
- * const prevFrame = historyMgr.getPrevious('taaHistory'); // Read from previous frame
6868
- * const currentFrame = historyMgr.getCurrent('taaHistory'); // Write to current frame
6869
- *
6870
- * // At frame end:
6871
- * historyMgr.swap(); // Swap current and previous
7064
+ * historyMgr.beginFrame();
7065
+ * const prev = historyMgr.importPrevious(graph, 'taaColor');
7066
+ * // declare builder.read(prev) if non-null
7067
+ * historyMgr.bindImportedTextures(executor);
7068
+ * // after successful execution:
7069
+ * historyMgr.commitFrame();
6872
7070
  * ```
6873
7071
  *
6874
7072
  * @typeParam TTexture - The concrete texture type (e.g. `Texture2D`).
@@ -6877,7 +7075,9 @@ declare class DevicePoolAllocator implements RGTextureAllocator<Texture2D> {
6877
7075
  declare class HistoryResourceManager<TTexture = Texture2D> {
6878
7076
  private _resources;
6879
7077
  private _allocator;
6880
- private _frameIndex;
7078
+ private _pendingImports;
7079
+ private _pendingCommits;
7080
+ private _readScopeStack;
6881
7081
  /**
6882
7082
  * Create a new history resource manager.
6883
7083
  *
@@ -6885,91 +7085,111 @@ declare class HistoryResourceManager<TTexture = Texture2D> {
6885
7085
  */
6886
7086
  constructor(allocator: RGTextureAllocator<TTexture>);
6887
7087
  /**
6888
- * Register a new history resource with ping-pong buffering.
7088
+ * Get the previous-frame texture resolved by the current render graph pass.
6889
7089
  *
6890
- * Allocates two textures matching the given descriptor. If a resource
6891
- * with the same name already exists, this is a no-op.
7090
+ * The resource must have been imported with {@link HistoryResourceManager.importPrevious} or
7091
+ * {@link HistoryResourceManager.importPreviousIfCompatible}, declared as a pass read, and bound with
7092
+ * {@link HistoryResourceManager.beginReadScope} before this method is called.
6892
7093
  *
6893
- * @param name - Unique identifier for this history resource.
6894
- * @param desc - Texture descriptor (format, size, etc.).
6895
- * @param size - Resolved pixel dimensions.
7094
+ * @param name - Name of the history resource.
7095
+ * @returns The graph-resolved previous-frame texture.
7096
+ * @throws If no read scope is active for the resource.
6896
7097
  */
6897
- register(name: string, desc: RGTextureDesc, size: RGResolvedSize): void;
7098
+ getPrevious(name: string): TTexture;
6898
7099
  /**
6899
- * Register a new history resource with an existing texture (zero-copy).
7100
+ * Check whether a valid history resource exists and matches the descriptor.
6900
7101
  *
6901
- * This is more efficient than register() + updateCurrent() for first-frame setup,
6902
- * as it avoids allocating dummy textures that are immediately replaced.
6903
- *
6904
- * @param name - Unique identifier for this history resource.
6905
- * @param desc - Texture descriptor (format, size, etc.).
6906
- * @param size - Resolved pixel dimensions.
6907
- * @param initialTexture - The initial texture to use as current frame.
7102
+ * @param name - Name of the history resource.
7103
+ * @param desc - Expected texture descriptor.
7104
+ * @param size - Expected resolved size.
7105
+ * @returns True if the resource exists, is valid, and matches.
6908
7106
  */
6909
- registerWithTexture(name: string, desc: RGTextureDesc, size: RGResolvedSize, initialTexture: TTexture): void;
7107
+ isCompatible(name: string, desc: RGTextureDesc, size: RGResolvedSize): boolean;
6910
7108
  /**
6911
- * Get the current frame's texture for a history resource.
6912
- *
6913
- * This is typically used as the write target in render passes.
6914
- *
6915
- * @param name - Name of the history resource.
6916
- * @returns The current frame's texture.
6917
- * @throws If the resource has not been registered.
7109
+ * Start collecting graph imports and deferred commits for a new frame.
6918
7110
  */
6919
- getCurrent(name: string): TTexture;
7111
+ beginFrame(): void;
6920
7112
  /**
6921
- * Get the previous frame's texture for a history resource.
7113
+ * Import the latest committed texture for a history resource into the graph.
6922
7114
  *
6923
- * This is typically used as a read input in temporal effects like TAA.
7115
+ * Returns null when the resource has no valid previous frame.
6924
7116
  *
6925
- * @param name - Name of the history resource.
6926
- * @returns The previous frame's texture.
6927
- * @throws If the resource has not been registered.
7117
+ * @param graph - Render graph to import into.
7118
+ * @param name - History resource name.
7119
+ * @returns Imported graph handle, or null when no valid previous texture exists.
6928
7120
  */
6929
- getPrevious(name: string): TTexture;
7121
+ importPrevious(graph: RenderGraph, name: string): RGHandle | null;
6930
7122
  /**
6931
- * Check if a history resource exists.
7123
+ * Import the latest committed texture only when it matches the expected shape.
6932
7124
  *
6933
- * @param name - Name of the history resource.
6934
- * @returns True if the resource has been registered.
7125
+ * This is the preferred API for effects that can declare their history reads
7126
+ * while building the graph: incompatible history is treated as absent, so the
7127
+ * pass does not declare stale reads after resize or format changes.
7128
+ *
7129
+ * @param graph - Render graph to import into.
7130
+ * @param name - History resource name.
7131
+ * @param desc - Expected texture descriptor.
7132
+ * @param size - Expected resolved size.
7133
+ * @returns Imported graph handle, or null when no compatible history exists.
6935
7134
  */
6936
- has(name: string): boolean;
7135
+ importPreviousIfCompatible(graph: RenderGraph, name: string, desc: RGTextureDesc, size: RGResolvedSize): RGHandle | null;
6937
7136
  /**
6938
- * Unregister a history resource and release its textures.
7137
+ * Bind all history imports created for this frame to the executor.
6939
7138
  *
6940
- * @param name - Name of the history resource to remove.
6941
- * @returns True if the resource was found and removed.
7139
+ * @param executor - Render graph executor for the current frame.
6942
7140
  */
6943
- unregister(name: string): boolean;
7141
+ bindImportedTextures(executor: Pick<RenderGraphExecutor<TTexture>, 'setImportedTexture'>): void;
6944
7142
  /**
6945
- * Swap current and previous textures for all history resources.
7143
+ * Make resolved history textures available to code executing inside a pass.
6946
7144
  *
6947
- * Call this at the end of each frame to advance the ping-pong buffers.
6948
- * After swapping, what was "current" becomes "previous" for the next frame.
7145
+ * @param bindings - History name to resolved texture bindings.
6949
7146
  */
6950
- swap(): void;
7147
+ beginReadScope(bindings: Array<{
7148
+ name: string;
7149
+ texture: TTexture;
7150
+ }>): void;
6951
7151
  /**
6952
- * Release all history resources and clear the manager.
6953
- *
6954
- * Call this when disposing the render context or when history is no longer needed.
7152
+ * End the most recent history read scope.
6955
7153
  */
6956
- dispose(): void;
7154
+ endReadScope(): void;
6957
7155
  /**
6958
- * Update the current frame's texture with an external texture (for zero-copy workflows).
7156
+ * Queue a current-frame texture to become the next previous-frame history.
6959
7157
  *
6960
- * This is useful when you want to use the output of a render pass directly as history,
6961
- * without copying. The manager will release the old texture and use the new one.
7158
+ * The texture is committed only when {@link HistoryResourceManager.commitFrame} is called. If the
7159
+ * frame fails, {@link HistoryResourceManager.discardFrame} releases owned pending textures instead.
6962
7160
  *
6963
- * @param name - Name of the history resource.
6964
- * @param texture - The new texture to use as current frame.
7161
+ * @param name - History resource name.
7162
+ * @param desc - Texture descriptor.
7163
+ * @param size - Resolved texture size.
7164
+ * @param texture - Texture produced by the current frame.
7165
+ * @param ownsTexture - Whether this manager should release the texture later.
6965
7166
  */
6966
- updateCurrent(name: string, texture: TTexture): void;
7167
+ queueCommit(name: string, desc: RGTextureDesc, size: RGResolvedSize, texture: TTexture, ownsTexture?: boolean): void;
6967
7168
  /**
6968
- * Get the number of registered history resources.
7169
+ * Commit all current-frame history writes.
6969
7170
  */
6970
- get size(): number;
7171
+ commitFrame(): void;
7172
+ /**
7173
+ * Discard all uncommitted frame history writes.
7174
+ */
7175
+ discardFrame(): void;
7176
+ /**
7177
+ * Release all history resources and clear the manager.
7178
+ *
7179
+ * Call this when disposing the render context or when history is no longer needed.
7180
+ */
7181
+ dispose(): void;
6971
7182
  }
6972
7183
 
7184
+ /**
7185
+ * Resource names for render graph history resources.
7186
+ * @public
7187
+ */
7188
+ declare const RGHistoryResources: {
7189
+ readonly TAA_COLOR: "taaColor";
7190
+ readonly TAA_MOTION_VECTOR: "taaMotionVector";
7191
+ };
7192
+
6973
7193
  /**
6974
7194
  * Options controlling which features are enabled in the forward+ pipeline.
6975
7195
  *
@@ -6998,7 +7218,7 @@ interface ForwardPlusOptions {
6998
7218
  *
6999
7219
  * Each step in the existing `SceneRenderer._renderScene` becomes a graph pass.
7000
7220
  * Execute callbacks delegate to the existing rendering code, sharing a mutable
7001
- * {@link FrameState}.
7221
+ * `FrameState`.
7002
7222
  *
7003
7223
  * @param graph - The render graph to populate.
7004
7224
  * @param ctx - The draw context for this frame.
@@ -7716,7 +7936,7 @@ declare class Camera extends SceneNode {
7716
7936
  /** Whether to allow command buffer reuse optimization */
7717
7937
  get commandBufferReuse(): boolean;
7718
7938
  set commandBufferReuse(val: boolean);
7719
- /** Whether this camera is adapted to screen settins */
7939
+ /** Whether this camera is adapted to screen settings */
7720
7940
  get adapted(): boolean;
7721
7941
  set adapted(val: boolean);
7722
7942
  /** OIT */
@@ -8203,6 +8423,11 @@ type PickTarget = {
8203
8423
  node: SceneNode;
8204
8424
  label?: string;
8205
8425
  };
8426
+ /**
8427
+ * Minimal render context carrying target size and device information.
8428
+ *
8429
+ * @public
8430
+ */
8206
8431
  declare class RenderContext {
8207
8432
  device: AbstractDevice;
8208
8433
  renderWidth: number;
@@ -8420,7 +8645,6 @@ declare class GraphNode extends SceneNode {
8420
8645
  * @param scene - The scene to which the node belongs
8421
8646
  */
8422
8647
  constructor(scene: Scene);
8423
- set octreeNode(node: Nullable<OctreeNode>);
8424
8648
  /** Gets the name */
8425
8649
  getName(): string;
8426
8650
  /**
@@ -8475,17 +8699,11 @@ declare abstract class SkeletonModifier {
8475
8699
  * Get the blend weight [0-1]
8476
8700
  */
8477
8701
  get weight(): number;
8478
- /**
8479
- * Set the blend weight [0-1]
8480
- */
8481
8702
  set weight(value: number);
8482
8703
  /**
8483
8704
  * Get whether this processor is enabled
8484
8705
  */
8485
8706
  get enabled(): boolean;
8486
- /**
8487
- * Set whether this processor is enabled
8488
- */
8489
8707
  set enabled(value: boolean);
8490
8708
  /**
8491
8709
  * Apply post-processing to skeleton joints.
@@ -8651,7 +8869,9 @@ declare class Skeleton extends Disposable {
8651
8869
  get humanoidJointMapping(): Nullable<HumanoidJointMapping<SceneNode>>;
8652
8870
  /** Root rotation of humanoid hips bone */
8653
8871
  get humanoidRootRotation(): Quaternion;
8872
+ get playing(): boolean;
8654
8873
  set playing(b: boolean);
8874
+ get persistentId(): string;
8655
8875
  set persistentId(val: string);
8656
8876
  /**
8657
8877
  * Texture containing joint matrices for GPU skinning.
@@ -8981,6 +9201,8 @@ declare class AnimationSet extends Disposable implements IDisposable {
8981
9201
  * @param excludeJoint - Optional predicate; joints whose name returns true are excluded from
8982
9202
  * skeleton structure matching.
8983
9203
  * @returns The newly created AnimationClip, or null on failure.
9204
+ *
9205
+ * @deprecated Use the new {@link AnimationSet.copyHumanoidAnimationFrom} method instead.
8984
9206
  */
8985
9207
  copyAnimationFrom(sourceSet: AnimationSet, animationName: string, targetName?: string, excludeJoint?: (jointName: string) => boolean): AnimationClip | null;
8986
9208
  /**
@@ -9483,29 +9705,71 @@ declare class MorphTargetTrack extends AnimationTrack<MorphState> {
9483
9705
  reset(node: SceneNode): void;
9484
9706
  }
9485
9707
 
9708
+ /**
9709
+ * Geometry cache frame data for a single sampled time.
9710
+ *
9711
+ * @public
9712
+ */
9486
9713
  type GeometryCacheFrame = {
9487
9714
  positions: Float32Array;
9488
9715
  normals?: Nullable<Float32Array>;
9489
9716
  boundingBox: BoundingBox;
9490
9717
  };
9718
+ /**
9719
+ * Mutable working state used while evaluating geometry cache tracks.
9720
+ *
9721
+ * @public
9722
+ */
9491
9723
  type GeometryCacheState = {
9492
9724
  positions: Float32Array;
9493
9725
  normals?: Nullable<Float32Array>;
9494
9726
  boundingBox: BoundingBox;
9495
9727
  };
9728
+ /**
9729
+ * GPU resources bound to a mesh while a geometry cache track is active.
9730
+ *
9731
+ * @public
9732
+ */
9496
9733
  type GeometryCacheMeshBinding = {
9497
9734
  originalPrimitive: Primitive;
9498
9735
  primitive: Primitive;
9499
9736
  positionBuffer: StructuredBuffer;
9500
9737
  normalBuffer: Nullable<StructuredBuffer>;
9501
9738
  };
9739
+ /**
9740
+ * Creates a reusable geometry cache state buffer for a frame layout.
9741
+ *
9742
+ * @public
9743
+ */
9502
9744
  declare function createGeometryCacheState(frame: Pick<GeometryCacheFrame, 'positions' | 'normals'>): GeometryCacheState;
9745
+ /**
9746
+ * Linearly interpolates two geometry-cache bounding boxes.
9747
+ *
9748
+ * @public
9749
+ */
9503
9750
  declare function mixGeometryCacheBoundingBox(a: BoundingBox, b: BoundingBox, t: number): BoundingBox;
9751
+ /**
9752
+ * Ensures the target mesh has GPU buffers compatible with the geometry cache state.
9753
+ *
9754
+ * @public
9755
+ */
9504
9756
  declare function ensureGeometryCacheMeshBinding(meshBindings: WeakMap<Mesh, GeometryCacheMeshBinding>, mesh: Mesh, state: GeometryCacheState, errorPrefix: string): GeometryCacheMeshBinding;
9757
+ /**
9758
+ * Restores a mesh primitive after geometry cache playback.
9759
+ *
9760
+ * @public
9761
+ */
9505
9762
  declare function restoreGeometryCacheMeshBinding(mesh: Mesh): Promise<boolean>;
9506
9763
 
9764
+ /** @public */
9507
9765
  type FixedGeometryCacheFrame = GeometryCacheFrame;
9766
+ /** @public */
9508
9767
  type FixedGeometryCacheState = GeometryCacheState;
9768
+ /**
9769
+ * Geometry cache track backed by explicit per-frame vertex data.
9770
+ *
9771
+ * @public
9772
+ */
9509
9773
  declare class FixedGeometryCacheTrack extends AnimationTrack<FixedGeometryCacheState> {
9510
9774
  private _times;
9511
9775
  private _frames;
@@ -9531,6 +9795,11 @@ declare class FixedGeometryCacheTrack extends AnimationTrack<FixedGeometryCacheS
9531
9795
  private ensureMeshBinding;
9532
9796
  }
9533
9797
 
9798
+ /**
9799
+ * PCA-compressed geometry cache animation data.
9800
+ *
9801
+ * @public
9802
+ */
9534
9803
  type PCAGeometryCacheTrackData = {
9535
9804
  times: Float32Array;
9536
9805
  bounds: [number, number, number, number, number, number][];
@@ -9542,7 +9811,13 @@ type PCAGeometryCacheTrackData = {
9542
9811
  normalBases?: Nullable<Float32Array[]>;
9543
9812
  normalCoefficients?: Nullable<Float32Array[]>;
9544
9813
  };
9814
+ /** @public */
9545
9815
  type PCAGeometryCacheState = GeometryCacheState;
9816
+ /**
9817
+ * Geometry cache track reconstructed from PCA bases and coefficients.
9818
+ *
9819
+ * @public
9820
+ */
9546
9821
  declare class PCAGeometryCacheTrack extends AnimationTrack<PCAGeometryCacheState> {
9547
9822
  private _times;
9548
9823
  private _bounds;
@@ -10137,8 +10412,8 @@ interface SpringSystemOptions {
10137
10412
  */
10138
10413
  poseFollowTip?: number;
10139
10414
  /**
10140
- * Exponent used when interpolating root->tip follow.
10141
- * 1 = linear, >1 keeps root stiffer and tip looser.
10415
+ * Exponent used when interpolating root-to-tip follow.
10416
+ * `1` is linear; values `\> 1` keep the root stiffer and the tip looser.
10142
10417
  */
10143
10418
  poseFollowExponent?: number;
10144
10419
  /**
@@ -10225,14 +10500,6 @@ declare class SpringSystem {
10225
10500
  * Solves a single spring constraint using XPBD (Extended Position-Based Dynamics).
10226
10501
  *
10227
10502
  * Reference: Müller et al., "Detailed Rigid Body Simulation with Extended Position Based Dynamics", 2020.
10228
- *
10229
- * The XPBD correction for a distance constraint C(x) = |x_b - x_a| - L is:
10230
- * α̃ = compliance / dt² (scaled compliance)
10231
- * Δλ = (-C - α̃·λ) / (w_a + w_b + α̃)
10232
- * λ += Δλ
10233
- * Δx_a = -w_a · Δλ · n̂
10234
- * Δx_b = +w_b · Δλ · n̂
10235
- * where w = 1/mass (0 for fixed particles), n̂ = unit vector from a to b.
10236
10503
  */
10237
10504
  private solveConstraintXPBD;
10238
10505
  /**
@@ -10285,74 +10552,46 @@ declare class SpringSystem {
10285
10552
  * Gets the Coriolis force scale
10286
10553
  */
10287
10554
  get coriolisScale(): number;
10288
- /**
10289
- * Sets the Coriolis force scale
10290
- */
10291
10555
  set coriolisScale(scale: number);
10292
10556
  /**
10293
10557
  * Gets the constraint solver type
10294
10558
  */
10295
10559
  get solver(): 'verlet' | 'xpbd';
10296
- /**
10297
- * Sets the constraint solver type.
10298
- * Switching to 'xpbd' resets all Lagrange multipliers.
10299
- */
10300
10560
  set solver(type: 'verlet' | 'xpbd');
10301
10561
  /**
10302
10562
  * Gets pose preservation strength [0-1]
10303
10563
  */
10304
10564
  get poseFollow(): number;
10305
- /**
10306
- * Sets pose preservation strength [0-1]
10307
- */
10308
10565
  set poseFollow(value: number);
10309
10566
  /**
10310
10567
  * Gets max allowed deviation from animated pose
10311
10568
  */
10312
10569
  get maxPoseOffset(): number;
10313
- /**
10314
- * Sets max allowed deviation from animated pose. 0 disables clamping.
10315
- */
10316
10570
  set maxPoseOffset(value: number);
10317
10571
  /**
10318
10572
  * Gets root pose follow strength [0-1]
10319
10573
  */
10320
10574
  get poseFollowRoot(): number;
10321
- /**
10322
- * Sets root pose follow strength [0-1]
10323
- */
10324
10575
  set poseFollowRoot(value: number);
10325
10576
  /**
10326
10577
  * Gets tip pose follow strength [0-1]
10327
10578
  */
10328
10579
  get poseFollowTip(): number;
10329
- /**
10330
- * Sets tip pose follow strength [0-1]
10331
- */
10332
10580
  set poseFollowTip(value: number);
10333
10581
  /**
10334
- * Gets exponent for root->tip interpolation
10582
+ * Gets exponent for root-to-tip interpolation
10335
10583
  */
10336
10584
  get poseFollowExponent(): number;
10337
- /**
10338
- * Sets exponent for root->tip interpolation
10339
- */
10340
10585
  set poseFollowExponent(value: number);
10341
10586
  /**
10342
10587
  * Gets root max allowed deviation from animated pose
10343
10588
  */
10344
10589
  get maxPoseOffsetRoot(): number;
10345
- /**
10346
- * Sets root max allowed deviation from animated pose
10347
- */
10348
10590
  set maxPoseOffsetRoot(value: number);
10349
10591
  /**
10350
10592
  * Gets tip max allowed deviation from animated pose
10351
10593
  */
10352
10594
  get maxPoseOffsetTip(): number;
10353
- /**
10354
- * Sets tip max allowed deviation from animated pose
10355
- */
10356
10595
  set maxPoseOffsetTip(value: number);
10357
10596
  /**
10358
10597
  * Adds a collider to the system
@@ -10626,17 +10865,11 @@ declare class TwoBoneIKSolver extends IKSolver {
10626
10865
  * Get the pole vector position.
10627
10866
  */
10628
10867
  get poleVector(): Vector3 | null;
10629
- /**
10630
- * Set the pole vector position.
10631
- */
10632
10868
  set poleVector(value: Vector3 | null);
10633
10869
  /**
10634
10870
  * Get the pole vector weight.
10635
10871
  */
10636
10872
  get poleWeight(): number;
10637
- /**
10638
- * Set the pole vector weight (0-1).
10639
- */
10640
10873
  set poleWeight(value: number);
10641
10874
  /**
10642
10875
  * Solve the IK chain to reach the target position using Two Bone IK algorithm.
@@ -10845,17 +11078,11 @@ declare class IKAngleConstraint extends IKConstraint {
10845
11078
  * Get the minimum angle in degrees.
10846
11079
  */
10847
11080
  get minAngle(): number;
10848
- /**
10849
- * Set the minimum angle in degrees.
10850
- */
10851
11081
  set minAngle(value: number);
10852
11082
  /**
10853
11083
  * Get the maximum angle in degrees.
10854
11084
  */
10855
11085
  get maxAngle(): number;
10856
- /**
10857
- * Set the maximum angle in degrees.
10858
- */
10859
11086
  set maxAngle(value: number);
10860
11087
  /**
10861
11088
  * Apply the angle constraint to limit joint bending.
@@ -11039,6 +11266,11 @@ declare class MultiChainSpringSystem {
11039
11266
  set solver(type: 'verlet' | 'xpbd');
11040
11267
  }
11041
11268
 
11269
+ /**
11270
+ * Options used to construct a GPU cloth simulation system.
11271
+ *
11272
+ * @public
11273
+ */
11042
11274
  type GPUClothSystemOptions = {
11043
11275
  enabled?: boolean;
11044
11276
  device?: Nullable<AbstractDevice>;
@@ -11066,6 +11298,11 @@ type GPUClothSystemOptions = {
11066
11298
  scene?: Nullable<Scene>;
11067
11299
  autoUpdate?: boolean;
11068
11300
  };
11301
+ /**
11302
+ * Serialized wrap-binding cache data for GPU cloth attachments.
11303
+ *
11304
+ * @public
11305
+ */
11069
11306
  type GPUClothWrapBindingData = {
11070
11307
  version: 4;
11071
11308
  vertexCount: number;
@@ -11076,6 +11313,11 @@ type GPUClothWrapBindingData = {
11076
11313
  sourceBarycentrics: string;
11077
11314
  targetLocalOffsets: string;
11078
11315
  };
11316
+ /**
11317
+ * Target object paired with GPU cloth wrap-binding data.
11318
+ *
11319
+ * @public
11320
+ */
11079
11321
  type GPUClothWrapBindingTarget = {
11080
11322
  target: any;
11081
11323
  data: GPUClothWrapBindingData;
@@ -11084,13 +11326,22 @@ type GPUClothWrapBindingTarget = {
11084
11326
  * Returns whether GPU cloth is supported on the given device.
11085
11327
  *
11086
11328
  * GPU cloth in this engine is WebGPU-only. WebGL backends are explicitly unsupported.
11329
+ *
11330
+ * @public
11087
11331
  */
11088
11332
  declare function isGPUClothSupported(device?: Nullable<AbstractDevice>): boolean;
11333
+ /**
11334
+ * Creates wrap-binding cache data between a source cloth mesh and a target mesh.
11335
+ *
11336
+ * @public
11337
+ */
11089
11338
  declare function createGPUClothWrapBindingData(source: any, target: any): Promise<GPUClothWrapBindingData>;
11090
11339
  /**
11091
11340
  * WebGPU-only cloth simulation entry.
11092
11341
  *
11093
11342
  * On non-WebGPU backends (including WebGL), the system is always disabled.
11343
+ *
11344
+ * @public
11094
11345
  */
11095
11346
  declare class GPUClothSystem {
11096
11347
  private _enabled;
@@ -11226,8 +11477,18 @@ declare class GPUClothSystem {
11226
11477
  private restoreTargetSkinning;
11227
11478
  }
11228
11479
 
11480
+ /**
11481
+ * Numerical tolerance used by the joint dynamics solver.
11482
+ *
11483
+ * @public
11484
+ */
11229
11485
  declare const EPSILON = 0.001;
11230
11486
  /** Constraint topology type */
11487
+ /**
11488
+ * Constraint topology type.
11489
+ *
11490
+ * @public
11491
+ */
11231
11492
  declare const enum ConstraintType {
11232
11493
  /** Parent-child bone pairs along vertical chains */
11233
11494
  Structural_Vertical = 0,
@@ -11241,6 +11502,11 @@ declare const enum ConstraintType {
11241
11502
  Bending_Horizontal = 4
11242
11503
  }
11243
11504
  /** Collider surface force direction (used for surface/triangle collision) */
11505
+ /**
11506
+ * Collider surface force direction used for surface and triangle collision.
11507
+ *
11508
+ * @public
11509
+ */
11244
11510
  declare const enum ColliderForce {
11245
11511
  /** No surface force */
11246
11512
  Off = 0,
@@ -11254,6 +11520,11 @@ declare const enum ColliderForce {
11254
11520
  * Set once at initialization, immutable during simulation.
11255
11521
  * Constraint scale values are pre-multiplied by 0.5 (summed between two points in solver).
11256
11522
  */
11523
+ /**
11524
+ * Read-only per-point physics parameters.
11525
+ *
11526
+ * @public
11527
+ */
11257
11528
  interface PointR {
11258
11529
  /** Index of parent point in the hierarchy (-1 = root, no parent) */
11259
11530
  parent: number;
@@ -11326,6 +11597,11 @@ interface PointR {
11326
11597
  * Mutable per-point simulation state.
11327
11598
  * Updated every substep during simulation.
11328
11599
  */
11600
+ /**
11601
+ * Mutable per-point simulation state.
11602
+ *
11603
+ * @public
11604
+ */
11329
11605
  interface PointRW {
11330
11606
  /** Final output position to write back to the transform */
11331
11607
  positionToTransform: Vector3;
@@ -11349,6 +11625,11 @@ interface PointRW {
11349
11625
  friction: number;
11350
11626
  }
11351
11627
  /** Distance constraint between two points */
11628
+ /**
11629
+ * Distance constraint between two points.
11630
+ *
11631
+ * @public
11632
+ */
11352
11633
  interface Constraint {
11353
11634
  /** Whether collision detection runs for this constraint's bone pair (0 or 1) */
11354
11635
  isCollision: number;
@@ -11362,12 +11643,17 @@ interface Constraint {
11362
11643
  length: number;
11363
11644
  }
11364
11645
  /** Read-only collider shape parameters (set at init) */
11646
+ /**
11647
+ * Read-only collider shape parameters.
11648
+ *
11649
+ * @public
11650
+ */
11365
11651
  interface ColliderR {
11366
11652
  /** Base radius of the collider sphere (or capsule head) */
11367
11653
  radius: number;
11368
11654
  /** Scale factor for capsule tail radius relative to head (1.0 = uniform) */
11369
11655
  radiusTailScale: number;
11370
- /** Capsule height. 0 = sphere collider, >0 = capsule collider */
11656
+ /** Capsule height. `0` means a sphere collider; `\> 0` means a capsule collider. */
11371
11657
  height: number;
11372
11658
  /** Friction coefficient applied on collision contact */
11373
11659
  friction: number;
@@ -11377,6 +11663,11 @@ interface ColliderR {
11377
11663
  forceType: ColliderForce;
11378
11664
  }
11379
11665
  /** Mutable collider runtime state (updated each frame) */
11666
+ /**
11667
+ * Mutable collider runtime state.
11668
+ *
11669
+ * @public
11670
+ */
11380
11671
  interface ColliderRW {
11381
11672
  /** Current interpolated head position (for this substep) */
11382
11673
  positionCurrent: Vector3;
@@ -11408,6 +11699,11 @@ interface ColliderRW {
11408
11699
  enabled: number;
11409
11700
  }
11410
11701
  /** Read-only grabber parameters (set at init) */
11702
+ /**
11703
+ * Read-only grabber parameters.
11704
+ *
11705
+ * @public
11706
+ */
11411
11707
  interface GrabberR {
11412
11708
  /** Grab activation radius — points within this distance can be grabbed */
11413
11709
  radius: number;
@@ -11415,6 +11711,11 @@ interface GrabberR {
11415
11711
  force: number;
11416
11712
  }
11417
11713
  /** Mutable grabber runtime state (updated each frame) */
11714
+ /**
11715
+ * Mutable grabber runtime state.
11716
+ *
11717
+ * @public
11718
+ */
11418
11719
  interface GrabberRW {
11419
11720
  /** Whether this grabber is active (0 = disabled, 1 = enabled) */
11420
11721
  enabled: number;
@@ -11422,6 +11723,11 @@ interface GrabberRW {
11422
11723
  position: Vector3;
11423
11724
  }
11424
11725
  /** Angle limiting configuration for post-simulation bone angle clamping */
11726
+ /**
11727
+ * Angle limiting configuration for post-simulation bone angle clamping.
11728
+ *
11729
+ * @public
11730
+ */
11425
11731
  interface AngleLimitConfig {
11426
11732
  /** Max angle in degrees between parent and child bone. Negative = disabled */
11427
11733
  angleLimit: number;
@@ -11429,6 +11735,11 @@ interface AngleLimitConfig {
11429
11735
  limitFromRoot: boolean;
11430
11736
  }
11431
11737
  /** Flat plane limiter — infinite plane that points cannot pass through */
11738
+ /**
11739
+ * Infinite plane limiter that points cannot pass through.
11740
+ *
11741
+ * @public
11742
+ */
11432
11743
  interface FlatPlane {
11433
11744
  /** Plane normal (points toward the "allowed" side) */
11434
11745
  normal: Vector3;
@@ -11439,6 +11750,11 @@ interface FlatPlane {
11439
11750
  * Input point data for low-level initialization (mirrors C# Point struct).
11440
11751
  * Used when bypassing the Controller and calling the solver directly.
11441
11752
  */
11753
+ /**
11754
+ * Input point data for low-level initialization.
11755
+ *
11756
+ * @public
11757
+ */
11442
11758
  interface PointInit {
11443
11759
  /** Parent point index (-1 = no parent) */
11444
11760
  parent: number;
@@ -11505,6 +11821,11 @@ interface PointInit {
11505
11821
  * Engine-agnostic transform read/write interface.
11506
11822
  * Implement this to bridge the solver with any rendering engine (Three.js, Babylon, custom).
11507
11823
  */
11824
+ /**
11825
+ * Transform adapter used by the solver to read and write bone state.
11826
+ *
11827
+ * @public
11828
+ */
11508
11829
  interface TransformAccess {
11509
11830
  /** Read world-space position */
11510
11831
  getWorldPosition(): Vector3;
@@ -11533,6 +11854,11 @@ interface TransformAccess {
11533
11854
  * Bone hierarchy node for constraint building.
11534
11855
  * Represents a single bone in the tree structure passed to buildConstraints().
11535
11856
  */
11857
+ /**
11858
+ * Bone hierarchy node used to build constraints and simulation points.
11859
+ *
11860
+ * @public
11861
+ */
11536
11862
  interface BoneNode {
11537
11863
  /** Unique index of this bone (must match the position in the pointTransforms array) */
11538
11864
  index: number;
@@ -11550,16 +11876,19 @@ interface BoneNode {
11550
11876
  boneAxis?: Vector3;
11551
11877
  }
11552
11878
 
11879
+ /** @public */
11553
11880
  interface CollisionResult {
11554
11881
  hit: boolean;
11555
11882
  point: Vector3;
11556
11883
  }
11884
+ /** @public */
11557
11885
  interface LineCollisionResult {
11558
11886
  hit: boolean;
11559
11887
  pointOnLine: Vector3;
11560
11888
  pointOnCollider: Vector3;
11561
11889
  radius: number;
11562
11890
  }
11891
+ /** @public */
11563
11892
  interface SurfaceCheckResult {
11564
11893
  hit: boolean;
11565
11894
  intersectionPoint: Vector3;
@@ -11567,6 +11896,7 @@ interface SurfaceCheckResult {
11567
11896
  pointOnCollider: Vector3;
11568
11897
  radius: number;
11569
11898
  }
11899
+ /** @public */
11570
11900
  interface NearestPointsResult {
11571
11901
  tP: number;
11572
11902
  tQ: number;
@@ -11574,16 +11904,71 @@ interface NearestPointsResult {
11574
11904
  pointOnQ: Vector3;
11575
11905
  sqrDistance: number;
11576
11906
  }
11907
+ /**
11908
+ * Pushes a point out of a sphere collider.
11909
+ *
11910
+ * @public
11911
+ */
11577
11912
  declare function pushoutFromSphere(center: Vector3, radius: number, pointRadius: number, point: Vector3, out?: CollisionResult): CollisionResult;
11913
+ /**
11914
+ * Pushes a point out of a collider.
11915
+ *
11916
+ * @public
11917
+ */
11578
11918
  declare function pushoutFromCollider(colR: ColliderR, colRW: ColliderRW, point: Vector3, ptR: PointR, out?: CollisionResult): CollisionResult;
11919
+ /**
11920
+ * Pushes a point out of a capsule collider.
11921
+ *
11922
+ * @public
11923
+ */
11579
11924
  declare function pushoutFromCapsule(colR: ColliderR, colRW: ColliderRW, point: Vector3, ptR: PointR, out?: CollisionResult): CollisionResult;
11925
+ /**
11926
+ * Pulls a point inside a sphere collider.
11927
+ *
11928
+ * @public
11929
+ */
11580
11930
  declare function pushInFromSphere(center: Vector3, radius: number, point: Vector3, out?: CollisionResult): CollisionResult;
11931
+ /**
11932
+ * Pulls a point inside a collider.
11933
+ *
11934
+ * @public
11935
+ */
11581
11936
  declare function pushInFromCollider(colR: ColliderR, colRW: ColliderRW, point: Vector3, out?: CollisionResult): CollisionResult;
11937
+ /**
11938
+ * Pulls a point inside a capsule collider.
11939
+ *
11940
+ * @public
11941
+ */
11582
11942
  declare function pushInFromCapsule(colR: ColliderR, colRW: ColliderRW, point: Vector3, out?: CollisionResult): CollisionResult;
11943
+ /**
11944
+ * Performs sphere collision detection.
11945
+ *
11946
+ * @public
11947
+ */
11583
11948
  declare function collisionDetectionSphere(center: Vector3, radius: number, point1: Vector3, point2: Vector3, out?: LineCollisionResult): LineCollisionResult;
11949
+ /**
11950
+ * Performs capsule collision detection.
11951
+ *
11952
+ * @public
11953
+ */
11584
11954
  declare function collisionDetectionCapsule(colR: ColliderR, colRW: ColliderRW, point1: Vector3, point2: Vector3, out?: LineCollisionResult): LineCollisionResult;
11955
+ /**
11956
+ * Performs collision detection against the specified collider.
11957
+ *
11958
+ * @public
11959
+ */
11585
11960
  declare function collisionDetection(colR: ColliderR, colRW: ColliderRW, point1: Vector3, point2: Vector3, out?: LineCollisionResult): LineCollisionResult;
11961
+ /**
11962
+ * Performs inward collision detection.
11963
+ *
11964
+ * @public
11965
+ */
11586
11966
  declare function pushInCollisionDetection(colR: ColliderR, colRW: ColliderRW, point1: Vector3, point2: Vector3, out?: LineCollisionResult): LineCollisionResult;
11967
+ /**
11968
+ * Computes the nearest points between two segments.
11969
+ *
11970
+ * @public
11971
+ */
11587
11972
  declare function computeNearestPoints(posP: Vector3, dirP: Vector3, posQ: Vector3, dirQ: Vector3, out?: NearestPointsResult): {
11588
11973
  tP: number;
11589
11974
  tQ: number;
@@ -11591,9 +11976,18 @@ declare function computeNearestPoints(posP: Vector3, dirP: Vector3, posQ: Vector
11591
11976
  pointOnQ: Vector3;
11592
11977
  sqrDistance: number;
11593
11978
  };
11979
+ /**
11980
+ * Checks triangle-surface collision against a collider.
11981
+ *
11982
+ * @public
11983
+ */
11594
11984
  declare function checkSurfaceCollision(ptA: Vector3, ptB: Vector3, ptC: Vector3, colliderPos: Vector3, colR: ColliderR, colRW: ColliderRW, out?: SurfaceCheckResult): SurfaceCheckResult;
11595
11985
 
11596
- /** Parameters for a single simulation step */
11986
+ /**
11987
+ * Parameters for a single simulation step.
11988
+ *
11989
+ * @public
11990
+ */
11597
11991
  interface SimulationParams {
11598
11992
  /** If true, skip force integration (only apply root motion and output positions) */
11599
11993
  isPaused: boolean;
@@ -11617,7 +12011,7 @@ interface SimulationParams {
11617
12011
  windForce: Vector3;
11618
12012
  /** Enable triangle-based surface collision */
11619
12013
  enableSurfaceCollision: boolean;
11620
- /** Triangle indices for surface collision (6 per quad: 2 triangles 鑴?3 indices) */
12014
+ /** Triangle indices for surface collision (6 per quad: 2 triangles, 3 indices each) */
11621
12015
  surfaceConstraints: number[];
11622
12016
  /** Number of constraint relaxation iterations per substep */
11623
12017
  relaxation: number;
@@ -11639,22 +12033,43 @@ interface SimulationParams {
11639
12033
  enableBroadPhase: boolean;
11640
12034
  }
11641
12035
  /**
11642
- * Run the full simulation step. Mutates pointsRW and collidersRW in place.
11643
- * Returns { positionsToTransform, fakeWaveCounter }.
12036
+ * Run the full simulation step. Mutates `pointsRW` and `collidersRW` in place.
12037
+ * Returns `{ positionsToTransform, fakeWaveCounter }`.
12038
+ *
12039
+ * @public
11644
12040
  */
11645
12041
  declare function simulate(params: SimulationParams, pointsR: readonly PointR[], pointsRW: PointRW[], constraints: readonly Constraint[], collidersR: readonly ColliderR[], collidersRW: ColliderRW[], grabbersR: readonly GrabberR[], grabbersRW: readonly GrabberRW[], movableLimitTargets: readonly Vector3[], flatPlanes: readonly FlatPlane[]): {
11646
12042
  positionsToTransform: Vector3[];
11647
12043
  fakeWaveCounter: number;
11648
12044
  };
12045
+ /**
12046
+ * Output of applying the simulated result back to transforms.
12047
+ *
12048
+ * @public
12049
+ */
11649
12050
  interface ApplyResultOutput {
11650
12051
  position: Vector3;
11651
12052
  rotation: Quaternion;
11652
12053
  localRotation: Quaternion;
11653
12054
  }
12055
+ /**
12056
+ * Computes transform outputs from the simulated point positions.
12057
+ *
12058
+ * @public
12059
+ */
11654
12060
  declare function applyResult(pointsR: readonly PointR[], pointsRW: PointRW[], positionsToTransform: readonly Vector3[], blendRatio: number, transformRotations: readonly Quaternion[], transformLocalRotations: readonly Quaternion[], preserveTwist: boolean): ApplyResultOutput[];
12061
+ /**
12062
+ * Applies post-simulation angle limits to the point state.
12063
+ *
12064
+ * @public
12065
+ */
11655
12066
  declare function applyAngleLimits(pointsR: readonly PointR[], pointsRW: PointRW[], config: AngleLimitConfig): void;
11656
12067
 
11657
- /** Options for constraint generation from bone hierarchy */
12068
+ /**
12069
+ * Options for constraint generation from a bone hierarchy.
12070
+ *
12071
+ * @public
12072
+ */
11658
12073
  interface ConstraintBuildOptions {
11659
12074
  /** Generate parent→child vertical constraints */
11660
12075
  structuralVertical: boolean;
@@ -11677,15 +12092,37 @@ interface ConstraintBuildOptions {
11677
12092
  /** Enable surface/triangle collision (overrides per-type collision flags) */
11678
12093
  enableSurfaceCollision: boolean;
11679
12094
  }
12095
+ /**
12096
+ * Builds solver constraints from the supplied root chains.
12097
+ *
12098
+ * @public
12099
+ */
11680
12100
  declare function buildConstraints(rootPoints: BoneNode[], options: ConstraintBuildOptions): Constraint[];
12101
+ /**
12102
+ * Builds triangle indices used for surface collision.
12103
+ *
12104
+ * @public
12105
+ */
11681
12106
  declare function buildSurfaceFaces(rootPoints: BoneNode[], isLoop: boolean): number[];
12107
+ /**
12108
+ * Computes the maximum chain depth among all root points.
12109
+ *
12110
+ * @public
12111
+ */
11682
12112
  declare function computeMaxDepth(rootPoints: BoneNode[]): number;
12113
+ /**
12114
+ * Sorts root points by proximity to the supplied reference position.
12115
+ *
12116
+ * @public
12117
+ */
11683
12118
  declare function sortRootPointsByProximity(roots: BoneNode[], ignoreY: boolean, fixedBeginEnd: boolean): BoneNode[];
11684
12119
 
11685
12120
  /**
11686
12121
  * Depth-based physics parameter curves.
11687
12122
  * Each curve is evaluated with t = pointDepth / maxDepth (0 at root, 1 at tip).
11688
12123
  * This allows parameters to vary smoothly along the bone chain.
12124
+ *
12125
+ * @public
11689
12126
  */
11690
12127
  interface PhysicsCurves {
11691
12128
  /** Scales point mass by depth */
@@ -11733,9 +12170,12 @@ interface PhysicsCurves {
11733
12170
  /** Fake wave frequency offset by depth */
11734
12171
  fakeWaveFreq: InterpolatorScalar;
11735
12172
  }
11736
- /** Top-level configuration for the physics controller */
12173
+ /**
12174
+ * Top-level configuration for the physics controller
12175
+ * @public
12176
+ **/
11737
12177
  interface ControllerConfig {
11738
- /** Global gravity vector (e.g. {x:0, y:-9.8, z:0}) */
12178
+ /** Global gravity vector */
11739
12179
  gravity: Vector3;
11740
12180
  /** Global wind force vector applied to all dynamic points */
11741
12181
  windForce: Vector3;
@@ -11772,21 +12212,41 @@ interface ControllerConfig {
11772
12212
  /** Which constraint types to generate and their collision flags */
11773
12213
  constraintOptions: ConstraintBuildOptions;
11774
12214
  }
11775
- /** Stable runtime handle for a JointDynamics collider. */
12215
+ /**
12216
+ * Stable runtime handle for a JointDynamics collider.
12217
+ * @public
12218
+ */
11776
12219
  interface JointDynamicsColliderHandle {
11777
12220
  readonly type: 'collider';
11778
12221
  readonly id: number;
11779
12222
  }
11780
- /** Stable runtime handle for a JointDynamics flat plane. */
12223
+ /**
12224
+ * Stable runtime handle for a JointDynamics flat plane.
12225
+ * @public
12226
+ */
11781
12227
  interface JointDynamicsFlatPlaneHandle {
11782
12228
  readonly type: 'flatPlane';
11783
12229
  readonly id: number;
11784
12230
  }
11785
- /** Stable runtime handle for a JointDynamics grabber. */
12231
+ /**
12232
+ * Stable runtime handle for a JointDynamics grabber.
12233
+ * @public
12234
+ */
11786
12235
  interface JointDynamicsGrabberHandle {
11787
12236
  readonly type: 'grabber';
11788
12237
  readonly id: number;
11789
12238
  }
12239
+ /**
12240
+ * High-level controller for joint dynamics simulation.
12241
+ *
12242
+ * This class manages the physics simulation for a hierarchy of bones, including constraints,
12243
+ * colliders, and grabbers. It provides an API for initializing the system with bone data and
12244
+ * transforms, stepping the simulation each frame, and modifying colliders and grabbers at runtime.
12245
+ * The controller handles the internal state and logic for blending between animation and physics,
12246
+ * applying forces, and enforcing constraints.
12247
+ *
12248
+ * @public
12249
+ */
11790
12250
  declare class JointDynamicsSystemController {
11791
12251
  private _config;
11792
12252
  private _pointsR;
@@ -11825,13 +12285,13 @@ declare class JointDynamicsSystemController {
11825
12285
  private _fadeDuration;
11826
12286
  constructor(config: ControllerConfig);
11827
12287
  /**
11828
- * 初始化物理系统
11829
- * @param rootTransform 根骨骼的 transform(用于检测根运动)
11830
- * @param rootPoints 骨骼层级的根节点数组(可以有多个根,如裙子的多条链)
11831
- * @param pointTransforms 所有物理点的 transform 数组(顺序必须与 BoneNode.index 对应)
11832
- * @param colliders 碰撞器数组(球体/胶囊体)
11833
- * @param grabbers 抓取器数组(用于鼠标交互等)
11834
- * @param flatPlanes 平面限制器数组(如地板,防止穿透)
12288
+ * Initializes the physics system.
12289
+ * @param rootTransform - Root bone transform used to detect root motion.
12290
+ * @param rootPoints - Root nodes of the bone hierarchy. Multiple roots are allowed.
12291
+ * @param pointTransforms - Transform array for all physics points. Order must match `BoneNode.index`.
12292
+ * @param colliders - Collider array (spheres/capsules).
12293
+ * @param grabbers - Grabber array used for interactions such as mouse dragging.
12294
+ * @param flatPlanes - Plane limiters such as the floor to prevent penetration.
11835
12295
  */
11836
12296
  initialize(rootTransform: TransformAccess, rootPoints: BoneNode[], pointTransforms: TransformAccess[], colliders: Array<{
11837
12297
  r: ColliderR;
@@ -11845,155 +12305,193 @@ declare class JointDynamicsSystemController {
11845
12305
  position: Vector3;
11846
12306
  }>): void;
11847
12307
  /**
11848
- * 执行一帧物理模拟
11849
- * 内部流程:读取当前 transform 运行 Verlet 积分和约束求解 写回 transform
11850
- * @param deltaTime 帧间隔时间(秒)。内部会被 subSteps 细分
12308
+ * Advances the simulation by one frame.
12309
+ * Internal flow: read current transforms, run Verlet integration and constraint solving,
12310
+ * then write the result back to the transforms.
12311
+ * @param deltaTime - Frame delta time in seconds. Internally subdivided by `subSteps`.
11851
12312
  */
11852
12313
  step(deltaTime: number): void;
11853
12314
  /**
11854
- * 获取所有点的模拟结果(世界坐标位置和旋转)
11855
- * 通常不需要手动调用——step() 已经自动写回 transform。
11856
- * 适用于需要在不写回 transform 的情况下读取物理结果的场景。
12315
+ * Returns the simulated results for all points as world-space positions and rotations.
12316
+ * Usually this does not need to be called manually because `step()` already writes the
12317
+ * output back to the transforms.
11857
12318
  */
11858
12319
  getResults(): Array<{
11859
12320
  position: Vector3;
11860
12321
  rotation: Quaternion;
11861
12322
  }>;
11862
12323
  /**
11863
- * 瞬移补偿——在角色传送/瞬移后调用
11864
- * 将上一帧的根骨骼位置和旋转设为当前值,
11865
- * 使下一帧的根运动增量为零,避免物理点因巨大位移而弹射。
12324
+ * Compensates for teleportation by resetting the previous root transform to the current one.
12325
+ * Call this after a character warp or teleport to avoid a large root-motion impulse on the
12326
+ * next simulation step.
11866
12327
  */
11867
12328
  warp(): void;
11868
12329
  /**
11869
- * 重置所有物理状态
11870
- * 将所有点的模拟位置重置为当前 transform 位置,清除速度和抓取状态。
11871
- * 适用于场景切换或需要消除所有物理运动的场景。
12330
+ * Resets all physics state.
12331
+ * Each simulated point is snapped back to the current transform position and grab state
12332
+ * is cleared.
11872
12333
  */
11873
12334
  reset(): void;
11874
12335
  /**
11875
- * 释放固定点为动态点(如脱衣、布料脱落)
11876
- * weight 0 改为 1,同时重置该点的模拟状态避免瞬间弹射。
11877
- * @param index 点的索引
12336
+ * Releases a fixed point so it becomes dynamic, for example when cloth is detached.
12337
+ * The point state is reset to avoid a sudden impulse.
12338
+ * @param index - Point index.
11878
12339
  */
11879
12340
  releasePoint(index: number): void;
11880
12341
  /**
11881
- * 将动态点重新固定为跟随动画(如重新穿戴)
11882
- * weight 1 改为 0,清除抓取状态。
11883
- * @param index 点的索引
12342
+ * Fixes a dynamic point back to the animation pose, for example when an item is reattached.
12343
+ * The point grab state is cleared.
12344
+ * @param index - Point index.
11884
12345
  */
11885
12346
  fixPoint(index: number): void;
11886
12347
  /**
11887
- * 查询某个点是否为固定状态(weight=0,跟随动画)
11888
- * @param index 点的索引
12348
+ * Returns whether a point is fixed to animation (`weight = 0`).
12349
+ * @param index - Point index.
11889
12350
  */
11890
12351
  isPointFixed(index: number): boolean;
11891
- /** 获取物理点总数 */
12352
+ /** Gets the total number of physics points. */
11892
12353
  get pointCount(): number;
11893
12354
  /**
11894
- * 渐入物理——从动画姿态平滑过渡到物理模拟
11895
- * blendRatio 1(纯动画)渐变到 0(纯物理)
11896
- * @param seconds 过渡时长(秒)
12355
+ * Fades physics in by blending from animation pose to simulation.
12356
+ * `blendRatio` moves from `1` (animation only) to `0` (physics only).
12357
+ * @param seconds - Transition duration in seconds.
11897
12358
  */
11898
12359
  fadeIn(seconds: number): void;
11899
12360
  /**
11900
- * 渐出物理——从物理模拟平滑过渡回动画姿态
11901
- * blendRatio 0(纯物理)渐变到 1(纯动画)
11902
- * @param seconds 过渡时长(秒)
12361
+ * Fades physics out by blending from simulation back to animation pose.
12362
+ * `blendRatio` moves from `0` (physics only) to `1` (animation only).
12363
+ * @param seconds - Transition duration in seconds.
11903
12364
  */
11904
12365
  fadeOut(seconds: number): void;
11905
12366
  /**
11906
- * 设置全局风力向量
11907
- * 风力会按每个点的 windForceScale 和质量进行缩放
11908
- * @param wind 风力向量(世界坐标)
12367
+ * Sets the global wind force vector.
12368
+ * The final wind contribution is still scaled per point by `windForceScale` and mass.
12369
+ * @param wind - Wind vector in world space.
11909
12370
  */
11910
12371
  setWindForce(wind: Vector3): void;
11911
- /** Enable/disable broad-phase pruning for runtime performance comparison */
12372
+ /**
12373
+ * Enable/disable broad-phase pruning for runtime performance comparison
12374
+ * @param enabled - `true` to enable broad-phase, `false` to disable.
12375
+ */
11912
12376
  setBroadPhaseEnabled(enabled: boolean): void;
11913
12377
  /** The blend ratio for the physics simulation */
11914
12378
  get blendRatio(): number;
11915
12379
  set blendRatio(value: number);
11916
12380
  /**
11917
- * 暂停/恢复物理模拟
11918
- * 暂停时仍会跟随根骨骼运动,但不进行力学积分和约束求解
11919
- * @param paused true=暂停, false=恢复
12381
+ * Pauses or resumes the physics simulation.
12382
+ * While paused, the system still follows root motion but skips force integration and
12383
+ * constraint solving.
12384
+ * @param paused - `true` to pause, `false` to resume.
11920
12385
  */
11921
12386
  setPaused(paused: boolean): void;
11922
12387
  /**
11923
12388
  * Enable or disable a collider by current array index.
11924
12389
  * Transform state is still read from the collider's TransformAccess each frame.
11925
12390
  * Prefer setColliderEnabled(handle, enabled) for runtime-owned colliders.
12391
+ *
12392
+ * @param index - Collider index in the current array. Note that this may change when colliders are added or removed.
12393
+ * @param enabled - `true` to enable the collider, `false` to disable it.
12394
+ *
12395
+ * @returns `true` if the index is valid and the collider was updated, `false` if the index is out of range.
11926
12396
  */
11927
12397
  setColliderEnabledAt(index: number, enabled: boolean): boolean;
11928
12398
  /**
11929
12399
  * Enable or disable a runtime collider by stable handle.
12400
+ *
12401
+ * @param handle - Stable handle for the collider to enable or disable.
12402
+ * @param enabled - `true` to enable the collider, `false` to disable it.
11930
12403
  * @returns true if the handle is still valid.
11931
12404
  */
11932
12405
  setColliderEnabled(handle: JointDynamicsColliderHandle, enabled: boolean): boolean;
11933
12406
  /**
11934
12407
  * Add a collider at runtime.
12408
+ * @param r - Read-only collider data such as shape and size.
12409
+ * @param transform - TransformAccess that provides the collider's position and rotation each frame.
11935
12410
  * @returns A stable handle that remains valid until this collider is removed.
11936
12411
  */
11937
12412
  addCollider(r: ColliderR, transform: TransformAccess): JointDynamicsColliderHandle;
11938
12413
  /**
11939
12414
  * Remove a collider by stable handle.
12415
+ * @param handle - Stable handle for the collider to remove.
11940
12416
  * @returns true if the collider existed and was removed.
11941
12417
  */
11942
12418
  removeCollider(handle: JointDynamicsColliderHandle): boolean;
11943
12419
  /**
11944
12420
  * Remove a collider by current array index.
12421
+ * @param index - Collider index in the current array. Note that this may change when colliders are added or removed.
11945
12422
  * Prefer removeCollider(handle) for runtime-owned colliders.
11946
12423
  */
11947
12424
  removeColliderAt(index: number): boolean;
11948
12425
  /**
11949
12426
  * Enable or disable a flat plane by current array index.
11950
- * Prefer setFlatPlaneEnabled(handle, enabled) for runtime-owned flat planes.
12427
+ * @param index - Flat plane index in the current array. Note that this may change when flat planes are added or removed.
12428
+ * @param enabled - `true` to enable the flat plane, `false` to disable it.
12429
+ * @returns `true` if the index is valid and the flat plane was updated, `false` if the index is out of range.
11951
12430
  */
11952
12431
  setFlatPlaneEnabledAt(index: number, enabled: boolean): boolean;
11953
12432
  /**
11954
12433
  * Enable or disable a runtime flat plane by stable handle.
12434
+ * @param handle - Stable handle for the flat plane to enable or disable.
12435
+ * @param enabled - `true` to enable the flat plane, `false` to disable it.
11955
12436
  * @returns true if the handle is still valid.
11956
12437
  */
11957
12438
  setFlatPlaneEnabled(handle: JointDynamicsFlatPlaneHandle, enabled: boolean): boolean;
11958
12439
  /**
11959
12440
  * Add a flat plane at runtime.
12441
+ * @param up - Up direction of the plane. The normal is computed as `Vector3.normalize(up)`.
12442
+ * @param position - A point on the plane. The distance is computed as `-Vector3.dot(normal, position)`.
11960
12443
  * @returns A stable handle that remains valid until this flat plane is removed.
11961
12444
  */
11962
12445
  addFlatPlane(up: Vector3, position: Vector3): JointDynamicsFlatPlaneHandle;
11963
12446
  /**
11964
12447
  * Remove a flat plane by stable handle.
12448
+ * @param handle - Stable handle for the flat plane to remove.
11965
12449
  * @returns true if the flat plane existed and was removed.
11966
12450
  */
11967
12451
  removeFlatPlane(handle: JointDynamicsFlatPlaneHandle): boolean;
11968
12452
  /**
11969
12453
  * Remove a flat plane by current array index.
11970
- * Prefer removeFlatPlane(handle) for runtime-owned flat planes.
12454
+ * @param index - Flat plane index in the current array. Note that this may change when flat planes are added or removed.
12455
+ * @returns true if the index was valid and the flat plane was removed, false if the index was out of range.
11971
12456
  */
11972
12457
  removeFlatPlaneAt(index: number): boolean;
11973
12458
  /**
11974
12459
  * Enable or disable a grabber by current array index.
11975
12460
  * Transform state is still read from the grabber's TransformAccess each frame.
11976
12461
  * Prefer setGrabberEnabled(handle, enabled) for runtime-owned grabbers.
12462
+ *
12463
+ * @param index - Grabber index in the current array. Note that this may change when grabbers are added or removed.
12464
+ * @param enabled - `true` to enable the grabber, `false` to disable it.
12465
+ * @returns `true` if the index is valid and the grabber was updated, `false` if the index is out of range.
11977
12466
  */
11978
12467
  setGrabberEnabledAt(index: number, enabled: boolean): boolean;
11979
12468
  /**
11980
12469
  * Enable or disable a runtime grabber by stable handle.
12470
+ * @param handle - Stable handle for the grabber to enable or disable.
12471
+ * @param enabled - `true` to enable the grabber, `false` to disable it.
11981
12472
  * @returns true if the handle is still valid.
11982
12473
  */
11983
12474
  setGrabberEnabled(handle: JointDynamicsGrabberHandle, enabled: boolean): boolean;
11984
12475
  /**
11985
12476
  * Add a grabber at runtime.
12477
+ * @param r - Read-only grabber data such as interaction radius.
12478
+ * @param transform - TransformAccess that provides the grabber's position each frame.
12479
+ * @param enabled - Whether the grabber starts enabled. The grabber can still be moved by its transform while disabled, but it won't affect any points until enabled.
11986
12480
  * @returns A stable handle that remains valid until this grabber is removed.
11987
12481
  */
11988
12482
  addGrabber(r: GrabberR, transform: TransformAccess, enabled?: boolean): JointDynamicsGrabberHandle;
11989
12483
  /**
11990
12484
  * Remove a grabber by stable handle.
12485
+ * @param handle - Stable handle for the grabber to remove.
11991
12486
  * @returns true if the grabber existed and was removed.
11992
12487
  */
11993
12488
  removeGrabber(handle: JointDynamicsGrabberHandle): boolean;
11994
12489
  /**
11995
12490
  * Remove a grabber by current array index.
11996
12491
  * Prefer removeGrabber(handle) for runtime-owned grabbers.
12492
+ *
12493
+ * @param index - Grabber index in the current array. Note that this may change when grabbers are added or removed.
12494
+ * @returns true if the index was valid and the grabber was removed, false if the index was out of range.
11997
12495
  */
11998
12496
  removeGrabberAt(index: number): boolean;
11999
12497
  /** Gets the number of runtime colliders. */
@@ -12272,6 +12770,11 @@ declare class JointDynamicsModifier extends SkeletonModifier {
12272
12770
  protected _setWeight(value: number): void;
12273
12771
  }
12274
12772
 
12773
+ /**
12774
+ * Callback invoked after a mesh finishes its per-frame update.
12775
+ *
12776
+ * @public
12777
+ */
12275
12778
  type MeshUpdateCallback = (frameId: number, elapsedInSeconds: number, deltaInSeconds: number) => void;
12276
12779
  declare const Mesh_base: typeof GraphNode & _zephyr3d_base.GenericConstructor<{
12277
12780
  getNode(): SceneNode;
@@ -12291,11 +12794,11 @@ declare class Mesh extends Mesh_base implements BatchDrawable {
12291
12794
  */
12292
12795
  getName(): string;
12293
12796
  /**
12294
- * {@inheritDoc BatchDrawable.getInstanceId}
12797
+ * Returns the batch instance ID for the current render pass.
12295
12798
  */
12296
12799
  getInstanceId(_renderPass: RenderPass): string;
12297
12800
  /**
12298
- * {@inheritDoc BatchDrawable.getInstanceUniforms}
12801
+ * Returns the packed instance-uniform buffer used for batching.
12299
12802
  */
12300
12803
  getInstanceUniforms(): Float32Array<ArrayBuffer>;
12301
12804
  /**
@@ -12305,9 +12808,6 @@ declare class Mesh extends Mesh_base implements BatchDrawable {
12305
12808
  setPickTarget(node: SceneNode, label?: string): void;
12306
12809
  get skeletonName(): string;
12307
12810
  set skeletonName(name: string);
12308
- set skinAnimation(val: boolean);
12309
- set suspendSkinning(val: boolean);
12310
- set morphAnimation(val: boolean);
12311
12811
  /** Wether the mesh node casts shadows */
12312
12812
  get castShadow(): boolean;
12313
12813
  set castShadow(b: boolean);
@@ -12388,7 +12888,7 @@ declare class Mesh extends Mesh_base implements BatchDrawable {
12388
12888
  /**
12389
12889
  * Update morph target weight
12390
12890
  *
12391
- * @param weight - The weights of the morph targets, the length should be less than or equal to ${MAX_MORPH_TARGETS}
12891
+ * @param weight - The morph target weights. The length must not exceed the mesh's morph target count.
12392
12892
  */
12393
12893
  updateMorphWeights(weight: number[]): void;
12394
12894
  /** {@inheritDoc SceneNode.update} */
@@ -12619,7 +13119,6 @@ declare class ParticleSystem extends ParticleSystem_base implements Drawable {
12619
13119
  /** Whether particles are in world space */
12620
13120
  get worldSpace(): boolean;
12621
13121
  set worldSpace(value: boolean);
12622
- set flags(value: number);
12623
13122
  private getParticleInitialPosition;
12624
13123
  resizeVertexBuffers(): void;
12625
13124
  update(_frameId: number, elapsedInSeconds: number, deltaInSeconds: number): void;
@@ -12848,6 +13347,11 @@ interface AssetAnimationTrack {
12848
13347
  interpolator: Interpolator;
12849
13348
  defaultMorphWeights?: number[];
12850
13349
  }
13350
+ /**
13351
+ * Fixed-frame geometry cache animation track data.
13352
+ *
13353
+ * @public
13354
+ */
12851
13355
  interface AssetFixedGeometryCacheAnimationTrack {
12852
13356
  node: AssetHierarchyNode;
12853
13357
  type: 'geometry-cache';
@@ -12856,6 +13360,11 @@ interface AssetFixedGeometryCacheAnimationTrack {
12856
13360
  times: Float32Array;
12857
13361
  frames: FixedGeometryCacheFrame[];
12858
13362
  }
13363
+ /**
13364
+ * PCA-compressed geometry cache animation track data.
13365
+ *
13366
+ * @public
13367
+ */
12859
13368
  interface AssetPCAGeometryCacheAnimationTrack {
12860
13369
  node: AssetHierarchyNode;
12861
13370
  type: 'geometry-cache';
@@ -12871,6 +13380,11 @@ interface AssetPCAGeometryCacheAnimationTrack {
12871
13380
  normalBases?: Nullable<Float32Array[]>;
12872
13381
  normalCoefficients?: Nullable<Float32Array[]>;
12873
13382
  }
13383
+ /**
13384
+ * Geometry cache animation track data.
13385
+ *
13386
+ * @public
13387
+ */
12874
13388
  type AssetGeometryCacheAnimationTrack = AssetFixedGeometryCacheAnimationTrack | AssetPCAGeometryCacheAnimationTrack;
12875
13389
  /**
12876
13390
  * Animation data interface for model loading
@@ -14092,9 +14606,6 @@ declare class ClipmapTerrain extends ClipmapTerrain_base implements Drawable {
14092
14606
  * @returns Maximum number of detail maps
14093
14607
  */
14094
14608
  get MAX_DETAIL_MAP_COUNT(): number;
14095
- set heightMapAssetId(val: string);
14096
- set splatMapAssetId(val: string);
14097
- set grassAssetId(val: string);
14098
14609
  /**
14099
14610
  * The current number of active detail maps.
14100
14611
  * Detail maps define different surface materials (grass, rock, etc.).
@@ -14246,11 +14757,11 @@ declare class BaseSprite<M extends SpriteMaterial> extends BaseSprite_base imple
14246
14757
  */
14247
14758
  getName(): string;
14248
14759
  /**
14249
- * {@inheritDoc BatchDrawable.getInstanceId}
14760
+ * Returns the batch instance ID for the current render pass.
14250
14761
  */
14251
14762
  getInstanceId(_renderPass: RenderPass): string;
14252
14763
  /**
14253
- * {@inheritDoc BatchDrawable.getInstanceUniforms}
14764
+ * Returns the packed instance-uniform buffer used for batching.
14254
14765
  */
14255
14766
  getInstanceUniforms(): Float32Array<ArrayBuffer>;
14256
14767
  /**
@@ -14342,13 +14853,33 @@ declare class Sprite extends BaseSprite<SpriteMaterial> {
14342
14853
  isSprite(): this is Sprite;
14343
14854
  }
14344
14855
 
14856
+ /**
14857
+ * Serializable script attachment configuration payload.
14858
+ *
14859
+ * @public
14860
+ */
14345
14861
  type ScriptAttachmentConfig = Nullable<Record<string, unknown> | unknown[]>;
14862
+ /**
14863
+ * Normalizes a script attachment config into a clone-safe serializable shape.
14864
+ *
14865
+ * @public
14866
+ */
14346
14867
  declare function normalizeScriptAttachmentConfig(value: unknown): ScriptAttachmentConfig;
14868
+ /**
14869
+ * Describes a script attached to a scene node.
14870
+ *
14871
+ * @public
14872
+ */
14347
14873
  declare class ScriptAttachment {
14348
14874
  script: string;
14349
14875
  config: ScriptAttachmentConfig;
14350
14876
  constructor(script?: string, config?: ScriptAttachmentConfig);
14351
14877
  }
14878
+ /**
14879
+ * Normalizes an arbitrary value into an array of script attachments.
14880
+ *
14881
+ * @public
14882
+ */
14352
14883
  declare function normalizeScriptAttachments(value: unknown): ScriptAttachment[];
14353
14884
 
14354
14885
  /**
@@ -15171,7 +15702,7 @@ declare class SceneNode extends SceneNode_base implements IDisposable {
15171
15702
  * Warning: Do not remove children during this iteration. To allow removal, use `iterateBottomToTop`.
15172
15703
  *
15173
15704
  * @param callback - Called for each node; if returns true, iteration stops.
15174
- * @returns true if iteration was aborted early.
15705
+ * @returns If returns true, the iteration will immediately stop.
15175
15706
  */
15176
15707
  iterate(callback: NodeIterateFunc): boolean;
15177
15708
  /**
@@ -15180,7 +15711,7 @@ declare class SceneNode extends SceneNode_base implements IDisposable {
15180
15711
  * Child nodes can be safely removed during this iteration.
15181
15712
  *
15182
15713
  * @param callback - Called for each node; if returns true, iteration stops.
15183
- * @returns true if iteration was aborted early.
15714
+ * @returns If returns true, the iteration will immediately stop.
15184
15715
  */
15185
15716
  iterateBottomToTop(callback: NodeIterateFunc): boolean;
15186
15717
  /** Type guard: true if this node is a graph node. */
@@ -15570,6 +16101,15 @@ declare class ScriptRegistry {
15570
16101
  */
15571
16102
  get scriptsRoot(): string;
15572
16103
  set scriptsRoot(path: string);
16104
+ /**
16105
+ * Invalidates cached built module output for one logical module id, or clears the full cache.
16106
+ *
16107
+ * Pass the same logical id shape that callers use with {@link ScriptRegistry.resolveRuntimeUrl},
16108
+ * for example `/assets/scripts/foo.ts`, `/assets/scripts/foo.js`, or `/assets/scripts/foo`.
16109
+ *
16110
+ * @param moduleId - Optional logical module id to invalidate. Omit to clear the entire build cache.
16111
+ */
16112
+ invalidate(moduleId?: string): void;
15573
16113
  /**
15574
16114
  * Fetches raw source for a logical module id by probing known extensions.
15575
16115
  *
@@ -16142,7 +16682,7 @@ declare class Engine {
16142
16682
  */
16143
16683
  get resourceManager(): ResourceManager;
16144
16684
  /**
16145
- * Exposes the instanceof {@link Screen}
16685
+ * Exposes the active {@link ScreenAdapter}.
16146
16686
  */
16147
16687
  get screen(): ScreenAdapter;
16148
16688
  /**
@@ -16249,7 +16789,11 @@ type appEventMap = {
16249
16789
  dragend: [evt: DragEvent];
16250
16790
  drop: [evt: DragEvent];
16251
16791
  };
16252
- /** Editor Mode */
16792
+ /**
16793
+ * Application editor/runtime mode.
16794
+ *
16795
+ * @public
16796
+ */
16253
16797
  type EditorMode = 'editor' | 'editor-preview' | 'none';
16254
16798
  /**
16255
16799
  * Options for Application.
@@ -16271,7 +16815,7 @@ interface AppOptions {
16271
16815
  */
16272
16816
  enableMSAA?: boolean;
16273
16817
  /**
16274
- * Device pixel ratio used when creating the device. Defaults to `window.devicePixelRatio` or 1.
16818
+ * Device pixel ratio used when creating the device. Defaults to `window.devicePixelRatio` or `1`.
16275
16819
  */
16276
16820
  pixelRatio?: number;
16277
16821
  }
@@ -17116,6 +17660,14 @@ declare class ResourceManager {
17116
17660
  * @returns An array of `PropertyAccessor` entries, or `null` if none.
17117
17661
  */
17118
17662
  getPropertiesByClass(cls: SerializableClass): PropertyAccessor[] | null;
17663
+ /**
17664
+ * Get all properties declared on a given class and its ancestors.
17665
+ *
17666
+ * @param cls - Serializable class metadata.
17667
+ *
17668
+ * @returns An array of `PropertyAccessor` entries, or `null` if none.
17669
+ */
17670
+ getAllPropertiesByClass(cls: Nullable<SerializableClass>): PropertyAccessor[];
17119
17671
  /**
17120
17672
  * Get a property accessor by class and property name.
17121
17673
  *
@@ -20831,7 +21383,7 @@ declare class PixelWorldPositionNode extends BaseGraphNode {
20831
21383
  * Gets the output type for a specific output slot
20832
21384
  *
20833
21385
  * @param id - The output slot ID
20834
- * @returns 'float' for individual component outputs (id > 1), 'vec3' for full position
21386
+ * @returns 'float' for individual component outputs (id \> 1), 'vec3' for full position
20835
21387
  */
20836
21388
  protected getType(id: number): "float" | "vec3";
20837
21389
  }
@@ -20961,7 +21513,7 @@ declare class PixelNormalNode extends BaseGraphNode {
20961
21513
  * Gets the output type for a specific output slot
20962
21514
  *
20963
21515
  * @param id - The output slot ID
20964
- * @returns 'float' for individual component outputs (id > 1), 'vec3' for full normal
21516
+ * @returns 'float' for individual component outputs (id \> 1), 'vec3' for full normal
20965
21517
  */
20966
21518
  protected getType(id: number): "float" | "vec3";
20967
21519
  }
@@ -21732,7 +22284,7 @@ declare class CameraVectorNode extends BaseGraphNode {
21732
22284
  * Gets the output type for a specific output slot
21733
22285
  *
21734
22286
  * @param id - The output slot ID
21735
- * @returns 'float' for individual component outputs (id > 1), 'vec3' for full vector
22287
+ * @returns 'float' for individual component outputs (id \> 1), 'vec3' for full vector
21736
22288
  */
21737
22289
  protected getType(id: number): "float" | "vec3";
21738
22290
  }
@@ -22479,9 +23031,6 @@ declare class CapsuleShape extends Shape<CapsuleCreationOptions> implements Clon
22479
23031
  /** Capsule total height */
22480
23032
  get totalHeight(): number;
22481
23033
  /**
22482
- * {@inheritDoc Primitive.raycast}
22483
- * @override
22484
- *
22485
23034
  * Analytically intersects a ray with a capsule aligned along the Y axis.
22486
23035
  *
22487
23036
  * The capsule consists of:
@@ -22553,9 +23102,6 @@ declare class CylinderShape extends Shape<CylinderCreationOptions> implements Cl
22553
23102
  /** type of the shape */
22554
23103
  get type(): "Cylinder";
22555
23104
  /**
22556
- * {@inheritDoc Primitive.raycast}
22557
- * @override
22558
- *
22559
23105
  * Analytically intersects a ray with a cone frustum (or cylinder when
22560
23106
  * topRadius === bottomRadius) including the optional top and bottom caps.
22561
23107
  *
@@ -22625,9 +23171,6 @@ declare class PlaneShape extends Shape<PlaneCreationOptions> implements Clonable
22625
23171
  /** type of the shape */
22626
23172
  get type(): "Plane";
22627
23173
  /**
22628
- * {@inheritDoc Primitive.raycast}
22629
- * @override
22630
- *
22631
23174
  * Intersects the ray with the finite XZ plane (y = 0) whose bounds are
22632
23175
  * determined by size/anchor options.
22633
23176
  */
@@ -22736,9 +23279,6 @@ declare class TorusShape extends Shape<TorusCreationOptions> implements Clonable
22736
23279
  /** type of the shape */
22737
23280
  get type(): "Torus";
22738
23281
  /**
22739
- * {@inheritDoc Primitive.raycast}
22740
- * @override
22741
- *
22742
23282
  * Analytically intersects a ray with a torus lying in the XZ plane.
22743
23283
  * The torus has major radius R (outerRadius) and minor radius r (innerRadius).
22744
23284
  *
@@ -22784,9 +23324,6 @@ declare class TetrahedronShape extends Shape<TetrahedronCreationOptions> impleme
22784
23324
  clone(): this;
22785
23325
  get type(): string;
22786
23326
  /**
22787
- * {@inheritDoc Primitive.raycast}
22788
- * @override
22789
- *
22790
23327
  * Tests each triangular face of the tetrahedron with the Möller–Trumbore
22791
23328
  * algorithm and returns the smallest non-negative t.
22792
23329
  */
@@ -22813,9 +23350,6 @@ declare class TetrahedronFrameShape extends Shape<TetrahedronCreationOptions> im
22813
23350
  clone(): this;
22814
23351
  get type(): "TetrahedronFrame";
22815
23352
  /**
22816
- * {@inheritDoc Primitive.raycast}
22817
- * @override
22818
- *
22819
23353
  * Tests each triangular face of the tetrahedron with the Möller–Trumbore
22820
23354
  * algorithm and returns the smallest non-negative t.
22821
23355
  * The wireframe has the same overall geometry as the solid version.
@@ -23487,11 +24021,6 @@ declare const LIGHT_TYPE_SPOT = 3;
23487
24021
  * @public
23488
24022
  */
23489
24023
  declare const LIGHT_TYPE_RECT = 4;
23490
- /**
23491
- * Max light size for clustered lighting
23492
- * @public
23493
- */
23494
- declare const MAX_CLUSTERED_LIGHTS = 255;
23495
24024
  /**
23496
24025
  * Opaque render queue type
23497
24026
  * @public
@@ -23552,4 +24081,4 @@ declare const ATMOSPHERIC_FOG_BIT: number;
23552
24081
  */
23553
24082
  declare const HEIGHT_FOG_BIT: number;
23554
24083
 
23555
- export { AABBTree, ABufferOIT, ATMOSPHERIC_FOG_BIT, AbsNode, AbstractPostEffect, AllConditionNode, type AngleLimitConfig, AnimationClip, AnimationSet, AnimationTrack, AnyConditionNode, type AppCreationOptions, type AppOptions, Application, type ApplyResultOutput, ArcCosNode, ArcSinNode, ArcTan2Node, ArcTanNode, ArccosineHNode, ArcsineHNode, ArctangentHNode, type AssetAnimationData, type AssetAnimationTrack, type AssetFixedGeometryCacheAnimationTrack, type AssetGeometryCacheAnimationTrack, AssetHierarchyNode, AssetManager, type AssetMaterial, type AssetMaterialClearcoat, type AssetMaterialCommon, type AssetMaterialIridescence, type AssetMaterialSheen, type AssetMaterialTransmission, type AssetMeshData, type AssetPBRMaterialCommon, type AssetPBRMaterialMR, type AssetPBRMaterialSG, type AssetPCAGeometryCacheAnimationTrack, type AssetRotationTrack, type AssetScaleTrack, AssetScene, type AssetSkeletalAnimationTrack, AssetSkeleton, type AssetSubMeshData, type AssetTranslationTrack, type AssetUnlitMaterial, BUILTIN_ASSET_TEST_CUBEMAP, BUILTIN_ASSET_TEXTURE_SHEEN_LUT, BaseCameraController, BaseGraphNode, BaseLight, BaseSprite, BaseTextureNode, type BatchDrawable, BatchGroup, BillboardMatrixNode, type BlendMode, BlinnMaterial, type BlitType, Blitter, Bloom, type BluePrintEditorState, type BluePrintUniformTexture, type BluePrintUniformValue, type BlueprintDAG, type BoneNode, BoundingBox, type BoundingVolume, type BoxCreationOptions, BoxFilterBlitter, BoxFrameShape, BoxShape, CCDSolver, type CachedBindGroup, Camera, CameraNearFarNode, type CameraOITMode, CameraPositionNode, CameraVectorNode, type CapsuleCollider, type CapsuleCreationOptions, CapsuleShape, CeilNode, ClampNode, ClipmapTerrain, ClipmapTerrainMaterial, ColliderForce, type ColliderR, type ColliderRW, type CollisionResult, ColorAdjust, CompAddNode, CompComparisonNode, CompDivNode, CompMulNode, CompSubNode, type ComparisonMode, type CompiledRenderGraph, Compositor, type CompositorContext, ConstantBVec2Node, ConstantBVec3Node, ConstantBVec4Node, ConstantBooleanNode, ConstantScalarNode, ConstantTexture2DArrayNode, ConstantTexture2DNode, ConstantTextureCubeNode, ConstantVec2Node, ConstantVec3Node, ConstantVec4Node, type Constraint, type ConstraintBuildOptions, ConstraintType, type ControllerConfig, CopyBlitter, CosHNode, CosNode, CrossProductNode, CubemapSHProjector, CullVisitor, type CylinderCreationOptions, CylinderShape, DDXNode, DDYNode, Degrees2RadiansNode, DepthPass, DevicePoolAllocator, DirectionalLight, DistanceNode, DotProductNode, DracoMeshDecoder, type DrawContext, type Drawable, type DrawableInstanceInfo, EPSILON, type EditorMode, ElapsedTimeNode, type EmitterBehavior, type EmitterShape, Engine, EnvConstantAmbient, EnvHemisphericAmbient, type EnvLightType, EnvLightWrapper, EnvShIBL, Environment, EnvironmentLighting, EqualNode, Exp2Node, ExpNode, type ExtractMixinReturnType, type ExtractMixinType, FABRIKSolver, FBMWaveGenerator, FFTWaveGenerator, FPSCameraController, type FPSCameraControllerOptions, FWidthNode, FXAA, FaceForwardNode, type FixedGeometryCacheFrame, type FixedGeometryCacheState, FixedGeometryCacheTrack, type FlatPlane, FloorNode, FmaNode, type FogType, type ForwardPlusOptions, FractNode, FunctionCallNode, FunctionInputNode, FunctionOutputNode, GPUClothSystem, type GPUClothSystemOptions, type GPUClothWrapBindingData, type GPUClothWrapBindingTarget, GaussianBlurBlitter, GenericMathNode, type GeometryCacheFrame, type GeometryCacheMeshBinding, type GeometryCacheState, GerstnerWaveGenerator, type GrabberR, type GrabberRW, GraphNode, type GraphNodeInput, type GraphNodeOutput, type GraphStructure, type GrassInstanceInfo, GrassLayer, GrassMaterial, GrassRenderer, Grayscale, HEIGHT_FOG_BIT, Hash1Node, Hash2Node, Hash3Node, HistoryResourceManager, type Host, HumanoidBodyRig, HumanoidHandRig, type HumanoidJointMapping, type IAttachedScript, type IBaseEvent, type IControllerKeyboardEvent, type IControllerKeydownEvent, type IControllerKeypressEvent, type IControllerKeyupEvent, type IControllerMouseEvent, type IControllerPointerCancelEvent, type IControllerPointerDownEvent, type IControllerPointerMoveEvent, type IControllerPointerUpEvent, type IControllerWheelEvent, type IGraphNode, IKAngleConstraint, IKChain, IKConstraint, type IKJoint, IKModifier, IKSolver, type IMixinAlbedoColor, type IMixinBlinnPhong, type IMixinFoliage, type IMixinLambert, type IMixinLight, type IMixinPBRBluePrint, type IMixinPBRCommon, type IMixinPBRMetallicRoughness, type IMixinPBRSpecularGlossiness, type IMixinVertexColor, type IModKey, type IRUniformTexture, type IRUniformValue, type IRenderHook, type IRenderable, type InputEventHandler, InputManager, InstanceBindGroupAllocator, type InstanceData, type InstanceUniformType, type InterChainConstraint, InvProjMatrixNode, InvSqrtNode, InvViewProjMatrixNode, type JointChainConfig, type JointDynamicSystemConfig, type JointDynamicsColliderHandle, type JointDynamicsFlatPlaneHandle, type JointDynamicsGrabberHandle, JointDynamicsModifier, JointDynamicsSystem, JointDynamicsSystemController, LIGHT_TYPE_DIRECTIONAL, LIGHT_TYPE_NONE, LIGHT_TYPE_POINT, LIGHT_TYPE_RECT, LIGHT_TYPE_SPOT, LambertMaterial, LengthNode, type LineCollisionResult, Log2Node, type LogMode, LogNode, LogicallyAndNode, LogicallyOrNode, MAX_CLUSTERED_LIGHTS, MAX_GERSTNER_WAVE_COUNT, MAX_MORPH_ATTRIBUTES, MAX_MORPH_TARGETS, MAX_TERRAIN_MIPMAP_LEVELS, MORPH_ATTRIBUTE_VECTOR_COUNT, MORPH_TARGET_COLOR, MORPH_TARGET_NORMAL, MORPH_TARGET_POSITION, MORPH_TARGET_TANGENT, MORPH_TARGET_TEX0, MORPH_TARGET_TEX1, MORPH_TARGET_TEX2, MORPH_TARGET_TEX3, MORPH_WEIGHTS_VECTOR_COUNT, MakeVectorNode, Material, MaterialBlueprintIR, type MaterialBlueprintIRBehaviors, type MaterialTextureInfo, MaterialVaryingFlags, MaxNode, Mesh, MeshMaterial, type MeshUpdateCallback, type Metadata, MinNode, MixNode, ModNode, type ModelFetchOptions, type ModelInfo, type MorphData, type MorphInfo, type MorphState, MorphTargetTrack, MultiChainSpringSystem, type MultiChainSpringSystemOptions, NamedObject, type NearestPointsResult, type NodeConnection, NodeEulerRotationTrack, type NodeIterateFunc, NodeRotationTrack, NodeScaleTrack, NodeTranslationTrack, NormalizeNode, NotEqualNode, type OIT, Octree, OctreeNode, OctreeNodeChunk, OctreePlacement, OrbitCameraController, type OrbitCameraControllerOptions, OrthoCamera, PBRBlockNode, PBRBluePrintMaterial, PBRMetallicRoughnessMaterial, type PBRReflectionMode, PBRSpecularGlossinessMaterial, type PCAGeometryCacheState, PCAGeometryCacheTrack, type PCAGeometryCacheTrackData, PannerNode, ParticleMaterial, ParticleSystem, PerlinNoise2DNode, PerspectiveCamera, type PhysicsCurves, type PickResult, type PickTarget, PixelNormalNode, PixelWorldPositionNode, type PlaneCollider, type PlaneCreationOptions, PlaneShape, type PlayAnimationOptions, type PointInit, PointLight, type PointR, type PointRW, type PointTransform, PostEffectLayer, PowNode, Primitive, ProjectionMatrixNode, type PropEdit, type PropertyAccessor, type PropertyAccessorOptions, type PropertySceneNodeOptions, type PropertyToType, PropertyTrack, type PropertyType, type PropertyValue, PunctualLight, QUEUE_OPAQUE, QUEUE_TRANSPARENT, RENDER_PASS_TYPE_DEPTH, RENDER_PASS_TYPE_LIGHT, RENDER_PASS_TYPE_OBJECT_COLOR, RENDER_PASS_TYPE_SHADOWMAP, type RGExecuteContext, type RGExecuteFn, RGHandle, type RGPassBuilder, type RGResolvedSize, type RGResourceLifetime, type RGSizeMode, type RGTextureAllocator, type RGTextureDesc, Radians2DegreesNode, RaycastVisitor, RectLight, ReflectNode, RefractNode, RenderContext, RenderGraph, RenderGraphExecutor, type RenderItemList, type RenderItemListBundle, type RenderItemListInfo, RenderPass, RenderQueue, type RenderQueueItem, type RenderQueueRef, RenderTarget, type ResolutionTransform, ResolveVertexNormalNode, ResolveVertexPositionNode, ResolveVertexTangentNode, ResourceManager, RotateAboutAxisNode, RuntimeScript, type RuntimeScriptArrayDeclaration, type RuntimeScriptArrayElementDeclaration, type RuntimeScriptConfig, type RuntimeScriptObjectDeclaration, type RuntimeScriptObjectFieldDeclaration, type RuntimeScriptPropertyDeclaration, type RuntimeScriptPropertyInfo, type RuntimeScriptPropertyOptions, type RuntimeScriptPropertyType, type RuntimeScriptValueDeclaration, type RuntimeScriptValueType, SAO, type SamplerType, SaturateNode, Scene, SceneNode, type SceneNodeVisible, ScreenAdapter, type ScreenConfig, ScreenRenderTarget, type ScreenScaleMode, ScriptAttachment, type ScriptAttachmentConfig, ScriptRegistry, ScriptingSystem, type ScriptingSystemOptions, SelectionNode, type SerializableClass, ShaderHelper, ShadowMapPass, ShadowMapper, type ShadowMode, type ShadowQualityPreset, Shape, type ShapeCreationOptions, type ShapeOptionType, type ShapeType, SharedModel, SignNode, SimplexNoise2DNode, type SimulationParams, SinHNode, SinNode, Skeleton, SkeletonModifier, type SkinnedBoundingBox, SkyEnvTextureNode, SkyRenderer, type SkyType, SmoothStepNode, type SphereCollider, type SphereCreationOptions, SphereShape, SpotLight, SpringChain, type SpringCollider, type SpringConstraint, SpringModifier, type SpringParticle, SpringSystem, type SpringSystemOptions, Sprite, SpriteBlockNode, SpriteBlueprintMaterial, SpriteMaterial, SqrtNode, StandardSpriteMaterial, StepNode, type StopAnimationOptions, type SurfaceCheckResult, SwizzleNode, TanHNode, TanNode, type TerrainDebugMode, type TetrahedronCreationOptions, TetrahedronFrameShape, TetrahedronShape, type TextureFetchOptions, type TextureMixinInstanceTypes, type TextureMixinTypes, type TextureProp, type TexturePropUniforms, TextureSampleGrad, TextureSampleNode, type ToMixedTextureType, Tonemap, type TorusCreationOptions, TorusShape, type TransformAccess, TransformNode, type TwistConstraint, TwoBoneIKSolver, UnlitMaterial, VertexBinormalNode, VertexBlockNode, VertexColorNode, VertexNormalNode, VertexPositionNode, VertexTangentNode, VertexUVNode, ViewMatrixNode, ViewProjMatrixNode, type Visitor, Water, type WaveGenerator, WeightedBlendedOIT, applyAngleLimits, applyMaterialMixins, applyResult, applyRuntimeScriptConfig, buildConstraints, buildForwardPlusGraph, buildSurfaceFaces, checkSurfaceCollision, collisionDetection, collisionDetectionCapsule, collisionDetectionSphere, computeMaxDepth, computeNearestPoints, createCapsuleCollider, createGPUClothWrapBindingData, createGeometryCacheState, createPlaneCollider, createSphereCollider, createSpringConstraint, createSpringParticle, createTransformAccess, decode2HalfFromRGBA, decodeFloatFromRGBA, decodeNormalizedFloatFromRGBA, decodeRGBM, defineProps, encode2HalfToRGBA, encodeFloatToRGBA, encodeNormalizedFloatToRGBA, encodeRGBM, ensureGeometryCacheMeshBinding, executeForwardPlusGraph, fetchSampler, gammaToLinear, getApp, getDevice, getEngine, getInput, getRuntimeScriptProperties, gradient, hash11, hash12, hash13, hash21, hash22, hash23, hash31, hash32, hash33, interleavedGradientNoise, isGPUClothSupported, linearToGamma, mixGeometryCacheBoundingBox, mixinAlbedoColor, mixinBlinnPhong, mixinFoliage, mixinLambert, mixinLight, mixinPBRBluePrint, mixinPBRCommon, mixinPBRMetallicRoughness, mixinPBRSpecularGlossness, mixinTextureProps, mixinVertexColor, noise3D, normalizeRuntimeScriptConfig, normalizeScriptAttachmentConfig, normalizeScriptAttachments, panoramaToCubemap, perlinNoise2D, perlinNoise3D, prefilterCubemap, pushInCollisionDetection, pushInFromCapsule, pushInFromCollider, pushInFromSphere, pushoutFromCapsule, pushoutFromCollider, pushoutFromSphere, resolveCapsuleCollision, resolvePlaneCollision, resolveSphereCollision, restoreGeometryCacheMeshBinding, scriptProp, simulate, smoothNoise3D, sortRootPointsByProximity, temporalResolve, tryGetApp, updateColliderFromNode, valueNoise, whiteNoise, worleyFBM, worleyNoise };
24084
+ export { AABBTree, ABufferOIT, ATMOSPHERIC_FOG_BIT, AbsNode, AbstractPostEffect, AllConditionNode, type AngleLimitConfig, AnimationClip, AnimationSet, AnimationTrack, AnyConditionNode, type AppCreationOptions, type AppOptions, Application, type ApplyResultOutput, ArcCosNode, ArcSinNode, ArcTan2Node, ArcTanNode, ArccosineHNode, ArcsineHNode, ArctangentHNode, type AssetAnimationData, type AssetAnimationTrack, type AssetFixedGeometryCacheAnimationTrack, type AssetGeometryCacheAnimationTrack, AssetHierarchyNode, AssetManager, type AssetMaterial, type AssetMaterialClearcoat, type AssetMaterialCommon, type AssetMaterialIridescence, type AssetMaterialSheen, type AssetMaterialTransmission, type AssetMeshData, type AssetPBRMaterialCommon, type AssetPBRMaterialMR, type AssetPBRMaterialSG, type AssetPCAGeometryCacheAnimationTrack, type AssetRotationTrack, type AssetScaleTrack, AssetScene, type AssetSkeletalAnimationTrack, AssetSkeleton, type AssetSubMeshData, type AssetTranslationTrack, type AssetUnlitMaterial, BUILTIN_ASSET_TEST_CUBEMAP, BUILTIN_ASSET_TEXTURE_SHEEN_LUT, BaseCameraController, BaseGraphNode, BaseLight, BaseSprite, BaseTextureNode, type BatchDrawable, BatchGroup, BillboardMatrixNode, type BlendMode, BlinnMaterial, type BlitType, Blitter, Bloom, type BluePrintEditorState, type BluePrintUniformTexture, type BluePrintUniformValue, type BlueprintDAG, type BoneNode, BoundingBox, type BoundingVolume, type BoxCreationOptions, BoxFilterBlitter, BoxFrameShape, BoxShape, CCDSolver, type CachedBindGroup, Camera, CameraNearFarNode, type CameraOITMode, CameraPositionNode, CameraVectorNode, type CapsuleCollider, type CapsuleCreationOptions, CapsuleShape, CeilNode, ClampNode, ClipmapTerrain, ClipmapTerrainMaterial, ColliderForce, type ColliderR, type ColliderRW, type CollisionResult, ColorAdjust, CompAddNode, CompComparisonNode, CompDivNode, CompMulNode, CompSubNode, type ComparisonMode, type CompiledRenderGraph, Compositor, type CompositorContext, ConstantBVec2Node, ConstantBVec3Node, ConstantBVec4Node, ConstantBooleanNode, ConstantScalarNode, ConstantTexture2DArrayNode, ConstantTexture2DNode, ConstantTextureCubeNode, ConstantVec2Node, ConstantVec3Node, ConstantVec4Node, type Constraint, type ConstraintBuildOptions, ConstraintType, type ControllerConfig, CopyBlitter, CosHNode, CosNode, CrossProductNode, CubemapSHProjector, CullVisitor, type CylinderCreationOptions, CylinderShape, DDXNode, DDYNode, Degrees2RadiansNode, DepthPass, DevicePoolAllocator, DirectionalLight, DistanceNode, DotProductNode, DracoMeshDecoder, type DrawContext, type Drawable, type DrawableInstanceInfo, EPSILON, type EditorMode, ElapsedTimeNode, type EmitterBehavior, type EmitterShape, Engine, EnvConstantAmbient, EnvHemisphericAmbient, type EnvLightType, EnvLightWrapper, EnvShIBL, Environment, EnvironmentLighting, EqualNode, Exp2Node, ExpNode, type ExtractMixinReturnType, type ExtractMixinType, FABRIKSolver, FBMWaveGenerator, FFTWaveGenerator, FPSCameraController, type FPSCameraControllerOptions, FWidthNode, FXAA, FaceForwardNode, type FixedGeometryCacheFrame, type FixedGeometryCacheState, FixedGeometryCacheTrack, type FlatPlane, FloorNode, FmaNode, type FogType, type ForwardPlusOptions, FractNode, FunctionCallNode, FunctionInputNode, FunctionOutputNode, GPUClothSystem, type GPUClothSystemOptions, type GPUClothWrapBindingData, type GPUClothWrapBindingTarget, GaussianBlurBlitter, GenericMathNode, type GeometryCacheFrame, type GeometryCacheMeshBinding, type GeometryCacheState, GerstnerWaveGenerator, type GrabberR, type GrabberRW, GraphNode, type GraphNodeInput, type GraphNodeOutput, type GraphStructure, type GrassInstanceInfo, GrassLayer, GrassMaterial, GrassRenderer, Grayscale, HEIGHT_FOG_BIT, Hash1Node, Hash2Node, Hash3Node, HistoryResourceManager, type Host, HumanoidBodyRig, HumanoidHandRig, type HumanoidJointMapping, type IAttachedScript, type IBaseEvent, type IControllerKeyboardEvent, type IControllerKeydownEvent, type IControllerKeypressEvent, type IControllerKeyupEvent, type IControllerMouseEvent, type IControllerPointerCancelEvent, type IControllerPointerDownEvent, type IControllerPointerMoveEvent, type IControllerPointerUpEvent, type IControllerWheelEvent, type IGraphNode, IKAngleConstraint, IKChain, IKConstraint, type IKJoint, IKModifier, IKSolver, type IMixinAlbedoColor, type IMixinBlinnPhong, type IMixinFoliage, type IMixinLambert, type IMixinLight, type IMixinPBRBluePrint, type IMixinPBRCommon, type IMixinPBRMetallicRoughness, type IMixinPBRSpecularGlossiness, type IMixinVertexColor, type IModKey, type IRUniformTexture, type IRUniformValue, type IRenderHook, type IRenderable, type InputEventHandler, InputManager, InstanceBindGroupAllocator, type InstanceData, type InstanceUniformType, type InterChainConstraint, InvProjMatrixNode, InvSqrtNode, InvViewProjMatrixNode, type JointChainConfig, type JointDynamicSystemConfig, type JointDynamicsColliderHandle, type JointDynamicsFlatPlaneHandle, type JointDynamicsGrabberHandle, JointDynamicsModifier, JointDynamicsSystem, JointDynamicsSystemController, LIGHT_TYPE_DIRECTIONAL, LIGHT_TYPE_NONE, LIGHT_TYPE_POINT, LIGHT_TYPE_RECT, LIGHT_TYPE_SPOT, LambertMaterial, LengthNode, type LineCollisionResult, Log2Node, type LogMode, LogNode, LogicallyAndNode, LogicallyOrNode, MAX_GERSTNER_WAVE_COUNT, MAX_MORPH_ATTRIBUTES, MAX_MORPH_TARGETS, MAX_TERRAIN_MIPMAP_LEVELS, MORPH_ATTRIBUTE_VECTOR_COUNT, MORPH_TARGET_COLOR, MORPH_TARGET_NORMAL, MORPH_TARGET_POSITION, MORPH_TARGET_TANGENT, MORPH_TARGET_TEX0, MORPH_TARGET_TEX1, MORPH_TARGET_TEX2, MORPH_TARGET_TEX3, MORPH_WEIGHTS_VECTOR_COUNT, MakeVectorNode, Material, MaterialBlueprintIR, type MaterialBlueprintIRBehaviors, type MaterialTextureInfo, MaterialVaryingFlags, MaxNode, Mesh, MeshMaterial, type MeshUpdateCallback, type Metadata, MinNode, MixNode, ModNode, type ModelFetchOptions, type ModelInfo, type MorphData, type MorphInfo, type MorphState, MorphTargetTrack, MultiChainSpringSystem, type MultiChainSpringSystemOptions, NamedObject, type NearestPointsResult, type NodeConnection, NodeEulerRotationTrack, type NodeIterateFunc, NodeRotationTrack, NodeScaleTrack, NodeTranslationTrack, NormalizeNode, NotEqualNode, type OIT, Octree, OctreeNode, OctreeNodeChunk, OctreePlacement, OrbitCameraController, type OrbitCameraControllerOptions, OrthoCamera, PBRBlockNode, PBRBluePrintMaterial, PBRMetallicRoughnessMaterial, type PBRReflectionMode, PBRSpecularGlossinessMaterial, type PCAGeometryCacheState, PCAGeometryCacheTrack, type PCAGeometryCacheTrackData, PannerNode, ParticleMaterial, ParticleSystem, PerlinNoise2DNode, PerspectiveCamera, type PhysicsCurves, type PickResult, type PickTarget, PixelNormalNode, PixelWorldPositionNode, type PlaneCollider, type PlaneCreationOptions, PlaneShape, type PlayAnimationOptions, type PointInit, PointLight, type PointR, type PointRW, type PointTransform, PostEffectLayer, PowNode, Primitive, ProjectionMatrixNode, type PropEdit, type PropertyAccessor, type PropertyAccessorOptions, type PropertySceneNodeOptions, type PropertyToType, PropertyTrack, type PropertyType, type PropertyValue, PunctualLight, QUEUE_OPAQUE, QUEUE_TRANSPARENT, RENDER_PASS_TYPE_DEPTH, RENDER_PASS_TYPE_LIGHT, RENDER_PASS_TYPE_OBJECT_COLOR, RENDER_PASS_TYPE_SHADOWMAP, type RGExecuteContext, type RGExecuteFn, type RGFramebufferDesc, RGHandle, RGHistoryResources, type RGPassBuilder, type RGResolvedSize, type RGResourceLifetime, type RGSizeMode, RGSubpass, type RGTextureAllocator, type RGTextureDesc, Radians2DegreesNode, RaycastVisitor, RectLight, ReflectNode, RefractNode, RenderContext, RenderGraph, RenderGraphExecutor, type RenderItemList, type RenderItemListBundle, type RenderItemListInfo, RenderPass, RenderQueue, type RenderQueueItem, type RenderQueueRef, RenderTarget, type ResolutionTransform, ResolveVertexNormalNode, ResolveVertexPositionNode, ResolveVertexTangentNode, ResourceManager, RotateAboutAxisNode, RuntimeScript, type RuntimeScriptArrayDeclaration, type RuntimeScriptArrayElementDeclaration, type RuntimeScriptConfig, type RuntimeScriptObjectDeclaration, type RuntimeScriptObjectFieldDeclaration, type RuntimeScriptPropertyDeclaration, type RuntimeScriptPropertyInfo, type RuntimeScriptPropertyOptions, type RuntimeScriptPropertyType, type RuntimeScriptValueDeclaration, type RuntimeScriptValueType, SAO, type SamplerType, SaturateNode, Scene, SceneNode, type SceneNodeVisible, ScreenAdapter, type ScreenConfig, ScreenRenderTarget, type ScreenScaleMode, ScriptAttachment, type ScriptAttachmentConfig, ScriptRegistry, ScriptingSystem, type ScriptingSystemOptions, SelectionNode, type SerializableClass, ShaderHelper, ShadowMapPass, ShadowMapper, type ShadowMode, type ShadowQualityPreset, Shape, type ShapeCreationOptions, type ShapeOptionType, type ShapeType, SharedModel, SignNode, SimplexNoise2DNode, type SimulationParams, SinHNode, SinNode, Skeleton, SkeletonModifier, type SkinnedBoundingBox, SkyEnvTextureNode, SkyRenderer, type SkyType, SmoothStepNode, type SphereCollider, type SphereCreationOptions, SphereShape, SpotLight, SpringChain, type SpringCollider, type SpringConstraint, SpringModifier, type SpringParticle, SpringSystem, type SpringSystemOptions, Sprite, SpriteBlockNode, SpriteBlueprintMaterial, SpriteMaterial, SqrtNode, StandardSpriteMaterial, StepNode, type StopAnimationOptions, type SurfaceCheckResult, SwizzleNode, TanHNode, TanNode, type TerrainDebugMode, type TetrahedronCreationOptions, TetrahedronFrameShape, TetrahedronShape, type TextureFetchOptions, type TextureMixinInstanceTypes, type TextureMixinTypes, type TextureProp, type TexturePropUniforms, TextureSampleGrad, TextureSampleNode, type ToMixedTextureType, Tonemap, type TorusCreationOptions, TorusShape, type TransformAccess, TransformNode, type TwistConstraint, TwoBoneIKSolver, UnlitMaterial, VertexBinormalNode, VertexBlockNode, VertexColorNode, VertexNormalNode, VertexPositionNode, VertexTangentNode, VertexUVNode, ViewMatrixNode, ViewProjMatrixNode, type Visitor, Water, type WaveGenerator, WeightedBlendedOIT, applyAngleLimits, applyMaterialMixins, applyResult, applyRuntimeScriptConfig, buildConstraints, buildForwardPlusGraph, buildSurfaceFaces, checkSurfaceCollision, collisionDetection, collisionDetectionCapsule, collisionDetectionSphere, computeMaxDepth, computeNearestPoints, createCapsuleCollider, createGPUClothWrapBindingData, createGeometryCacheState, createPlaneCollider, createSphereCollider, createSpringConstraint, createSpringParticle, createTransformAccess, decode2HalfFromRGBA, decodeFloatFromRGBA, decodeNormalizedFloatFromRGBA, decodeRGBM, defineProps, encode2HalfToRGBA, encodeFloatToRGBA, encodeNormalizedFloatToRGBA, encodeRGBM, ensureGeometryCacheMeshBinding, executeForwardPlusGraph, fetchSampler, gammaToLinear, getApp, getDevice, getEngine, getInput, getRuntimeScriptProperties, gradient, hash11, hash12, hash13, hash21, hash22, hash23, hash31, hash32, hash33, interleavedGradientNoise, isGPUClothSupported, linearToGamma, mixGeometryCacheBoundingBox, mixinAlbedoColor, mixinBlinnPhong, mixinFoliage, mixinLambert, mixinLight, mixinPBRBluePrint, mixinPBRCommon, mixinPBRMetallicRoughness, mixinPBRSpecularGlossness, mixinTextureProps, mixinVertexColor, noise3D, normalizeRuntimeScriptConfig, normalizeScriptAttachmentConfig, normalizeScriptAttachments, panoramaToCubemap, perlinNoise2D, perlinNoise3D, prefilterCubemap, pushInCollisionDetection, pushInFromCapsule, pushInFromCollider, pushInFromSphere, pushoutFromCapsule, pushoutFromCollider, pushoutFromSphere, resolveCapsuleCollision, resolvePlaneCollision, resolveSphereCollision, restoreGeometryCacheMeshBinding, scriptProp, simulate, smoothNoise3D, sortRootPointsByProximity, temporalResolve, tryGetApp, updateColliderFromNode, valueNoise, whiteNoise, worleyFBM, worleyNoise };