@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,23 +1,20 @@
1
- import { assert } from "../../core/assert.js";
2
1
  import { ResourceAccessKind } from "../../core/model/ResourceAccessKind.js";
3
2
  import { ResourceAccessSpecification } from "../../core/model/ResourceAccessSpecification.js";
4
- import { PosePlayback } from "../../shade/renderer/animation/pose/PosePlayback.js";
5
3
  import { System } from "../ecs/System.js";
6
4
  import { AnimationClips } from "./animation/AnimationClips.js";
5
+ import { AnimationClipsSink } from "./animation/AnimationClipsSink.js";
7
6
  import { AnimationGraphController } from "./animation/AnimationGraphController.js";
8
- import { write_graph_playback } from "./animation/write_graph_playback.js";
9
- import { hold_clip_targets, register_clips, release_clip_targets, unregister_clips } from "./register_clips.js";
10
- import { RowChains } from "./RowChains.js";
11
7
 
12
8
  /**
13
- * Drives every entity's {@link AnimationGraphController}: runs its clock, and tells the renderer
14
- * what its clips weigh and where they are playing.
9
+ * Drives every entity's {@link AnimationGraphController}: runs its clock, writes its clips' weights
10
+ * and times into the entity's {@link AnimationClips}, and hands that blend to the renderer through
11
+ * {@link AnimationClipsSink}.
15
12
  *
16
13
  * **The clips are the entity's {@link AnimationClips}.** An entity is driven while it carries both
17
14
  * components, whoever put them there — a model `MeshSystem` loaded, or a rig built in code. New
18
15
  * clips are a new component, which this system sees as the entity leaving and coming back.
19
16
  *
20
- * **Every node the clips key holds a row here** ({@link hold_clip_targets}), from the graph being
17
+ * **Every node the clips key holds a row here** ({@link AnimationClipsSink}), from the graph being
21
18
  * bound to the clips until they go. A clip binds only once all of them do, and a keyed node outside
22
19
  * every skin with nothing drawn under it — a socket, say — is held by no other system.
23
20
  *
@@ -34,29 +31,15 @@ import { RowChains } from "./RowChains.js";
34
31
  */
