@woosh/meep-engine 3.52.0 → 3.54.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 (515) hide show
  1. package/package.json +1 -1
  2. package/src/core/math/noise/worley_noise_2d.d.ts +14 -0
  3. package/src/core/math/noise/worley_noise_2d.d.ts.map +1 -0
  4. package/src/core/math/noise/worley_noise_2d.js +74 -0
  5. package/src/engine/ecs/animation/Animation.d.ts +4 -25
  6. package/src/engine/ecs/animation/Animation.d.ts.map +1 -1
  7. package/src/engine/ecs/animation/Animation.js +9 -41
  8. package/src/engine/ecs/ik/IKGoalSystem.d.ts +4 -5
  9. package/src/engine/ecs/ik/IKGoalSystem.d.ts.map +1 -1
  10. package/src/engine/ecs/ik/IKGoalSystem.js +4 -6
  11. package/src/engine/graphics/ecs/mesh/assetTypeByPath.js +1 -1
  12. package/src/engine/graphics/texture/atlas/CachingTextureAtlas.d.ts +6 -1
  13. package/src/engine/graphics/texture/atlas/CachingTextureAtlas.d.ts.map +1 -1
  14. package/src/engine/graphics/texture/atlas/CachingTextureAtlas.js +363 -325
  15. package/src/engine/graphics/texture/atlas/ManagedTextureAtlas.d.ts +93 -14
  16. package/src/engine/graphics/texture/atlas/ManagedTextureAtlas.d.ts.map +1 -1
  17. package/src/engine/graphics/texture/atlas/ManagedTextureAtlas.js +322 -183
  18. package/src/engine/graphics/texture/atlas/ReferencedTextureAtlas.d.ts +9 -0
  19. package/src/engine/graphics/texture/atlas/ReferencedTextureAtlas.d.ts.map +1 -1
  20. package/src/engine/graphics/texture/atlas/ReferencedTextureAtlas.js +110 -83
  21. package/src/engine/graphics/texture/atlas/SpriteAtlas.d.ts +42 -0
  22. package/src/engine/graphics/texture/atlas/SpriteAtlas.d.ts.map +1 -0
  23. package/src/engine/{graphics3/decal/DecalAtlas.js → graphics/texture/atlas/SpriteAtlas.js} +202 -194
  24. package/src/engine/graphics/texture/atlas/SpriteAtlasFill.d.ts +12 -0
  25. package/src/engine/graphics/texture/atlas/SpriteAtlasFill.d.ts.map +1 -0
  26. package/src/engine/graphics/texture/atlas/SpriteAtlasFill.js +30 -0
  27. package/src/engine/graphics/texture/atlas/TextureAtlas.d.ts +7 -0
  28. package/src/engine/graphics/texture/atlas/TextureAtlas.d.ts.map +1 -1
  29. package/src/engine/graphics/texture/atlas/TextureAtlas.js +11 -1
  30. package/src/engine/graphics/texture/atlas/sprite_atlas_border.d.ts +52 -0
  31. package/src/engine/graphics/texture/atlas/sprite_atlas_border.d.ts.map +1 -0
  32. package/src/engine/{graphics3/decal/decal_atlas_border.js → graphics/texture/atlas/sprite_atlas_border.js} +69 -69
  33. package/src/engine/graphics3/AnimationGraphSystem.d.ts +9 -22
  34. package/src/engine/graphics3/AnimationGraphSystem.d.ts.map +1 -1
  35. package/src/engine/graphics3/AnimationGraphSystem.js +58 -203
  36. package/src/engine/graphics3/AnimationSystem.d.ts +7 -18
  37. package/src/engine/graphics3/AnimationSystem.d.ts.map +1 -1
  38. package/src/engine/graphics3/AnimationSystem.js +62 -243
  39. package/src/engine/graphics3/DecalSystem.d.ts.map +1 -1
  40. package/src/engine/graphics3/DecalSystem.js +447 -450
  41. package/src/engine/graphics3/FoliageWindSystem.d.ts +67 -0
  42. package/src/engine/graphics3/FoliageWindSystem.d.ts.map +1 -0
  43. package/src/engine/graphics3/FoliageWindSystem.js +257 -0
  44. package/src/engine/graphics3/GPUFluidSystem.d.ts +7 -0
  45. package/src/engine/graphics3/GPUFluidSystem.d.ts.map +1 -1
  46. package/src/engine/graphics3/GPUFluidSystem.js +39 -1
  47. package/src/engine/graphics3/GPUParticleEmitterSystem.d.ts +9 -23
  48. package/src/engine/graphics3/GPUParticleEmitterSystem.d.ts.map +1 -1
  49. package/src/engine/graphics3/GPUParticleEmitterSystem.js +904 -949
  50. package/src/engine/graphics3/animation/AnimationClips.d.ts +107 -13
  51. package/src/engine/graphics3/animation/AnimationClips.d.ts.map +1 -1
  52. package/src/engine/graphics3/animation/AnimationClips.js +207 -10
  53. package/src/engine/graphics3/animation/AnimationClipsSink.d.ts +89 -0
  54. package/src/engine/graphics3/animation/AnimationClipsSink.d.ts.map +1 -0
  55. package/src/engine/graphics3/animation/AnimationClipsSink.js +205 -0
  56. package/src/engine/graphics3/animation/FoliageWindRigs.d.ts +43 -0
  57. package/src/engine/graphics3/animation/FoliageWindRigs.d.ts.map +1 -0
  58. package/src/engine/graphics3/animation/FoliageWindRigs.js +69 -0
  59. package/src/engine/graphics3/animation/write_clip_playback.d.ts +17 -11
  60. package/src/engine/graphics3/animation/write_clip_playback.d.ts.map +1 -1
  61. package/src/engine/graphics3/animation/write_clip_playback.js +36 -27
  62. package/src/engine/graphics3/decal/GPUDecalRenderer.d.ts.map +1 -1
  63. package/src/engine/graphics3/decal/GPUDecalRenderer.js +8 -6
  64. package/src/engine/graphics3/decal/shader_decal_composite.d.ts.map +1 -1
  65. package/src/engine/graphics3/decal/shader_decal_composite.js +11 -5
  66. package/src/engine/graphics3/pose/collect_entity_playbacks.d.ts +7 -7
  67. package/src/engine/graphics3/pose/collect_entity_playbacks.d.ts.map +1 -1
  68. package/src/engine/graphics3/pose/collect_entity_playbacks.js +14 -15
  69. package/src/engine/graphics3/prefab/Prefab.d.ts +6 -0
  70. package/src/engine/graphics3/prefab/Prefab.d.ts.map +1 -1
  71. package/src/engine/graphics3/prefab/Prefab.js +169 -162
  72. package/src/engine/graphics3/prefab/prefab_compile.d.ts.map +1 -1
  73. package/src/engine/graphics3/prefab/prefab_compile.js +369 -334
  74. package/src/engine/graphics3/prefab/prefab_instantiate.d.ts.map +1 -1
  75. package/src/engine/graphics3/prefab/prefab_instantiate.js +43 -2
  76. package/src/engine/graphics3/terrain/chunk_terrain_material_surface.js +2 -2
  77. package/src/engine/physics/ecs/ContactProbeSystem.d.ts +2 -3
  78. package/src/engine/physics/ecs/ContactProbeSystem.d.ts.map +1 -1
  79. package/src/engine/physics/ecs/ContactProbeSystem.js +2 -4
  80. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
  81. package/src/engine/sound/simulation/PROBE_PLACEMENT.md +4 -4
  82. package/src/engine/sound/simulation/README.md +1 -1
  83. package/src/engine/sound/simulation/probe/bakeProbeField.d.ts +22 -8
  84. package/src/engine/sound/simulation/probe/bakeProbeField.d.ts.map +1 -1
  85. package/src/engine/sound/simulation/probe/bakeProbeField.js +60 -15
  86. package/src/engine/sound/simulation/probe/bakeProbeReflectors.d.ts.map +1 -1
  87. package/src/engine/sound/simulation/probe/bakeProbeReflectors.js +19 -23
  88. package/src/engine/sound/simulation/probe/probe_sdf_grid.d.ts +63 -17
  89. package/src/engine/sound/simulation/probe/probe_sdf_grid.d.ts.map +1 -1
  90. package/src/engine/sound/simulation/probe/probe_sdf_grid.js +67 -17
  91. package/src/generation/foliage/FOLIAGE_DESIGN.md +319 -0
  92. package/src/generation/foliage/FOLIAGE_PLAN.md +198 -0
  93. package/src/generation/foliage/animation/build_tree_wind_rig.d.ts +20 -0
  94. package/src/generation/foliage/animation/build_tree_wind_rig.d.ts.map +1 -0
  95. package/src/generation/foliage/animation/build_tree_wind_rig.js +108 -0
  96. package/src/generation/foliage/asset/TreeAsset.d.ts +86 -0
  97. package/src/generation/foliage/asset/TreeAsset.d.ts.map +1 -0
  98. package/src/generation/foliage/asset/TreeAsset.js +111 -0
  99. package/src/generation/foliage/asset/TreeLODAsset.d.ts +115 -0
  100. package/src/generation/foliage/asset/TreeLODAsset.d.ts.map +1 -0
  101. package/src/generation/foliage/asset/TreeLODAsset.js +346 -0
  102. package/src/generation/foliage/asset/generate_tree.d.ts +15 -0
  103. package/src/generation/foliage/asset/generate_tree.d.ts.map +1 -0
  104. package/src/generation/foliage/asset/generate_tree.js +93 -0
  105. package/src/generation/foliage/asset/place_tree.d.ts +82 -0
  106. package/src/generation/foliage/asset/place_tree.d.ts.map +1 -0
  107. package/src/generation/foliage/asset/place_tree.js +194 -0
  108. package/src/generation/foliage/config/BarkMaterialConfig.d.ts +121 -0
  109. package/src/generation/foliage/config/BarkMaterialConfig.d.ts.map +1 -0
  110. package/src/generation/foliage/config/BarkMaterialConfig.js +250 -0
  111. package/src/generation/foliage/config/BranchLevelConfig.d.ts +288 -0
  112. package/src/generation/foliage/config/BranchLevelConfig.d.ts.map +1 -0
  113. package/src/generation/foliage/config/BranchLevelConfig.js +536 -0
  114. package/src/generation/foliage/config/CrownConfig.d.ts +100 -0
  115. package/src/generation/foliage/config/CrownConfig.d.ts.map +1 -0
  116. package/src/generation/foliage/config/CrownConfig.js +186 -0
  117. package/src/generation/foliage/config/CrownEnvelopeType.d.ts +16 -0
  118. package/src/generation/foliage/config/CrownEnvelopeType.d.ts.map +1 -0
  119. package/src/generation/foliage/config/CrownEnvelopeType.js +17 -0
  120. package/src/generation/foliage/config/FoliageBarkType.d.ts +11 -0
  121. package/src/generation/foliage/config/FoliageBarkType.d.ts.map +1 -0
  122. package/src/generation/foliage/config/FoliageBarkType.js +16 -0
  123. package/src/generation/foliage/config/FoliageCardType.d.ts +12 -0
  124. package/src/generation/foliage/config/FoliageCardType.d.ts.map +1 -0
  125. package/src/generation/foliage/config/FoliageCardType.js +18 -0
  126. package/src/generation/foliage/config/FoliageConfig.d.ts +151 -0
  127. package/src/generation/foliage/config/FoliageConfig.d.ts.map +1 -0
  128. package/src/generation/foliage/config/FoliageConfig.js +283 -0
  129. package/src/generation/foliage/config/FoliageMaterialConfig.d.ts +143 -0
  130. package/src/generation/foliage/config/FoliageMaterialConfig.d.ts.map +1 -0
  131. package/src/generation/foliage/config/FoliageMaterialConfig.js +279 -0
  132. package/src/generation/foliage/config/PhyllotaxisMode.d.ts +13 -0
  133. package/src/generation/foliage/config/PhyllotaxisMode.d.ts.map +1 -0
  134. package/src/generation/foliage/config/PhyllotaxisMode.js +20 -0
  135. package/src/generation/foliage/config/TreeLODConfig.d.ts +87 -0
  136. package/src/generation/foliage/config/TreeLODConfig.d.ts.map +1 -0
  137. package/src/generation/foliage/config/TreeLODConfig.js +211 -0
  138. package/src/generation/foliage/config/TreePreset.d.ts +16 -0
  139. package/src/generation/foliage/config/TreePreset.d.ts.map +1 -0
  140. package/src/generation/foliage/config/TreePreset.js +17 -0
  141. package/src/generation/foliage/config/TreeSpeciesConfig.d.ts +109 -0
  142. package/src/generation/foliage/config/TreeSpeciesConfig.d.ts.map +1 -0
  143. package/src/generation/foliage/config/TreeSpeciesConfig.js +400 -0
  144. package/src/generation/foliage/config/TreeWindConfig.d.ts +84 -0
  145. package/src/generation/foliage/config/TreeWindConfig.d.ts.map +1 -0
  146. package/src/generation/foliage/config/TreeWindConfig.js +157 -0
  147. package/src/generation/foliage/index.d.ts +39 -0
  148. package/src/generation/foliage/index.d.ts.map +1 -0
  149. package/src/generation/foliage/index.js +44 -0
  150. package/src/generation/foliage/material/make_bark_material.d.ts +37 -0
  151. package/src/generation/foliage/material/make_bark_material.d.ts.map +1 -0
  152. package/src/generation/foliage/material/make_bark_material.js +730 -0
  153. package/src/generation/foliage/material/make_foliage_material.d.ts +40 -0
  154. package/src/generation/foliage/material/make_foliage_material.d.ts.map +1 -0
  155. package/src/generation/foliage/material/make_foliage_material.js +605 -0
  156. package/src/generation/foliage/mesh/branch_collar_project.d.ts +42 -0
  157. package/src/generation/foliage/mesh/branch_collar_project.d.ts.map +1 -0
  158. package/src/generation/foliage/mesh/branch_collar_project.js +205 -0
  159. package/src/generation/foliage/mesh/branch_ring_triangulate.d.ts +35 -0
  160. package/src/generation/foliage/mesh/branch_ring_triangulate.d.ts.map +1 -0
  161. package/src/generation/foliage/mesh/branch_ring_triangulate.js +72 -0
  162. package/src/generation/foliage/mesh/foliage_collect_attachments.d.ts +95 -0
  163. package/src/generation/foliage/mesh/foliage_collect_attachments.d.ts.map +1 -0
  164. package/src/generation/foliage/mesh/foliage_collect_attachments.js +569 -0
  165. package/src/generation/foliage/mesh/tree_mesh_apply_canopy_ao.d.ts +19 -0
  166. package/src/generation/foliage/mesh/tree_mesh_apply_canopy_ao.d.ts.map +1 -0
  167. package/src/generation/foliage/mesh/tree_mesh_apply_canopy_ao.js +150 -0
  168. package/src/generation/foliage/mesh/tree_mesh_build_bark.d.ts +55 -0
  169. package/src/generation/foliage/mesh/tree_mesh_build_bark.d.ts.map +1 -0
  170. package/src/generation/foliage/mesh/tree_mesh_build_bark.js +1049 -0
  171. package/src/generation/foliage/mesh/tree_mesh_build_foliage.d.ts +22 -0
  172. package/src/generation/foliage/mesh/tree_mesh_build_foliage.d.ts.map +1 -0
  173. package/src/generation/foliage/mesh/tree_mesh_build_foliage.js +454 -0
  174. package/src/generation/foliage/presets/make_tree_species_preset.d.ts +13 -0
  175. package/src/generation/foliage/presets/make_tree_species_preset.d.ts.map +1 -0
  176. package/src/generation/foliage/presets/make_tree_species_preset.js +870 -0
  177. package/src/generation/foliage/skeleton/TreeSkeleton.d.ts +443 -0
  178. package/src/generation/foliage/skeleton/TreeSkeleton.d.ts.map +1 -0
  179. package/src/generation/foliage/skeleton/TreeSkeleton.js +1100 -0
  180. package/src/generation/foliage/skeleton/crown_envelope_evaluate.d.ts +27 -0
  181. package/src/generation/foliage/skeleton/crown_envelope_evaluate.d.ts.map +1 -0
  182. package/src/generation/foliage/skeleton/crown_envelope_evaluate.js +121 -0
  183. package/src/generation/foliage/skeleton/spine_frame_double_reflection.d.ts +32 -0
  184. package/src/generation/foliage/skeleton/spine_frame_double_reflection.d.ts.map +1 -0
  185. package/src/generation/foliage/skeleton/spine_frame_double_reflection.js +87 -0
  186. package/src/generation/foliage/skeleton/tree_skeleton_assign_skin_joints.d.ts +33 -0
  187. package/src/generation/foliage/skeleton/tree_skeleton_assign_skin_joints.d.ts.map +1 -0
  188. package/src/generation/foliage/skeleton/tree_skeleton_assign_skin_joints.js +205 -0
  189. package/src/generation/foliage/skeleton/tree_skeleton_compute_pipe_radii.d.ts +17 -0
  190. package/src/generation/foliage/skeleton/tree_skeleton_compute_pipe_radii.d.ts.map +1 -0
  191. package/src/generation/foliage/skeleton/tree_skeleton_compute_pipe_radii.js +206 -0
  192. package/src/generation/foliage/skeleton/tree_skeleton_grow.d.ts +18 -0
  193. package/src/generation/foliage/skeleton/tree_skeleton_grow.d.ts.map +1 -0
  194. package/src/generation/foliage/skeleton/tree_skeleton_grow.js +1871 -0
  195. package/src/shade/playground/additive_blending/index.html +197 -0
  196. package/src/shade/playground/additive_blending/main.d.ts +2 -0
  197. package/src/shade/playground/additive_blending/main.d.ts.map +1 -0
  198. package/src/shade/playground/additive_blending/main.js +529 -0
  199. package/src/shade/playground/foliage_wind/README.md +18 -0
  200. package/src/shade/playground/foliage_wind/foliage_world.d.ts +133 -0
  201. package/src/shade/playground/foliage_wind/foliage_world.d.ts.map +1 -0
  202. package/src/shade/playground/foliage_wind/foliage_world.js +602 -0
  203. package/src/shade/playground/foliage_wind/index.html +260 -0
  204. package/src/shade/playground/foliage_wind/main.d.ts +2 -0
  205. package/src/shade/playground/foliage_wind/main.d.ts.map +1 -0
  206. package/src/shade/playground/foliage_wind/main.js +275 -0
  207. package/src/shade/renderer/Renderer.d.ts.map +1 -1
  208. package/src/shade/renderer/Renderer.js +45 -16
  209. package/src/shade/renderer/animation/ADDITIVE_BLENDING_PLAN.md +145 -0
  210. package/src/shade/renderer/animation/ANIMATION_DATABASE_SPEC.d.ts +9 -1
  211. package/src/shade/renderer/animation/ANIMATION_DATABASE_SPEC.d.ts.map +1 -1
  212. package/src/shade/renderer/animation/ANIMATION_DATABASE_SPEC.js +53 -1
  213. package/src/shade/renderer/animation/ANIMATION_FOLIAGE_JOINT_STRUCT.d.ts +8 -0
  214. package/src/shade/renderer/animation/ANIMATION_FOLIAGE_JOINT_STRUCT.d.ts.map +1 -0
  215. package/src/shade/renderer/animation/ANIMATION_FOLIAGE_JOINT_STRUCT.js +71 -0
  216. package/src/shade/renderer/animation/ANIMATION_FOLIAGE_RIG_STRUCT.d.ts +11 -0
  217. package/src/shade/renderer/animation/ANIMATION_FOLIAGE_RIG_STRUCT.d.ts.map +1 -0
  218. package/src/shade/renderer/animation/ANIMATION_FOLIAGE_RIG_STRUCT.js +32 -0
  219. package/src/shade/renderer/animation/GPUAnimationManager.d.ts +30 -3
  220. package/src/shade/renderer/animation/GPUAnimationManager.d.ts.map +1 -1
  221. package/src/shade/renderer/animation/GPUAnimationManager.js +532 -79
  222. package/src/shade/renderer/animation/POSE_ACCUMULATOR_LAYOUT.d.ts +19 -12
  223. package/src/shade/renderer/animation/POSE_ACCUMULATOR_LAYOUT.d.ts.map +1 -1
  224. package/src/shade/renderer/animation/POSE_ACCUMULATOR_LAYOUT.js +20 -13
  225. package/src/shade/renderer/animation/ShadeAnimationClip.d.ts +35 -8
  226. package/src/shade/renderer/animation/ShadeAnimationClip.d.ts.map +1 -1
  227. package/src/shade/renderer/animation/ShadeAnimationClip.js +433 -2
  228. package/src/shade/renderer/animation/chunk_pose_accumulator.d.ts.map +1 -1
  229. package/src/shade/renderer/animation/chunk_pose_accumulator.js +40 -32
  230. package/src/shade/renderer/animation/foliage/FoliageWindJoint.d.ts +97 -0
  231. package/src/shade/renderer/animation/foliage/FoliageWindJoint.d.ts.map +1 -0
  232. package/src/shade/renderer/animation/foliage/FoliageWindJoint.js +161 -0
  233. package/src/shade/renderer/animation/foliage/FoliageWindRig.d.ts +65 -0
  234. package/src/shade/renderer/animation/foliage/FoliageWindRig.d.ts.map +1 -0
  235. package/src/shade/renderer/animation/foliage/FoliageWindRig.js +89 -0
  236. package/src/shade/renderer/animation/foliage/chunk_foliage_wind_step.d.ts +19 -0
  237. package/src/shade/renderer/animation/foliage/chunk_foliage_wind_step.d.ts.map +1 -0
  238. package/src/shade/renderer/animation/foliage/chunk_foliage_wind_step.js +143 -0
  239. package/src/shade/renderer/animation/foliage/shader_foliage_wind_apply.d.ts +14 -0
  240. package/src/shade/renderer/animation/foliage/shader_foliage_wind_apply.d.ts.map +1 -0
  241. package/src/shade/renderer/animation/foliage/shader_foliage_wind_apply.js +116 -0
  242. package/src/shade/renderer/animation/pose/pose_evaluate_local.d.ts.map +1 -1
  243. package/src/shade/renderer/animation/pose/pose_evaluate_local.js +39 -29
  244. package/src/shade/renderer/animation/shader_animation_pose_resolve.js +37 -37
  245. package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.js +2 -2
  246. package/src/shade/renderer/extension/RenderExtension.d.ts +7 -0
  247. package/src/shade/renderer/extension/RenderExtension.d.ts.map +1 -1
  248. package/src/shade/renderer/extension/RenderExtension.js +9 -0
  249. package/src/shade/renderer/extension/RenderExtensionRegistry.d.ts +6 -0
  250. package/src/shade/renderer/extension/RenderExtensionRegistry.d.ts.map +1 -1
  251. package/src/shade/renderer/extension/RenderExtensionRegistry.js +15 -0
  252. package/src/shade/renderer/fluid/GPUFluidCascade.d.ts +10 -3
  253. package/src/shade/renderer/fluid/GPUFluidCascade.d.ts.map +1 -1
  254. package/src/shade/renderer/fluid/GPUFluidCascade.js +15 -0
  255. package/src/shade/renderer/fluid/GPUFluidCascadeStack.d.ts +8 -1
  256. package/src/shade/renderer/fluid/GPUFluidCascadeStack.d.ts.map +1 -1
  257. package/src/shade/renderer/fluid/GPUFluidCascadeStack.js +11 -0
  258. package/src/shade/renderer/fluid/coupling/chunk_fluid_cascade_parent.d.ts.map +1 -1
  259. package/src/shade/renderer/fluid/coupling/chunk_fluid_cascade_parent.js +51 -48
  260. package/src/shade/renderer/fluid/forcing/GPUFluidForcing.d.ts +6 -6
  261. package/src/shade/renderer/fluid/mac/FluidMacPasses.d.ts +6 -0
  262. package/src/shade/renderer/fluid/mac/FluidMacPasses.d.ts.map +1 -1
  263. package/src/shade/renderer/fluid/mac/FluidMacPasses.js +16 -0
  264. package/src/shade/renderer/fluid/mac/chunk_fluid_mac_seams.d.ts.map +1 -1
  265. package/src/shade/renderer/fluid/mac/chunk_fluid_mac_seams.js +15 -3
  266. package/src/shade/renderer/fluid/mac/chunk_v3_mac_lattice_corners.d.ts.map +1 -1
  267. package/src/shade/renderer/fluid/mac/chunk_v3_mac_lattice_corners.js +102 -96
  268. package/src/shade/renderer/fluid/mac/shader_fluid_mac_advect_correct.js +12 -12
  269. package/src/shade/renderer/fluid/mac/shader_fluid_mac_advect_predict.js +12 -12
  270. package/src/shade/renderer/fluid/pressure/GPUFluidPressureSolve.d.ts +8 -1
  271. package/src/shade/renderer/fluid/pressure/GPUFluidPressureSolve.d.ts.map +1 -1
  272. package/src/shade/renderer/fluid/pressure/GPUFluidPressureSolve.js +16 -0
  273. package/src/shade/renderer/fluid/publish/FluidWindPublish.d.ts +7 -0
  274. package/src/shade/renderer/fluid/publish/FluidWindPublish.d.ts.map +1 -1
  275. package/src/shade/renderer/fluid/publish/FluidWindPublish.js +10 -0
  276. package/src/shade/renderer/fluid/query/GPUFluidQueries.d.ts +1 -1
  277. package/src/shade/renderer/geometry/bvh/GPUBLASRefitBatch.js +2 -2
  278. package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.js +1 -1
  279. package/src/shade/renderer/hiz/HierarchicalZBuffer.d.ts +3 -3
  280. package/src/shade/renderer/hiz/HierarchicalZBuffer.d.ts.map +1 -1
  281. package/src/shade/renderer/hiz/HierarchicalZBuffer.js +350 -294
  282. package/src/shade/renderer/hiz/generate_downsampler_code.d.ts +0 -2
  283. package/src/shade/renderer/hiz/generate_downsampler_code.d.ts.map +1 -1
  284. package/src/shade/renderer/hiz/generate_downsampler_code.js +99 -100
  285. package/src/shade/renderer/hiz/hzb_pick_alignment.d.ts +15 -0
  286. package/src/shade/renderer/hiz/hzb_pick_alignment.d.ts.map +1 -0
  287. package/src/shade/renderer/hiz/hzb_pick_alignment.js +148 -0
  288. package/src/shade/renderer/hiz/hzb_plan_reduction_steps.d.ts +28 -0
  289. package/src/shade/renderer/hiz/hzb_plan_reduction_steps.d.ts.map +1 -0
  290. package/src/shade/renderer/hiz/hzb_plan_reduction_steps.js +58 -0
  291. package/src/shade/renderer/hiz/shader_hzb_reduce_any.d.ts +5 -5
  292. package/src/shade/renderer/hiz/shader_hzb_reduce_any.d.ts.map +1 -1
  293. package/src/shade/renderer/hiz/shader_hzb_reduce_any.js +57 -67
  294. package/src/shade/renderer/hiz/shader_hzb_reduce_mip0_clip.d.ts +3 -3
  295. package/src/shade/renderer/hiz/shader_hzb_reduce_mip0_clip.d.ts.map +1 -1
  296. package/src/shade/renderer/hiz/shader_hzb_reduce_mip0_clip.js +111 -112
  297. package/src/shade/renderer/hiz/shader_hzb_spd.d.ts +5 -0
  298. package/src/shade/renderer/hiz/shader_hzb_spd.d.ts.map +1 -0
  299. package/src/shade/renderer/hiz/shader_hzb_spd.js +160 -0
  300. package/src/shade/renderer/light/GPULightCollection.d.ts +8 -0
  301. package/src/shade/renderer/light/GPULightCollection.d.ts.map +1 -1
  302. package/src/shade/renderer/light/GPULightCollection.js +67 -0
  303. package/src/shade/renderer/light/environment/FAR_FIELD_IRRADIANCE_SH_RESOURCE.d.ts +7 -0
  304. package/src/shade/renderer/light/environment/FAR_FIELD_IRRADIANCE_SH_RESOURCE.d.ts.map +1 -0
  305. package/src/shade/renderer/light/environment/FAR_FIELD_IRRADIANCE_SH_RESOURCE.js +13 -0
  306. package/src/shade/renderer/light/environment/shader_project_far_field_irradiance_sh.d.ts +10 -0
  307. package/src/shade/renderer/light/environment/shader_project_far_field_irradiance_sh.d.ts.map +1 -0
  308. package/src/shade/renderer/light/environment/shader_project_far_field_irradiance_sh.js +72 -0
  309. package/src/shade/renderer/light/world_cluster/WORLD_LIGHT_CLUSTER.d.ts +39 -0
  310. package/src/shade/renderer/light/world_cluster/WORLD_LIGHT_CLUSTER.d.ts.map +1 -0
  311. package/src/shade/renderer/light/world_cluster/WORLD_LIGHT_CLUSTER.js +90 -0
  312. package/src/shade/renderer/light/world_cluster/chunk_world_light_cluster_lookup.d.ts +12 -0
  313. package/src/shade/renderer/light/world_cluster/chunk_world_light_cluster_lookup.d.ts.map +1 -0
  314. package/src/shade/renderer/light/world_cluster/chunk_world_light_cluster_lookup.js +56 -0
  315. package/src/shade/renderer/light/world_cluster/graph_build_world_light_clusters.d.ts +31 -0
  316. package/src/shade/renderer/light/world_cluster/graph_build_world_light_clusters.d.ts.map +1 -0
  317. package/src/shade/renderer/light/world_cluster/graph_build_world_light_clusters.js +196 -0
  318. package/src/shade/renderer/light/world_cluster/shader_world_cluster_assign_lights.d.ts +10 -0
  319. package/src/shade/renderer/light/world_cluster/shader_world_cluster_assign_lights.d.ts.map +1 -0
  320. package/src/shade/renderer/light/world_cluster/shader_world_cluster_assign_lights.js +163 -0
  321. package/src/shade/renderer/light/world_cluster/shader_world_cluster_cull_lights.d.ts +4 -0
  322. package/src/shade/renderer/light/world_cluster/shader_world_cluster_cull_lights.d.ts.map +1 -0
  323. package/src/shade/renderer/light/world_cluster/shader_world_cluster_cull_lights.js +137 -0
  324. package/src/shade/renderer/loader/SceneBundle.d.ts +7 -0
  325. package/src/shade/renderer/loader/SceneBundle.d.ts.map +1 -1
  326. package/src/shade/renderer/loader/SceneBundle.js +119 -111
  327. package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts +1 -1
  328. package/src/shade/renderer/material/standard/fragment_gbuffer.d.ts +4 -0
  329. package/src/shade/renderer/material/standard/fragment_gbuffer.d.ts.map +1 -1
  330. package/src/shade/renderer/material/standard/fragment_gbuffer.js +6 -5
  331. package/src/shade/renderer/object_property/chunk_write_object_property_node3d.d.ts +8 -7
  332. package/src/shade/renderer/object_property/chunk_write_object_property_node3d.d.ts.map +1 -1
  333. package/src/shade/renderer/object_property/chunk_write_object_property_node3d.js +9 -8
  334. package/src/shade/renderer/particles/GPUParticleSystem.d.ts.map +1 -1
  335. package/src/shade/renderer/particles/GPUParticleSystem.js +4 -1
  336. package/src/shade/renderer/particles/graph_particles_avboit.d.ts +4 -3
  337. package/src/shade/renderer/particles/graph_particles_avboit.d.ts.map +1 -1
  338. package/src/shade/renderer/particles/graph_particles_avboit.js +28 -11
  339. package/src/shade/renderer/particles/shaders/chunk_particle_lighting.d.ts +9 -13
  340. package/src/shade/renderer/particles/shaders/chunk_particle_lighting.d.ts.map +1 -1
  341. package/src/shade/renderer/particles/shaders/chunk_particle_lighting.js +25 -20
  342. package/src/shade/renderer/particles/shaders/shader_particle_avboit_draw.d.ts.map +1 -1
  343. package/src/shade/renderer/particles/shaders/shader_particle_avboit_draw.js +22 -34
  344. package/src/shade/renderer/postprocess/nss/NSS.d.ts +1 -1
  345. package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader.d.ts.map +1 -1
  346. package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader.js +9 -7
  347. package/src/shade/renderer/rasterize/forward/chunk_forward_shade_standard_fragment.d.ts.map +1 -1
  348. package/src/shade/renderer/rasterize/forward/chunk_forward_shade_standard_fragment.js +15 -7
  349. package/src/shade/renderer/rasterize/native/avboit/avboit_draw_fragment_body.d.ts.map +1 -1
  350. package/src/shade/renderer/rasterize/native/avboit/avboit_draw_fragment_body.js +6 -4
  351. package/src/shade/renderer/rasterize/native/oit/oit_resolve_fragment_body.js +3 -3
  352. package/src/shade/renderer/rasterize/native/oit/shader_oit_generate_moments.d.ts.map +1 -1
  353. package/src/shade/renderer/rasterize/native/oit/shader_oit_generate_moments.js +8 -5
  354. package/src/shade/renderer/rasterize/native/viz/viz_rasterization_alpha_tested_pass_descriptor.d.ts.map +1 -1
  355. package/src/shade/renderer/rasterize/native/viz/viz_rasterization_alpha_tested_pass_descriptor.js +4 -3
  356. package/src/shade/renderer/shader/chunk/depth/chunk_query_depth_from_screen_space_bb.d.ts.map +1 -1
  357. package/src/shade/renderer/shader/chunk/depth/chunk_query_depth_from_screen_space_bb.js +62 -62
  358. package/src/shade/renderer/shader/chunk/random/lowbias/chunk_hash_lowbias32_vec2u.d.ts +6 -0
  359. package/src/shade/renderer/shader/chunk/random/lowbias/chunk_hash_lowbias32_vec2u.d.ts.map +1 -0
  360. package/src/shade/renderer/shader/chunk/random/lowbias/chunk_hash_lowbias32_vec2u.js +19 -0
  361. package/src/shade/renderer/shader/chunk/screen_space/chunk_ffx_sssr_get_mip_resolution.d.ts.map +1 -1
  362. package/src/shade/renderer/shader/chunk/screen_space/chunk_ffx_sssr_get_mip_resolution.js +16 -10
  363. package/src/shade/renderer/shader/chunk/screen_space/chunk_ffx_sssr_hierarchical_raymarch.d.ts.map +1 -1
  364. package/src/shade/renderer/shader/chunk/screen_space/chunk_ffx_sssr_hierarchical_raymarch.js +118 -117
  365. package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.js +1 -1
  366. package/src/shade/renderer/texture/SAMPLER_ANISOTROPIC_CLAMP.d.ts +9 -0
  367. package/src/shade/renderer/texture/SAMPLER_ANISOTROPIC_CLAMP.d.ts.map +1 -0
  368. package/src/shade/renderer/texture/SAMPLER_ANISOTROPIC_CLAMP.js +17 -0
  369. package/src/shade/renderer/texture/SAMPLER_LINEAR_UPSCALE.d.ts +8 -0
  370. package/src/shade/renderer/texture/SAMPLER_LINEAR_UPSCALE.d.ts.map +1 -1
  371. package/src/shade/renderer/texture/SAMPLER_LINEAR_UPSCALE.js +28 -20
  372. package/src/shade/renderer/texture/SAMPLER_TRILINEAR_CLAMP.d.ts +8 -0
  373. package/src/shade/renderer/texture/SAMPLER_TRILINEAR_CLAMP.d.ts.map +1 -0
  374. package/src/shade/renderer/texture/SAMPLER_TRILINEAR_CLAMP.js +15 -0
  375. package/src/shade/renderer/texture/atlas/GPUTileAtlas3D.d.ts +41 -7
  376. package/src/shade/renderer/texture/atlas/GPUTileAtlas3D.d.ts.map +1 -1
  377. package/src/shade/renderer/texture/atlas/GPUTileAtlas3D.js +162 -58
  378. package/src/shade/renderer/view/chunk_view_mip_bias.d.ts +21 -0
  379. package/src/shade/renderer/view/chunk_view_mip_bias.d.ts.map +1 -0
  380. package/src/shade/renderer/view/chunk_view_mip_bias.js +44 -0
  381. package/src/shade/renderer/volumetrics/GPUSceneVolumetrics.js +1 -1
  382. package/src/shade/renderer/volumetrics/GPUViewVolumetrics.d.ts +10 -12
  383. package/src/shade/renderer/volumetrics/GPUViewVolumetrics.d.ts.map +1 -1
  384. package/src/shade/renderer/volumetrics/GPUViewVolumetrics.js +583 -606
  385. package/src/shade/renderer/volumetrics/chunk_volumetrics_froxel_sample.d.ts +24 -0
  386. package/src/shade/renderer/volumetrics/chunk_volumetrics_froxel_sample.d.ts.map +1 -0
  387. package/src/shade/renderer/volumetrics/gi/chunk_volumetrics_gi_sample.d.ts.map +1 -1
  388. package/src/shade/renderer/volumetrics/graph_build_volumetrics.d.ts +1 -1
  389. package/src/shade/renderer/volumetrics/graph_build_volumetrics.js +640 -640
  390. package/src/shade/renderer/volumetrics/irradiance_clipmap/GPUIrradianceClipmap.d.ts +113 -0
  391. package/src/shade/renderer/volumetrics/irradiance_clipmap/GPUIrradianceClipmap.d.ts.map +1 -0
  392. package/src/shade/renderer/volumetrics/irradiance_clipmap/GPUIrradianceClipmap.js +484 -0
  393. package/src/shade/renderer/volumetrics/irradiance_clipmap/IRRADIANCE_CLIPMAP.d.ts +50 -0
  394. package/src/shade/renderer/volumetrics/irradiance_clipmap/IRRADIANCE_CLIPMAP.d.ts.map +1 -0
  395. package/src/shade/renderer/volumetrics/irradiance_clipmap/IRRADIANCE_CLIPMAP.js +60 -0
  396. package/src/shade/renderer/volumetrics/irradiance_clipmap/IRRADIANCE_CLIPMAP_STRUCT.d.ts +25 -0
  397. package/src/shade/renderer/volumetrics/irradiance_clipmap/IRRADIANCE_CLIPMAP_STRUCT.d.ts.map +1 -0
  398. package/src/shade/renderer/volumetrics/irradiance_clipmap/IRRADIANCE_CLIPMAP_STRUCT.js +47 -0
  399. package/src/shade/renderer/volumetrics/irradiance_clipmap/IrradianceCascadePlacement.d.ts +74 -0
  400. package/src/shade/renderer/volumetrics/irradiance_clipmap/IrradianceCascadePlacement.d.ts.map +1 -0
  401. package/src/shade/renderer/volumetrics/irradiance_clipmap/IrradianceCascadePlacement.js +173 -0
  402. package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_gi_sample.d.ts +26 -0
  403. package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_gi_sample.d.ts.map +1 -0
  404. package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_gi_sample.js +83 -0
  405. package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_local_light.d.ts +31 -0
  406. package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_local_light.d.ts.map +1 -0
  407. package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_local_light.js +113 -0
  408. package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_sample.d.ts +121 -0
  409. package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_sample.d.ts.map +1 -0
  410. package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_sample.js +356 -0
  411. package/src/shade/renderer/volumetrics/irradiance_clipmap/shader_irradiance_clipmap_build.d.ts +16 -0
  412. package/src/shade/renderer/volumetrics/irradiance_clipmap/shader_irradiance_clipmap_build.d.ts.map +1 -0
  413. package/src/shade/renderer/volumetrics/irradiance_clipmap/shader_irradiance_clipmap_build.js +191 -0
  414. package/src/shade/renderer/volumetrics/shader_volumetrics_classify_froxels.d.ts +16 -0
  415. package/src/shade/renderer/volumetrics/shader_volumetrics_classify_froxels.d.ts.map +1 -0
  416. package/src/shade/renderer/volumetrics/shader_volumetrics_lighting_regimes.d.ts +23 -0
  417. package/src/shade/renderer/volumetrics/shader_volumetrics_lighting_regimes.d.ts.map +1 -0
  418. package/src/shade/renderer/wind/GPUSceneWind.d.ts +1 -1
  419. package/src/shade/renderer/wind/GPUSceneWind.js +1 -1
  420. package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.js +1 -1
  421. package/src/shade/wgsl/emulator/WGSLLanguageCore.d.ts.map +1 -1
  422. package/src/shade/wgsl/emulator/WGSLLanguageCore.js +105 -26
  423. package/src/engine/graphics/composit/CompositingStages.d.ts +0 -6
  424. package/src/engine/graphics/composit/CompositingStages.d.ts.map +0 -1
  425. package/src/engine/graphics/composit/CompositingStages.js +0 -8
  426. package/src/engine/graphics/geometry/buffered/computeBufferAttributeHash.d.ts +0 -7
  427. package/src/engine/graphics/geometry/buffered/computeBufferAttributeHash.d.ts.map +0 -1
  428. package/src/engine/graphics/geometry/buffered/computeBufferAttributeHash.js +0 -24
  429. package/src/engine/graphics/geometry/buffered/computeGeometryBoundingSphereMiniball.d.ts +0 -8
  430. package/src/engine/graphics/geometry/buffered/computeGeometryBoundingSphereMiniball.d.ts.map +0 -1
  431. package/src/engine/graphics/geometry/buffered/computeGeometryBoundingSphereMiniball.js +0 -17
  432. package/src/engine/graphics/geometry/buffered/computeGeometryEquality.d.ts +0 -8
  433. package/src/engine/graphics/geometry/buffered/computeGeometryEquality.d.ts.map +0 -1
  434. package/src/engine/graphics/geometry/buffered/computeGeometryEquality.js +0 -60
  435. package/src/engine/graphics/geometry/buffered/computeGeometryHash.d.ts +0 -7
  436. package/src/engine/graphics/geometry/buffered/computeGeometryHash.d.ts.map +0 -1
  437. package/src/engine/graphics/geometry/buffered/computeGeometryHash.js +0 -26
  438. package/src/engine/graphics/geometry/buffered/compute_buffer_geometry_byte_size.d.ts +0 -7
  439. package/src/engine/graphics/geometry/buffered/compute_buffer_geometry_byte_size.d.ts.map +0 -1
  440. package/src/engine/graphics/geometry/buffered/compute_buffer_geometry_byte_size.js +0 -23
  441. package/src/engine/graphics/geometry/instancing/geometry_copy.d.ts +0 -7
  442. package/src/engine/graphics/geometry/instancing/geometry_copy.d.ts.map +0 -1
  443. package/src/engine/graphics/geometry/instancing/geometry_copy.js +0 -15
  444. package/src/engine/graphics/geometry/instancing/rewriteMaterial.d.ts +0 -2
  445. package/src/engine/graphics/geometry/instancing/rewriteMaterial.d.ts.map +0 -1
  446. package/src/engine/graphics/geometry/instancing/rewriteMaterial.js +0 -57
  447. package/src/engine/graphics/geometry/ribbon/Quad.d.ts +0 -96
  448. package/src/engine/graphics/geometry/ribbon/Quad.d.ts.map +0 -1
  449. package/src/engine/graphics/geometry/ribbon/Quad.js +0 -213
  450. package/src/engine/graphics/geometry/ribbon/copyAttributeV3.d.ts +0 -9
  451. package/src/engine/graphics/geometry/ribbon/copyAttributeV3.d.ts.map +0 -1
  452. package/src/engine/graphics/geometry/ribbon/copyAttributeV3.js +0 -12
  453. package/src/engine/graphics/geometry/ribbon/copyAttributeValue.d.ts +0 -10
  454. package/src/engine/graphics/geometry/ribbon/copyAttributeValue.d.ts.map +0 -1
  455. package/src/engine/graphics/geometry/ribbon/copyAttributeValue.js +0 -17
  456. package/src/engine/graphics/geometry/ribbon/equalAttributeV3.d.ts +0 -10
  457. package/src/engine/graphics/geometry/ribbon/equalAttributeV3.d.ts.map +0 -1
  458. package/src/engine/graphics/geometry/ribbon/equalAttributeV3.js +0 -13
  459. package/src/engine/graphics/geometry/ribbon/equalAttributeValue.d.ts +0 -11
  460. package/src/engine/graphics/geometry/ribbon/equalAttributeValue.d.ts.map +0 -1
  461. package/src/engine/graphics/geometry/ribbon/equalAttributeValue.js +0 -24
  462. package/src/engine/graphics/geometry/ribbon/rotateRibbon.d.ts +0 -6
  463. package/src/engine/graphics/geometry/ribbon/rotateRibbon.d.ts.map +0 -1
  464. package/src/engine/graphics/geometry/ribbon/rotateRibbon.js +0 -37
  465. package/src/engine/graphics/geometry/ribbon/updateTipPosition.d.ts +0 -9
  466. package/src/engine/graphics/geometry/ribbon/updateTipPosition.d.ts.map +0 -1
  467. package/src/engine/graphics/geometry/ribbon/updateTipPosition.js +0 -52
  468. package/src/engine/graphics/geometry/skining/computeSkinnedMeshVertices.d.ts +0 -8
  469. package/src/engine/graphics/geometry/skining/computeSkinnedMeshVertices.d.ts.map +0 -1
  470. package/src/engine/graphics/geometry/skining/computeSkinnedMeshVertices.js +0 -54
  471. package/src/engine/graphics/render/RenderPassType.d.ts +0 -6
  472. package/src/engine/graphics/render/RenderPassType.d.ts.map +0 -1
  473. package/src/engine/graphics/render/RenderPassType.js +0 -8
  474. package/src/engine/graphics/render/layers/RenderLayer.d.ts +0 -78
  475. package/src/engine/graphics/render/layers/RenderLayer.d.ts.map +0 -1
  476. package/src/engine/graphics/render/layers/RenderLayer.js +0 -95
  477. package/src/engine/graphics/render/layers/RenderLayerManager.d.ts +0 -72
  478. package/src/engine/graphics/render/layers/RenderLayerManager.d.ts.map +0 -1
  479. package/src/engine/graphics/render/layers/RenderLayerManager.js +0 -160
  480. package/src/engine/graphics/render/layers/RenderLayerManagerState.d.ts +0 -18
  481. package/src/engine/graphics/render/layers/RenderLayerManagerState.d.ts.map +0 -1
  482. package/src/engine/graphics/render/layers/RenderLayerManagerState.js +0 -48
  483. package/src/engine/graphics/render/layers/RenderLayerState.d.ts +0 -18
  484. package/src/engine/graphics/render/layers/RenderLayerState.d.ts.map +0 -1
  485. package/src/engine/graphics/render/layers/RenderLayerState.js +0 -27
  486. package/src/engine/graphics/render/layers/RenderLayerUtils.d.ts +0 -8
  487. package/src/engine/graphics/render/layers/RenderLayerUtils.d.ts.map +0 -1
  488. package/src/engine/graphics/render/layers/RenderLayerUtils.js +0 -103
  489. package/src/engine/graphics/render/make_bvh_visibility_builder.d.ts +0 -10
  490. package/src/engine/graphics/render/make_bvh_visibility_builder.d.ts.map +0 -1
  491. package/src/engine/graphics/render/make_bvh_visibility_builder.js +0 -64
  492. package/src/engine/graphics/render/view/CameraViewFlags.d.ts +0 -7
  493. package/src/engine/graphics/render/view/CameraViewFlags.d.ts.map +0 -1
  494. package/src/engine/graphics/render/view/CameraViewFlags.js +0 -9
  495. package/src/engine/graphics/render/visibility/IncrementalDeltaSet.d.ts +0 -143
  496. package/src/engine/graphics/render/visibility/IncrementalDeltaSet.d.ts.map +0 -1
  497. package/src/engine/graphics/render/visibility/IncrementalDeltaSet.js +0 -328
  498. package/src/engine/graphics/render/visibility/VisibilityComputer.d.ts +0 -39
  499. package/src/engine/graphics/render/visibility/VisibilityComputer.d.ts.map +0 -1
  500. package/src/engine/graphics/render/visibility/VisibilityComputer.js +0 -80
  501. package/src/engine/graphics/render/visibility/VisibilityFilter.d.ts +0 -29
  502. package/src/engine/graphics/render/visibility/VisibilityFilter.d.ts.map +0 -1
  503. package/src/engine/graphics/render/visibility/VisibilityFilter.js +0 -37
  504. package/src/engine/graphics3/animation/write_graph_playback.d.ts +0 -24
  505. package/src/engine/graphics3/animation/write_graph_playback.d.ts.map +0 -1
  506. package/src/engine/graphics3/animation/write_graph_playback.js +0 -48
  507. package/src/engine/graphics3/decal/DecalAtlasFill.js +0 -32
  508. package/src/shade/renderer/volumetrics/gi/chunk_volumetrics_froxel_centre_ws.js +0 -49
  509. package/src/shade/renderer/volumetrics/gi/chunk_volumetrics_gi.js +0 -50
  510. package/src/shade/renderer/volumetrics/gi/chunk_volumetrics_gi_sample.js +0 -105
  511. package/src/shade/renderer/volumetrics/gi/graph_build_froxel_gi.js +0 -80
  512. package/src/shade/renderer/volumetrics/gi/shader_volumetrics_gi.js +0 -51
  513. package/src/shade/renderer/volumetrics/gi/volumetrics_gi_resources.js +0 -39
  514. package/src/shade/renderer/volumetrics/graph_build_froxel_irradiance.js +0 -121
  515. package/src/shade/renderer/volumetrics/shader_volumetrics_build_irradiance.js +0 -237
