@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,100 +1,99 @@
1
- import { assert } from "../../../core/assert.js";
2
- import { CodeChunk } from "../shader/compiler/CodeChunk.js";
3
-
4
- /**
5
- * Idea is to down-sample any kind of texture.
6
- * Somewhat inspired by AMD's FSR single-pass-downsampler.
7
- * At present, it is impossible to implement a single-pass downsampler in WebGPU, because you can't bind multiple mips of a storage texture in compute shader.
8
- *
9
- * @example
10
- * const min = generate_downsampler_code({
11
- * type: f32,
12
- * initial_value: "1e10"
13
- * reduction_code: "output = min( texel.r, output );"
14
- * });
15
- *
16
- * @param {Object} options
17
- * @param {WebGPUType} options.type
18
- * @param {string} options.reduction_code
19
- * @param {string} options.initial_value
20
- * @param {CodeChunk[]} [options.dependencies] Additional dependencies, referenced in the reduction code
21
- * @return {CodeChunk}
22
- */
23
- export function generate_downsampler_code({
24
- type,
25
- reduction_code,
26
- initial_value,
27
- dependencies = [],
28
- }) {
29
-
30
- assert.isString(initial_value, 'initial_value');
31
- assert.isString(reduction_code, 'reduction_code');
32
- assert.isArray(dependencies, 'dependencies');
33
-
34
- assert.defined(type, 'type');
35
- assert.equal(type.isWebGPUType, true, 'type must be a WebGPUType');
36
-
37
- const deps = [
38
- ...dependencies,
39
- ];
40
-
41
- if (type.requires_declaration) {
42
- deps.push(type.declaration_chunk);
43
- }
44
-
45
- // NOTE this code doesn't work when downsampling a portion of image (using setViewport)
46
- // the issue is reliance on `source_resolution` which is the entire source image, not just the portion we're downsampling
47
-
48
- return CodeChunk.from(
49
- //language=WGSL
50
- `
51
- @fragment
52
- fn main(
53
- @builtin(position) coord: vec4<f32>,
54
- @location(0) uv: vec2<f32>,
55
- ) -> @location(0) ${type.wgsl_ref} {
56
- let output_texel_size2 = 0.5 / vec2<f32>(output_resolution);
57
-
58
-
59
- // texel bounds ins in UV space
60
- let uv_min = uv - output_texel_size2;
61
- let uv_max = uv + output_texel_size2;
62
-
63
- // compute bounds in source texture
64
- let source_resolution = textureDimensions(tInput);
65
- let source_resolution_f = vec2<f32>(source_resolution);
66
-
67
- // minor epsilon to avoid float rounding errors
68
- const EPSILON = 1e-6;
69
-
70
- // Nudge the bounds slightly inward to absorb floating-point drift
71
- let safe_uv_min = uv_min + EPSILON;
72
- let safe_uv_max = uv_max - EPSILON;
73
-
74
- let source_bounds_min = max(
75
- vec2<i32>( floor( safe_uv_min * source_resolution_f ) ),
76
- vec2<i32>( 0 ),
77
- );
78
- let source_bounds_max = min(
79
- vec2<i32>( ceil( safe_uv_max * source_resolution_f ) ),
80
- vec2<i32>( source_resolution - 1 ),
81
- );
82
-
83
- var output:${type.wgsl_ref} = ${initial_value};
84
-
85
- for( var y = source_bounds_min.y; y <= source_bounds_max.y; y++ ){
86
- for( var x = source_bounds_min.x; x <= source_bounds_max.x; x++ ){
87
-
88
- let texel = textureLoad(tInput, vec2<i32>(x,y), 0);
89
-
90
- // output will be written using the snippet below
91
- ${reduction_code}
92
-
93
- }
94
- }
95
-
96
- return output;
97
- }
98
- `, deps);
99
-
100
- }
1
+ import { assert } from "../../../core/assert.js";
2
+ import { CodeChunk } from "../shader/compiler/CodeChunk.js";
3
+
4
+ /**
5
+ * Idea is to down-sample any kind of texture.
6
+ *
7
+ * @example
8
+ * const min = generate_downsampler_code({
9
+ * type: f32,
10
+ * initial_value: "1e10"
11
+ * reduction_code: "output = min( texel.r, output );"
12
+ * });
13
+ *
14
+ * @param {Object} options
15
+ * @param {WebGPUType} options.type
16
+ * @param {string} options.reduction_code
17
+ * @param {string} options.initial_value
18
+ * @param {CodeChunk[]} [options.dependencies] Additional dependencies, referenced in the reduction code
19
+ * @return {CodeChunk}
20
+ */
21
+ export function generate_downsampler_code({
22
+ type,
23
+ reduction_code,
24
+ initial_value,
25
+ dependencies = [],
26
+ }) {
27
+
28
+ assert.isString(initial_value, 'initial_value');
29
+ assert.isString(reduction_code, 'reduction_code');
30
+ assert.isArray(dependencies, 'dependencies');
31
+
32
+ assert.defined(type, 'type');
33
+ assert.equal(type.isWebGPUType, true, 'type must be a WebGPUType');
34
+
35
+ const deps = [
36
+ ...dependencies,
37
+ ];
38
+
39
+ if (type.requires_declaration) {
40
+ deps.push(type.declaration_chunk);
41
+ }
42
+
43
+ return CodeChunk.from(
44
+ //language=WGSL
45
+ `
46
+ @compute @workgroup_size(8, 8, 1)
47
+ fn main(
48
+ @builtin(global_invocation_id) global_id: vec3<u32>,
49
+ ) {
50
+ if (any(global_id.xy >= output_resolution)) {
51
+ return;
52
+ }
53
+
54
+ let output_resolution_f = vec2<f32>(output_resolution);
55
+ let uv = (vec2<f32>(global_id.xy) + 0.5) / output_resolution_f;
56
+ let output_texel_size2 = 0.5 / output_resolution_f;
57
+
58
+ // texel bounds in UV space
59
+ let uv_min = uv - output_texel_size2;
60
+ let uv_max = uv + output_texel_size2;
61
+
62
+ // compute bounds in source texture
63
+ let source_resolution = textureDimensions(tInput);
64
+ let source_resolution_f = vec2<f32>(source_resolution);
65
+
66
+ // minor epsilon to avoid float rounding errors
67
+ const EPSILON = 1e-6;
68
+
69
+ // Nudge the bounds slightly inward to absorb floating-point drift
70
+ let safe_uv_min = uv_min + EPSILON;
71
+ let safe_uv_max = uv_max - EPSILON;
72
+
73
+ let source_bounds_min = max(
74
+ vec2<i32>( floor( safe_uv_min * source_resolution_f ) ),
75
+ vec2<i32>( 0 ),
76
+ );
77
+ let source_bounds_max = min(
78
+ vec2<i32>( ceil( safe_uv_max * source_resolution_f ) ),
79
+ vec2<i32>( source_resolution ),
80
+ );
81
+
82
+ var output:${type.wgsl_ref} = ${initial_value};
83
+
84
+ for( var y = source_bounds_min.y; y < source_bounds_max.y; y++ ){
85
+ for( var x = source_bounds_min.x; x < source_bounds_max.x; x++ ){
86
+
87
+ let texel = textureLoad(tInput, vec2<i32>(x,y), 0);
88
+
89
+ // output will be written using the snippet below
90
+ ${reduction_code}
91
+
92
+ }
93
+ }
94
+
95
+ textureStore(tOutput, vec2<i32>(global_id.xy), vec4<f32>(output, 0.0, 0.0));
96
+ }
97
+ `, deps);
98
+
99
+ }
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Picks power-of-two alignments `[align_w, align_h]` for HZB mip 0 within the allowed area bloat.
3
+ *
4
+ * Starting from the largest shared power-of-two alignment that fits within `max_bloat`, chases
5
+ * lowest set bits (`d += d & -d`) along each axis to minimize reduction dispatches, maximize
6
+ * SPD-covered mips and exact 2:1 (`2x2`) transitions, and push any remaining odd polyphase
7
+ * transitions to coarser mip levels.
8
+ *
9
+ * @param {number} source_w - Source width in pixels.
10
+ * @param {number} source_h - Source height in pixels.
11
+ * @param {number} [max_bloat=1.05] - Maximum area multiplier relative to unaligned half-res.
12
+ * @returns {[number, number]} Power-of-two alignment factors `[align_w, align_h]`.
13
+ */
14
+ export function hzb_pick_alignment(source_w: number, source_h: number, max_bloat?: number): [number, number];
15
+ //# sourceMappingURL=hzb_pick_alignment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hzb_pick_alignment.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/hiz/hzb_pick_alignment.js"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AACH,6CALW,MAAM,YACN,MAAM,cACN,MAAM,GACJ,CAAC,MAAM,EAAE,MAAM,CAAC,CAoI5B"}
@@ -0,0 +1,148 @@
1
+ import { assert } from "../../../core/assert.js";
2
+ import { msb_32 } from "../../../core/binary/msb_32.js";
3
+ import { bitCount } from "../../../core/binary/operations/bitCount.js";
4
+
5
+ /**
6
+ * Picks power-of-two alignments `[align_w, align_h]` for HZB mip 0 within the allowed area bloat.
7
+ *
8
+ * Starting from the largest shared power-of-two alignment that fits within `max_bloat`, chases
9
+ * lowest set bits (`d += d & -d`) along each axis to minimize reduction dispatches, maximize
10
+ * SPD-covered mips and exact 2:1 (`2x2`) transitions, and push any remaining odd polyphase
11
+ * transitions to coarser mip levels.
12
+ *
13
+ * @param {number} source_w - Source width in pixels.
14
+ * @param {number} source_h - Source height in pixels.
15
+ * @param {number} [max_bloat=1.05] - Maximum area multiplier relative to unaligned half-res.
16
+ * @returns {[number, number]} Power-of-two alignment factors `[align_w, align_h]`.
17
+ */
18
+ export function hzb_pick_alignment(source_w, source_h, max_bloat = 1.05) {
19
+ assert.greaterThan(max_bloat, 1, 'max_bloat must be greater than 1');
20
+ assert.isNonNegativeInteger(source_w, 'source_w');
21
+ assert.isNonNegativeInteger(source_h, 'source_h');
22
+
23
+ const half_w = source_w >>> 1;
24
+ const half_h = source_h >>> 1;
25
+
26
+ if (half_w === 0 || half_h === 0) {
27
+ return [1, 1];
28
+ }
29
+
30
+ const max_area = half_w * half_h * max_bloat;
31
+
32
+ let base_align = 1;
33
+
34
+ while (base_align < half_w && base_align < half_h) {
35
+ const next_align = base_align << 1;
36
+ const mask = next_align - 1;
37
+
38
+ const w = (half_w + mask) & ~mask;
39
+ const h = (half_h + mask) & ~mask;
40
+
41
+ if (w * h > max_area) {
42
+ break;
43
+ }
44
+
45
+ base_align = next_align;
46
+ }
47
+
48
+ const base_mask = base_align - 1;
49
+ const w0 = (half_w + base_mask) & ~base_mask;
50
+ const h0 = (half_h + base_mask) & ~base_mask;
51
+
52
+ let best_w = w0;
53
+ let best_h = h0;
54
+ let best_steps = Infinity;
55
+ let best_spd_mips = -1;
56
+ let best_2x2 = -1;
57
+ let best_odd_axes = Infinity;
58
+ let best_odd_work = Infinity;
59
+ let best_area = Infinity;
60
+
61
+ for (let w = w0; w * h0 <= max_area; w += (w & -w)) {
62
+ const msb_w = msb_32(w);
63
+ const odd_w = w ^ (1 << msb_w);
64
+
65
+ for (let h = h0; ; h += (h & -h)) {
66
+ const area = w * h;
67
+ if (area > max_area) {
68
+ break;
69
+ }
70
+
71
+ const msb_h = msb_32(h);
72
+ const odd_h = h ^ (1 << msb_h);
73
+ const total_transitions = msb_w > msb_h ? msb_w : msb_h;
74
+ const odd_any = odd_w | odd_h;
75
+
76
+ let steps = 0;
77
+ let spd_mips = 0;
78
+ let mip = 0;
79
+
80
+ while (mip < total_transitions) {
81
+ let count = 0;
82
+ while (count < 4 && (mip + count) < total_transitions && ((odd_any >>> (mip + count)) & 1) === 0) {
83
+ count++;
84
+ }
85
+ steps++;
86
+ if (count >= 2) {
87
+ spd_mips += count;
88
+ mip += count;
89
+ } else {
90
+ mip += 1;
91
+ }
92
+ }
93
+
94
+ const count_2x2 = total_transitions - bitCount(odd_any);
95
+ const count_odd_axes = bitCount(odd_w) + bitCount(odd_h);
96
+
97
+ let odd_work = 0;
98
+ let rem = odd_any;
99
+ while (rem !== 0) {
100
+ const lsb = rem & -rem;
101
+ const m = msb_32(lsb);
102
+ const taps_x = ((odd_w >>> m) & 1) + 2;
103
+ const taps_y = ((odd_h >>> m) & 1) + 2;
104
+ const out_w = (w >>> (m + 1)) || 1;
105
+ const out_h = (h >>> (m + 1)) || 1;
106
+ odd_work += out_w * out_h * (taps_x * taps_y - 4);
107
+ rem ^= lsb;
108
+ }
109
+
110
+ const is_better =
111
+ steps < best_steps ||
112
+ (steps === best_steps && (
113
+ spd_mips > best_spd_mips ||
114
+ (spd_mips === best_spd_mips && (
115
+ count_2x2 > best_2x2 ||
116
+ (count_2x2 === best_2x2 && (
117
+ count_odd_axes < best_odd_axes ||
118
+ (count_odd_axes === best_odd_axes && (
119
+ odd_work < best_odd_work ||
120
+ (odd_work === best_odd_work && area < best_area)
121
+ ))
122
+ ))
123
+ ))
124
+ ));
125
+
126
+ if (is_better) {
127
+ best_w = w;
128
+ best_h = h;
129
+ best_steps = steps;
130
+ best_spd_mips = spd_mips;
131
+ best_2x2 = count_2x2;
132
+ best_odd_axes = count_odd_axes;
133
+ best_odd_work = odd_work;
134
+ best_area = area;
135
+ }
136
+
137
+ if ((h & (h - 1)) === 0) {
138
+ break;
139
+ }
140
+ }
141
+
142
+ if ((w & (w - 1)) === 0) {
143
+ break;
144
+ }
145
+ }
146
+
147
+ return [best_w & -best_w, best_h & -best_h];
148
+ }
@@ -0,0 +1,28 @@
1
+ /**
2
+ * @typedef {Object} HZBReductionStep
3
+ * @property {number} base_mip Source mip level index (0-based).
4
+ * @property {number} mip_count Number of consecutive mip levels produced in this step (1..4).
5
+ */
6
+ /**
7
+ * Plans the sequence of reduction dispatches from HZB mip 0 down to the 1x1 tail.
8
+ *
9
+ * Consecutive mip transitions where neither active (> 1) axis is odd halve cleanly by 2x2 and are
10
+ * coalesced into a single up-to-4-mip SPD dispatch. Any transition from an odd dimension (> 1)
11
+ * requires the conservative polyphase UV-box kernel (`mip_count = 1`).
12
+ *
13
+ * @param {number} width Mip 0 width in texels.
14
+ * @param {number} height Mip 0 height in texels.
15
+ * @returns {HZBReductionStep[]}
16
+ */
17
+ export function hzb_plan_reduction_steps(width: number, height: number): HZBReductionStep[];
18
+ export type HZBReductionStep = {
19
+ /**
20
+ * Source mip level index (0-based).
21
+ */
22
+ base_mip: number;
23
+ /**
24
+ * Number of consecutive mip levels produced in this step (1..4).
25
+ */
26
+ mip_count: number;
27
+ };
28
+ //# sourceMappingURL=hzb_plan_reduction_steps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hzb_plan_reduction_steps.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/hiz/hzb_plan_reduction_steps.js"],"names":[],"mappings":"AAGA;;;;GAIG;AAEH;;;;;;;;;;GAUG;AACH,gDAJW,MAAM,UACN,MAAM,GACJ,gBAAgB,EAAE,CAuC9B;;;;;cApDa,MAAM;;;;eACN,MAAM"}
@@ -0,0 +1,58 @@
1
+ import { assert } from "../../../core/assert.js";
2
+ import { texture_mip_level_count } from "../../util/texture_mip_extent.js";
3
+
4
+ /**
5
+ * @typedef {Object} HZBReductionStep
6
+ * @property {number} base_mip Source mip level index (0-based).
7
+ * @property {number} mip_count Number of consecutive mip levels produced in this step (1..4).
8
+ */
9
+
10
+ /**
11
+ * Plans the sequence of reduction dispatches from HZB mip 0 down to the 1x1 tail.
12
+ *
13
+ * Consecutive mip transitions where neither active (> 1) axis is odd halve cleanly by 2x2 and are
14
+ * coalesced into a single up-to-4-mip SPD dispatch. Any transition from an odd dimension (> 1)
15
+ * requires the conservative polyphase UV-box kernel (`mip_count = 1`).
16
+ *
17
+ * @param {number} width Mip 0 width in texels.
18
+ * @param {number} height Mip 0 height in texels.
19
+ * @returns {HZBReductionStep[]}
20
+ */
21
+ export function hzb_plan_reduction_steps(width, height) {
22
+ assert.isPositiveInteger(width, 'width');
23
+ assert.isPositiveInteger(height, 'height');
24
+
25
+ const total_mips = texture_mip_level_count(width, height, 1, "2d");
26
+
27
+ /**
28
+ * @type {HZBReductionStep[]}
29
+ */
30
+ const steps = [];
31
+
32
+ let mip = 0;
33
+
34
+ while (mip < total_mips - 1) {
35
+ let count = 0;
36
+
37
+ while (count < 4 && (mip + count) < total_mips - 1) {
38
+ const w = Math.max(1, width >>> (mip + count));
39
+ const h = Math.max(1, height >>> (mip + count));
40
+
41
+ if ((w > 1 && (w & 1) !== 0) || (h > 1 && (h & 1) !== 0)) {
42
+ break;
43
+ }
44
+
45
+ count++;
46
+ }
47
+
48
+ if (count >= 2) {
49
+ steps.push({ base_mip: mip, mip_count: count });
50
+ mip += count;
51
+ } else {
52
+ steps.push({ base_mip: mip, mip_count: 1 });
53
+ mip += 1;
54
+ }
55
+ }
56
+
57
+ return steps;
58
+ }
@@ -1,12 +1,12 @@
1
1
  /**
2
2
  * Initial reduction pass, works with non-power-of-two resolutions as input
3
- * @type {ImageShader}
3
+ * @type {ComputeShader}
4
4
  */
