@babylonjs/lite 1.2.0 → 1.3.0

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 (210) hide show
  1. package/{_mat4-storage-f64-WeexU-hd.js → _mat4-storage-f64-BqqOLkos.js} +2 -2
  2. package/{_mat4-storage-f64-WeexU-hd.js.map → _mat4-storage-f64-BqqOLkos.js.map} +1 -1
  3. package/{alpha-test-fragment-x2mnjLgC.js → alpha-test-fragment-D8oeUpvv.js} +2 -2
  4. package/{alpha-test-fragment-x2mnjLgC.js.map → alpha-test-fragment-D8oeUpvv.js.map} +1 -1
  5. package/{background-dds-skybox-BpcDr-9c.js → background-dds-skybox-Cv92mmdC.js} +3 -4
  6. package/{background-dds-skybox-BpcDr-9c.js.map → background-dds-skybox-Cv92mmdC.js.map} +1 -1
  7. package/{background-ground-Bm6gjWqx.js → background-ground-ClcWiDuF.js} +2 -3
  8. package/{background-ground-Bm6gjWqx.js.map → background-ground-ClcWiDuF.js.map} +1 -1
  9. package/{background-hdr-skybox-CSFo8RX6.js → background-hdr-skybox-MfAwLhVx.js} +3 -3
  10. package/{background-hdr-skybox-CSFo8RX6.js.map → background-hdr-skybox-MfAwLhVx.js.map} +1 -1
  11. package/{background-solid-skybox-DOOBeDIz.js → background-solid-skybox-CkmGuOn5.js} +2 -3
  12. package/{background-solid-skybox-DOOBeDIz.js.map → background-solid-skybox-CkmGuOn5.js.map} +1 -1
  13. package/{billboard-renderable-IJfCpeDS.js → billboard-renderable-CmIfD7IP.js} +2 -2
  14. package/{billboard-renderable-IJfCpeDS.js.map → billboard-renderable-CmIfD7IP.js.map} +1 -1
  15. package/{clamp-block-BD_t8I89.js → clamp-block-Bupvx5sX.js} +2 -2
  16. package/{clamp-block-BD_t8I89.js.map → clamp-block-Bupvx5sX.js.map} +1 -1
  17. package/{clearcoat-fragment-Dj7vGX2u.js → clearcoat-fragment-wfkXOHHZ.js} +2 -2
  18. package/{clearcoat-fragment-Dj7vGX2u.js.map → clearcoat-fragment-wfkXOHHZ.js.map} +1 -1
  19. package/{create-skeleton-s0hjrC3A.js → create-skeleton-41NqPV9u.js} +2 -2
  20. package/{create-skeleton-s0hjrC3A.js.map → create-skeleton-41NqPV9u.js.map} +1 -1
  21. package/{cubemap-skybox-material-8lzbgi7K.js → cubemap-skybox-material-BWGdKMLi.js} +2 -2
  22. package/{cubemap-skybox-material-8lzbgi7K.js.map → cubemap-skybox-material-BWGdKMLi.js.map} +1 -1
  23. package/{curve-block-Ditr4R7V.js → curve-block-CeLMJE2N.js} +2 -2
  24. package/{curve-block-Ditr4R7V.js.map → curve-block-CeLMJE2N.js.map} +1 -1
  25. package/{emissive-fragment-BOAezkfk.js → emissive-fragment-CDJhX8ad.js} +2 -2
  26. package/{emissive-fragment-BOAezkfk.js.map → emissive-fragment-CDJhX8ad.js.map} +1 -1
  27. package/{esm-shadow-view-JCPaOOi7.js → esm-shadow-view-CcX1jdrL.js} +2 -2
  28. package/{esm-shadow-view-JCPaOOi7.js.map → esm-shadow-view-CcX1jdrL.js.map} +1 -1
  29. package/{esm-shadow-view-DRpyRAfa.js → esm-shadow-view-Cf2PwVNs.js} +2 -2
  30. package/{esm-shadow-view-DRpyRAfa.js.map → esm-shadow-view-Cf2PwVNs.js.map} +1 -1
  31. package/{esm-shadow-view-DmIORQGZ.js → esm-shadow-view-KyVyZnKZ.js} +2 -2
  32. package/{esm-shadow-view-DmIORQGZ.js.map → esm-shadow-view-KyVyZnKZ.js.map} +1 -1
  33. package/{gaussian-splatting-pipeline-sh-B30Mu56i.js → gaussian-splatting-pipeline-sh-lM48JDca.js} +2 -2
  34. package/{gaussian-splatting-pipeline-sh-B30Mu56i.js.map → gaussian-splatting-pipeline-sh-lM48JDca.js.map} +1 -1
  35. package/{geometry-texture-output-DURiaJ_n.js → geometry-texture-output-DSeH_3G_.js} +2 -2
  36. package/{geometry-texture-output-DURiaJ_n.js.map → geometry-texture-output-DSeH_3G_.js.map} +1 -1
  37. package/{geometry-view-DRrscyWU.js → geometry-view-L27hzPQF.js} +3 -4
  38. package/{geometry-view-DRrscyWU.js.map → geometry-view-L27hzPQF.js.map} +1 -1
  39. package/{gltf-animation-BjnXkop6.js → gltf-animation-Db8PwXmY.js} +6 -5
  40. package/gltf-animation-Db8PwXmY.js.map +1 -0
  41. package/{gltf-ext-basisu-DtzVV1Xx.js → gltf-ext-basisu-BARpgeiU.js} +2 -2
  42. package/{gltf-ext-basisu-DtzVV1Xx.js.map → gltf-ext-basisu-BARpgeiU.js.map} +1 -1
  43. package/{gltf-ext-node-visibility-BhX0DmiP.js → gltf-ext-node-visibility-Cv7HyWR_.js} +2 -2
  44. package/{gltf-ext-node-visibility-BhX0DmiP.js.map → gltf-ext-node-visibility-Cv7HyWR_.js.map} +1 -1
  45. package/{gltf-ext-quantization-DaymajCR.js → gltf-ext-quantization-DIYKR7_3.js} +2 -2
  46. package/{gltf-ext-quantization-DaymajCR.js.map → gltf-ext-quantization-DIYKR7_3.js.map} +1 -1
  47. package/{gltf-ext-uv-transform-DFmNJ8kA.js → gltf-ext-uv-transform-qU-LScDy.js} +2 -2
  48. package/{gltf-ext-uv-transform-DFmNJ8kA.js.map → gltf-ext-uv-transform-qU-LScDy.js.map} +1 -1
  49. package/gltf-feature-animation-pointer-nDf6dGpL.js +161 -0
  50. package/gltf-feature-animation-pointer-nDf6dGpL.js.map +1 -0
  51. package/{gltf-feature-animations-v0S_yb4T.js → gltf-feature-animations-Dr9AsgIN.js} +3 -3
  52. package/{gltf-feature-animations-v0S_yb4T.js.map → gltf-feature-animations-Dr9AsgIN.js.map} +1 -1
  53. package/gltf-feature-draco-CRgxNaK1.js +33 -0
  54. package/gltf-feature-draco-CRgxNaK1.js.map +1 -0
  55. package/{gltf-feature-gpu-instancing-BoeSm6Tn.js → gltf-feature-gpu-instancing-QfJNFW1R.js} +2 -2
  56. package/{gltf-feature-gpu-instancing-BoeSm6Tn.js.map → gltf-feature-gpu-instancing-QfJNFW1R.js.map} +1 -1
  57. package/{gltf-feature-lights-punctual-BCTwgyi_.js → gltf-feature-lights-punctual-B3xbCshn.js} +5 -5
  58. package/{gltf-feature-lights-punctual-BCTwgyi_.js.map → gltf-feature-lights-punctual-B3xbCshn.js.map} +1 -1
  59. package/{gltf-feature-meshopt-DItMkOMt.js → gltf-feature-meshopt-DBvtC2n2.js} +2 -34
  60. package/gltf-feature-meshopt-DBvtC2n2.js.map +1 -0
  61. package/{gltf-feature-morph-Cv0mEYIq.js → gltf-feature-morph-DE63vfIE.js} +3 -3
  62. package/{gltf-feature-morph-Cv0mEYIq.js.map → gltf-feature-morph-DE63vfIE.js.map} +1 -1
  63. package/{gltf-feature-registry-wNbt6UC-.js → gltf-feature-registry-DfOiNmhR.js} +15 -15
  64. package/{gltf-feature-registry-wNbt6UC-.js.map → gltf-feature-registry-DfOiNmhR.js.map} +1 -1
  65. package/{gltf-feature-skeleton-Deh2UBAn.js → gltf-feature-skeleton-IHj-DuKx.js} +12 -3
  66. package/gltf-feature-skeleton-IHj-DuKx.js.map +1 -0
  67. package/{gltf-feature-variants-DGSdFNJq.js → gltf-feature-variants-C-eyBru5.js} +2 -2
  68. package/{gltf-feature-variants-DGSdFNJq.js.map → gltf-feature-variants-C-eyBru5.js.map} +1 -1
  69. package/{gltf-glb-parser-DSQWsT4r.js → gltf-glb-parser-DXMAJA8e.js} +2 -2
  70. package/{gltf-glb-parser-DSQWsT4r.js.map → gltf-glb-parser-DXMAJA8e.js.map} +1 -1
  71. package/{gltf-interleave-OBqmlu-h.js → gltf-interleave-BdKrRH3j.js} +4 -4
  72. package/gltf-interleave-BdKrRH3j.js.map +1 -0
  73. package/{gltf-pbr-builder-ext-3imk8Tev.js → gltf-pbr-builder-ext-DJ8Jm7jo.js} +2 -2
  74. package/{gltf-pbr-builder-ext-3imk8Tev.js.map → gltf-pbr-builder-ext-DJ8Jm7jo.js.map} +1 -1
  75. package/{gltf-variants-Dyr54wwg.js → gltf-variants-C0HetOre.js} +4 -4
  76. package/{gltf-variants-Dyr54wwg.js.map → gltf-variants-C0HetOre.js.map} +1 -1
  77. package/{gpu-task-timer-DVBNZfq5.js → gpu-task-timer-C-3sLTxO.js} +2 -2
  78. package/{gpu-task-timer-DVBNZfq5.js.map → gpu-task-timer-C-3sLTxO.js.map} +1 -1
  79. package/{gs-picking-pipeline-CERN-Trj.js → gs-picking-pipeline-DlogO8fI.js} +2 -2
  80. package/{gs-picking-pipeline-CERN-Trj.js.map → gs-picking-pipeline-DlogO8fI.js.map} +1 -1
  81. package/{havok-floating-origin-VVdJRUYc.js → havok-floating-origin-CQ7yE-XD.js} +2 -2
  82. package/{havok-floating-origin-VVdJRUYc.js.map → havok-floating-origin-CQ7yE-XD.js.map} +1 -1
  83. package/{index-BgY3QEzL.js → index-C2sM8ERH.js} +2697 -932
  84. package/index-C2sM8ERH.js.map +1 -0
  85. package/index.d.ts +443 -12
  86. package/index.js +525 -507
  87. package/{input-block-DjdlndCL.js → input-block-DfFVJB-8.js} +2 -2
  88. package/{input-block-DjdlndCL.js.map → input-block-DfFVJB-8.js.map} +1 -1
  89. package/{iridescence-fragment-kfsCs8lN.js → iridescence-fragment-CQwzyZ3W.js} +2 -2
  90. package/{iridescence-fragment-kfsCs8lN.js.map → iridescence-fragment-CQwzyZ3W.js.map} +1 -1
  91. package/{light-block-qjCrz3de.js → light-block-othUHIHC.js} +2 -2
  92. package/{light-block-qjCrz3de.js.map → light-block-othUHIHC.js.map} +1 -1
  93. package/{loop-block-C8vkQ2bz.js → loop-block-DgHyTx97.js} +2 -2
  94. package/{loop-block-C8vkQ2bz.js.map → loop-block-DgHyTx97.js.map} +1 -1
  95. package/{morph-fragment-NpZYyIIU.js → morph-fragment-D_rgysrc.js} +2 -2
  96. package/{morph-fragment-NpZYyIIU.js.map → morph-fragment-D_rgysrc.js.map} +1 -1
  97. package/{multilight-wgsl-I5SncF0q.js → multilight-wgsl-DRmyM3cC.js} +2 -2
  98. package/{multilight-wgsl-I5SncF0q.js.map → multilight-wgsl-DRmyM3cC.js.map} +1 -1
  99. package/{node-env-D7Aee08u.js → node-env-B-Ca2DL0.js} +2 -2
  100. package/{node-env-D7Aee08u.js.map → node-env-B-Ca2DL0.js.map} +1 -1
  101. package/{node-geometry-view-DfKXWNfV.js → node-geometry-view-BJDB-lrf.js} +3 -3
  102. package/{node-geometry-view-DfKXWNfV.js.map → node-geometry-view-BJDB-lrf.js.map} +1 -1
  103. package/{node-registry-extra-compat-CDLeBR1P.js → node-registry-extra-compat-SwS962Ax.js} +2 -2
  104. package/{node-registry-extra-compat-CDLeBR1P.js.map → node-registry-extra-compat-SwS962Ax.js.map} +1 -1
  105. package/{node-registry-extra-math-BA8_l4lB.js → node-registry-extra-math-Bsj4UAE5.js} +2 -2
  106. package/{node-registry-extra-math-BA8_l4lB.js.map → node-registry-extra-math-Bsj4UAE5.js.map} +1 -1
  107. package/{node-renderable-EwLLnaL1.js → node-renderable-BOIc3hM1.js} +2 -2
  108. package/{node-renderable-EwLLnaL1.js.map → node-renderable-BOIc3hM1.js.map} +1 -1
  109. package/{node-shadow-CeTmT6g4.js → node-shadow-DE--Q2V1.js} +2 -2
  110. package/{node-shadow-CeTmT6g4.js.map → node-shadow-DE--Q2V1.js.map} +1 -1
  111. package/{normal-map-fragment-BHImLyM-.js → normal-map-fragment-Cjm-v9uq.js} +2 -3
  112. package/{normal-map-fragment-BHImLyM-.js.map → normal-map-fragment-Cjm-v9uq.js.map} +1 -1
  113. package/package.json +3 -3
  114. package/{parse-camera-5IGdctAS.js → parse-camera-uQ8oKgeH.js} +2 -2
  115. package/{parse-camera-5IGdctAS.js.map → parse-camera-uQ8oKgeH.js.map} +1 -1
  116. package/{pbr-fog-wgsl-BqdCid6r.js → pbr-fog-wgsl-B5LrMToX.js} +2 -2
  117. package/{pbr-fog-wgsl-BqdCid6r.js.map → pbr-fog-wgsl-B5LrMToX.js.map} +1 -1
  118. package/{pbr-geometry-view-Dthf9Aut.js → pbr-geometry-view-BI52zgUI.js} +9 -11
  119. package/pbr-geometry-view-BI52zgUI.js.map +1 -0
  120. package/{pbr-metallic-roughness-block-g7wjzwN_.js → pbr-metallic-roughness-block-C7s1jL4q.js} +2 -2
  121. package/{pbr-metallic-roughness-block-g7wjzwN_.js.map → pbr-metallic-roughness-block-C7s1jL4q.js.map} +1 -1
  122. package/{pbr-metallic-roughness-block-full-DD6zI_Lx.js → pbr-metallic-roughness-block-full-BuhhVBFO.js} +2 -2
  123. package/{pbr-metallic-roughness-block-full-DD6zI_Lx.js.map → pbr-metallic-roughness-block-full-BuhhVBFO.js.map} +1 -1
  124. package/{pbr-mr-helper-core-CWROQ7OA.js → pbr-mr-helper-core-XeyKg-g6.js} +2 -2
  125. package/{pbr-mr-helper-core-CWROQ7OA.js.map → pbr-mr-helper-core-XeyKg-g6.js.map} +1 -1
  126. package/{pbr-refraction-Dxsm_gii.js → pbr-refraction-Bxz4GDeh.js} +2 -2
  127. package/{pbr-refraction-Dxsm_gii.js.map → pbr-refraction-Bxz4GDeh.js.map} +1 -1
  128. package/{pbr-renderable-CuKWalEM.js → pbr-renderable-B0elfRlX.js} +41 -189
  129. package/pbr-renderable-B0elfRlX.js.map +1 -0
  130. package/{pbr-shadow-fragment-waeIBQUq.js → pbr-shadow-fragment-QHbgqVlc.js} +2 -2
  131. package/{pbr-shadow-fragment-waeIBQUq.js.map → pbr-shadow-fragment-QHbgqVlc.js.map} +1 -1
  132. package/{pbr-tracking-CdeqbBrh.js → pbr-tracking-BWWSjls_.js} +2 -2
  133. package/{pbr-tracking-CdeqbBrh.js.map → pbr-tracking-BWWSjls_.js.map} +1 -1
  134. package/{pbr-transmission-ext-BNiXngZc.js → pbr-transmission-ext-DiEBLim-.js} +2 -2
  135. package/{pbr-transmission-ext-BNiXngZc.js.map → pbr-transmission-ext-DiEBLim-.js.map} +1 -1
  136. package/{reflectance-fragment-BQFZ_pgy.js → reflectance-fragment-wBk8UtBP.js} +2 -2
  137. package/{reflectance-fragment-BQFZ_pgy.js.map → reflectance-fragment-wBk8UtBP.js.map} +1 -1
  138. package/{rgbd-decode-duTlXMWd.js → rgbd-decode-CAQ7XSwl.js} +2 -2
  139. package/{rgbd-decode-duTlXMWd.js.map → rgbd-decode-CAQ7XSwl.js.map} +1 -1
  140. package/{screenshot-readback-DnxR4rhp.js → screenshot-readback-NxsFpnE4.js} +2 -2
  141. package/{screenshot-readback-DnxR4rhp.js.map → screenshot-readback-NxsFpnE4.js.map} +1 -1
  142. package/{shader-renderable-DVMVD6zP.js → shader-renderable-CUlJSove.js} +4 -196
  143. package/shader-renderable-CUlJSove.js.map +1 -0
  144. package/{shader-thin-instance-CsDo3ULk.js → shader-thin-instance-BjIbuYdv.js} +2 -2
  145. package/{shader-thin-instance-CsDo3ULk.js.map → shader-thin-instance-BjIbuYdv.js.map} +1 -1
  146. package/{sheen-fragment-B_Jd7wrr.js → sheen-fragment-ef8myYaq.js} +2 -2
  147. package/{sheen-fragment-B_Jd7wrr.js.map → sheen-fragment-ef8myYaq.js.map} +1 -1
  148. package/{singlelight-directional-wgsl-Bw84txva.js → singlelight-directional-wgsl-BvFBA1MO.js} +2 -2
  149. package/{singlelight-directional-wgsl-Bw84txva.js.map → singlelight-directional-wgsl-BvFBA1MO.js.map} +1 -1
  150. package/{singlelight-hemispheric-wgsl-DjxhgI8r.js → singlelight-hemispheric-wgsl-BEsGCqSN.js} +2 -2
  151. package/{singlelight-hemispheric-wgsl-DjxhgI8r.js.map → singlelight-hemispheric-wgsl-BEsGCqSN.js.map} +1 -1
  152. package/{singlelight-point-wgsl-iA1aRkXA.js → singlelight-point-wgsl-CvMr18Zf.js} +2 -2
  153. package/{singlelight-point-wgsl-iA1aRkXA.js.map → singlelight-point-wgsl-CvMr18Zf.js.map} +1 -1
  154. package/{singlelight-spot-wgsl-MDdTdstF.js → singlelight-spot-wgsl-jYIr13wU.js} +2 -2
  155. package/{singlelight-spot-wgsl-MDdTdstF.js.map → singlelight-spot-wgsl-jYIr13wU.js.map} +1 -1
  156. package/{skeleton-fragment-COdHWFcK.js → skeleton-fragment-B9M_ddNC.js} +2 -2
  157. package/{skeleton-fragment-COdHWFcK.js.map → skeleton-fragment-B9M_ddNC.js.map} +1 -1
  158. package/{skybox-renderable-DJYkfw32.js → skybox-renderable-lbMC32aI.js} +2 -3
  159. package/{skybox-renderable-DJYkfw32.js.map → skybox-renderable-lbMC32aI.js.map} +1 -1
  160. package/{splat-ply-compressed-SxMlsKNK.js → splat-ply-compressed-B_w2N_V7.js} +2 -2
  161. package/{splat-ply-compressed-SxMlsKNK.js.map → splat-ply-compressed-B_w2N_V7.js.map} +1 -1
  162. package/{standard-renderable-BAc-i-ig.js → standard-renderable-AYZ-Pdcm.js} +3 -4
  163. package/standard-renderable-AYZ-Pdcm.js.map +1 -0
  164. package/{std-ambient-fragment-P8dHZ4An.js → std-ambient-fragment-BXl-88sn.js} +2 -2
  165. package/{std-ambient-fragment-P8dHZ4An.js.map → std-ambient-fragment-BXl-88sn.js.map} +1 -1
  166. package/{std-cube-reflection-fragment-CF03MuQt.js → std-cube-reflection-fragment-Dn34WuMa.js} +2 -2
  167. package/{std-cube-reflection-fragment-CF03MuQt.js.map → std-cube-reflection-fragment-Dn34WuMa.js.map} +1 -1
  168. package/{std-emissive-fragment-P8yJGclx.js → std-emissive-fragment-CK7TwRAt.js} +2 -2
  169. package/{std-emissive-fragment-P8yJGclx.js.map → std-emissive-fragment-CK7TwRAt.js.map} +1 -1
  170. package/{std-lightmap-fragment-CymEG79z.js → std-lightmap-fragment-BSeS8K-4.js} +2 -2
  171. package/{std-lightmap-fragment-CymEG79z.js.map → std-lightmap-fragment-BSeS8K-4.js.map} +1 -1
  172. package/{std-opacity-fragment-DLa1zV06.js → std-opacity-fragment-DnLaWH9w.js} +2 -2
  173. package/{std-opacity-fragment-DLa1zV06.js.map → std-opacity-fragment-DnLaWH9w.js.map} +1 -1
  174. package/{std-reflection-fragment-BLySsYos.js → std-reflection-fragment-BToYPemd.js} +2 -2
  175. package/{std-reflection-fragment-BLySsYos.js.map → std-reflection-fragment-BToYPemd.js.map} +1 -1
  176. package/{std-shadow-fragment-C_q27Mdi.js → std-shadow-fragment-9b0rFY7F.js} +2 -2
  177. package/{std-shadow-fragment-C_q27Mdi.js.map → std-shadow-fragment-9b0rFY7F.js.map} +1 -1
  178. package/{std-specular-fragment-CaBXyAWY.js → std-specular-fragment-OBO-zxGh.js} +2 -2
  179. package/{std-specular-fragment-CaBXyAWY.js.map → std-specular-fragment-OBO-zxGh.js.map} +1 -1
  180. package/{std-tracking-Bw61Dv98.js → std-tracking-4SHTntWt.js} +2 -2
  181. package/{std-tracking-Bw61Dv98.js.map → std-tracking-4SHTntWt.js.map} +1 -1
  182. package/{subsurface-fragment-BNQoG9gr.js → subsurface-fragment-D7QRWN_d.js} +2 -2
  183. package/{subsurface-fragment-BNQoG9gr.js.map → subsurface-fragment-D7QRWN_d.js.map} +1 -1
  184. package/{thin-instance-cull-binding-BNC5JiGw.js → thin-instance-cull-binding-D-p2Yxfg.js} +3 -3
  185. package/{thin-instance-cull-binding-BNC5JiGw.js.map → thin-instance-cull-binding-D-p2Yxfg.js.map} +1 -1
  186. package/{thin-instance-gpu-C1DGstap.js → thin-instance-gpu-QETC_NyQ.js} +2 -2
  187. package/{thin-instance-gpu-C1DGstap.js.map → thin-instance-gpu-QETC_NyQ.js.map} +1 -1
  188. package/{tracking-primitives-CMBWLxGr.js → tracking-primitives-CqIIi7Ej.js} +2 -2
  189. package/{tracking-primitives-CMBWLxGr.js.map → tracking-primitives-CqIIi7Ej.js.map} +1 -1
  190. package/{unlit-fragment-BsHrS9XX.js → unlit-fragment-DPWDQLxo.js} +2 -2
  191. package/{unlit-fragment-BsHrS9XX.js.map → unlit-fragment-DPWDQLxo.js.map} +1 -1
  192. package/gltf-animation-BjnXkop6.js.map +0 -1
  193. package/gltf-feature-animation-pointer-C40tqOhL.js +0 -88
  194. package/gltf-feature-animation-pointer-C40tqOhL.js.map +0 -1
  195. package/gltf-feature-draco-CljWrsna.js +0 -125
  196. package/gltf-feature-draco-CljWrsna.js.map +0 -1
  197. package/gltf-feature-meshopt-DItMkOMt.js.map +0 -1
  198. package/gltf-feature-skeleton-Deh2UBAn.js.map +0 -1
  199. package/gltf-interleave-OBqmlu-h.js.map +0 -1
  200. package/index-BgY3QEzL.js.map +0 -1
  201. package/pbr-geometry-view-Dthf9Aut.js.map +0 -1
  202. package/pbr-renderable-CuKWalEM.js.map +0 -1
  203. package/shader-composer-CBy2i8nU.js +0 -293
  204. package/shader-composer-CBy2i8nU.js.map +0 -1
  205. package/shader-renderable-DVMVD6zP.js.map +0 -1
  206. package/standard-pipeline-DXFOUqU_.js +0 -391
  207. package/standard-pipeline-DXFOUqU_.js.map +0 -1
  208. package/standard-renderable-BAc-i-ig.js.map +0 -1
  209. package/wgsl-helpers-D8sl1VVA.js +0 -48
  210. package/wgsl-helpers-D8sl1VVA.js.map +0 -1