@@ -1,19 +1,18 @@
1
1
  /**
2
- * @typedef {import("../../../shade/renderer/animation/ShadeAnimationClip.js").ShadeAnimationClip} ShadeAnimationClip
3
- */
4
- /**
5
- * The clips this entity can play: each a {@link ShadeAnimationClip} whose channels key entities —
6
- * the joints of a rig, the nodes of a loaded model.
2
+ * The clips this entity can play — each a {@link ShadeAnimationClip} whose channels key entities
3
+ * (the joints of a rig, the nodes of a loaded model) — and the playback sink where whichever driver
4
+ * plays them writes what each weighs and where it is playing this tick.
7
5
  *
8
6
  * **It lives on the entity that plays them**, beside its `Animation` or `AnimationGraphController`.
9
7
  * A clip is one clock over many targets and describes no single one of them, so it is not a
10
8
  * component on a joint. `AnimationSystem` and `AnimationGraphSystem` resolve the names their lists
11
- * and graphs ask for against this set. The CPU pose consumers (IK, ContactProbe, cloth) ask those
12
- * drivers about a joint's `ParentEntity`, so a joint they should see names this entity there.
9
+ * and graphs ask for against this set and write the resulting blend back onto it; the GPU clip
10
+ * uploader and the CPU pose consumers (IK, ContactProbe, cloth, `query_entity_node_world_pose`)
11
+ * read from here without caring which driver produced the blend.
13
12
  *
14
13
  * **Not `Animation.clips`.** That list says what to play — a name, a weight, a repeat count each;
15
- * this says what there is to play and what each of those does to which entity. A name in the one is
16
- * looked up by name in the other.
14
+ * this says what there is to play, what each of those does to which entity, and where the active
15
+ * driver has placed each clip this frame.
17
16
  *
18
17
  * A model loaded by `MeshSystem` carries one on its root, re-addressed to the entities of that
19
18
  * placement; code that builds a rig puts one there the same way. A model with no clips carries an
@@ -23,10 +22,10 @@
23
22
  * clip, take the component off and put another on, which the drivers see as their entity leaving
24
23
  * and coming back.
25
24
  *
26
- * **The entities it keys go no sooner than it does.** While it is on, the drivers hold a row for
27
- * every entity a channel keys, as a skin holds its joints'. Removing one of them means taking this
28
- * off before the next frame — `prefab_instance_destroy` removes the entities and then the clips, in
29
- * one step — or the scene is left holding the row of an entity that is gone.
25
+ * **The entities it keys go no sooner than it does.** While it is bound, the driver's sink holds a
26
+ * row for every entity a channel keys, as a skin holds its joints'. Removing one of them means
27
+ * taking this off before the next frame — `prefab_instance_destroy` removes the entities and then
28
+ * the clips, in one step — or the scene is left holding the row of an entity that is gone.
30
29
  *
31
30
  * **Not saved**, for the reason `MeshSkin` is not: the channels key entities that whatever builds
32
31
  * the rig creates, and the curves are asset data. A load rebuilds them the way it rebuilds the rig.
@@ -47,6 +46,99 @@ export class AnimationClips {
47
46
  * @type {ShadeAnimationClip[]}
48
47
  */
