@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
@@ -0,0 +1,163 @@
1
+ import { COLLECTION_U32_STRUCT_READ } from "../../gpu_primitive/COLLECTION_U32_STRUCT_READ.js";
2
+ import { COLLECTION_U32_STRUCT_WRITE } from "../../gpu_primitive/COLLECTION_U32_STRUCT_WRITE.js";
3
+ import { chunk_grid3d_to_index } from "../../shader/chunk/grid/chunk_grid3d_to_index.js";
4
+ import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
5
+ import { ComputeShader } from "../../shader/ComputeShader.js";
6
+ import { ShaderResourceSetDescriptor } from "../../shader/resource/ShaderResourceSetDescriptor.js";
7
+ import { WebGPUArray } from "../../shader/type/WebGPUArray.js";
8
+ import { IRRADIANCE_CLIPMAP_TILE_BORDER } from "../../volumetrics/irradiance_clipmap/IRRADIANCE_CLIPMAP.js";
9
+ import { IRRADIANCE_CLIPMAP_STRUCT } from "../../volumetrics/irradiance_clipmap/IRRADIANCE_CLIPMAP_STRUCT.js";
10
+ import { chunk_light_cluster_counts } from "../cluster/chunk_light_cluster_counts.js";
11
+ import { CLUSTER_LIGHT_PROXY } from "../cluster/CLUSTER_LIGHT_PROXY.js";
12
+ import { chunk_cluster_light_tuple } from "../cluster/CLUSTER_LIGHT_TYPE.js";
13
+ import { LIGHT_CLUSTER_METADATA } from "../cluster/LIGHT_CLUSTER_METADATA.js";
14
+ import { LIGHT_CLUSTER_LOOKUP_STRUCT } from "../cluster/shader_cluster_assign_lights.js";
15
+ import {
16
+ chunk_world_cluster_aabb,
17
+ WORLD_LIGHT_CLUSTER_GRID_SIZE,
18
+ WORLD_LIGHT_CLUSTER_MAX_LIGHTS_PER_CELL,
19
+ } from "./WORLD_LIGHT_CLUSTER.js";
20
+
21
+ export const WORLD_CLUSTER_ASSIGN_WORKGROUP_SIZE = Object.freeze([4, 4, 4]);
22
+ const BATCH_SIZE = 64;
23
+ const MAX_PER_TYPE = WORLD_LIGHT_CLUSTER_MAX_LIGHTS_PER_CELL >>> 1;
24
+
25
+ const resources = new ShaderResourceSetDescriptor();
26
+
27
+ resources.createGroup()
28
+ .addUniform("irradiance_clipmap", IRRADIANCE_CLIPMAP_STRUCT)
29
+ .addStorageBuffer("culled_lights", COLLECTION_U32_STRUCT_READ, false)
30
+ .addStorageBuffer("proxies", WebGPUArray.from(CLUSTER_LIGHT_PROXY), false)
31
+ .addStorageBuffer("world_cluster_lookup", LIGHT_CLUSTER_LOOKUP_STRUCT, true)
32
+ .addStorageBuffer("world_cluster_data", COLLECTION_U32_STRUCT_WRITE, true);
33
+
34
+ const body = CodeChunk.from(
35
+ //language=WGSL
36
+ `
37
+ const GRID_SIZE: u32 = ${WORLD_LIGHT_CLUSTER_GRID_SIZE}u;
38
+ const BATCH_SIZE: u32 = ${BATCH_SIZE}u;
39
+ const MAX_PER_TYPE: u32 = ${MAX_PER_TYPE}u;
40
+ const BORDER: f32 = ${IRRADIANCE_CLIPMAP_TILE_BORDER}.0;
41
+
42
+ var<workgroup> shared_tuples: array<u32, ${BATCH_SIZE}>;
43
+ var<workgroup> shared_proxies: array<${CLUSTER_LIGHT_PROXY.wgsl_ref}, ${BATCH_SIZE}>;
44
+
45
+ @compute @workgroup_size(4, 4, 4)
46
+ fn main(
47
+ @builtin(global_invocation_id) global_id: vec3<u32>,
48
+ @builtin(local_invocation_index) local_index: u32,
49
+ ) {
50
+ let cascade = global_id.z / GRID_SIZE;
51
+ let cell = vec3<u32>(global_id.x, global_id.y, global_id.z % GRID_SIZE);
52
+ let valid_cell = cascade < irradiance_clipmap.cascade_count && all(cell < vec3<u32>(GRID_SIZE));
53
+
54
+ var cell_lo = vec3<f32>(0.0);
55
+ var cell_hi = vec3<f32>(0.0);
56
+
57
+ if (valid_cell) {
58
+ let level = irradiance_clipmap.levels[cascade];
59
+ let box_min = (vec3<f32>(level.corner) - vec3<f32>(BORDER)) * level.cell_size;
60
+ let cluster_cell_size = (vec3<f32>(level.size) + vec3<f32>(2.0 * BORDER)) * (level.cell_size / f32(GRID_SIZE));
61
+ let base_lo = box_min + vec3<f32>(cell) * cluster_cell_size;
62
+ let half_voxel = vec3<f32>(0.5 * level.cell_size);
63
+ cell_lo = base_lo - half_voxel;
64
+ cell_hi = base_lo + cluster_cell_size + half_voxel;
65
+ }
66
+
67
+ var point_ids: array<u32, ${MAX_PER_TYPE}>;
68
+ var spot_ids: array<u32, ${MAX_PER_TYPE}>;
69
+ var point_count = 0u;
70
+ var spot_count = 0u;
71
+
72
+ let total_lights = min(culled_lights.count, u32(arrayLength(&proxies)));
73
+
74
+ for (var base = 0u; base < total_lights; base += BATCH_SIZE) {
75
+ let idx = base + local_index;
76
+ if (idx < total_lights) {
77
+ shared_tuples[local_index] = culled_lights.elements[idx];
78
+ shared_proxies[local_index] = proxies[idx];
79
+ }
80
+ workgroupBarrier();
81
+
82
+ if (valid_cell) {
83
+ let batch_count = min(BATCH_SIZE, total_lights - base);
84
+ for (var i = 0u; i < batch_count; i++) {
85
+ let tuple = shared_tuples[i];
86
+ let proxy = shared_proxies[i];
87
+ let light_type = cluster_light_tuple_type(tuple);
88
+ let light_id = cluster_light_tuple_id(tuple);
89
+
90
+ if (light_type == CLUSTER_LIGHT_TYPE_POINT) {
91
+ if (point_count < MAX_PER_TYPE) {
92
+ if (proxy.unbounded != 0u || world_cluster_sphere_intersects_aabb(proxy.bound.xyz, proxy.bound.w, cell_lo, cell_hi)) {
93
+ point_ids[point_count] = light_id;
94
+ point_count++;
95
+ }
96
+ }
97
+ } else {
98
+ if (spot_count < MAX_PER_TYPE) {
99
+ if (proxy.unbounded != 0u || world_cluster_cone_intersects_aabb(proxy, cell_lo, cell_hi)) {
100
+ spot_ids[spot_count] = light_id;
101
+ spot_count++;
102
+ }
103
+ }
104
+ }
105
+ }
106
+ }
107
+
108
+ workgroupBarrier();
109
+ }
110
+
111
+ if (!valid_cell) {
112
+ return;
113
+ }
114
+
115
+ let cluster_index = grid3d_to_index(vec3<u32>(cell.xy, cascade * GRID_SIZE + cell.z), vec2<u32>(GRID_SIZE));
116
+ let total_assigned = point_count + spot_count;
117
+ var offset = 0u;
118
+
119
+ if (total_assigned > 0u) {
120
+ let capacity = u32(arrayLength(&world_cluster_data.elements));
121
+ let raw_offset = atomicAdd(&world_cluster_data.count, total_assigned);
122
+ if (raw_offset + total_assigned <= capacity) {
123
+ offset = raw_offset;
124
+ for (var p = 0u; p < point_count; p++) {
125
+ world_cluster_data.elements[offset + p] = point_ids[p];
126
+ }
127
+ for (var s = 0u; s < spot_count; s++) {
128
+ world_cluster_data.elements[offset + point_count + s] = spot_ids[s];
129
+ }
130
+ } else {
131
+ point_count = 0u;
132
+ spot_count = 0u;
133
+ }
134
+ }
135
+
136
+ world_cluster_lookup[cluster_index] = ${LIGHT_CLUSTER_METADATA.make({
137
+ // +4u because COLLECTION_U32_STRUCT_WRITE aligns `elements` to 16 bytes (4 u32 words)
138
+ offset: "offset + 4u",
139
+ counts: "light_cluster_pack_counts(point_count, spot_count)",
140
+ })};
141
+ }
142
+ `, [
143
+ IRRADIANCE_CLIPMAP_STRUCT.declaration_chunk,
144
+ CLUSTER_LIGHT_PROXY.declaration_chunk,
145
+ LIGHT_CLUSTER_METADATA.declaration_chunk,
146
+ chunk_grid3d_to_index,
147
+ chunk_world_cluster_aabb,
148
+ chunk_cluster_light_tuple,
149
+ chunk_light_cluster_counts,
150
+ ]
151
+ );
152
+
153
+ /**
154
+ * Assigns world-space culled point and spot lights to the `8 × 8 × 8` cluster cells of each
155
+ * cascade of the world-space irradiance clipmap.
156
+ *
157
+ * @type {ComputeShader}
158
+ */
159
+ export const shader_world_cluster_assign_lights = ComputeShader.from({
160
+ label: "World cluster / assign lights",
161
+ resources,
162
+ body,
163
+ });
@@ -0,0 +1,4 @@
1
+ export const shader_world_cluster_cull_point_lights: ComputeShader;
2
+ export const shader_world_cluster_cull_spot_lights: ComputeShader;
3
+ import { ComputeShader } from "../../shader/ComputeShader.js";
4
+ //# sourceMappingURL=shader_world_cluster_cull_lights.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shader_world_cluster_cull_lights.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/light/world_cluster/shader_world_cluster_cull_lights.js"],"names":[],"mappings":"AAwHA,mEAOG;AAEH,kEAOG;8BAtI2B,+BAA+B"}
@@ -0,0 +1,137 @@
1
+ import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
2
+ import { COMPUTE_SHADER_DEFAULT_GROUP_SIZE } from "../../shader/COMPUTE_SHADER_DEFAULT_GROUP_SIZE.js";
3
+ import { ComputeShader } from "../../shader/ComputeShader.js";
4
+ import { ShaderResourceSetDescriptor } from "../../shader/resource/ShaderResourceSetDescriptor.js";
5
+ import { WebGPUArray } from "../../shader/type/WebGPUArray.js";
6
+ import { chunk_point_lights_iterate } from "../../shader/chunk/light/io/chunk_point_lights_iterate.js";
7
+ import { chunk_spot_lights_iterate } from "../../shader/chunk/light/io/chunk_spot_lights_iterate.js";
8
+ import { SUBGROUP_APPEND_NONE } from "../../shader/chunk/subgroup/chunk_subgroup_append_slot.js";
9
+ import { LIGHT_DATABASE_SPEC } from "../LIGHT_DATABASE_SPEC.js";
10
+ import { chunk_collection_u32_append } from "../../gpu_primitive/chunk_collection_u32_append.js";
11
+ import { COLLECTION_U32_STRUCT_WRITE } from "../../gpu_primitive/COLLECTION_U32_STRUCT_WRITE.js";
12
+ import { chunk_cluster_light_proxy } from "../cluster/chunk_cluster_light_proxy.js";
13
+ import { CLUSTER_LIGHT_PROXY, CLUSTER_LIGHT_PROXY_UNBOUNDED_RADIUS } from "../cluster/CLUSTER_LIGHT_PROXY.js";
14
+ import { CLUSTER_LIGHT_TYPE, chunk_cluster_light_tuple } from "../cluster/CLUSTER_LIGHT_TYPE.js";
15
+ import { chunk_world_cluster_aabb, WORLD_LIGHT_CLUSTER_CULL_SETTINGS } from "./WORLD_LIGHT_CLUSTER.js";
16
+
17
+ const POINT_DESCRIPTOR = LIGHT_DATABASE_SPEC.get("light_point");
18
+ const SPOT_DESCRIPTOR = LIGHT_DATABASE_SPEC.get("light_spot");
19
+
20
+ const WORKGROUP_SIZE = COMPUTE_SHADER_DEFAULT_GROUP_SIZE;
21
+
22
+ function build_world_cull_shader({
23
+ label,
24
+ prefix_upper,
25
+ prefix_lower,
26
+ iterate_chunk,
27
+ read_chunk,
28
+ is_spot,
29
+ }) {
30
+ const resources = new ShaderResourceSetDescriptor();
31
+
32
+ resources.createGroup()
33
+ .addUniform("settings", WORLD_LIGHT_CLUSTER_CULL_SETTINGS)
34
+ .addStorageBuffer("light_data", WebGPUArray.u32, false)
35
+ .addStorageBuffer("output_list", COLLECTION_U32_STRUCT_WRITE, true)
36
+ .addStorageBuffer("proxies", WebGPUArray.from(CLUSTER_LIGHT_PROXY), true);
37
+
38
+ const build_proxy_wgsl = is_spot
39
+ ? /* language=WGSL */ `
40
+ let light = ${SPOT_DESCRIPTOR.marshalling_method_read}(&light_data, light_index);
41
+ let apex = light.position;
42
+ let direction = normalize(light.direction);
43
+ let height = light.distance + light.radius;
44
+ proxy.apex_height = vec4<f32>(apex, height);
45
+ proxy.direction_cos = vec4<f32>(direction, light.coneCos);
46
+ proxy.source_radius = light.radius;
47
+ if (light.distance <= 0.0) {
48
+ proxy.unbounded = 1u;
49
+ proxy.bound = vec4<f32>(apex, ${CLUSTER_LIGHT_PROXY_UNBOUNDED_RADIUS.toExponential()});
50
+ } else {
51
+ proxy.bound = cluster_spot_bound(apex, direction, height, light.coneCos, light.radius);
52
+ }
53
+ want = proxy.unbounded != 0u || world_cluster_cone_intersects_aabb(proxy, settings.coarsest_min, settings.coarsest_max);
54
+ `
55
+ : /* language=WGSL */ `
56
+ let light = ${POINT_DESCRIPTOR.marshalling_method_read}(&light_data, light_index);
57
+ let radius = select(light.radius + light.distance, ${CLUSTER_LIGHT_PROXY_UNBOUNDED_RADIUS.toExponential()}, light.distance <= 0.0);
58
+ proxy.unbounded = select(0u, 1u, light.distance <= 0.0);
59
+ proxy.bound = vec4<f32>(light.position, radius);
60
+ proxy.source_radius = light.radius;
61
+ want = proxy.unbounded != 0u || world_cluster_sphere_intersects_aabb(proxy.bound.xyz, proxy.bound.w, settings.coarsest_min, settings.coarsest_max);
62
+ `;
63
+
64
+ const cluster_type = is_spot ? CLUSTER_LIGHT_TYPE.Spot : CLUSTER_LIGHT_TYPE.Point;
65
+
66
+ const body = CodeChunk.from(
67
+ //language=WGSL
68
+ `
69
+ @compute @workgroup_size(${WORKGROUP_SIZE}, 1, 1)
70
+ fn main(@builtin(global_invocation_id) global_id: vec3<u32>) {
71
+ if (settings.cascade_count == 0u) {
72
+ return;
73
+ }
74
+
75
+ let id = global_id.x;
76
+ let page_index = id / ${prefix_upper}_ELEMENTS_PER_PAGE;
77
+ let in_page_slot = id % ${prefix_upper}_ELEMENTS_PER_PAGE;
78
+
79
+ var want = false;
80
+ var light_index = 0u;
81
+ var proxy: ${CLUSTER_LIGHT_PROXY.wgsl_ref};
82
+
83
+ if (page_index < ${prefix_upper}_PAGE_LIMIT) {
84
+ let page_address = ${prefix_lower}_page_address(&light_data, page_index);
85
+ if (page_address != ~0u) {
86
+ let word_index = in_page_slot >> 5u;
87
+ let bit = in_page_slot & 31u;
88
+ let bitmap_word = ${prefix_lower}_page_bitmap_word(&light_data, page_address, word_index);
89
+ if ((bitmap_word & (1u << bit)) != 0u) {
90
+ light_index = ${prefix_lower}_slot_to_index(page_index, in_page_slot);
91
+ ${build_proxy_wgsl}
92
+ }
93
+ }
94
+ }
95
+
96
+ let capacity = min(u32(arrayLength(&output_list.elements)), u32(arrayLength(&proxies)));
97
+ let tuple = cluster_light_tuple_pack(light_index, ${cluster_type}u);
98
+ let slot = collection_u32_append(&output_list, want, tuple, capacity);
99
+ if (slot != ${SUBGROUP_APPEND_NONE}u) {
100
+ proxies[slot] = proxy;
101
+ }
102
+ }
103
+ `, [
104
+ CLUSTER_LIGHT_PROXY.declaration_chunk,
105
+ chunk_cluster_light_proxy,
106
+ chunk_world_cluster_aabb,
107
+ chunk_cluster_light_tuple,
108
+ chunk_collection_u32_append,
109
+ iterate_chunk,
110
+ read_chunk,
111
+ ]
112
+ );
113
+
114
+ return ComputeShader.from({
115
+ label,
116
+ resources,
117
+ body,
118
+ });
119
+ }
120
+
121
+ export const shader_world_cluster_cull_point_lights = build_world_cull_shader({
122
+ label: "World cluster / cull point lights",
123
+ prefix_upper: "POINT_LIGHTS",
124
+ prefix_lower: "point_lights",
125
+ iterate_chunk: chunk_point_lights_iterate,
126
+ read_chunk: POINT_DESCRIPTOR.chunk_read,
127
+ is_spot: false,
128
+ });
129
+
130
+ export const shader_world_cluster_cull_spot_lights = build_world_cull_shader({
131
+ label: "World cluster / cull spot lights",
132
+ prefix_upper: "SPOT_LIGHTS",
133
+ prefix_lower: "spot_lights",
134
+ iterate_chunk: chunk_spot_lights_iterate,
135
+ read_chunk: SPOT_DESCRIPTOR.chunk_read,
136
+ is_spot: true,
137
+ });
@@ -39,6 +39,13 @@ export class SceneBundle {
39
39
  * @type {ShadeAnimationClip[]}
40
40
  */
41
41
  clips: ShadeAnimationClip[];
42
+ /**
43
+ * Aeroelastic foliage wind rigs extracted from or generated for the asset.
44
+ * Each rig's `root` and each joint's `target` is an index into {@link nodes}.
45
+ *
46
+ * @type {import("../animation/foliage/FoliageWindRig.js").FoliageWindRig[]}
47
+ */
48
+ foliage_rigs: import("../animation/foliage/FoliageWindRig.js").FoliageWindRig[];
42
49
  /**
43
50
  * Punctual lights extracted from the asset, each with the index of the node it sits on. A
44
51
  * light is not a node and has no place of its own; the node's transform is where it is,
@@ -1 +1 @@
1
- {"version":3,"file":"SceneBundle.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/loader/SceneBundle.js"],"names":[],"mappings":"AAGA;;;;;GAKG;AAEH;;;;;;;;;;;;;GAaG;AACH;IACI;;;;OAIG;IACH,OAFU,SAAS,EAAE,CAEV;IAEX;;;;;OAKG;IACH,OAFU,IAAI,EAAE,CAEL;IAEX;;;;;OAKG;IACH,OAFU,kBAAkB,EAAE,CAEnB;IAEX;;;;;;OAMG;IACH,QAFU;QAAC,KAAK,EAAE,KAAK,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAC,EAAE,CAE5B;IAEZ;;;;;;OAMG;IACH,eAHW,SAAS,GACP,MAAM,CAalB;IAED;;;;;OAKG;IACH,0BAFa,YAAY,EAAE,CAsB1B;IAGL;;;OAGG;IACH,wBAFU,OAAO,CAEkB;CANlC;wBApGY,OAAO,gBAAgB,EAAE,SAAS;mBAClC,OAAO,sBAAsB,EAAE,IAAI;iCACnC,OAAO,oCAAoC,EAAE,kBAAkB;oBAC/D,OAAO,yBAAyB,EAAE,KAAK"}
1
+ {"version":3,"file":"SceneBundle.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/loader/SceneBundle.js"],"names":[],"mappings":"AAGA;;;;;GAKG;AAEH;;;;;;;;;;;;;GAaG;AACH;IACI;;;;OAIG;IACH,OAFU,SAAS,EAAE,CAEV;IAEX;;;;;OAKG;IACH,OAFU,IAAI,EAAE,CAEL;IAEX;;;;;OAKG;IACH,OAFU,kBAAkB,EAAE,CAEnB;IAEX;;;;;OAKG;IACH,cAFU,OAAO,wCAAwC,EAAE,cAAc,EAAE,CAEzD;IAElB;;;;;;OAMG;IACH,QAFU;QAAC,KAAK,EAAE,KAAK,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAC,EAAE,CAE5B;IAEZ;;;;;;OAMG;IACH,eAHW,SAAS,GACP,MAAM,CAalB;IAED;;;;;OAKG;IACH,0BAFa,YAAY,EAAE,CAsB1B;IAGL;;;OAGG;IACH,wBAFU,OAAO,CAEkB;CANlC;wBA5GY,OAAO,gBAAgB,EAAE,SAAS;mBAClC,OAAO,sBAAsB,EAAE,IAAI;iCACnC,OAAO,oCAAoC,EAAE,kBAAkB;oBAC/D,OAAO,yBAAyB,EAAE,KAAK"}
@@ -1,111 +1,119 @@
1
- import { assert } from "../../../core/assert.js";
2
- import { m4_multiply } from "../../../core/geom/3d/mat4/m4_multiply.js";
3
-
4
- /**
5
- * @typedef {import("./SceneNode.js").SceneNode} SceneNode
6
- * @typedef {import("../animation/Skin.js").Skin} Skin
7
- * @typedef {import("../animation/ShadeAnimationClip.js").ShadeAnimationClip} ShadeAnimationClip
8
- * @typedef {import("../light/model/Light.js").Light} Light
9
- */
10
-
11
- /**
12
- * What came out of a loader: a model as a flat list of {@link SceneNode}s in pre-order, with the
13
- * skins, clips and lights the same file carried, each addressing nodes by index.
14
- *
15
- * Not glTF-specific by design — the bundle describes "what a loader produced", not "what was in
16
- * a file", and every loader ({@link load_gltf}, {@link load_usd}, {@link deserialize_scene})
17
- * produces one. It is pure data with no lifecycle: a model compiles from it once into a
18
- * {@link Prefab} (`prefab_compile`), and a prefab is what gets placed — as entities, each holding
19
- * a row — however many times the model appears. The bundle is read by that compile and never
20
- * written, so one bundle is shared by every placement, which is what the asset manager hands out.
21
- *
22
- * Pre-order is the one structural promise: a node's parent has a lower index. {@link add_node}
23
- * refuses anything else, so a reader composes world transforms in a single forward pass.
24
- */
25
- export class SceneBundle {
26
- /**
27
- * Every node of the model, parents before children.
28
- *
29
- * @type {SceneNode[]}
30
- */
31
- nodes = [];
32
-
33
- /**
34
- * Skins extracted from the asset. A skin's `joints` and `meshes` are indices into
35
- * {@link nodes}. Empty if the asset has no skinned meshes.
36
- *
37
- * @type {Skin[]}
38
- */
39
- skins = [];
40
-
41
- /**
42
- * Animation clips extracted from the asset. Each channel's `target` is an index into
43
- * {@link nodes}. Empty if the asset has no animations.
44
- *
45
- * @type {ShadeAnimationClip[]}
46
- */
47
- clips = [];
48
-
49
- /**
50
- * Punctual lights extracted from the asset, each with the index of the node it sits on. A
51
- * light is not a node and has no place of its own; the node's transform is where it is,
52
- * already turned to shine along the engine's +Z. Empty if the asset has no lights.
53
- *
54
- * @type {{light: Light, node: number}[]}
55
- */
56
- lights = [];
57
-
58
- /**
59
- * Append a node. Its parent, if it has one, must already be in the bundle — which is what
60
- * keeps the list in pre-order.
61
- *
62
- * @param {SceneNode} node
63
- * @returns {number} the node's index, what a child, a skin, a clip or a light names it by
64
- */
65
- add_node(node) {
66
- assert.defined(node, 'node');
67
- assert.equal(node.isSceneNode, true, 'node.isSceneNode !== true');
68
-
69
- const index = this.nodes.length;
70
-
71
- assert.lessThan(node.parent, index, `node ${index} (${node.name}) names parent ${node.parent}, which is not in the bundle yet — add parents before children`);
72
-
73
- this.nodes.push(node);
74
-
75
- return index;
76
- }
77
-
78
- /**
79
- * The world matrix of every node, composed root-first in double precision — what a reader
80
- * that wants where things are in the model's own space asks for, once.
81
- *
82
- * @returns {Float64Array[]} one 4x4 per node, column-major
83
- */
84
- compute_world_matrices() {
85
- const nodes = this.nodes;
86
- const count = nodes.length;
87
- const worlds = new Array(count);
88
-
89
- for (let i = 0; i < count; i++) {
90
- const node = nodes[i];
91
- const world = new Float64Array(16);
92
- const local = node.local.matrix;
93
-
94
- if (node.parent === -1) {
95
- world.set(local);
96
- } else {
97
- m4_multiply(world, worlds[node.parent], local);
98
- }
99
-
100
- worlds[i] = world;
101
- }
102
-
103
- return worlds;
104
- }
105
- }
106
-
107
- /**
108
- * @readonly
109
- * @type {boolean}
110
- */
111
- SceneBundle.prototype.isSceneBundle = true;
1
+ import { assert } from "../../../core/assert.js";
2
+ import { m4_multiply } from "../../../core/geom/3d/mat4/m4_multiply.js";
3
+
4
+ /**
5
+ * @typedef {import("./SceneNode.js").SceneNode} SceneNode
6
+ * @typedef {import("../animation/Skin.js").Skin} Skin
7
+ * @typedef {import("../animation/ShadeAnimationClip.js").ShadeAnimationClip} ShadeAnimationClip
8
+ * @typedef {import("../light/model/Light.js").Light} Light
9
+ */
10
+
11
+ /**
12
+ * What came out of a loader: a model as a flat list of {@link SceneNode}s in pre-order, with the
13
+ * skins, clips and lights the same file carried, each addressing nodes by index.
14
+ *
15
+ * Not glTF-specific by design — the bundle describes "what a loader produced", not "what was in
16
+ * a file", and every loader ({@link load_gltf}, {@link load_usd}, {@link deserialize_scene})
17
+ * produces one. It is pure data with no lifecycle: a model compiles from it once into a
18
+ * {@link Prefab} (`prefab_compile`), and a prefab is what gets placed — as entities, each holding
19
+ * a row — however many times the model appears. The bundle is read by that compile and never
20
+ * written, so one bundle is shared by every placement, which is what the asset manager hands out.
21
+ *
22
+ * Pre-order is the one structural promise: a node's parent has a lower index. {@link add_node}
23
+ * refuses anything else, so a reader composes world transforms in a single forward pass.
24
+ */
25
+ export class SceneBundle {
26
+ /**
27
+ * Every node of the model, parents before children.
28
+ *
29
+ * @type {SceneNode[]}
30
+ */
31
+ nodes = [];
32
+
33
+ /**
34
+ * Skins extracted from the asset. A skin's `joints` and `meshes` are indices into
35
+ * {@link nodes}. Empty if the asset has no skinned meshes.
36
+ *
37
+ * @type {Skin[]}
38
+ */
39
+ skins = [];
40
+
41
+ /**
42
+ * Animation clips extracted from the asset. Each channel's `target` is an index into
43
+ * {@link nodes}. Empty if the asset has no animations.
44
+ *
45
+ * @type {ShadeAnimationClip[]}
46
+ */
47
+ clips = [];
48
+
49
+ /**
50
+ * Aeroelastic foliage wind rigs extracted from or generated for the asset.
51
+ * Each rig's `root` and each joint's `target` is an index into {@link nodes}.
52
+ *
53
+ * @type {import("../animation/foliage/FoliageWindRig.js").FoliageWindRig[]}
54
+ */
55
+ foliage_rigs = [];
56
+
57
+ /**
58
+ * Punctual lights extracted from the asset, each with the index of the node it sits on. A
59
+ * light is not a node and has no place of its own; the node's transform is where it is,
60
+ * already turned to shine along the engine's +Z. Empty if the asset has no lights.
61
+ *
62
+ * @type {{light: Light, node: number}[]}
63
+ */
64
+ lights = [];
65
+
66
+ /**
67
+ * Append a node. Its parent, if it has one, must already be in the bundle — which is what
68
+ * keeps the list in pre-order.
69
+ *
70
+ * @param {SceneNode} node
71
+ * @returns {number} the node's index, what a child, a skin, a clip or a light names it by
72
+ */
73
+ add_node(node) {
74
+ assert.defined(node, 'node');
75
+ assert.equal(node.isSceneNode, true, 'node.isSceneNode !== true');
76
+
77
+ const index = this.nodes.length;
78
+
79
+ assert.lessThan(node.parent, index, `node ${index} (${node.name}) names parent ${node.parent}, which is not in the bundle yet — add parents before children`);
80
+
81
+ this.nodes.push(node);
82
+
83
+ return index;
84
+ }
85
+
86
+ /**
87
+ * The world matrix of every node, composed root-first in double precision — what a reader
88
+ * that wants where things are in the model's own space asks for, once.
89
+ *
90
+ * @returns {Float64Array[]} one 4x4 per node, column-major
91
+ */
92
+ compute_world_matrices() {
93
+ const nodes = this.nodes;
94
+ const count = nodes.length;
95
+ const worlds = new Array(count);
96
+
97
+ for (let i = 0; i < count; i++) {
98
+ const node = nodes[i];
99
+ const world = new Float64Array(16);
100
+ const local = node.local.matrix;
101
+
102
+ if (node.parent === -1) {
103
+ world.set(local);
104
+ } else {
105
+ m4_multiply(world, worlds[node.parent], local);
106
+ }
107
+
108
+ worlds[i] = world;
109
+ }
110
+
111
+ return worlds;
112
+ }
113
+ }
114
+
115
+ /**
116
+ * @readonly
117
+ * @type {boolean}
118
+ */
119
+ SceneBundle.prototype.isSceneBundle = true;
@@ -13,7 +13,7 @@ export class TinyGltf {
13
13
  * @readonly
14
14
  * @type {TextureFormat}
15
15
  */
16
- static readonly "__#287@#UNCOMPRESSED_TARGET": TextureFormat;
16
+ static readonly "__#289@#UNCOMPRESSED_TARGET": TextureFormat;
17
17
  /**
18
18
  * @param {AssetManager} assetManager
19
19
  * @param {AssetRequestScope} [scope]
@@ -45,6 +45,10 @@ export function build_gbuffer_pipeline_descriptor({ label, material_group, surfa
45
45
  * @returns {RenderPipelineDescriptor}
46
46
  */
47
47
  export function gbuffer_pipeline_descriptor_for_shader(label: string, shader: ShaderDescriptor): RenderPipelineDescriptor;
48
+ /**
49
+ *
50
+ * @type {number}
51
+ */
48
52
  /**
49
53
  * Group 1 of every material's G-buffer pipeline: the visibility buffer and the view that drew it.
50
54
  *
@@ -1 +1 @@
1
- {"version":3,"file":"fragment_gbuffer.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/material/standard/fragment_gbuffer.js"],"names":[],"mappings":"AAkGA;;;;;;;;GAQG;AACH,+DAHW,6BAA6B,GAC3B,2BAA2B,CAUvC;AASD;;;;;;;;;;;GAWG;AACH,qDAHW,SAAS,GACP,SAAS,CA8OrB;AAED;;;;;;;;;GASG;AACH;IAL2B,KAAK,EAArB,MAAM;IACiC,cAAc,EAArD,6BAA6B;IACV,OAAO,EAA1B,SAAS;IACP,wBAAwB,CAUpC;AAED;;;;;;;GAOG;AACH,8DAJW,MAAM,UACN,gBAAgB,GACd,wBAAwB,CA4BpC;AAnXD;;;;;;;;;GASG;AACH,qCAFU,6BAA6B,CAEmC;AAa1E;;;;GAIG;AACH,uCAFU,6BAA6B,CAEqC;AAgC5E;;;;GAIG;AACH,wCAFU,2BAA2B,CAEoE;AAoTzG;;;;GAIG;AACH,6BAFU,gBAAgB,CAMvB;8CA7Y2C,wDAAwD;4CAC1D,sDAAsD;0BAFxE,oCAAoC;yCAxCrB,iEAAiE;iCA2CzE,kCAAkC"}
1
+ {"version":3,"file":"fragment_gbuffer.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/material/standard/fragment_gbuffer.js"],"names":[],"mappings":"AAkGA;;;;;;;;GAQG;AACH,+DAHW,6BAA6B,GAC3B,2BAA2B,CAUvC;AASD;;;;;;;;;;;GAWG;AACH,qDAHW,SAAS,GACP,SAAS,CA+OrB;AAED;;;;;;;;;GASG;AACH;IAL2B,KAAK,EAArB,MAAM;IACiC,cAAc,EAArD,6BAA6B;IACV,OAAO,EAA1B,SAAS;IACP,wBAAwB,CAUpC;AAED;;;;;;;GAOG;AACH,8DAJW,MAAM,UACN,gBAAgB,GACd,wBAAwB,CA4BpC;AA1XD;;;GAGG;AAGH;;;;;;;;;GASG;AACH,qCAFU,6BAA6B,CAEmC;AAa1E;;;;GAIG;AACH,uCAFU,6BAA6B,CAEqC;AAgC5E;;;;GAIG;AACH,wCAFU,2BAA2B,CAEoE;AAqTzG;;;;GAIG;AACH,6BAFU,gBAAgB,CAMvB;8CA9Y2C,wDAAwD;4CAC1D,sDAAsD;0BAFxE,oCAAoC;yCAxCrB,iEAAiE;iCA2CzE,kCAAkC"}
@@ -9,7 +9,7 @@ import { GEOMETRY_METADATA_STRUCT } from "../../geometry/GEOMETRY_METADATA_STRUC
9
9
  import { MESHLET_METADATA_STRUCT } from "../../geometry/meshlet/encoding/MESHLET_METADATA_STRUCT.js";
10
10
  import { chunk_node3d_flags } from "../../scene/chunk_node3d_flags.js";
11
11
  import { chunk_scene_database_access } from "../../scene/chunk_scene_database_access.js";
12
- import { RENDER_GLOBAL_MIP_BIAS } from "../../postprocess/taa/RENDER_GLOBAL_MIP_BIAS.js";
12
+ import { chunk_view_mip_bias } from "../../view/chunk_view_mip_bias.js";
13
13
  import { chunk_barycentric_full } from "../../shader/chunk/geometry/triangle/chunk_barycentric_full.js";
14
14
  import { chunk_barycentric_interpolate_uv } from "../../shader/chunk/geometry/triangle/chunk_barycentric_interpolate_uv.js";
15
15
  import { chunk_compute_normal_matrix_from_m4 } from "../../shader/chunk/geometry/mat4/chunk_compute_normal_matrix_from_m4.js";
@@ -53,7 +53,7 @@ import { SHADING_MATERIAL_RESOURCE_GROUP } from "./SHADING_MATERIAL_RESOURCE_GRO
53
53
  *
54
54
  * @type {number}
55
55
  */
56
- const MIP_DERIVATIVE_BIAS = 1 / (1 - RENDER_GLOBAL_MIP_BIAS);
56
+
57
57
 
58
58
  /**
59
59
  * Group 1 of every material's G-buffer pipeline: the visibility buffer and the view that drew it.
@@ -146,7 +146,7 @@ struct GBufferOutput {
146
146
  }
147
147
 
148
148
  // this is a multiplies applies to gradients before invoking texture sampling
149
- const MIP_BIAS = ${MIP_DERIVATIVE_BIAS.toFixed(8)};
149
+
150
150
 
151
151
  @fragment
152
152
  fn main(
@@ -228,7 +228,7 @@ fn main(
228
228
  var uv_info = barycentric_interpolate_uv(barycentric, geometry_vertex_uv_0, geometry_vertex_uv_1, geometry_vertex_uv_2);
229
229
 
230
230
  // figure out final mip bias
231
- let uv_derivative_bias = MIP_BIAS / view.upscale_ratio;
231
+ let uv_derivative_bias = view_uv_derivative_bias(view.upscale_ratio);
232
232
 
233
233
  // bias UV derivatives to supersample textures
234
234
  uv_info.ddx *= uv_derivative_bias.x;
@@ -367,7 +367,8 @@ fn main(
367
367
  chunk_rgbe9995_encode,
368
368
  chunk_dither_color_8bit_triangle_noise,
369
369
  chunk_scene_database_access,
370
- chunk_node3d_flags,
370
+ chunk_node3d_flags,
371
+ chunk_view_mip_bias,
371
372
  ]
372
373
  );
373
374
  }