package/index.d.ts CHANGED
@@ -170,6 +170,10 @@ export declare function addTaskBefore(target: FrameGraph | SceneContext, task: T
170
170
  /** Attach a `TextRenderable` to a scene. Uses the scene's deferred-renderables hook. */
171
171
  export declare function addTextRenderable(scene: SceneContext, renderable: TextRenderable): void;
172
172
 
173
+ /** Add a text layer to an existing renderer if it is not already present.
174
+ *
175
+ * @param tr - Text renderer to mutate.
176
+ * @param layer - Layer to append; draw order is sorted during renderer update. */
173
177
  export declare function addTextRendererLayer(tr: TextRenderer, layer: TextLayer): void;
174
178
 
175
179
  /** Add one instance. Returns its index. Grows capacity as needed. */
@@ -297,7 +301,59 @@ export declare interface AnimationGroup {
297
301
  /** Whether animation loops (default true). */
298
302
  loopAnimation: boolean;
299
303
  /** Weighted contribution used by AnimationManager mixing (default 1). */
300
- weight: number;
304
+ weight: number;
305
+ /** Optional include/exclude target-name mask. When set, only targets the mask retains
306
+ * animate; masked-out targets stay at their bind/rest pose. Matched by glTF node /
307
+ * bone name. See {@link createAnimationGroupMask}. To update an active mask, change
308
+ * its `mode`/`disabled`, replace its `names` array, or reassign `group.mask`;
309
+ * in-place same-length edits of `names` are not picked up. */
310
+ mask?: AnimationGroupMask;
311
+
312
+ /**
313
+ * Filter applied to an {@link AnimationGroup} (via `group.mask`) that restricts which
314
+ * targets the group animates, matched by target name.
315
+ *
316
+ * A target is identified by its name (the glTF node / bone name). The same mask can be
317
+ * reused across animation groups whose targets are named the same way. Matching is exact
318
+ * and case-sensitive. Masked-out targets are left untouched and therefore stay at their
319
+ * bind/rest pose (matching Babylon.js, which pauses those targets).
320
+ *
321
+ * Pure state: create with {@link createAnimationGroupMask} and read membership with
322
+ * {@link animationGroupMaskRetainsTarget}. To change an active mask, toggle `mode` or
323
+ * `disabled`, or replace the `names` array (assign a new array, or push/pop): the
324
+ * controller re-resolves whenever `mode`, `disabled`, the `names` array reference, or
325
+ * its length changes. Editing `names` in place at the same length (e.g. `names[0] = …`
326
+ * or reordering) is NOT detected — assign a new `names` array, or reassign `group.mask`,
327
+ * to apply such a change.
328
+ */
329
+ export declare interface AnimationGroupMask {
330
+ /** How `names` is interpreted (Include vs Exclude). */
331
+ mode: AnimationGroupMaskMode;
332
+ /** Target (node/bone) names listed by the mask. */
333
+ names: string[];
334
+ /** When true the mask is ignored and every target animates (default false). */
335
+ disabled: boolean;
336
+ }
337
+
338
+ /** Mode controlling how an {@link AnimationGroupMask} filters targets. */
339
+ export declare enum AnimationGroupMaskMode {
340
+ /** Only the listed target names animate; every other target stays at its bind/rest pose. */
341
+ Include = 0,
342
+ /** Every target animates except the listed names (which stay at their bind/rest pose). */
343
+ Exclude = 1
344
+ }
345
+
346
+ /**
347
+ * Whether the mask retains (keeps animating) the given target name.
348
+ *
349
+ * Mirrors Babylon.js `AnimationGroupMask.retainsTarget`: in Include mode a name is
350
+ * retained when it is listed; in Exclude mode a name is retained when it is NOT listed.
351
+ * A disabled mask retains every name.
352
+ * @param mask - The mask to query.
353
+ * @param name - The target (node/bone) name to test.
354
+ * @returns True if a target with this name should animate, false if it is masked out.
355
+ */
356
+ export declare function animationGroupMaskRetainsTarget(mask: AnimationGroupMask, name: string): boolean;
301
357
 
302
358
  /** A single keyframe on a property animation track. Supply exactly one of `time` (seconds) or `frame`. */
303
359
  export declare interface AnimationKeyframe {
@@ -499,16 +555,27 @@ export declare interface AssetContainer {
499
555
  packets: unknown[];
500
556
  assetPacket?: unknown;
501
557
  };
558
+ /** Bone-control handles, one per glTF skin. Present only when
559
+ * `enableBoneControl()` was called before loading; otherwise `undefined`.
560
+ * Drive bones via `getBoneByName()` + the `setBone*` functions. */
561
+ skeletons?: Skeleton[];
502
562
  }
503
563
 
504
564
  /** Bind the gizmo to a node — the gizmo follows the node's world translation
505
565
  * and applies drag deltas to its `position`. */
506
566
  export declare function attachAxisDragGizmoToNode(gizmo: AxisDragGizmo, node: SceneNode | null): void;
507
567
 
568
+ /** Attach the axis scale gizmo to a scene node, or detach it with `null`. */
508
569
  export declare function attachAxisScaleGizmoToNode(gizmo: AxisScaleGizmo, node: SceneNode | null): void;
509
570
 
571
+ /** Attach the bounding-box gizmo to a node, or detach it with `null`.
572
+ * Recomputes the current bounds immediately so handles match the new target.
573
+ */
510
574
  export declare function attachBoundingBoxGizmoToNode(gizmo: BoundingBoxGizmo, node: SceneNode | null): void;
511
575
 
576
+ /** Attach the camera gizmo to a camera, or detach it with `null`.
577
+ * The frustum wireframe is built lazily the first time a camera is attached.
578
+ */
512
579
  export declare function attachCameraGizmoToCamera(gizmo: CameraGizmo, camera: Camera | null): void;
513
580
 
514
581
  /**
@@ -592,16 +659,24 @@ export declare function attachFreeControl(camera: FreeCamera, canvas: HTMLCanvas
592
659
  */
593
660
  export declare function attachGeospatialControls(camera: GeospatialCamera, canvas: HTMLCanvasElement, scene: SceneContext, options?: GeospatialControlOptions): () => void;
594
661
 
662
+ /** Attach the light gizmo to a light, or detach it with `null`.
663
+ * Type-specific geometry is built lazily when a light is first attached.
664
+ */
595
665
  export declare function attachLightGizmoToLight(gizmo: LightGizmo, light: LightBase | null): void;
596
666
 
667
+ /** Attach the plane drag gizmo to a scene node, or detach it with `null`. */
597
668
  export declare function attachPlaneDragGizmoToNode(gizmo: PlaneDragGizmo, node: SceneNode | null): void;
598
669
 
670
+ /** Attach the rotation gizmo to a scene node, or detach it with `null`. */
599
671
  export declare function attachPlaneRotationGizmoToNode(gizmo: PlaneRotationGizmo, node: SceneNode | null): void;
600
672
 
673
+ /** Attach all position sub-gizmos to a node, or detach them with `null`. */
601
674
  export declare function attachPositionGizmoToNode(gizmo: PositionGizmo, node: SceneNode | null): void;
602
675
 
676
+ /** Attach all rotation sub-gizmos to a node, or detach them with `null`. */
603
677
  export declare function attachRotationGizmoToNode(gizmo: RotationGizmo, node: SceneNode | null): void;
604
678
 
679
+ /** Attach all scale sub-gizmos to a node, or detach them with `null`. */
605
680
  export declare function attachScaleGizmoToNode(gizmo: ScaleGizmo, node: SceneNode | null): void;
606
681
 
607
682
  /**
@@ -634,6 +709,7 @@ export declare function attachSpriteAnimationsToScene(scene: SceneContext, manag
634
709
  */
635
710
  export declare function attachVat(engine: EngineContext, mesh: Mesh, baked: VatBakeResult, clip?: string): VatHandle;
636
711
 
712
+ /** A single arrow-shaped gizmo that translates its attached node along one axis. */
637
713
  export declare interface AxisDragGizmo {
638
714
  /** The root node — gizmo follows its `attachedNode` by copying world translation. */
639
715
  readonly root: SceneNode;
@@ -652,6 +728,7 @@ export declare interface AxisDragGizmo {
652
728
  * automatically during pointer-down on the collider. */
653
729
  readonly materials: GizmoMaterialSet;
654
730
 
731
+ /** Options for building a single-axis position drag gizmo. */
655
732
  export declare interface AxisDragGizmoOptions {
656
733
  /** World-space drag axis (unit vector). */
657
734
  dragAxis: Vec3;
@@ -668,6 +745,7 @@ export declare interface AxisDragGizmoOptions {
668
745
  /** A billboard sprite system that rotates only around a fixed world axis. */
669
746
  export declare type AxisLockedBillboardSpriteSystem = BillboardSpriteSystem<"axis-locked">;
670
747
 
748
+ /** A cube or octahedron handle that scales its attached node from pointer drag distance. */
671
749
  export declare interface AxisScaleGizmo {
672
750
  readonly root: SceneNode;
673
751
  readonly drag: PointerDrag;
@@ -677,6 +755,7 @@ export declare interface AxisScaleGizmo {
677
755
  useLocalCoordinates: boolean;
678
756
  readonly materials: GizmoMaterialSet;
679
757
 
758
+ /** Options for building a single-axis or uniform scale gizmo handle. */
680
759
  export declare interface AxisScaleGizmoOptions {
681
760
  /** World-space drag axis (unit vector). Scaling is applied to the attached
682
761
  * node's local `scaling` components proportional to each axis component. */
@@ -877,6 +956,13 @@ export declare interface BlurPostProcessTaskConfig extends Omit<PostProcessTaskC
877
956
  kernel?: number;
878
957
  }
879
958
 
959
+ /** A single bone of a {@link Skeleton}. Pure data — drive it via the `setBone*`
960
+ * functions, addressing it through its owning `Skeleton`. */
961
+ export declare interface Bone {
962
+ /** Bone (joint node) name from the glTF, or `bone_<index>` when unnamed. */
963
+ readonly name: string;
964
+
965
+ /** Interactive bounding-box gizmo that can translate, rotate, and scale an attached node. */
880
966
  export declare interface BoundingBoxGizmo {
881
967
  readonly root: SceneNode;
882
968
  /** Currently attached node — set via `attachBoundingBoxGizmoToNode`. */
@@ -886,6 +972,7 @@ export declare interface BoundingBoxGizmo {
886
972
  /** Material used to render all gizmo geometry. */
887
973
  readonly material: StandardMaterialProps;
888
974
 
975
+ /** Options for the interactive bounding-box gizmo. */
889
976
  export declare interface BoundingBoxGizmoOptions {
890
977
  /** RGB colour for the wireframe + handle materials. Defaults to grey. */
891
978
  color?: [number, number, number];
@@ -916,6 +1003,7 @@ export declare interface Camera {
916
1003
  readonly worldMatrix: Mat4;
917
1004
  readonly worldMatrixVersion: number;
918
1005
 
1006
+ /** Display-only gizmo that visualizes an attached camera body and optional frustum. */
919
1007
  export declare interface CameraGizmo {
920
1008
  /** Root node — the gizmo follows the attached camera's world translation
921
1009
  * and orientation each frame. */
@@ -928,6 +1016,7 @@ export declare interface CameraGizmo {
928
1016
  /** Currently attached camera — set via `attachCameraGizmoToCamera`. */
929
1017
  attachedCamera: Camera | null;
930
1018
 
1019
+ /** Options for the display-only camera gizmo. */
931
1020
  export declare interface CameraGizmoOptions {
932
1021
  /** RGB color for the camera body + frustum material. Defaults to grey. */
933
1022
  color?: [number, number, number];
@@ -1151,6 +1240,9 @@ export declare function clearAnimationManager(manager: AnimationManager): void;
1151
1240
  */
1152
1241
  export declare function clearBillboardSprites(system: BillboardSpriteSystem): void;
1153
1242
 
1243
+ /** Remove all overrides for a bone, reverting it to animation / rest pose, then re-bake. */
1244
+ export declare function clearBoneOverride(skeleton: Skeleton, bone: Bone): void;
1245
+
1154
1246
  /** Clearcoat layer properties. Maps to BJS PBRMaterial.clearCoat sub-object. */
1155
1247
  export declare interface ClearCoatProps {
1156
1248
  /** Whether clearcoat is active. Default false. */
@@ -1327,6 +1419,7 @@ export declare interface CopyToTextureTask extends Task {
1327
1419
  readonly outputTexture: RenderTarget;
1328
1420
  }
1329
1421
 
1422
+ /** Options used to create a copy-to-texture frame-graph task. Selects the source render target, the target or resolve target, and optional viewport / mip-level settings for blit and copy paths. */
1330
1423
  export declare interface CopyToTextureTaskConfig {
1331
1424
  name?: string;
1332
1425
  sourceTexture: RenderTarget;
@@ -1374,6 +1467,19 @@ export declare function createAnaglyphPostProcessTask(config: AnaglyphPostProces
1374
1467
  */
1375
1468
  export declare function createAnimationController(clip: AnimationClip, nodes: readonly NodeRest[], skeletons: readonly SkeletonBinding[], morphBindings: readonly MorphBinding[], nodeTargets?: readonly (AnimatedNodeTarget | undefined)[], excludedNodeIndices?: ReadonlySet<number>): AnimationController;
1376
1469
 
1470
+ export declare function createAnimationController(clip: AnimationClip, nodes: readonly NodeRest[], skeletons: readonly SkeletonBinding[], morphBindings: readonly MorphBinding[], nodeTargets: readonly (AnimatedNodeTarget | undefined)[] | undefined, excludedNodeIndices: ReadonlySet<number> | undefined, boneOverrides: ReadonlyMap<number, unknown> | undefined): AnimationController;
1471
+
1472
+ export declare function createAnimationController(clip: AnimationClip, nodes: readonly NodeRest[], skeletons: readonly SkeletonBinding[], morphBindings: readonly MorphBinding[], nodeTargets: readonly (AnimatedNodeTarget | undefined)[] | undefined, excludedNodeIndices: ReadonlySet<number> | undefined, boneOverrides: ReadonlyMap<number, unknown> | undefined, nodeNames?: readonly (string | undefined)[]): AnimationController;
1473
+
1474
+ /**
1475
+ * Create an {@link AnimationGroupMask}.
1476
+ * @param names - Target names listed by the mask (copied). Defaults to empty.
1477
+ * @param mode - Include (only listed names animate) or Exclude (all but listed names animate).
1478
+ * Defaults to {@link AnimationGroupMaskMode.Include}.
1479
+ * @returns A new mask. Assign it to `animationGroup.mask`.
1480
+ */
1481
+ export declare function createAnimationGroupMask(names?: string[], mode?: AnimationGroupMaskMode): AnimationGroupMask;
1482
+
1377
1483
  /** Create AnimationGroup(s) from parsed glTF animation data.
1378
1484
  * Returns one group per animation clip. */
1379
1485
  export declare function createAnimationGroups(animData: GltfAnimationData): AnimationGroup[];
@@ -1406,6 +1512,12 @@ export declare function createAxisDragGizmo(engine: EngineContext, layer: Utilit
1406
1512
  */
1407
1513
  export declare function createAxisLockedBillboardSystem(atlas: SpriteAtlas, axis: readonly [number, number, number], opts?: BillboardSpriteSystemOptions): AxisLockedBillboardSpriteSystem;
1408
1514
 
1515
+ /** Create an axis scale gizmo in the utility layer.
1516
+ * @param engine - Engine that owns the created meshes.
1517
+ * @param layer - Utility layer that renders and picks the gizmo.
1518
+ * @param options - Drag axis, scale mode, sensitivity, and material options.
1519
+ * @returns A detached scale gizmo ready to attach to a node.
1520
+ */
1409
1521
  export declare function createAxisScaleGizmo(engine: EngineContext, layer: UtilityLayer, options: AxisScaleGizmoOptions): AxisScaleGizmo;
1410
1522
 
1411
1523
  /**
@@ -1441,6 +1553,12 @@ export declare function createBloomPostProcessTask(config: BloomPostProcessTaskC
1441
1553
  */
1442
1554
  export declare function createBlurPostProcessTask(config: BlurPostProcessTaskConfig, engine: EngineContext, scene?: SceneContext): BlurPostProcessTask;
1443
1555
 
1556
+ /** Create an interactive bounding-box gizmo in the utility layer.
1557
+ * @param engine - Engine that owns the created meshes.
1558
+ * @param layer - Utility layer that renders and picks the bounding-box handles.
1559
+ * @param options - Visual size and color options for edges and handles.
1560
+ * @returns A detached bounding-box gizmo ready to attach to a node.
1561
+ */
1444
1562
  export declare function createBoundingBoxGizmo(engine: EngineContext, layer: UtilityLayer, options?: BoundingBoxGizmoOptions): BoundingBoxGizmo;
1445
1563
 
1446
1564
  /** Create a box mesh. Caller must assign material. */
@@ -1515,6 +1633,7 @@ export declare function createClusteredLightContainer(options?: ClusteredLightCo
1515
1633
  */
1516
1634
  export declare function createClusteredPointLight(container: ClusteredLightContainer, options: ClusteredPointLightOptions): ClusteredPointLight;
1517
1635
 
1636
+ /** Create a frame-graph task that copies, blits, or resolves one render target color attachment into another. The task chooses the fastest valid path during `record()` based on the configured targets, samples, viewport, and mip level. */
1518
1637
  export declare function createCopyToTextureTask(config: CopyToTextureTaskConfig, engine: EngineContext, scene: SceneContext): CopyToTextureTask;
1519
1638
 
1520
1639
  /**
@@ -1552,6 +1671,7 @@ export declare function createCsmDirectionalShadowGenerator(engine: EngineContex
1552
1671
  /** Create a cylinder (or cone / truncated cone / prism) mesh. Caller must assign material. */
1553
1672
  export declare function createCylinder(engine: EngineContext, options?: CylinderOptions): Mesh;
1554
1673
 
1674
+ /** Generate indexed vertex data for a cylinder, cone, truncated cone, or prism using Babylon-compatible defaults. The returned arrays contain positions, normals, UVs, and indices suitable for constructing a mesh. */
1555
1675
  export declare function createCylinderData(options?: CylinderOptions): CylinderData;
1556
1676
 
1557
1677
  /**
@@ -1958,8 +2078,20 @@ export declare function createPhysicsViewer(scene: SceneContext, world: PhysicsW
1958
2078
  /** Create a plane (unit quad facing -Z). Caller must assign material. */
1959
2079
  export declare function createPlane(engine: EngineContext, options?: PlaneOptions): Mesh;
1960
2080
 
2081
+ /** Create a planar drag gizmo in the utility layer.
2082
+ * @param engine - Engine that owns the created meshes.
2083
+ * @param layer - Utility layer that renders and picks the gizmo.
2084
+ * @param options - Plane normal and material options.
2085
+ * @returns A detached plane drag gizmo ready to attach to a node.
2086
+ */
1961
2087
  export declare function createPlaneDragGizmo(engine: EngineContext, layer: UtilityLayer, options: PlaneDragGizmoOptions): PlaneDragGizmo;
1962
2088
 
2089
+ /** Create a plane rotation gizmo in the utility layer.
2090
+ * @param engine - Engine that owns the created meshes and rotation display material.
2091
+ * @param layer - Utility layer that renders and picks the gizmo.
2092
+ * @param options - Plane normal, ring sizing, and material options.
2093
+ * @returns A detached rotation gizmo ready to attach to a node.
2094
+ */
1963
2095
  export declare function createPlaneRotationGizmo(engine: EngineContext, layer: UtilityLayer, options: PlaneRotationGizmoOptions): PlaneRotationGizmo;
1964
2096
 
1965
2097
  /** Build a PointerDrag descriptor. The drag is inert until `registerPointerDrag`
@@ -2058,8 +2190,20 @@ export declare function createRenderTexture2D(engine: EngineContext, width: numb
2058
2190
  /** Create a ribbon from an array of parallel Vec3 paths. Caller must assign material. */
2059
2191
  export declare function createRibbon(engine: EngineContext, options: RibbonOptions): Mesh;
2060
2192
 
2193
+ /** Create a composite rotation gizmo with one ring for each principal axis.
2194
+ * @param engine - Engine that owns the created meshes.
2195
+ * @param layer - Utility layer that renders and picks the rings.
2196
+ * @param options - Ring tessellation and thickness options.
2197
+ * @returns A detached rotation gizmo ready to attach to a node.
2198
+ */
2061
2199
  export declare function createRotationGizmo(engine: EngineContext, layer: UtilityLayer, options?: RotationGizmoOptions): RotationGizmo;
2062
2200
 
2201
+ /** Create a composite scale gizmo with per-axis handles and a uniform centre handle.
2202
+ * @param engine - Engine that owns the created meshes.
2203
+ * @param layer - Utility layer that renders and picks the handles.
2204
+ * @param options - Shared scale-handle thickness options.
2205
+ * @returns A detached scale gizmo ready to attach to a node.
2206
+ */
2063
2207
  export declare function createScaleGizmo(engine: EngineContext, layer: UtilityLayer, options?: ScaleGizmoOptions): ScaleGizmo;
2064
2208
 
2065
2209
  /** Create an empty scene context bound to the given `surface`. The default render task
@@ -2193,10 +2337,25 @@ export declare function createSurface(engine: EngineContext, canvas: RenderCanva
2193
2337
  * runs can be appended later via `updateTextData({ update: "addRun", … })`. */
2194
2338
  export declare function createTextData(storage: GlyphStorage, runs?: readonly GlyphRun[]): TextData;
2195
2339
 
2340
+ /** Create a 2D text layer that places a `TextData` block in canvas pixel space.
2341
+ *
2342
+ * @param data - Text data block drawn by the layer.
2343
+ * @param options - Optional pixel placement, scale, order, opacity, and visibility.
2344
+ * @returns A mutable layer object for use with a `TextRenderer`. */
2196
2345
  export declare function createTextLayer(data: TextData, options?: TextLayerOptions): TextLayer;
2197
2346
 
2347
+ /** Create a scene renderable that draws the supplied `TextData` through the normal renderable pipeline.
2348
+ *
2349
+ * @param data - Text data block to render.
2350
+ * @param options - Optional transform, opacity, depth, and ordering settings.
2351
+ * @returns A transparent renderable suitable for adding to a scene. */
2198
2352
  export declare function createTextRenderable(data: TextData, options?: TextRenderableOptions): TextRenderable;
2199
2353
 
2354
+ /** Create a standalone text renderer for one surface.
2355
+ *
2356
+ * @param surface - Surface whose swapchain receives the text pass.
2357
+ * @param opts - Initial layers and clear settings.
2358
+ * @returns A rendering context that can be registered with the engine. */
2200
2359
  export declare function createTextRenderer(surface: SurfaceContext, opts: TextRendererOptions): TextRenderer;
2201
2360
 
2202
2361
  /**
@@ -2378,6 +2537,16 @@ export declare interface CylinderOptions {
2378
2537
  subdivisions?: number;
2379
2538
  }
2380
2539
 
2540
+ /** Result of {@link mat4Decompose}: a TRS triple. */
2541
+ export declare interface DecomposedTransform {
2542
+ /** Translation (matrix columns 12/13/14). */
2543
+ translation: Vec3;
2544
+ /** Rotation as a unit quaternion. */
2545
+ rotation: Quat;
2546
+ /** Per-axis scale (lengths of the basis columns). */
2547
+ scale: Vec3;
2548
+ }
2549
+
2381
2550
  /** Convenience text-data variant that owns its `GlyphStorage` and exposes the laid-out
2382
2551
  * pixel-space `width` / `height` of the text block. Produced by `createDefaultTextData`. */
2383
2552
  export declare interface DefaultTextData extends TextData {
@@ -2461,10 +2630,13 @@ export declare interface DiscOptions {
2461
2630
  /** Dispose the gizmo: remove meshes, unregister pointer-drag, drop materials. */
2462
2631
  export declare function disposeAxisDragGizmo(gizmo: AxisDragGizmo, layer: UtilityLayer): void;
2463
2632
 
2633
+ /** Dispose the axis scale gizmo meshes, observers, and pointer-drag registration. */
2464
2634
  export declare function disposeAxisScaleGizmo(gizmo: AxisScaleGizmo, layer: UtilityLayer): void;
2465
2635
 
2636
+ /** Dispose all meshes, observers, and pointer-drag registrations owned by the bounding-box gizmo. */
2466
2637
  export declare function disposeBoundingBoxGizmo(gizmo: BoundingBoxGizmo, layer: UtilityLayer): void;
2467
2638
 
2639
+ /** Dispose all meshes and follow callbacks owned by the camera gizmo. */
2468
2640
  export declare function disposeCameraGizmo(gizmo: CameraGizmo, layer: UtilityLayer): void;
2469
2641
 
2470
2642
  /** Frees the WASM memory backing a solid. The solid must not be used afterwards. */
@@ -2491,8 +2663,12 @@ export declare function disposeFrameGraphContext(ctx: FrameGraphContext): void;
2491
2663
  * ensuring no `TextData` is still drawing from this storage. */
2492
2664
  export declare function disposeGlyphStorage(storage: GlyphStorage): void;
2493
2665
 
2666
+ /** Dispose all meshes and frame callbacks owned by the light gizmo. */
2494
2667
  export declare function disposeLightGizmo(gizmo: LightGizmo, layer: UtilityLayer): void;
2495
2668
 
2669
+ /** Destroy all GPU resources owned by a mesh (vertex buffers, skeleton, morph targets). */
2670
+ export declare function disposeMeshGpu(mesh: Mesh): void;
2671
+
2496
2672
  /**
2497
2673
  * Removes and releases all bodies, then releases the native world. Call once when tearing down physics.
2498
2674
  * @param world - The physics world to dispose.
@@ -2505,14 +2681,19 @@ export declare function disposePhysicsViewer(viewer: PhysicsViewer): void;
2505
2681
  /** Dispose GPU resources owned by this picker. */
2506
2682
  export declare function disposePicker(picker: GpuPicker): void;
2507
2683
 
2684
+ /** Dispose the plane drag gizmo meshes and pointer-drag registration. */
2508
2685
  export declare function disposePlaneDragGizmo(gizmo: PlaneDragGizmo, layer: UtilityLayer): void;
2509
2686
 
2687
+ /** Dispose the rotation gizmo meshes, observers, and pointer-drag registration. */
2510
2688
  export declare function disposePlaneRotationGizmo(gizmo: PlaneRotationGizmo, layer: UtilityLayer): void;
2511
2689
 
2690
+ /** Dispose all sub-gizmos owned by the composite position gizmo. */
2512
2691
  export declare function disposePositionGizmo(gizmo: PositionGizmo, layer: UtilityLayer): void;
2513
2692
 
2693
+ /** Dispose all sub-gizmos owned by the composite rotation gizmo. */
2514
2694
  export declare function disposeRotationGizmo(gizmo: RotationGizmo, layer: UtilityLayer): void;
2515
2695
 
2696
+ /** Dispose all sub-gizmos owned by the composite scale gizmo. */
2516
2697
  export declare function disposeScaleGizmo(gizmo: ScaleGizmo, layer: UtilityLayer): void;
2517
2698
 
2518
2699
  /** Release all GPU resources owned by this scene. */
@@ -2546,8 +2727,10 @@ export declare function disposeSurface(surface: SurfaceContext): void;
2546
2727
  * `disposeGlyphStorage` once no `TextData` references it. */
2547
2728
  export declare function disposeTextData(data: TextData): void;
2548
2729
 
2730
+ /** Release GPU buffers owned by a text renderable. The underlying `TextData` and `GlyphStorage` remain caller-owned. */
2549
2731
  export declare function disposeTextRenderable(renderable: TextRenderable): void;
2550
2732
 
2733
+ /** Dispose a text renderer and all per-layer GPU resources it owns. Layer `TextData` remains caller-owned. */
2551
2734
  export declare function disposeTextRenderer(tr: TextRenderer): void;
2552
2735
 
2553
2736
  /** Destroy the uniform buffer and clear cached GPU objects owned by the uniform effect wrapper. */
@@ -2665,6 +2848,27 @@ export declare interface EffectWrapperOptions {
2665
2848
  /** Enable advanced animation blending for a manager. Kept opt-in so manual-only weights do not pay for skeletal mixing code. */
2666
2849
  export declare function enableAnimationBlending(manager: AnimationManager): void;
2667
2850
 
2851
+ /**
2852
+ * Enable bone control for skinned glTF models. Call once, before loading the
2853
+ * assets you want to control. After loading, read `container.skeletons` and drive
2854
+ * bones with {@link getBoneByName} + the `setBone*` functions.
2855
+ *
2856
+ * ```ts
2857
+ * enableBoneControl(); // ← opt-in, before loadGltf
2858
+ * const character = await loadGltf(engine, "character.glb");
2859
+ * addToScene(scene, character);
2860
+ * const skel = character.skeletons![0];
2861
+ * const head = getBoneByName(skel, "Head");
2862
+ * if (head) setBoneVisible(skel, head, false); // hide the head + everything under it
2863
+ * ```
2864
+ *
2865
+ * Process-global and idempotent. Skinned scenes that never call this are
2866
+ * unaffected (near byte-identical to a build without bone control).
2867
+ *
2868
+ * @public
2869
+ */
2870
+ export declare function enableBoneControl(): void;
2871
+
2668
2872
  /**
2669
2873
  * Enable detailed picking on a GPU picker.
2670
2874
  * When enabled, pickAsync() will compute faceId, bu, bv
@@ -2705,6 +2909,41 @@ export declare function enableHavokFloatingOrigin(world: PhysicsWorld, floatingO
2705
2909
  */
2706
2910
  export declare function enableMaterialPlugins(scene: SceneContext): void;
2707
2911
 
2912
+ /**
2913
+ * Opt-in entry point for per-material stencil state.
2914
+ *
2915
+ * Stencil (a {@link StencilState} baked into a material's main-pass pipeline — used to mask/discard
2916
+ * fragments, e.g. portals or decals) is an *explicit* opt-in so stencil-free scenes stay BYTE-IDENTICAL to a
2917
+ * build without it. The always-fetched Standard / PBR / Shader pipeline builders reference stencil only
2918
+ * through a module-local resolver hook that is `null` until this function installs it; with the hook absent
2919
+ * from the bundle the tree-shaker + minifier fold every stencil branch away. Calling `enableMaterialStencil`
2920
+ * links the resolver (and pulls in its descriptor-building code) into all three pipelines.
2921
+ *
2922
+ * Contract: attach stencil to materials via `material.stencil = { ... }`, then call this once AFTER creating
2923
+ * the materials/meshes and BEFORE `registerScene(scene)`. It is process-global and idempotent — no engine or
2924
+ * scene argument is needed.
2925
+ */
2926
+ /**
2927
+ * Enable per-material stencil state for Standard, PBR, and Shader materials.
2928
+ *
2929
+ * A writer material uses `compare: "always"` + `passOp: "increment-clamp"` to stamp the stencil buffer where
2930
+ * it draws; a tester material uses `compare: "equal"` to draw only where the stencil is still the pass's
2931
+ * default reference of 0 (i.e. where the writer did NOT draw). No dynamic stencil reference is needed.
2932
+ *
2933
+ * ```ts
2934
+ * const mask = createStandardMaterial();
2935
+ * mask.stencil = { passOp: "increment-clamp" }; // writes 1 where it draws
2936
+ * const masked = createStandardMaterial();
2937
+ * masked.stencil = { compare: "equal" }; // draws only where stencil is still 0
2938
+ *
2939
+ * enableMaterialStencil(); // ← opt-in, before registerScene
2940
+ * await registerScene(scene);
2941
+ * ```
2942
+ *
2943
+ * @public
2944
+ */
2945
+ export declare function enableMaterialStencil(): void;
2946
+
2708
2947
  /** Enable automatic dirty tracking on a PBR or Standard material.
2709
2948
  * After calling this, any UBO-backed property mutation marks the source material UBO dirty. */
2710
2949
  export declare function enableMaterialTracking(material: Material & {
@@ -2714,8 +2953,10 @@ export declare function enableMaterialTracking(material: Material & {
2714
2953
  /** Enables weighted property-animation blending on `manager` by registering its category handler. */
2715
2954
  export declare function enablePropertyAnimationBlending(manager: AnimationManager): void;
2716
2955
 
2956
+ /** Enable mid-pass scene-color grabs for a single render task and return the live texture handle. The task is wrapped so transmissive draw calls can sample the opaque color rendered earlier in the same pass. */
2717
2957
  export declare function enableRenderTaskTransmission(task: RenderTask, engine: EngineContext, options?: TransmissionOptions): SceneColorGrab;
2718
2958
 
2959
+ /** Enable scene-color transmission for every render task currently registered in a scene. PBR materials are marked for linear transmission, and a trailing image-processing task is appended when needed. */
2719
2960
  export declare function enableSceneTransmission(scene: SceneContext, engine: EngineContext): void;
2720
2961
 
2721
2962
  /** Enable or disable GPU frustum culling for an existing thin-instanced mesh.
@@ -2914,6 +3155,7 @@ export declare interface FogConfig {
2914
3155
  color: [number, number, number];
2915
3156
  }
2916
3157
 
3158
+ /** Opaque handle for a loaded TrueType/OpenType font used by the default text layout and glyph extraction helpers. */
2917
3159
  export declare interface Font {
2918
3160
  readonly [fontBrand]: true;
2919
3161
 
@@ -3024,6 +3266,7 @@ export declare interface GeometryRendererTask extends Task {
3024
3266
  includeInVelocity(mesh: Mesh): void;
3025
3267
  }
3026
3268
 
3269
+ /** Configuration for a geometry-renderer frame-graph task. Describes the meshes, camera, target size, geometry texture attachments, and optional real-color output target used by the MRT pass. */
3027
3270
  export declare interface GeometryRendererTaskConfig {
3028
3271
  name?: string;
3029
3272
  /** Caster meshes. When omitted, defaults to `scene.meshes`. */
@@ -3047,7 +3290,7 @@ export declare interface GeometryRendererTaskConfig {
3047
3290
  reverseCulling?: boolean;
3048
3291
  /** Optional color render-target that receives the *real* (lit) material
3049
3292
  * color, written as an additional color attachment alongside the geometry
3050
- * data attachments. Must have the same {@link sampleCount} and resolved
3293
+ * data attachments. Must have the same `sampleCount` and resolved
3051
3294
  * pixel size as the geometry MRT (size: `<surface>` with samples matching).
3052
3295
  * When omitted, no real-color attachment is added to the pass.
3053
3296
  *
@@ -3068,10 +3311,10 @@ export declare interface GeometryRendererTextureDescription {
3068
3311
  /** Which geometry value to write. */
3069
3312
  readonly type: GeometryTextureType;
3070
3313
  /** Per-attachment WebGPU format override. Defaults to
3071
- * {@link GEOMETRY_TEXTURE_DESCRIPTIONS}[type].defaultFormat. */
3314
+ * `GEOMETRY_TEXTURE_DESCRIPTIONS[type].defaultFormat`. */
3072
3315
  readonly format?: GPUTextureFormat;
3073
3316
  /** Per-attachment clear-value override. Defaults to
3074
- * {@link GEOMETRY_TEXTURE_DESCRIPTIONS}[type].clearValue. Use to match a
3317
+ * `GEOMETRY_TEXTURE_DESCRIPTIONS[type].clearValue`. Use to match a
3075
3318
  * reference engine's clear behaviour (e.g. clear VIEW_DEPTH to 0 instead of
3076
3319
  * the camera far plane to mirror BJS's PREPASS_DEPTH). */
3077
3320
  readonly clearValue?: GPUColor;
@@ -3252,6 +3495,10 @@ export declare function getAnimationGroups(manager: AnimationManager): readonly
3252
3495
  */
3253
3496
  export declare function getBillboardSpriteHandleIndex(handle: BillboardSpriteHandle): number;
3254
3497
 
3498
+ /** Find a bone by its (glTF joint node) name. Returns `undefined` if not present.
3499
+ * When several joints share a name, the first in joint order is returned. */
3500
+ export declare function getBoneByName(skeleton: Skeleton, name: string): Bone | undefined;
3501
+
3255
3502
  /** Get the world-space position of a camera. */
3256
3503
  export declare function getCameraPosition(camera: Camera): Vec3;
3257
3504
 
@@ -3404,8 +3651,19 @@ export declare interface GltfAnimationData {
3404
3651
  * matrices bake an `invMeshWorld` captured at load, so moving them at runtime
3405
3652
  * would double-transform the skinned vertices). */
3406
3653
  readonly excludedNodeIndices: ReadonlySet<number>;
3407
- }
3408
-
3654
+ /** glTF node names indexed by node index (undefined for unnamed nodes). Used by
3655
+ * {@link AnimationGroupMask} to resolve include/exclude target names to the node
3656
+ * indices its channels animate. */
3657
+ readonly nodeNames: readonly (string | undefined)[];
3658
+ /** Shared node-index → bone override map, present only when `enableBoneControl()`
3659
+ * installed bone control. Handed to every AnimationController so a playing clip
3660
+ * honours user bone overrides (animation wins per-component). `undefined` on the
3661
+ * default path. Typed as `unknown` value to keep the internal `BoneOverride`
3662
+ * shape out of the public API surface. */
3663
+ readonly boneOverrides?: ReadonlyMap<number, unknown>;
3664
+ }
3665
+
3666
+ /** Axis-aligned glyph extents in font units, used to size the rendered quad and spatial curve bands. */
3409
3667
  export declare type GlyphBounds = {
3410
3668
  readonly xMin: number;
3411
3669
  readonly yMin: number;
@@ -3413,11 +3671,13 @@ export declare type GlyphBounds = {
3413
3671
  readonly yMax: number;
3414
3672
  };
3415
3673
 
3674
+ /** Complete outline data for one glyph id, ready to be packed into a `GlyphStorage` atlas. */
3416
3675
  export declare type GlyphCurves = {
3417
3676
  readonly glyphId: number;
3418
3677
  readonly curves: readonly QuadCurve[];
3419
3678
  readonly bounds: GlyphBounds;
3420
3679
 
3680
+ /** Batch of placed glyphs that all use the same curve set and font-unit-to-pixel scale. */
3421
3681
  export declare type GlyphRun = {
3422
3682
  /** Which curve set this run's glyph ids index into. */
3423
3683
  readonly curveSet: CurveSetId;
@@ -3765,6 +4025,7 @@ export declare interface LightBase extends IWorldMatrixProvider, IParentable {
3765
4025
  readonly worldMatrix: Mat4;
3766
4026
  readonly worldMatrixVersion: number;
3767
4027
 
4028
+ /** Display-only gizmo that visualizes an attached light using type-specific geometry. */
3768
4029
  export declare interface LightGizmo {
3769
4030
  /** Root node — follows the attached light's position (when it has one)
3770
4031
  * and orients along its direction (when it has one). */
@@ -3773,6 +4034,7 @@ export declare interface LightGizmo {
3773
4034
  /** Currently attached light — set via `attachLightGizmoToLight`. */
3774
4035
  attachedLight: LightBase | null;
3775
4036
 
4037
+ /** Options for the display-only light gizmo. */
3776
4038
  export declare interface LightGizmoOptions {
3777
4039
  /** RGB color for the light gizmo body material. Defaults to grey. */
3778
4040
  color?: [number, number, number];
@@ -3880,16 +4142,31 @@ export declare function loadEnvironment(scene: SceneContext, url: string, option
3880
4142
  export declare function loadFont(url: string): Promise<Font>;
3881
4143
 
3882
4144
  /**
3883
- * Load a .glb or .gltf file, parse it, and upload mesh + material data to GPU.
4145
+ * Load a glTF/GLB asset, parse it, and upload mesh + material data to GPU.
3884
4146
  * Supports both binary GLB and separate .gltf + .bin + image files.
3885
4147
  * Registers a deferred PBR renderable builder.
3886
4148
  * Automatically parses glTF animations if present.
3887
4149
  *
3888
4150
  * Returns a AssetContainer. Pass it to addToScene() which adds the hierarchy,
3889
4151
  * registers animation ticks, and applies any scene-level settings.
4152
+ *
4153
+ * @param engine - The engine to upload GPU resources to.
4154
+ * @param url - URL of the .glb/.gltf asset to fetch.
3890
4155
  */
3891
4156
  export declare function loadGltf(engine: EngineContext, url: string): Promise<AssetContainer>;
3892
4157
 
4158
+ /**
4159
+ * Load a glTF/GLB asset directly from already-loaded local data (drag-and-drop, OPFS, a `fetch` body, etc.).
4160
+ *
4161
+ * GLB-vs-glTF is determined from the data's magic bytes, not a file extension. `ArrayBuffer`/`Blob` inputs
4162
+ * have no base URL, so they must be self-contained: a GLB, or a glTF whose buffers/images use `data:` URIs.
4163
+ * A glTF that references external `.bin`/image files by relative path can only be loaded from a URL.
4164
+ *
4165
+ * @param engine - The engine to upload GPU resources to.
4166
+ * @param data - The raw `ArrayBuffer` or `Blob` of a self-contained glTF/GLB asset.
4167
+ */
4168
+ export declare function loadGltf(engine: EngineContext, data: ArrayBuffer | Blob): Promise<AssetContainer>;
4169
+
3893
4170
  /**
3894
4171
  * Loads a Radiance `.hdr` (RGBE) equirectangular panorama and builds GPU-ready IBL textures
3895
4172
  * (prefiltered specular cubemap, BRDF LUT, and irradiance spherical harmonics), then attaches
@@ -3901,6 +4178,14 @@ export declare function loadGltf(engine: EngineContext, url: string): Promise<As
3901
4178
  */
3902
4179
  export declare function loadHdrEnvironment(scene: SceneContext, url: string, options?: HdrLoadOptions): Promise<EnvironmentTextures>;
3903
4180
 
4181
+ /** Fetch and decode a standalone KTX2 (Basis Universal) texture from a URL into a Texture2D, transcoded to the
4182
+ * device's best GPU-compressed format (BC7/ETC2/ASTC) so it STAYS compressed in VRAM (a few times less than the
4183
+ * uncompressed RGBA8 `loadTexture2D` always uploads). Mirrors `loadKtxTexture2D` (KTX1) for app textures that
4184
+ * live outside a glTF. Requires the KTX2 decoder (configure self-hosting via `setKtx2DecoderUrl`). `sRGB`
4185
+ * selects the `*-srgb` GPU format (default false: raw/linear sampling, matching `loadTexture2D`'s `srgb:false`).
4186
+ * The decoder uploads the stored mips as-is (no V-flip), so author the .ktx2 in the orientation you want. */
4187
+ export declare function loadKtx2Texture2D(engine: EngineContext, url: string, sRGB?: boolean): Promise<Texture2D>;
4188
+
3904
4189
  /**
3905
4190
  * Load a texture with KTX compressed format auto-selection and fallback.
3906
4191
  *
@@ -3992,6 +4277,16 @@ export declare interface Mat4 {
3992
4277
  readonly length: 16;
3993
4278
  /** Compose TRS (translation * rotation * scale) into a single Mat4. */
3994
4279
  export declare function mat4Compose(tx: number, ty: number, tz: number, qx: number, qy: number, qz: number, qw: number, sx: number, sy: number, sz: number): Mat4;
3995
4280
 
4281
+ /**
4282
+ * Decompose a column-major 4×4 affine matrix into translation, rotation (unit
4283
+ * quaternion), and scale. Assumes a TRS matrix (no shear). Mirror image (negative
4284
+ * determinant) matrices are not specially handled — the returned scale is always
4285
+ * non-negative, matching the rest of the engine's decompose usage.
4286
+ * @param m - Column-major 4×4 matrix.
4287
+ * @returns A new translation/rotation/scale triple.
4288
+ */
4289
+ export declare function mat4Decompose(m: Mat4): DecomposedTransform;
4290
+
3996
4291
  /** Create a rotation matrix from a quaternion. */
3997
4292
  export declare function mat4FromQuat(qx: number, qy: number, qz: number, qw: number): Mat4;
3998
4293
 
@@ -4085,7 +4380,7 @@ export declare interface MaterialVariantData {
4085
4380
  * scenes that never create views do not retain view-specific unwrap branches.
4086
4381
  *
4087
4382
  * Specialized views (e.g. the Standard geometry MRT view) override
4088
- * {@link Material._buildGroup} with a view-specific builder whose
4383
+ * `_buildGroup` with a view-specific builder whose
4089
4384
  * `_rebuildSingle` builds the right kind of Renderable — no per-family
4090
4385
  * branching is required in the core render-task. */
4091
4386
  export declare interface MaterialView extends Material {
@@ -4720,7 +5015,10 @@ export declare interface PbrMaterialProps extends Material {
4720
5015
  /** Linear-RGB tint applied to baseColor when `unlit` is true (i.e. glTF
4721
5016
  * `baseColorFactor`). When omitted or [1,1,1], no tint is applied.
4722
5017
  * Only bundled/bound when the unlit extension is active. */
4723
- unlitColor?: [number, number, number];
5018
+ unlitColor?: [number, number, number];
4724
5019
  /** Optional stencil-test state baked into the main-pass pipeline. Lets this material write the stencil buffer
5020
+ * where it draws (mask) or discard where another material wrote it. Default none. See `StencilState`. */
5021
+ stencil?: StencilState;
5022
+ }
4725
5023
 
4726
5024
  /** Configuration for a directional-light PCF shadow generator: map size, depth bias, darkness, and ortho projection bounds. */
4727
5025
  export declare interface PcfDirectionalShadowGeneratorConfig {
@@ -5187,6 +5485,7 @@ export declare interface PixelViewport {
5187
5485
  height: number;
5188
5486
  }
5189
5487
 
5488
+ /** Positioned glyph instance in pixel space, usually produced by layout before being packed into a `GlyphRun`. */
5190
5489
  export declare type PlacedGlyph = {
5191
5490
  readonly glyphId: number;
5192
5491
  /** Pixel position of glyph baseline origin. */
@@ -5199,6 +5498,7 @@ export declare type PlacedGlyph = {
5199
5498
  readonly color?: readonly [number, number, number, number];
5200
5499
  };
5201
5500
 
5501
+ /** A square planar gizmo that translates its attached node within a drag plane. */
5202
5502
  export declare interface PlaneDragGizmo {
5203
5503
  readonly root: SceneNode;
5204
5504
  readonly drag: PointerDrag;
@@ -5209,6 +5509,7 @@ export declare interface PlaneDragGizmo {
5209
5509
  useLocalCoordinates: boolean;
5210
5510
  readonly materials: GizmoMaterialSet;
5211
5511
 
5512
+ /** Options for building a planar position drag gizmo. */
5212
5513
  export declare interface PlaneDragGizmoOptions {
5213
5514
  /** World-space drag plane normal (unit vector). */
5214
5515
  dragPlaneNormal: Vec3;
@@ -5224,6 +5525,7 @@ export declare interface PlaneOptions {
5224
5525
  height?: number;
5225
5526
  }
5226
5527
 
5528
+ /** A torus-shaped gizmo that rotates its attached node around a plane normal. */
5227
5529
  export declare interface PlaneRotationGizmo {
5228
5530
  readonly root: SceneNode;
5229
5531
  readonly drag: PointerDrag;
@@ -5236,6 +5538,7 @@ export declare interface PlaneRotationGizmo {
5236
5538
  * callers can change the colour at runtime. */
5237
5539
  readonly rotationDisplayMaterial: ShaderMaterial;
5238
5540
 
5541
+ /** Options for building a rotation ring constrained to a single plane. */
5239
5542
  export declare interface PlaneRotationGizmoOptions {
5240
5543
  /** World-space rotation plane normal (unit vector). */
5241
5544
  planeNormal: Vec3;
@@ -5338,6 +5641,7 @@ export declare interface PluginUboField {
5338
5641
  readonly type: string;
5339
5642
  }
5340
5643
 
5644
+ /** Pointer-drag behavior shared by gizmos and driven by the per-canvas dispatcher. */
5341
5645
  export declare interface PointerDrag {
5342
5646
  readonly options: Readonly<PointerDragOptions>;
5343
5647
  enabled: boolean;
5344
5648
  /** Fired once when a pointer-down lands on one of `_colliders`. */
@@ -5359,10 +5663,12 @@ export declare interface PointerDrag {
5359
5663
  hovering: boolean;
5360
5664
  }
5361
5665
 
5666
+ /** Event raised when the active pointer drag is released or cancelled. */
5362
5667
  export declare interface PointerDragEndEvent {
5363
5668
  pointerEvent: PointerEvent | null;
5364
5669
  }
5365
5670
 
5671
+ /** Event raised for each pointer move while a drag is active. */
5366
5672
  export declare interface PointerDragMoveEvent {
5367
5673
  /** World-space delta from the previous drag-plane point. For axis-drag this
5368
5674
  * is already projected onto the drag axis (parallel to axis). */
@@ -5374,6 +5680,7 @@ export declare interface PointerDragMoveEvent {
5374
5680
  dragDistance: number;
5375
5681
  }
5376
5682
 
5683
+ /** Configuration for converting pointer movement into world-space drag deltas. */
5377
5684
  export declare interface PointerDragOptions {
5378
5685
  /** Drag along a single world-space axis (unit vector). Mutually exclusive
5379
5686
  * with `dragPlaneNormal`. */
@@ -5395,6 +5702,7 @@ export declare interface PointerDragOptions {
5395
5702
  getPlanePoint?: () => Vec3 | null;
5396
5703
  }
5397
5704
 
5705
+ /** Event raised when a pointer drag begins on one of the registered colliders. */
5398
5706
  export declare interface PointerDragStartEvent {
5399
5707
  /** World-space point where the ray intersected the drag plane on drag start. */
5400
5708
  dragPlanePoint: Vec3;
@@ -5427,6 +5735,7 @@ export declare interface PolyhedronOptions {
5427
5735
  flat?: boolean;
5428
5736
  }
5429
5737
 
5738
+ /** Composite translation gizmo made from X/Y/Z axis arrows and optional planar handles. */
5430
5739
  export declare interface PositionGizmo {
5431
5740
  readonly xGizmo: AxisDragGizmo;
5432
5741
  readonly yGizmo: AxisDragGizmo;
@@ -5437,6 +5746,7 @@ export declare interface PositionGizmo {
5437
5746
  attachedNode: SceneNode | null;
5438
5747
  }
5439
5748
 
5749
+ /** Options for the composite position gizmo. */
5440
5750
  export declare interface PositionGizmoOptions {
5441
5751
  /** When true, planar drag gizmos (XY/XZ/YZ) are created in addition to the
5442
5752
  * 3 axis arrows. Default false — matches BJS where `planarGizmoEnabled`
@@ -5527,6 +5837,7 @@ export declare interface PropertyAnimationTrackOptions {
5527
5837
  readonly quaternion?: boolean;
5528
5838
  }
5529
5839
 
5840
+ /** Quadratic Bézier curve describing one segment of a glyph outline in font units. */
5530
5841
  export declare type QuadCurve = {
5531
5842
  readonly p0x: number;
5532
5843
  readonly p0y: number;
@@ -5544,6 +5855,25 @@ export declare interface Quat {
5544
5855
  w: number;
5545
5856
  }
5546
5857
 
5858
+ /**
5859
+ * Build a unit quaternion that orients local +Z onto `forward` and local +Y onto
5860
+ * `up`, using a right-handed basis (`right = up × forward`). Matches Babylon.js
5861
+ * `Quaternion.FromLookDirectionRH`.
5862
+ * @param forward - Desired forward direction (should be normalized).
5863
+ * @param up - Desired up direction (should be normalized and not parallel to `forward`).
5864
+ * @returns A new `{ x, y, z, w }` quaternion.
5865
+ */
5866
+ export declare function quatFromLookDirectionRH(forward: Vec3, up: Vec3): Quat;
5867
+
5868
+ /**
5869
+ * Build a unit quaternion from the rotation part of a column-major 4×4 matrix,
5870
+ * matching Babylon.js `Quaternion.FromRotationMatrix`. The matrix's upper-left
5871
+ * 3×3 must be a pure rotation (orthonormal, no scale).
5872
+ * @param matrix - Column-major 4×4 rotation matrix.
5873
+ * @returns A new `{ x, y, z, w }` quaternion.
5874
+ */
5875
+ export declare function quatFromRotationMatrix(matrix: Mat4): Quat;
5876
+
5547
5877
  /** A ray defined by origin, direction, and length. */
5548
5878
  declare interface Ray {
5549
5879
  origin: [number, number, number];
@@ -5652,6 +5982,7 @@ export declare function registerSceneWithShadowSupport(scene: SceneContext): Pro
5652
5982
  /** Push the renderer onto its engine's `_renderingContexts`. Idempotent — a second call is a no-op. */
5653
5983
  export declare function registerSpriteRenderer(sr: SpriteRenderer): void;
5654
5984
 
5985
+ /** Register a text renderer with its surface so the engine updates and records it each frame. */
5655
5986
  export declare function registerTextRenderer(tr: TextRenderer): void;
5656
5987
 
5657
5988
  /** Register the utility layer with the engine. Must be called after the main
@@ -5751,6 +6082,9 @@ export declare function removeSpriteAnimationManager(manager: AnimationManager,
5751
6082
  /** Remove a layer from the renderer and destroy any GPU resources cached for it. */
5752
6083
  export declare function removeSpriteRendererLayer(sr: SpriteRenderer, layer: Sprite2DLayer): boolean;
5753
6084
 
6085
+ /** Remove a text layer and release its per-layer GPU buffers.
6086
+ *
6087
+ * @returns `true` when the layer was present and removed. */
5754
6088
  export declare function removeTextRendererLayer(tr: TextRenderer, layer: TextLayer): boolean;
5755
6089
 
5756
6090
  /** Remove instance by index. Swap-removes: last instance fills the gap. */
@@ -5782,6 +6116,7 @@ export declare interface Renderable {
5782
6116
  */
5783
6117
  export declare type RenderCanvas = HTMLCanvasElement | OffscreenCanvas;
5784
6118
 
6119
+ /** Render one frame for every surface registered on the engine. Updates each rendering context, records its GPU work into a shared command encoder, submits the frame, and publishes the total draw-call count. */
5785
6120
  export declare function renderFrame(engine: EngineContext, delta: number): void;
5786
6121
 
5787
6122
  /**
@@ -5989,6 +6324,7 @@ export declare interface RibbonOptions {
5989
6324
  offset?: number;
5990
6325
  }
5991
6326
 
6327
+ /** Composite rotation gizmo made from X/Y/Z plane rotation rings. */
5992
6328
  export declare interface RotationGizmo {
5993
6329
  readonly xGizmo: PlaneRotationGizmo;
5994
6330
  readonly yGizmo: PlaneRotationGizmo;
@@ -5996,11 +6332,13 @@ export declare interface RotationGizmo {
5996
6332
  attachedNode: SceneNode | null;
5997
6333
  }
5998
6334
 
6335
+ /** Options for the composite rotation gizmo. */
5999
6336
  export declare interface RotationGizmoOptions {
6000
6337
  tessellation?: number;
6001
6338
  thickness?: number;
6002
6339
  }
6003
6340
 
6341
+ /** Composite scale gizmo made from X/Y/Z axis handles and a central uniform handle. */
6004
6342
  export declare interface ScaleGizmo {
6005
6343
  readonly xGizmo: AxisScaleGizmo;
6006
6344
  readonly yGizmo: AxisScaleGizmo;
@@ -6010,6 +6348,7 @@ export declare interface ScaleGizmo {
6010
6348
  attachedNode: SceneNode | null;
6011
6349
  }
6012
6350
 
6351
+ /** Options for the composite scale gizmo. */
6013
6352
  export declare interface ScaleGizmoOptions {
6014
6353
  thickness?: number;
6015
6354
  }
@@ -6166,6 +6505,24 @@ export declare function setBillboardSpriteFrame(handle: BillboardSpriteHandle, f
6166
6505
  */
6167
6506
  export declare function setBillboardSpriteFrameIndex(system: BillboardSpriteSystem, index: number, frame: number): void;
6168
6507
 
6508
+ /** Override a bone's local translation, then re-bake. Ignored each frame for a
6509
+ * bone whose translation the playing clip animates. */
6510
+ export declare function setBonePosition(skeleton: Skeleton, bone: Bone, x: number, y: number, z: number): void;
6511
+
6512
+ /** Override a bone's local rotation (quaternion), then re-bake. Ignored each frame
6513
+ * for a bone whose rotation the playing clip animates. */
6514
+ export declare function setBoneRotationQuaternion(skeleton: Skeleton, bone: Bone, x: number, y: number, z: number, w: number): void;
6515
+
6516
+ /** Override a bone's local scale, then re-bake. Ignored each frame for a bone
6517
+ * whose scale the playing clip animates. */
6518
+ export declare function setBoneScaling(skeleton: Skeleton, bone: Bone, x: number, y: number, z: number): void;
6519
+
6520
+ /** Show or hide the sub-tree driven by a bone, the Babylon.js way: hiding scales
6521
+ * the bone to zero (collapsing it and its descendant bones to a point so the
6522
+ * skinned triangles degenerate and disappear); showing clears the scale override
6523
+ * so the bone returns to its animated / rest scale. */
6524
+ export declare function setBoneVisible(skeleton: Skeleton, bone: Bone, visible: boolean): void;
6525
+
6169
6526
  /**
6170
6527
  * Configure orbit/zoom limits on an ArcRotateCamera. This is fully opt-in and
6171
6528
  * self-contained: cameras that never call it pay zero cost and bundle no clamping
@@ -6202,6 +6559,9 @@ export declare function setCameraLimits(camera: ArcRotateCamera, limits: ArcRota
6202
6559
  */
6203
6560
  export declare function setClipPlane(scene: SceneContext, plane: ClipPlane): void;
6204
6561
 
6562
+ /** Override the base URL where draco_decoder.js and draco_decoder.wasm are hosted. */
6563
+ export declare function setDracoBaseUrl(url: string): void;
6564
+
6205
6565
  /**
6206
6566
  * Bind a texture to one of the effect's texture slots, marking the bind group dirty so it is rebuilt.
6207
6567
  * @param wrapper - The effect wrapper to update.
@@ -6283,6 +6643,19 @@ export declare function setKtx2DecoderUrl(url: string, wasmUrls?: Record<string,
6283
6643
  * and UBOs bake the cap into their WGSL/layout. */
6284
6644
  export declare function setMaxLights(n: number): void;
6285
6645
 
6646
+ /**
6647
+ * Lazy EXT_meshopt_compression decoder.
6648
+ *
6649
+ * The meshoptimizer decoder (JS glue + embedded WASM) is loaded from
6650
+ * `/meshopt_decoder.js` on first use via a `<script>` injection — exactly like
6651
+ * the Draco decoder. This keeps bundle size at zero bytes for scenes that do
6652
+ * not load meshopt-compressed glTF assets: the entire module (including this
6653
+ * file) is dynamic-imported from the meshopt feature only when an asset's
6654
+ * `extensionsUsed` lists EXT_meshopt_compression.
6655
+ */
6656
+ /** Override the base URL where meshopt_decoder.js is hosted. */
6657
+ export declare function setMeshoptBaseUrl(url: string): void;
6658
+
6286
6659
  /** Update morph target weights on CPU and GPU.
6287
6660
  * Only the first four weights are used, matching the current morph target limit.
6288
6661
  * @param engine - Engine context that owns the morph target GPU buffer.
@@ -6296,12 +6669,16 @@ export declare function setNavigationRandomSeed(plugin: NavigationPlugin, seed:
6296
6669
 
6297
6670
  /**
6298
6671
  * Reparents `child` while preserving its current world-space transform, mirroring
6299
- * Babylon.js `TransformNode.setParent()`.
6300
- * @param child - The mesh to reparent.
6672
+ * Babylon.js `TransformNode.setParent()`. Also keeps the scene-graph `children`
6673
+ * arrays consistent: the child is removed from its previous parent's `children`
6674
+ * and appended to the new parent's, so traversal helpers see the new hierarchy.
6675
+ * @param child - The node to reparent (mesh, transform node, or any scene node).
6301
6676
  * @param parent - The new parent (any world-matrix provider), or `null` to detach to world space.
6302
6677
  */
6303
6678
  export declare function setParent(child: Mesh, parent: IWorldMatrixProvider | null): void;
6304
6679
 
6680
+ export declare function setParent(child: SceneNode, parent: IWorldMatrixProvider | null): void;
6681
+
6305
6682
  /**
6306
6683
  * Set a body's angular velocity (rad/s).
6307
6684
  */
@@ -6447,6 +6824,7 @@ export declare function setPhysicsTimestep(world: PhysicsWorld, dt: number): voi
6447
6824
  */
6448
6825
  export declare function setPhysicsVelocityLimits(world: PhysicsWorld, maxLinear: number, maxAngular: number): void;
6449
6826
 
6827
+ /** Toggle whether the position gizmo axes follow the attached node's rotation. */
6450
6828
  export declare function setPositionGizmoLocalCoordinates(gizmo: PositionGizmo, useLocal: boolean): void;
6451
6829
 
6452
6830
  /** Enable or disable per-frame-graph-task GPU timing.
@@ -6458,6 +6836,7 @@ export declare function setPositionGizmoLocalCoordinates(gizmo: PositionGizmo, u
6458
6836
  */
6459
6837
  export declare function setRenderTaskGpuTimingEnabled(engine: EngineContext, enabled: boolean): Promise<RenderTaskGpuTimings>;
6460
6838
 
6839
+ /** Toggle whether the rotation rings follow the attached node's rotation. */
6461
6840
  export declare function setRotationGizmoLocalCoordinates(gizmo: RotationGizmo, useLocal: boolean): void;
6462
6841
 
6463
6842
  /** Toggle local-coord mode on the per-axis scale arrows. The uniform-scale
@@ -6628,7 +7007,11 @@ export declare interface ShaderMaterial extends Material {
6628
7007
  readonly depthCompare: GPUCompareFunction;
6629
7008
  readonly depthOnlyFragment: boolean;
6630
7009
  readonly depthBias: number;
6631
- readonly depthBiasSlopeScale: number;
7010
+ readonly depthBiasSlopeScale: number;
7011
+ /** Optional stencil-test state baked into the main-pass pipeline (mask write / discard). Set after
7012
+ * creation (`mat.stencil = { ... }`) and call `enableMaterialStencil()` before `registerScene`. Default
7013
+ * none. See `StencilState`. */
7014
+ stencil?: StencilState;
6632
7015
 
6633
7016
  /** Options describing a ShaderMaterial: WGSL sources, attributes, uniforms,
6634
7017
  * samplers, defines, and blend/depth state. Passed to `createShaderMaterial()`. */
@@ -6847,6 +7230,14 @@ export declare function showPhysicsBody(viewer: PhysicsViewer, body: PhysicsBody
6847
7230
  /** Shows a simplified Physics V2 constraint overlay: local axes (with arrowheads) plus angular-limit disks. */
6848
7231
  export declare function showPhysicsConstraint(viewer: PhysicsViewer, constraint: PhysicsConstraintDebug): Mesh[];
6849
7232
 
7233
+ /** A skinned model's skeleton — one per glTF skin, surfaced on
7234
+ * `AssetContainer.skeletons` once {@link enableBoneControl} is called. Reach its
7235
+ * bones via `skeleton.bones` / {@link getBoneByName}, and drive them via the
7236
+ * `setBone*` functions. */
7237
+ export declare interface Skeleton {
7238
+ /** Bones in glTF joint order (matches the skin's `joints` array). */
7239
+ readonly bones: readonly Bone[];
7240
+
6850
7241
  /** Connects a skeleton to its GPU bone texture for per-frame updates. */
6851
7242
  declare interface SkeletonBinding {
6852
7243
  readonly jointNodes: readonly number[];
@@ -7256,6 +7647,9 @@ export declare interface StandardMaterialProps extends Material {
7256
7647
  * on top of the built-in Standard pipeline). Attach via `material.plugins = [plugin]`,
7257
7648
  * then call `enableMaterialPlugins(scene)` before `registerScene`. */
7258
7649
  plugins?: MaterialPlugin[];
7650
+ /** Optional stencil-test state baked into the main-pass pipeline (mask write / discard). Default none.
7651
+ * See `StencilState`. */
7652
+ stencil?: StencilState;
7259
7653
  diffuseColor: [number, number, number];
7260
7654
  alpha: number;
7261
7655
  specularColor: [number, number, number];
@@ -7338,6 +7732,29 @@ export declare function startEngine(engine: EngineContext): Promise<void>;
7338
7732
  */
7339
7733
  export declare function startSpriteAnimationManager(manager: SpriteAnimationManager): void;
7340
7734
 
7735
+ /** Optional stencil-test state baked into a material's main-pass pipeline. Shared by every concrete material kind
7736
+ * (Standard, PBR, Shader) so none has to depend on another. Lets one material WRITE the stencil buffer where it
7737
+ * draws (a mask) and another DISCARD fragments where the stencil was written — with NO dynamic stencil reference:
7738
+ * a writer uses `compare:"always"` + `passOp:"increment-clamp"` (stencil 0→1 where it draws); a tester uses
7739
+ * `compare:"equal"` (passes only where the stencil is still 0, i.e. NOT written), since the render pass's default
7740
+ * stencil reference is 0. Only takes effect on a stencil-capable depth target (the main color pass); ignored on
7741
+ * depth-only/shadow targets. Assigning `material.stencil` is inert until {@link enableMaterialStencil} is called
7742
+ * (the opt-in that keeps stencil-free scenes byte-identical) — call it once before `registerScene`. */
7743
+ export declare interface StencilState {
7744
+ /** Stencil compare function, applied to front & back faces. Default `"always"`. */
7745
+ readonly compare?: GPUCompareFunction;
7746
+ /** Stencil operation when the stencil + depth tests both pass. Default `"keep"`. */
7747
+ readonly passOp?: GPUStencilOperation;
7748
+ /** Stencil operation when the stencil test fails. Default `"keep"`. */
7749
+ readonly failOp?: GPUStencilOperation;
7750
+ /** Stencil operation when the stencil test passes but depth fails. Default `"keep"`. */
7751
+ readonly depthFailOp?: GPUStencilOperation;
7752
+ /** Stencil read mask. Default `0xFF`. */
7753
+ readonly readMask?: number;
7754
+ /** Stencil write mask. Default `0xFF`. */
7755
+ readonly writeMask?: number;
7756
+ }
7757
+
7341
7758
  /** Stop playback and reset to frame 0. */
7342
7759
  export declare function stopAnimation(group: AnimationGroup): void;
7343
7760
 
@@ -7447,6 +7864,7 @@ export declare interface Task {
7447
7864
  dispose(): void;
7448
7865
  }
7449
7866
 
7867
+ /** Mutable text block data containing glyph runs and the packed per-glyph instance buffer consumed by text renderers. */
7450
7868
  export declare interface TextData {
7451
7869
  readonly [textDataBrand]: true;
7452
7870
  /** Live, in-insertion-order view of the runs currently rendered. Mutated by
@@ -7500,6 +7918,7 @@ export declare interface TextLayer {
7500
7918
  readonly data: TextData;
7501
7919
  opacity: number;
7502
7920
  visible: boolean;
7503
7921
 
7922
+ /** Initial placement and compositing options for a 2D text layer in a standalone text renderer. */
7504
7923
  export declare interface TextLayerOptions {
7505
7924
  /** Top-left origin (in canvas pixels) for the layer's local coordinate frame. Default (0, 0). */
7506
7925
  readonly positionPx?: {
@@ -7518,6 +7937,7 @@ export declare interface TextLayerOptions {
7518
7937
  readonly visible?: boolean;
7519
7938
  }
7520
7939
 
7940
+ /** Options for the default text layout helper, expressed in output pixels with simple LTR word wrapping. */
7521
7941
  export declare type TextLayoutOptions = {
7522
7942
  /** Max line width in pixels before word-wrap. Default: Infinity. */
7523
7943
  readonly maxWidth?: number;
@@ -7531,6 +7951,7 @@ export declare type TextLayoutOptions = {
7531
7951
  readonly tabSize?: number;
7532
7952
  };
7533
7953
 
7954
+ /** Scene renderable that draws a `TextData` block with mesh-like transform controls. */
7534
7955
  export declare interface TextRenderable extends Renderable {
7535
7956
  readonly position: ObservableVec3;
7536
7957
  readonly rotation: EulerProxy;
7537
7958
  readonly rotationQuaternion: ObservableQuat;
@@ -7540,6 +7961,7 @@ export declare interface TextRenderable extends Renderable {
7540
7961
  readonly positi
7541
7962
  ignoreDepth: boolean;
7542
7963
  order: number;
7543
7964
 
7965
+ /** Initial transform and draw options for a scene-attached text renderable. */
7544
7966
  export declare interface TextRenderableOptions {
7545
7967
  readonly position?: Readonly<Vec3>;
7546
7968
  readonly rotationQuaternion?: {
@@ -7556,8 +7978,10 @@ export declare interface TextRenderableOptions {
7556
7978
  readonly order?: number;
7557
7979
  }
7558
7980
 
7981
+ /** Standalone rendering context that draws sorted 2D text layers directly to the swapchain. */
7559
7982
  export declare interface TextRenderer extends RenderingContext_2 {
7560
7983
  readonly layers: readonly TextLayer[];
7561
7984
 
7985
+ /** Options for creating a standalone text renderer that draws directly to a surface. */
7562
7986
  export declare interface TextRendererOptions {
7563
7987
  layers: readonly TextLayer[];
7564
7988
  /** Default true. Set false for HUD overlays so the text pass preserves existing scene color. */
@@ -7718,6 +8142,7 @@ export declare interface TranslucencyProps {
7718
8142
  diffusionDistance?: [number, number, number];
7719
8143
  }
7720
8144
 
8145
+ /** Options controlling how a render task exposes opaque scene color to transmissive materials. Use these to opt out of the linear offscreen path, control refresh frequency, and limit mipmap generation cost. */
7721
8146
  export declare interface TransmissionOptions {
7722
8147
  /** When true (the default), retarget the task's color buffer to a linear `rgba16float`
7723
8148
  * offscreen and tone-map it in a trailing image-processing pass — the model PBR
@@ -7792,6 +8217,7 @@ export declare function unregisterScene(scene: SceneContext): void;
7792
8217
  /** Splice the renderer out of its engine's `_renderingContexts`. No-op if not present. */
7793
8218
  export declare function unregisterSpriteRenderer(sr: SpriteRenderer): void;
7794
8219
 
8220
+ /** Unregister a text renderer from its surface without disposing its layer data. */
7795
8221
  export declare function unregisterTextRenderer(tr: TextRenderer): void;
7796
8222
 
7797
8223
  /** Advances every active task by `deltaMs` (or by `fixedDeltaMs` when set), running the category handler first.
@@ -7887,6 +8313,10 @@ export declare function updateSprite2DIndex(layer: Sprite2DLayer, index: number,
7887
8313
  */
7888
8314
  export declare function updateSpriteAnimationManager(manager: SpriteAnimationManager, deltaMs: number): void;
7889
8315
 
8316
+ /** Apply an incremental edit to a `TextData`, such as adding, removing, replacing, or compacting runs.
8317
+ *
8318
+ * @param data - Text data block to update.
8319
+ * @param update - Discriminated update operation to apply. */
7890
8320
  export declare function updateTextData(data: TextData, update: TextDataUpdate): void;
7891
8321
 
7892
8322
  /**
@@ -7914,6 +8344,7 @@ export declare interface UtilityLayer {
7914
8344
  readonly mainScene: SceneContext;
7915
8345
  }
7916
8346
 
8347
+ /** Options used when creating a utility layer for gizmos and overlays. */
7917
8348
  export declare interface UtilityLayerOptions {
7918
8349
  /** Add a built-in hemispheric light so gizmo materials are visible without
7919
8350
  * the caller adding one. Defaults to true. */