49
48
  clips: ShadeAnimationClip[];
49
+ /**
50
+ * Whether a driver currently has these clips bound. `false` before the driver's first `update`
51
+ * after `link`, and `false` again once the driver unlinks or shuts down.
52
+ *
53
+ * @type {boolean}
54
+ */
55
+ bound: boolean;
56
+ /**
57
+ * Distinct indices into {@link clips} that the active driver plays (and registers on the GPU),
58
+ * in the driver's own order.
59
+ *
60
+ * Maintained here rather than alongside the GPU registration because **the pose evaluator needs
61
+ * it whether or not there is a device**: `collect_entity_playbacks` answers on the CPU from the
62
+ * clips the driver plays, and a game with rendering disabled still asks (I-4).
63
+ *
64
+ * @type {Int32Array}
65
+ */
66
+ played_slots: Int32Array;
67
+ /**
68
+ * What each of {@link clips} weighs this tick, in {@link clips}' order and at `f32` width — the
69
+ * width the renderer's clip table takes, so the CPU pose evaluator and the GPU agree on every
70
+ * share.
71
+ *
72
+ * @type {Float32Array}
73
+ */
74
+ weights: Float32Array;
75
+ /**
76
+ * Where each of {@link clips} is playing this tick, in seconds from its start, in {@link clips}'
77
+ * order.
78
+ *
79
+ * @type {Float64Array}
80
+ */
81
+ times: Float64Array;
82
+ /**
83
+ * One reusable {@link PosePlayback} per entry of {@link clips}, rewritten by
84
+ * {@link write_pose_playbacks} so per-frame CPU pose queries allocate nothing.
85
+ *
86
+ * @type {PosePlayback[]}
87
+ */
88
+ poses: PosePlayback[];
89
+ /**
90
+ * The active GPU registration for {@link played_slots}, or `null` when no device context has
91
+ * registered them yet.
92
+ *
93
+ * @type {ClipRegistration|null}
94
+ */
95
+ clip_registration: ClipRegistration | null;
96
+ /**
97
+ * The weight each entry of {@link clips} was last given on the GPU (`-1` where not yet written
98
+ * to the current registration).
99
+ *
100
+ * @type {Float32Array}
101
+ */
102
+ written: Float32Array;
103
+ /**
104
+ * Prepare the playback buffers when a driver takes up these clips.
105
+ */
106
+ bind(): void;
107
+ /**
108
+ * Clear the playback state when the driver releases these clips.
109
+ */
110
+ unbind(): void;
111
+ /**
112
+ * Update which of {@link clips} the driver plays, deduplicated in order of first appearance.
113
+ *
114
+ * Two entries of a clip list or two states of a graph can name one clip, and it is one row on
115
+ * the GPU either way — registered once, and reported to the pose evaluator once.
116
+ *
117
+ * @param {ArrayLike<number>} slots indices into {@link clips}
118
+ * @returns {boolean} whether the distinct set changed
119
+ */
120
+ set_played_slots(slots: ArrayLike<number>): boolean;
121
+ /**
122
+ * What the entity is playing, in the form the CPU pose evaluator takes: one entry per clip of
123
+ * {@link clips} in {@link played_slots}, at the weight and the time the renderer has been given.
124
+ *
125
+ * **Only the clips the driver names are here, because they are the only ones registered** (D37).
126
+ * The GPU's accumulator marks a joint dirty for every bound clip that writes to it, weight and
127
+ * all — so a bound clip at weight zero resolves the joints only it drives to zero rather than
128
+ * leaving them at rest. The answer is not to hand the surplus to the evaluator so it agrees
129
+ * with a mistake; it is not to bind them, and then a clip nothing names moves nothing.
130
+ *
131
+ * A clip the driver names that is not currently playing **is** here, at weight zero, because it
132
+ * is bound and the accumulator does see it.
133
+ *
134
+ * The entries are this component's own and are rewritten by the next call, which is what keeps
135
+ * a query on a per-frame path from allocating.
136
+ *
137
+ * @param {PosePlayback[]} target appended to
138
+ * @returns {boolean} whether a driver has bound these clips — `false` when no driver is playing
139
+ * them, or when they arrived since the driver's last update
140
+ */
141
+ write_pose_playbacks(target: PosePlayback[]): boolean;
50
142
  /**
51
143
  * @readonly
52
144
  * @type {boolean}
@@ -58,4 +150,6 @@ export namespace AnimationClips {
58
150
  let serializable: boolean;
59
151
  }
60
152
  export type ShadeAnimationClip = import("../../../shade/renderer/animation/ShadeAnimationClip.js").ShadeAnimationClip;
153
+ export type ClipRegistration = import("../register_clips.js").ClipRegistration;
154
+ import { PosePlayback } from "../../../shade/renderer/animation/pose/PosePlayback.js";
61
155
  //# sourceMappingURL=AnimationClips.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AnimationClips.d.ts","sourceRoot":"","sources":["../../../../../src/engine/graphics3/animation/AnimationClips.js"],"names":[],"mappings":"AAEA;;GAEG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH;IASI;;;OAGG;IACH,mBAHW,kBAAkB,EAAE,GAClB,cAAc,CAc1B;IAxBD;;;;;OAKG;IACH,OAFU,kBAAkB,EAAE,CAEnB;IAqBf;;;OAGG;IACH,2BAFU,OAAO,CAEwB;CANxC;;kBAUS,MAAM;sBAMN,OAAO;;iCA9EJ,OAAO,yDAAyD,EAAE,kBAAkB"}
1
+ {"version":3,"file":"AnimationClips.d.ts","sourceRoot":"","sources":["../../../../../src/engine/graphics3/animation/AnimationClips.js"],"names":[],"mappings":"AAmBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH;IAsEI;;;OAGG;IACH,mBAHW,kBAAkB,EAAE,GAClB,cAAc,CAc1B;IArFD;;;;;OAKG;IACH,OAFU,kBAAkB,EAAE,CAEnB;IAEX;;;;;OAKG;IACH,OAFU,OAAO,CAEH;IAEd;;;;;;;;;OASG;IACH,cAFU,UAAU,CAEO;IAE3B;;;;;;OAMG;IACH,SAFU,YAAY,CAEE;IAExB;;;;;OAKG;IACH,OAFU,YAAY,CAEF;IAEpB;;;;;OAKG;IACH,OAFU,YAAY,EAAE,CAEb;IAEX;;;;;OAKG;IACH,mBAFU,gBAAgB,GAAC,IAAI,CAEN;IAEzB;;;;;OAKG;IACH,SAFU,YAAY,CAEE;IAoBxB;;OAEG;IACH,aAWC;IAED;;OAEG;IACH,eAQC;IAED;;;;;;;;OAQG;IACH,wBAHW,UAAU,MAAM,CAAC,GACf,OAAO,CAsCnB;IAED;;;;;;;;;;;;;;;;;;;OAmBG;IACH,6BAJW,YAAY,EAAE,GACZ,OAAO,CA0BnB;IAGL;;;OAGG;IACH,2BAFU,OAAO,CAEwB;CANxC;;kBAUS,MAAM;sBAMN,OAAO;;iCAlRJ,OAAO,yDAAyD,EAAE,kBAAkB;+BACpF,OAAO,sBAAsB,EAAE,gBAAgB;6BAJ/B,wDAAwD"}
@@ -1,22 +1,37 @@
1
1
  import { assert } from "../../../core/assert.js";
2
+ import { PosePlayback } from "../../../shade/renderer/animation/pose/PosePlayback.js";
2
3
 
3
4
  /**
4
5
  * @typedef {import("../../../shade/renderer/animation/ShadeAnimationClip.js").ShadeAnimationClip} ShadeAnimationClip
6
+ * @typedef {import("../register_clips.js").ClipRegistration} ClipRegistration
5
7
  */