35
32
  export class AnimationGraphSystem extends System {
36
33
  /**
37
- * @type {GraphicsEngine}
34
+ * @type {AnimationClipsSink}
38
35
  */
39
- #graphics;
36
+ #sink;
40
37
 
41
38
  /**
42
- * The scene whose GPU context issues the clip ids.
43
- *
44
- * @type {Scene}
45
- */
46
- #scene;
47
-
48
- /**
49
- * @type {Map<number, {controller: AnimationGraphController, clips: ShadeAnimationClip[], bound: boolean, held: boolean, clip_registration: ClipRegistration|null, slots: Int32Array, played_slots: Int32Array, clip_ids: Int32Array, weights: Float32Array, poses: PosePlayback[]}>}
39
+ * @type {Map<number, {controller: AnimationGraphController, clips: AnimationClips, bound: boolean, slots: Int32Array}>}
50
40
  */
51
41
  #entries = new Map();
52
42
 
53
- /**
54
- * The chains of the nodes the clips key. Null until the system has a dataset.
55
- *
56
- * @type {RowChains|null}
57
- */
58
- #chains = null;
59
-
60
43
  /**
61
44
  * @param {GraphicsEngine} graphics
62
45
  * @param {Scene} scene
@@ -64,18 +47,16 @@ export class AnimationGraphSystem extends System {
64
47
  constructor(graphics, scene) {
65
48
  super();
66
49
 
67
- assert.defined(graphics, 'graphics');
68
- assert.equal(scene?.isScene, true, 'scene.isScene !== true');
69
-
70
- this.#graphics = graphics;
71
- this.#scene = scene;
50
+ this.#sink = new AnimationClipsSink(graphics, scene);
72
51
 
73
52
  this.dependencies = [AnimationGraphController, AnimationClips];
74
53
 
75
- // this tick's clip times are this system's to set: whatever evaluates a pose from them
76
- // (exact queries, IK's base pose) reads AnimationGraphController and so runs after it
54
+ // this tick's clip times and weights are written onto AnimationClips: whatever evaluates a
55
+ // pose from them (exact queries, IK's base pose, contact probes) reads AnimationClips and
56
+ // so runs after it
77
57
  this.components_used = [
78
58
  ResourceAccessSpecification.from(AnimationGraphController, ResourceAccessKind.Read | ResourceAccessKind.Write),
59
+ ResourceAccessSpecification.from(AnimationClips, ResourceAccessKind.Read | ResourceAccessKind.Write),
79
60
  ];
80
61
  }
81
62
 
@@ -92,34 +73,15 @@ export class AnimationGraphSystem extends System {
92
73
  link(controller, clips, entity) {
93
74
  this.#entries.set(entity, {
94
75
  controller,
95
- clips: clips.clips,
76
+ clips,
96
77
  bound: false,
97
- held: false,
98
- clip_registration: null,
99
78
  slots: new Int32Array(0),
100
- played_slots: new Int32Array(0),
101
- clip_ids: new Int32Array(0),
102
- weights: new Float32Array(0),
103
- poses: []
104
79
  });
105
80
  }
106
81
 
107
82
  /**
108
- * What the entity is playing, in the form the CPU pose evaluator takes: one entry per clip
109
- * **this graph names**, at the weight and the time the renderer has been given.
110
- *
111
- * **The clips the graph does not name are not here, because they are not registered** (D37).
112
- * The GPU's accumulator marks a joint dirty for every bound clip that writes to it, weight and
113
- * all — so a bound clip at weight zero resolves the joints only it drives to zero rather than
114
- * leaving them at rest. The answer is not to hand those clips to the evaluator so it can make
115
- * the same mistake; it is not to bind them. What the graph never names, nothing plays, and the
116
- * joints it alone would have driven stay where they rest.
117
- *
118
- * A clip the graph names but is not currently playing **is** here, at weight zero, because it is
119
- * bound and the accumulator does see it.
120
- *
121
- * The entries are this system's own and are rewritten by the next call, which is what keeps a
122
- * query on a per-frame path from allocating.
83
+ * What the entity is playing, in the form the CPU pose evaluator takes: delegates to the
84
+ * entity's {@link AnimationClips#write_pose_playbacks}.
123
85
  *
124
86
  * @param {PosePlayback[]} target appended to
125
87
  * @param {number} entity
@@ -134,43 +96,7 @@ export class AnimationGraphSystem extends System {
134
96
  return false;
135
97
  }
136
98
 
137
- const clips = entry.clips;
138
- const poses = entry.poses;
139
- const played = entry.played_slots;
140
-
141
- for (let i = 0; i < played.length; i++) {
142
- const slot = played[i];
143
- const pose = poses[slot];
144
-
145
- pose.clip = clips[slot];
146
- pose.weight = 0;
147
- pose.time = 0;
148
- }
149
-
150
- const controller = entry.controller;
151
- const slots = entry.slots;
152
- const weights = controller.blendState.weights;
153
-
154
- for (let i = 0; i < slots.length; i++) {
155
- const pose = poses[slots[i]];
156
- const weight = weights[i];
157
-
158
- // assignment rather than accumulation, and it matters only where two of the graph's
159
- // clips are one clip of the entity: the renderer is written to in this order too, so the
160
- // last of them is what it holds
161
- pose.weight = weight;
162
-
163
- if (weight > 0) {
164
- pose.time = controller.clip_time(i);
165
- }
166
- }
167
-
168
- // once each, however many of the graph's clips named it — the renderer holds one row for it
169
- for (let i = 0; i < played.length; i++) {
170
- target.push(poses[played[i]]);
171
- }
172
-
173
- return true;
99
+ return entry.clips.write_pose_playbacks(target);
174
100
  }
175
101
 
176
102
  /**
@@ -183,69 +109,29 @@ export class AnimationGraphSystem extends System {
183
109
 
184
110
  const entry = this.#entries.get(entity);
185
111
 
186
- if (entry !== undefined) {
187
- this.#release_clips(entry);
188
-
189
- if (entry.held) {
190
- release_clip_targets(this.#chains, entry.clips);
191
-
192
- entry.held = false;
193
- }
112
+ if (entry !== undefined && entry.bound) {
113
+ this.#sink.release(entry.clips);
194
114
  }
195
115
 
196
116
  this.#entries.delete(entity);
197
117
  }
198
118
 
199
119
  async startup(entityManager) {
200
- // the scene's rows are this dataset's entities; the first system to place one says so
201
- const dataset = entityManager.dataset;
202
- const scene = this.#scene;
203
-
204
- assert.ok(
205
- scene.dataset === null || scene.dataset === undefined || scene.dataset === dataset,
206
- 'the scene is bound to another dataset'
207
- );
208
-
209
- scene.dataset = dataset;
210
-
211
- this.#chains = new RowChains(dataset);
120
+ this.#sink.startup(entityManager.dataset);
212
121
  }
213
122
 
214
123
  async shutdown(entityManager) {
215
124
  for (const entry of this.#entries.values()) {
216
125
  entry.controller.unlink();
217
126
 
218
- this.#release_clips(entry);
127
+ if (entry.bound) {
128
+ this.#sink.unbind_on_shutdown(entry.clips);
129
+ }
219
130
  }
220
131
 
221
132
  this.#entries.clear();
222
133
 
223
- this.#chains.destroy();
224
- this.#chains = null;
225
- }
226
-
227
- /**
228
- * Give this entity's clips back, if the manager that issued them is still the one running.
229
- *
230
- * **An id may only be handed back to the manager that issued it.** A renderer restart replaces
231
- * the GPU scene context and voids every id it gave out, so a registration stamped with a context
232
- * that is no longer current is forgotten rather than returned — returning it would corrupt a
233
- * stranger's table. Same rule as {@link unregister_clips}, same `===`.
234
- *
235
- * @param {object} entry
236
- */
237
- #release_clips(entry) {
238
- const registration = entry.clip_registration;
239
-
240
- if (registration === null) {
241
- return;
242
- }
243
-
244
- if (registration.context === this.#graphics.scene_context(this.#scene)) {
245
- unregister_clips(registration);
246
- }
247
-
248
- entry.clip_registration = null;
134
+ this.#sink.shutdown();
249
135
  }