5
- export const shader_hzb_reduce_mip0: ImageShader;
5
+ export const shader_hzb_reduce_mip0: ComputeShader;
6
6
  /**
7
7
  * Mip1+ reduction pass, works with non-power-of-two resolutions as input
8
- * @type {ImageShader}
8
+ * @type {ComputeShader}
9
9
  */
10
- export const shader_hzb_reduce_any: ImageShader;
11
- import { ImageShader } from "../shader/ImageShader.js";
10
+ export const shader_hzb_reduce_any: ComputeShader;
11
+ import { ComputeShader } from "../shader/ComputeShader.js";
12
12
  //# sourceMappingURL=shader_hzb_reduce_any.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"shader_hzb_reduce_any.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/hiz/shader_hzb_reduce_any.js"],"names":[],"mappings":"AAoBA;;;GAGG;AACH,qCAFU,WAAW,CAoBlB;AAGH;;;GAGG;AACH,oCAFU,WAAW,CAmBnB;4BAjE0B,0BAA0B"}
1
+ {"version":3,"file":"shader_hzb_reduce_any.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/hiz/shader_hzb_reduce_any.js"],"names":[],"mappings":"AAoBA;;;GAGG;AACH,qCAFU,aAAa,CAepB;AAGH;;;GAGG;AACH,oCAFU,aAAa,CAcpB;8BAvD2B,4BAA4B"}
@@ -1,67 +1,57 @@
1
- import { vec2f, vec2u } from "../shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
2
- import { ImageShader } from "../shader/ImageShader.js";
3
- import { ShaderResourceSetDescriptor } from "../shader/resource/ShaderResourceSetDescriptor.js";
4
- import { ShaderDescriptor } from "../shader/ShaderDescriptor.js";
5
- import { generate_downsampler_code } from "./generate_downsampler_code.js";
6
-
7
- import { HZB_TEXTURE_FORMAT } from "./HZB_TEXTURE_FORMAT.js";
8
-
9
- const resources = new ShaderResourceSetDescriptor();
10
-
11
- // per-pass, eight bytes, read-only: immediate data rather than a uniform buffer. The reduction
12
- // walks the mip chain a pass at a time and every pass wants a different resolution, which used to
13
- // mean a persistent table of them bound at a per-mip dynamic offset.
14
- resources.setImmediate("output_resolution", vec2u);
15
-
16
- resources.createGroup()
17
- .addTexture("tInput", "unfilterable-float")
18
- ;
19
-
20
-
21
- /**
22
- * Initial reduction pass, works with non-power-of-two resolutions as input
23
- * @type {ImageShader}
24
- */
25
- export const shader_hzb_reduce_mip0 = new ImageShader({
26
- descriptor: ShaderDescriptor.from({
27
- label: 'HZB / reduce mip0',
28
- // NOTE: we reduce from depth, so texel read happens from the .R (X) channel for both min and max.
29
- body: generate_downsampler_code({
30
- type: vec2f,
31
- initial_value: 'vec2( 1.0, 0.0 )',
32
- //language=WGSL
33
- reduction_code: `
34
- output.x = min(texel.x, output.x);
35
- output.y = max(texel.x, output.y);
36
- `,
37
- }),
38
- resources
39
- }),
40
- targets: [
41
- { format: HZB_TEXTURE_FORMAT }
42
- ]
43
- });
44
-
45
-
46
- /**
47
- * Mip1+ reduction pass, works with non-power-of-two resolutions as input
48
- * @type {ImageShader}
49
- */
50
- export const shader_hzb_reduce_any = new ImageShader({
51
- descriptor: ShaderDescriptor.from({
52
- label: 'HZB / reduce any resolution',
53
- body: generate_downsampler_code({
54
- type: vec2f,
55
- initial_value: 'vec2( 1.0, 0.0 )',
56
- //language=WGSL
57
- reduction_code: `
58
- output.x = min(texel.x, output.x);
59
- output.y = max(texel.y, output.y);
60
- `,
61
- }),
62
- resources
63
- }),
64
- targets: [
65
- { format: HZB_TEXTURE_FORMAT }
66
- ]
67
- })
1
+ import { vec2f, vec2u } from "../shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
2
+ import { ComputeShader } from "../shader/ComputeShader.js";
3
+ import { ShaderResourceSetDescriptor } from "../shader/resource/ShaderResourceSetDescriptor.js";
4
+ import { generate_downsampler_code } from "./generate_downsampler_code.js";
5
+
6
+ import { HZB_TEXTURE_FORMAT } from "./HZB_TEXTURE_FORMAT.js";
7
+
8
+ const resources = new ShaderResourceSetDescriptor();
9
+
10
+ // per-pass, eight bytes, read-only: immediate data rather than a uniform buffer. The reduction
11
+ // walks the mip chain a pass at a time and every pass wants a different resolution, which used to
12
+ // mean a persistent table of them bound at a per-mip dynamic offset.
13
+ resources.setImmediate("output_resolution", vec2u);
14
+
15
+ resources.createGroup()
16
+ .addTexture("tInput", "unfilterable-float")
17
+ .addStorageTexture("tOutput", HZB_TEXTURE_FORMAT, "2d", "write-only")
18
+ ;
19
+
20
+
21
+ /**
22
+ * Initial reduction pass, works with non-power-of-two resolutions as input
23
+ * @type {ComputeShader}
24
+ */
25
+ export const shader_hzb_reduce_mip0 = ComputeShader.from({
26
+ label: 'HZB / reduce mip0',
27
+ // NOTE: we reduce from depth, so texel read happens from the .R (X) channel for both min and max.
28
+ body: generate_downsampler_code({
29
+ type: vec2f,
30
+ initial_value: 'vec2( 1.0, 0.0 )',
31
+ //language=WGSL
32
+ reduction_code: `
33
+ output.x = min(texel.x, output.x);
34
+ output.y = max(texel.x, output.y);
35
+ `,
36
+ }),
37
+ resources,
38
+ });
39
+
40
+
41
+ /**
42
+ * Mip1+ reduction pass, works with non-power-of-two resolutions as input
43
+ * @type {ComputeShader}
44
+ */
45
+ export const shader_hzb_reduce_any = ComputeShader.from({
46
+ label: 'HZB / reduce any resolution',
47
+ body: generate_downsampler_code({
48
+ type: vec2f,
49
+ initial_value: 'vec2( 1.0, 0.0 )',
50
+ //language=WGSL
51
+ reduction_code: `
52
+ output.x = min(texel.x, output.x);
53
+ output.y = max(texel.y, output.y);
54
+ `,
55
+ }),
56
+ resources,
57
+ });
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * Same as standard first mip reduction, but with a clipping region.
3
3
  * Primarily used for shadow maps where shadows are atlased into a single texture
4
- * @type {ImageShader}
4
+ * @type {ComputeShader}
5
5
  */
6
- export const shader_hzb_reduce_mip0_clip: ImageShader;
7
- import { ImageShader } from "../shader/ImageShader.js";
6
+ export const shader_hzb_reduce_mip0_clip: ComputeShader;
7
+ import { ComputeShader } from "../shader/ComputeShader.js";
8
8
  //# sourceMappingURL=shader_hzb_reduce_mip0_clip.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"shader_hzb_reduce_mip0_clip.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/hiz/shader_hzb_reduce_mip0_clip.js"],"names":[],"mappings":"AAiGA;;;;GAIG;AACH,0CAFU,WAAW,CAWlB;4BA5GyB,0BAA0B"}
1
+ {"version":3,"file":"shader_hzb_reduce_mip0_clip.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/hiz/shader_hzb_reduce_mip0_clip.js"],"names":[],"mappings":"AAqGA;;;;GAIG;AACH,0CAFU,aAAa,CAMpB;8BA3G2B,4BAA4B"}