6
8
 
9
+ const EMPTY_SLOTS = new Int32Array(0);
10
+ const EMPTY_WEIGHTS = new Float32Array(0);
11
+ const EMPTY_TIMES = new Float64Array(0);
12
+
13
+ /**
14
+ * Scratch list for deduplicating played slot indices without allocating when the set is unchanged.
15
+ *
16
+ * @type {number[]}
17
+ */
18
+ const WANTED_SLOTS = [];
19
+
7
20
  /**
8
- * The clips this entity can play: each a {@link ShadeAnimationClip} whose channels key entities —
9
- * the joints of a rig, the nodes of a loaded model.
21
+ * The clips this entity can play — each a {@link ShadeAnimationClip} whose channels key entities
22
+ * (the joints of a rig, the nodes of a loaded model) — and the playback sink where whichever driver
23
+ * plays them writes what each weighs and where it is playing this tick.
10
24
  *
11
25
  * **It lives on the entity that plays them**, beside its `Animation` or `AnimationGraphController`.
12
26
  * A clip is one clock over many targets and describes no single one of them, so it is not a
13
27
  * component on a joint. `AnimationSystem` and `AnimationGraphSystem` resolve the names their lists
14
- * and graphs ask for against this set. The CPU pose consumers (IK, ContactProbe, cloth) ask those
15
- * drivers about a joint's `ParentEntity`, so a joint they should see names this entity there.
28
+ * and graphs ask for against this set and write the resulting blend back onto it; the GPU clip
29
+ * uploader and the CPU pose consumers (IK, ContactProbe, cloth, `query_entity_node_world_pose`)
30
+ * read from here without caring which driver produced the blend.
16
31
  *
17
32
  * **Not `Animation.clips`.** That list says what to play — a name, a weight, a repeat count each;
18
- * this says what there is to play and what each of those does to which entity. A name in the one is
19
- * looked up by name in the other.
33
+ * this says what there is to play, what each of those does to which entity, and where the active
34
+ * driver has placed each clip this frame.
20
35
  *
21
36
  * A model loaded by `MeshSystem` carries one on its root, re-addressed to the entities of that
22
37
  * placement; code that builds a rig puts one there the same way. A model with no clips carries an
@@ -26,10 +41,10 @@ import { assert } from "../../../core/assert.js";
26
41
  * clip, take the component off and put another on, which the drivers see as their entity leaving
27
42
  * and coming back.
28
43
  *
29
- * **The entities it keys go no sooner than it does.** While it is on, the drivers hold a row for
30
- * every entity a channel keys, as a skin holds its joints'. Removing one of them means taking this
31
- * off before the next frame — `prefab_instance_destroy` removes the entities and then the clips, in
32
- * one step — or the scene is left holding the row of an entity that is gone.
44
+ * **The entities it keys go no sooner than it does.** While it is bound, the driver's sink holds a
45
+ * row for every entity a channel keys, as a skin holds its joints'. Removing one of them means
46
+ * taking this off before the next frame — `prefab_instance_destroy` removes the entities and then
47
+ * the clips, in one step — or the scene is left holding the row of an entity that is gone.
33
48
  *
34
49
  * **Not saved**, for the reason `MeshSkin` is not: the channels key entities that whatever builds
35
50
  * the rig creates, and the curves are asset data. A load rebuilds them the way it rebuilds the rig.
@@ -46,6 +61,67 @@ export class AnimationClips {
46
61
  */