250
136
 
251
137
  /**
@@ -253,37 +139,23 @@ export class AnimationGraphSystem extends System {
253
139
  */
254
140
  update(time_delta_seconds) {
255
141
  const ecd = this.entityManager.dataset;
142
+ const context = this.#sink.begin_update();
256
143
 
257
- const context = this.#graphics.scene_context(this.#scene);
258
-
259
- // No device — before the first start, and again after a stop. The clocks still run: a unit
260
- // that fires an ability while the renderer is being replaced still fires it.
261
- const manager = context === null ? null : context.animation_manager;
144
+ for (const [entity, entry] of this.#entries) {
145
+ const { controller, clips } = entry;
262
146
 
263
- // a new context after a restart is acquired in whole; until there is one, holds are recorded
264
- this.#chains.bind(context === null ? null : context.rows);
147
+ let slots_changed = false;
265
148
 
266
- for (const [entity, entry] of this.#entries) {
267
149
  if (!entry.bound) {
268
150
  this.#bind_clips(entry, entity, ecd);
151
+ slots_changed = true;
269
152
  }
270
153
 
271
- entry.controller.tick(time_delta_seconds);
154
+ controller.tick(time_delta_seconds);
272
155
 
273
- if (context === null) {
274
- continue;
275
- }
156
+ this.#write_playback(controller, entry.slots, clips);
276
157
 
277
- /*
278
- Registered against the context that is running now. A renderer restart builds a new one
279
- and voids every id the old gave out, and the stamp on the registration is how that is
280
- noticed — in one comparison, without depending on when anything last ran.
281
- */
282
- if (entry.clip_registration === null || entry.clip_registration.context !== context) {
283
- this.#bind_gpu(entry, context);
284
- }
285
-
286
- write_graph_playback(manager, entry.controller, entry.clip_ids, entry.weights);
158
+ this.#sink.sync(clips, context, slots_changed);
287
159
  }
288
160
  }
289
161
 
@@ -297,6 +169,7 @@ export class AnimationGraphSystem extends System {
297
169
  */
298
170
  #bind_clips(entry, entity, ecd) {
299
171
  const clips = entry.clips;
172
+ const available = clips.clips;
300
173
 
301
174
  const clip_index = entry.controller.def.clipIndex;
302
175
  const clip_count = clip_index.length;
@@ -307,14 +180,14 @@ export class AnimationGraphSystem extends System {
307
180
  for (let i = 0; i < clip_count; i++) {
308
181
  const name = clip_index[i].name;
309
182
 
310
- const slot = clips.findIndex(clip => clip.name === name);
183
+ const slot = available.findIndex(clip => clip.name === name);
311
184
 
312
185
  if (slot === -1) {
313
186
  throw new Error(`Animation clip '${name}' is not among the clips of entity ${entity}`);
314
187
  }
315
188
 
316
189
  slots[i] = slot;
317
- durations[i] = clips[slot].duration;
190
+ durations[i] = available[slot].duration;
318
191
  }
319
192
 
320
193
  entry.controller.unlink();
@@ -322,59 +195,41 @@ export class AnimationGraphSystem extends System {
322
195
 
323
196
  entry.slots = slots;
324
197
 
325
- /*
326
- The distinct clips this graph plays. Two states can name one clip — an idle a hurt returns
327
- to, say — and it is one row on the GPU either way, so it is one entry here: registered once,
328
- reported to the pose evaluator once.
329
- */
330
- const played = [];
331
-
332
- for (let i = 0; i < clip_count; i++) {
333
- if (played.indexOf(slots[i]) === -1) {
334
- played.push(slots[i]);
335
- }
336
- }
337
-
338
- entry.played_slots = Int32Array.from(played);
339
-
340
- entry.clip_ids = new Int32Array(clip_count);
341
- entry.weights = new Float32Array(clip_count).fill(-1);
342
- entry.poses = clips.map(() => new PosePlayback());
343
-
344
- entry.bound = true;
345
-
346
198
  // past the throw above, so a graph that cannot be bound holds nothing; and before anything
347
199
  // registers, so the clips bind in the update that registers them
348
- hold_clip_targets(this.#chains, clips);
200
+ this.#sink.bind(clips);
201
+ clips.set_played_slots(slots);
349
202
 
350
- entry.held = true;
203
+ entry.bound = true;
351
204
  }
352
205
 
353
206
  /**
354
- * Make this graph's clips playable, and take up the ids that come back.
207
+ * Copy the graph's current blend into the entity's {@link AnimationClips} sink.
355
208
  *
356
- * **Only the clips the graph names are registered** (D37), so there is nothing to silence: a
357
- * clip no state plays is never bound, never marks a joint, and leaves the joints only it would
358
- * have driven at rest. What this used to do instead — register everything and then write a zero
359
- * weight over the surplus — kept them bound, and a bound clip at weight zero resolves its joints
360
- * to zero rather than to the rig's own pose.
361
- *
362
- * @param {object} entry
363
- * @param {GPUSceneContext} context
209
+ * @param {AnimationGraphController} controller
210
+ * @param {Int32Array} slots
211
+ * @param {AnimationClips} clips
364
212
  */
365
- #bind_gpu(entry, context) {
366
- const registration = register_clips(context, entry.clips, entry.played_slots);
213
+ #write_playback(controller, slots, clips) {
214
+ const graph_weights = controller.blendState.weights;
215
+ const weights = clips.weights;
216
+ const times = clips.times;
367
217
 
368
- const slots = entry.slots;
369
- const clip_ids = entry.clip_ids;
218
+ weights.fill(0);
219
+ times.fill(0);
370
220
 
371
221
  for (let i = 0; i < slots.length; i++) {
372
- clip_ids[i] = registration.ids[slots[i]];
373
- }
222
+ const slot = slots[i];
223
+ const weight = graph_weights[i];
374
224
 
375
- entry.clip_registration = registration;
225
+ // assignment rather than accumulation, and it matters only where two of the graph's
226
+ // clips are one clip of the entity: the renderer is written to in this order too, so the
227
+ // last of them is what it holds
228
+ weights[slot] = weight;
376
229
 
377
- // whatever the last renderer was told is not what this one knows
378
- entry.weights.fill(-1);
230
+ if (weight > 0) {
231
+ times[slot] = controller.clip_time(i);
232
+ }
233
+ }
379
234
  }
380
235
  }
@@ -1,17 +1,17 @@
1
1
  /**
2
2
  * Drives every entity's {@link Animation} component: runs the clocks of the clips its list names,
3
- * and tells the renderer what each of them weighs and where it is playing.
3
+ * writes their weights and times into the entity's {@link AnimationClips}, and hands that blend to
4
+ * the renderer through {@link AnimationClipsSink}.
4
5
  *
5
6
  * The list path is what the game uses wherever there is no state machine — buildings, critters and
6
7
  * the strategy map's groups — and {@link ClipListPlayer} is what plays it. This is the ECS half:
7
- * which clips each entity has, and when the ids the renderer issued for them stopped meaning
8
- * anything.
8
+ * which clips each entity has, and syncing the component's playback sink with the GPU.
9
9
  *
10
10
  * **The clips are the entity's {@link AnimationClips}.** An entity is driven while it carries both
11
11
  * components, whoever put them there — a model `MeshSystem` loaded, or a rig built in code. New
12
12
  * clips are a new component, which this system sees as the entity leaving and coming back.
13
13
  *
14
- * **Every node the clips key holds a row here** ({@link hold_clip_targets}), from the clips being
14
+ * **Every node the clips key holds a row here** ({@link AnimationClipsSink}), from the clips being
15
15
  * taken up until they go. A clip binds only once all of them do, and a keyed node outside every skin
16
16
  * with nothing drawn under it is held by no other system.
17
17
  *
@@ -32,7 +32,7 @@ export class AnimationSystem extends System<any> {
32
32
  */
33
33
  constructor(graphics: GraphicsEngine, scene: Scene);
34
34
  dependencies: (typeof Animation | typeof AnimationClips)[];
35
- components_used: ResourceAccessSpecification<typeof Animation>[];
35
+ components_used: (ResourceAccessSpecification<typeof AnimationClips> | ResourceAccessSpecification<typeof Animation>)[];
36
36
  /**
37
37
  * What an entity is playing, and where each of them is.
38
38
  *
@@ -44,18 +44,8 @@ export class AnimationSystem extends System<any> {
44
44
  */
45
45
  playbacks_of(entity: number): ClipPlayback[];
46
46
  /**
47
- * What the entity is playing, in the form the CPU pose evaluator takes: one entry per clip of its
48
- * {@link AnimationClips} that the list names, at the weight and the time the renderer has been
49
- * given.
50
- *
51
- * **Only the clips the list names are here, because they are the only ones registered** (D37).
52
- * The GPU's accumulator marks a joint dirty for every bound clip that writes to it, weight and
53
- * all — so a bound clip at weight zero resolves the joints only it drives to zero rather than
54
- * leaving them at rest. The answer is not to hand the surplus to the evaluator so it agrees with
55
- * a mistake; it is not to bind them, and then a clip nothing names moves nothing.
56
- *
57
- * The entries are this system's own and are rewritten by the next call, which is what keeps a
58
- * query on a per-frame path from allocating.
47
+ * What the entity is playing, in the form the CPU pose evaluator takes: delegates to the
48
+ * entity's {@link AnimationClips#write_pose_playbacks}.
59
49
  *
60
50
  * @param {PosePlayback[]} target appended to
61
51
  * @param {number} entity
@@ -88,5 +78,4 @@ import { System } from "../ecs/System.js";
88
78
  import { Animation } from "../ecs/animation/Animation.js";
89
79
  import { AnimationClips } from "./animation/AnimationClips.js";
90
80
  import { ResourceAccessSpecification } from "../../core/model/ResourceAccessSpecification.js";
91
- import { PosePlayback } from "../../shade/renderer/animation/pose/PosePlayback.js";
92
81
  //# sourceMappingURL=AnimationSystem.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AnimationSystem.d.ts","sourceRoot":"","sources":["../../../../src/engine/graphics3/AnimationSystem.js"],"names":[],"mappings":"AAiBA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH;IAyBI;;;OAGG;IACH,oDAgBC;IAPG,2DAA+C;IAI/C,iEAEC;IAGL;;;;;;;;OAQG;IACH,qBAHW,MAAM,GACJ,cAAc,CAU1B;IAED;;;;;;;;;;;;;;;;;;;OAmBG;IACH,6BANW,YAAY,EAAE,UACd,MAAM,GACJ,OAAO,CAyCnB;IAED;;;;;;;;OAQG;IACH,gBAJW,SAAS,SACT,cAAc,UACd,MAAM,QAahB;IAED;;;;OAIG;IACH,kBAJW,SAAS,SACT,cAAc,UACd,MAAM,QAgBhB;IAED,2CAaC;IAED,4CASC;;CA8KJ;uBArZsB,kBAAkB;0BADf,+BAA+B;+BAE1B,+BAA+B;4CAJlB,iDAAiD;6BAChE,qDAAqD"}
1
+ {"version":3,"file":"AnimationSystem.d.ts","sourceRoot":"","sources":["../../../../src/engine/graphics3/AnimationSystem.js"],"names":[],"mappings":"AAoBA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH;IAWI;;;OAGG;IACH,oDAcC;IATG,2DAA+C;IAK/C,wHAGC;IAGL;;;;;;;;OAQG;IACH,qBAHW,MAAM,GACJ,cAAc,CAU1B;IAED;;;;;;;;;OASG;IACH,6BANW,cAAc,UACd,MAAM,GACJ,OAAO,CAYnB;IAED;;;;;;;;OAQG;IACH,gBAJW,SAAS,SACT,cAAc,UACd,MAAM,QAQhB;IAED;;;;OAIG;IACH,kBAJW,SAAS,SACT,cAAc,UACd,MAAM,QAUhB;IAED,2CAEC;IAED,4CAUC;;CAkEJ;uBAlOsB,kBAAkB;0BADf,+BAA+B;+BAE1B,+BAA+B;4CAHlB,iDAAiD"}