47
62
  clips = [];
48
63
 
64
+ /**
65
+ * Whether a driver currently has these clips bound. `false` before the driver's first `update`
66
+ * after `link`, and `false` again once the driver unlinks or shuts down.
67
+ *
68
+ * @type {boolean}
69
+ */
70
+ bound = false;
71
+
72
+ /**
73
+ * Distinct indices into {@link clips} that the active driver plays (and registers on the GPU),
74
+ * in the driver's own order.
75
+ *
76
+ * Maintained here rather than alongside the GPU registration because **the pose evaluator needs
77
+ * it whether or not there is a device**: `collect_entity_playbacks` answers on the CPU from the
78
+ * clips the driver plays, and a game with rendering disabled still asks (I-4).
79
+ *
80
+ * @type {Int32Array}
81
+ */
82
+ played_slots = EMPTY_SLOTS;
83
+
84
+ /**
85
+ * What each of {@link clips} weighs this tick, in {@link clips}' order and at `f32` width — the
86
+ * width the renderer's clip table takes, so the CPU pose evaluator and the GPU agree on every
87
+ * share.
88
+ *
89
+ * @type {Float32Array}
90
+ */
91
+ weights = EMPTY_WEIGHTS;
92
+
93
+ /**
94
+ * Where each of {@link clips} is playing this tick, in seconds from its start, in {@link clips}'
95
+ * order.
96
+ *
97
+ * @type {Float64Array}
98
+ */
99
+ times = EMPTY_TIMES;
100
+
101
+ /**
102
+ * One reusable {@link PosePlayback} per entry of {@link clips}, rewritten by
103
+ * {@link write_pose_playbacks} so per-frame CPU pose queries allocate nothing.
104
+ *
105
+ * @type {PosePlayback[]}
106
+ */
107
+ poses = [];
108
+
109
+ /**
110
+ * The active GPU registration for {@link played_slots}, or `null` when no device context has
111
+ * registered them yet.
112
+ *
113
+ * @type {ClipRegistration|null}
114
+ */
115
+ clip_registration = null;
116
+
117
+ /**
118
+ * The weight each entry of {@link clips} was last given on the GPU (`-1` where not yet written
119
+ * to the current registration).
120
+ *
121
+ * @type {Float32Array}
122
+ */
123
+ written = EMPTY_WEIGHTS;
124
+
49
125
  /**
50
126
  * @param {ShadeAnimationClip[]} clips may be empty
51
127
  * @returns {AnimationClips}
@@ -63,6 +139,127 @@ export class AnimationClips {
63
139
 
64
140
  return r;
65
141
  }
142
+
143
+ /**
144
+ * Prepare the playback buffers when a driver takes up these clips.
145
+ */
146
+ bind() {
147
+ const clips = this.clips;
148
+ const count = clips.length;
149
+
150
+ this.played_slots = EMPTY_SLOTS;
151
+ this.weights = new Float32Array(count);
152
+ this.times = new Float64Array(count);
153
+ this.poses = clips.map(clip => PosePlayback.from(clip, 0, 0));
154
+ this.clip_registration = null;
155
+ this.written = new Float32Array(count).fill(-1);
156
+ this.bound = true;
157
+ }
158
+
159
+ /**
160
+ * Clear the playback state when the driver releases these clips.
161
+ */
162
+ unbind() {
163
+ this.bound = false;
164
+ this.played_slots = EMPTY_SLOTS;
165
+ this.weights = EMPTY_WEIGHTS;
166
+ this.times = EMPTY_TIMES;
167
+ this.poses = [];
168
+ this.clip_registration = null;
169
+ this.written = EMPTY_WEIGHTS;
170
+ }
171
+
172
+ /**
173
+ * Update which of {@link clips} the driver plays, deduplicated in order of first appearance.
174
+ *
175
+ * Two entries of a clip list or two states of a graph can name one clip, and it is one row on
176
+ * the GPU either way — registered once, and reported to the pose evaluator once.
177
+ *
178
+ * @param {ArrayLike<number>} slots indices into {@link clips}
179
+ * @returns {boolean} whether the distinct set changed
180
+ */
181
+ set_played_slots(slots) {
182
+ const played = this.played_slots;
183
+ const wanted = WANTED_SLOTS;
184
+
185
+ wanted.length = 0;
186
+
187
+ for (let i = 0; i < slots.length; i++) {
188
+ const slot = slots[i];
189
+
190
+ if (wanted.indexOf(slot) === -1) {
191
+ wanted.push(slot);
192
+ }
193
+ }
194
+
195
+ if (wanted.length === played.length) {
196
+ let same = true;
197
+
198
+ for (let i = 0; i < wanted.length; i++) {
199
+ if (played[i] !== wanted[i]) {
200
+ same = false;
201
+ break;
202
+ }
203
+ }
204
+
205
+ if (same) {
206
+ wanted.length = 0;
207
+
208
+ return false;
209
+ }
210
+ }
211
+
212
+ this.played_slots = Int32Array.from(wanted);
213
+
214
+ wanted.length = 0;
215
+
216
+ return true;
217
+ }
218
+
219
+ /**
220
+ * What the entity is playing, in the form the CPU pose evaluator takes: one entry per clip of
221
+ * {@link clips} in {@link played_slots}, at the weight and the time the renderer has been given.
222
+ *
223
+ * **Only the clips the driver names are here, because they are the only ones registered** (D37).
224
+ * The GPU's accumulator marks a joint dirty for every bound clip that writes to it, weight and
225
+ * all — so a bound clip at weight zero resolves the joints only it drives to zero rather than
226
+ * leaving them at rest. The answer is not to hand the surplus to the evaluator so it agrees
227
+ * with a mistake; it is not to bind them, and then a clip nothing names moves nothing.
228
+ *
229
+ * A clip the driver names that is not currently playing **is** here, at weight zero, because it
230
+ * is bound and the accumulator does see it.
231
+ *
232
+ * The entries are this component's own and are rewritten by the next call, which is what keeps
233
+ * a query on a per-frame path from allocating.
234
+ *
235
+ * @param {PosePlayback[]} target appended to
236
+ * @returns {boolean} whether a driver has bound these clips — `false` when no driver is playing
237
+ * them, or when they arrived since the driver's last update
238
+ */
239
+ write_pose_playbacks(target) {
240
+ if (!this.bound) {
241
+ return false;
242
+ }
243
+
244
+ const clips = this.clips;
245
+ const weights = this.weights;
246
+ const times = this.times;
247
+ const poses = this.poses;
248
+ const played = this.played_slots;
249
+
250
+ for (let i = 0; i < played.length; i++) {
251
+ const slot = played[i];
252
+ const pose = poses[slot];
253
+
254
+ pose.clip = clips[slot];
255
+ pose.weight = weights[slot];
256
+ pose.time = times[slot];
257
+
258
+ target.push(pose);
259
+ }
260
+
261
+ return true;
262
+ }
66
263
  }
67
264
 
68
265
  /**
@@ -0,0 +1,89 @@
1
+ /**
2
+ * @typedef {import("../../ecs/EntityComponentDataset.js").EntityComponentDataset} EntityComponentDataset
3
+ * @typedef {import("../../../shade/renderer/scene/GPUSceneContext.js").GPUSceneContext} GPUSceneContext
4
+ * @typedef {import("../../../shade/renderer/scene/Scene.js").Scene} Scene
5
+ * @typedef {import("../GraphicsEngine.js").GraphicsEngine} GraphicsEngine
6
+ * @typedef {import("./AnimationClips.js").AnimationClips} AnimationClips
7
+ */
8
+ /**
9
+ * Connects an animation driver (`AnimationSystem` or `AnimationGraphSystem`) to the scene's GPU
10
+ * context for every {@link AnimationClips} component the driver plays:
11
+ *
12
+ * - **Holds a row chain for every node the clips key** ({@link hold_clip_targets}), from the clips
13
+ * being bound until they go. A clip binds on the GPU only once every node it keys holds a row, and
14
+ * a keyed node outside every skin with nothing drawn under it is held by no other system.
15
+ * - **Registers only the clips the driver names** ({@link AnimationClips#played_slots}), and
16
+ * re-registers when that set moves or when a renderer restart replaces the GPU scene context.
17
+ * - **Pushes this tick's weights and times** from {@link AnimationClips} to
18
+ * {@link GPUAnimationManager} via {@link write_clip_playback}.
19
+ *
20
+ * @author Alex Goldring
21
+ * @copyright Company Named Limited (c) 2026
22
+ */
23
+ export class AnimationClipsSink {
24
+ /**
25
+ * @param {GraphicsEngine} graphics
26
+ * @param {Scene} scene
27
+ */
28
+ constructor(graphics: GraphicsEngine, scene: Scene);
29
+ /**
30
+ * Bind the scene to the dataset and start tracking row chains for keyed nodes.
31
+ *
32
+ * @param {EntityComponentDataset} dataset
33
+ */
34
+ startup(dataset: EntityComponentDataset): void;
35
+ /**
36
+ * Release the GPU registration and playback state of one {@link AnimationClips} during system
37
+ * shutdown, leaving row-chain teardown to {@link shutdown}.
38
+ *
39
+ * @param {AnimationClips} clips
40
+ */
41
+ unbind_on_shutdown(clips: AnimationClips): void;
42
+ /**
43
+ * Tear down the row chains on system shutdown.
44
+ */
45
+ shutdown(): void;
46
+ /**
47
+ * Bind the row chains to the current GPU context's rows and answer that context.
48
+ *
49
+ * No device — before the first start, and again after a stop — answers `null`. The driver's
50
+ * clocks still run; holds are recorded and acquired in whole when a context arrives.
51
+ *
52
+ * @returns {GPUSceneContext|null}
53
+ */
54
+ begin_update(): GPUSceneContext | null;
55
+ /**
56
+ * Take up an entity's {@link AnimationClips}: allocate its playback buffers and hold a row chain
57
+ * for every node its channels key.
58
+ *
59
+ * Called before anything registers, so the clips bind on the GPU in the update that registers
60
+ * them.
61
+ *
62
+ * @param {AnimationClips} clips
63
+ */
64
+ bind(clips: AnimationClips): void;
65
+ /**
66
+ * Let go of an entity's {@link AnimationClips}: return its GPU registration if the manager that
67
+ * issued it is still current, release the row chains held for its targets, and clear its
68
+ * playback state.
69
+ *
70
+ * @param {AnimationClips} clips
71
+ */
72
+ release(clips: AnimationClips): void;
73
+ /**
74
+ * Keep the GPU registration equal to {@link AnimationClips#played_slots} on the current context,
75
+ * and write this tick's weights and times down to the animation manager.
76
+ *
77
+ * @param {AnimationClips} clips
78
+ * @param {GPUSceneContext|null} context
79
+ * @param {boolean} slots_changed whether {@link AnimationClips#played_slots} changed this tick
80
+ */
81
+ sync(clips: AnimationClips, context: GPUSceneContext | null, slots_changed: boolean): void;
82
+ #private;
83
+ }
84
+ export type EntityComponentDataset = import("../../ecs/EntityComponentDataset.js").EntityComponentDataset;
85
+ export type GPUSceneContext = import("../../../shade/renderer/scene/GPUSceneContext.js").GPUSceneContext;
86
+ export type Scene = import("../../../shade/renderer/scene/Scene.js").Scene;
87
+ export type GraphicsEngine = import("../GraphicsEngine.js").GraphicsEngine;
88
+ export type AnimationClips = import("./AnimationClips.js").AnimationClips;
89
+ //# sourceMappingURL=AnimationClipsSink.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AnimationClipsSink.d.ts","sourceRoot":"","sources":["../../../../../src/engine/graphics3/animation/AnimationClipsSink.js"],"names":[],"mappings":"AAKA;;;;;;GAMG;AAEH;;;;;;;;;;;;;;GAcG;AACH;IAoBI;;;OAGG;IACH,sBAHW,cAAc,SACd,KAAK,EAQf;IAED;;;;OAIG;IACH,iBAFW,sBAAsB,QAchC;IAED;;;;;OAKG;IACH,0BAFW,cAAc,QAMxB;IAED;;OAEG;IACH,iBAGC;IAED;;;;;;;OAOG;IACH,gBAFa,eAAe,GAAC,IAAI,CAShC;IAED;;;;;;;;OAQG;IACH,YAFW,cAAc,QAUxB;IAED;;;;;;OAMG;IACH,eAFW,cAAc,QAYxB;IAED;;;;;;;OAOG;IACH,YAJW,cAAc,WACd,eAAe,GAAC,IAAI,iBACpB,OAAO,QAmBjB;;CAyBJ;qCAtMY,OAAO,qCAAqC,EAAE,sBAAsB;8BACpE,OAAO,kDAAkD,EAAE,eAAe;oBAC1E,OAAO,wCAAwC,EAAE,KAAK;6BACtD,OAAO,sBAAsB,EAAE,cAAc;6BAC7C,OAAO,qBAAqB,EAAE,cAAc"}