@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,39 +0,0 @@
1
- export class VisibilityComputer {
2
- /**
3
- *
4
- * @type {CameraView}
5
- */
6
- __view: CameraView;
7
- /**
8
- *
9
- * @type {RenderLayer}
10
- * @private
11
- */
12
- private __activeLayer;
13
- /**
14
- *
15
- * @type {IncrementalDeltaSet<*>}
16
- * @private
17
- */
18
- private __output;
19
- /**
20
- *
21
- * @param {CameraView} view
22
- */
23
- set view(view: CameraView);
24
- /**
25
- * @private
26
- * @param {RenderLayer} layer
27
- */
28
- private __processLayer;
29
- /**
30
- * @param {IncrementalDeltaSet<Object3D>} v
31
- */
32
- set output(v: IncrementalDeltaSet<Object3D>);
33
- /**
34
- *
35
- * @param {RenderLayerManager} renderLayers
36
- */
37
- build(renderLayers: RenderLayerManager): void;
38
- }
39
- //# sourceMappingURL=VisibilityComputer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"VisibilityComputer.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/render/visibility/VisibilityComputer.js"],"names":[],"mappings":"AAEA;IACI;;;OAGG;IACH,mBAAc;IAEd;;;;OAIG;IACH,sBAAqB;IAErB;;;;OAIG;IACH,iBAAgB;IAEhB;;;OAGG;IACH,2BAEC;IAED;;;OAGG;IACH,uBA2BC;IAGD;;OAEG;IACH,6CAEC;IAED;;;OAGG;IACH,8CAEC;CACJ"}
@@ -1,80 +0,0 @@
1
- const scratch_array = [];
2
-
3
- export class VisibilityComputer {
4
- /**
5
- *
6
- * @type {CameraView}
7
- */
8
- __view = null;
9
-
10
- /**
11
- *
12
- * @type {RenderLayer}
13
- * @private
14
- */
15
- __activeLayer = null;
16
-
17
- /**
18
- *
19
- * @type {IncrementalDeltaSet<*>}
20
- * @private
21
- */
22
- __output = null;
23
-
24
- /**
25
- *
26
- * @param {CameraView} view
27
- */
28
- set view(view) {
29
- this.__view = view;
30
- }
31
-
32
- /**
33
- * @private
34
- * @param {RenderLayer} layer
35
- */
36
- __processLayer(layer) {
37
- if (!layer.state.visible) {
38
- //whole layer is hidden
39
-
40
- // layer.visibleSet.clear();
41
- return;
42
- }
43
-
44
- this.__activeLayer = layer;
45
-
46
- if (layer.managed) {
47
-
48
- this.__output.pushOther(layer.visibleSet);
49
-
50
- return;
51
- }
52
-
53
- const added_objects = layer.buildVisibleSet(scratch_array, 0, this.__view);
54
-
55
- for (let i = 0; i < added_objects; i++) {
56
- const object3d = scratch_array[i];
57
-
58
- //object passed all filters, add it to visible set
59
- this.__output.push(object3d);
60
-
61
- this.__activeLayer.visibleSet.push(object3d);
62
- }
63
- }
64
-
65
-
66
- /**
67
- * @param {IncrementalDeltaSet<Object3D>} v
68
- */
69
- set output(v) {
70
- this.__output = v;
71
- }
72
-
73
- /**
74
- *
75
- * @param {RenderLayerManager} renderLayers
76
- */
77
- build(renderLayers) {
78
- renderLayers.traverse(this.__processLayer, this);
79
- }
80
- }
@@ -1,29 +0,0 @@
1
- export class VisibilityFilter {
2
- constructor({ name, objectPredicateInitialize, objectPredicateFinalize, objectPredicateExecute, layerPredicate }: {
3
- name: any;
4
- objectPredicateInitialize?: typeof noop;
5
- objectPredicateFinalize?: typeof noop;
6
- objectPredicateExecute?: typeof returnTrue;
7
- layerPredicate?: typeof returnTrue;
8
- });
9
- /**
10
- *
11
- * @type {boolean}
12
- */
13
- enabled: boolean;
14
- /**
15
- * @type {string}
16
- */
17
- name: string;
18
- objectPredicateExecute: typeof returnTrue;
19
- objectPredicateInitialize: typeof noop;
20
- objectPredicateFinalize: typeof noop;
21
- /**
22
- *
23
- * @type {function(RenderLayer): boolean}
24
- */
25
- layerPredicate: (arg0: RenderLayer) => boolean;
26
- }
27
- import { returnTrue } from "../../../../core/function/returnTrue.js";
28
- import { noop } from "../../../../core/function/noop.js";
29
- //# sourceMappingURL=VisibilityFilter.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"VisibilityFilter.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/render/visibility/VisibilityFilter.js"],"names":[],"mappings":"AAIA;IAOI;;;;;;OAwBC;IA9BD;;;OAGG;IACH,SAFU,OAAO,CAEF;IAYX;;OAEG;IACH,MAFU,MAAM,CAEA;IAEhB,0CAAoD;IACpD,uCAA0D;IAC1D,qCAAsD;IAEtD;;;OAGG;IACH,uCAFiC,OAAO,CAEJ;CAE3C;2BAlC0B,yCAAyC;qBAD/C,mCAAmC"}
@@ -1,37 +0,0 @@
1
- import { assert } from "../../../../core/assert.js";
2
- import { noop } from "../../../../core/function/noop.js";
3
- import { returnTrue } from "../../../../core/function/returnTrue.js";
4
-
5
- export class VisibilityFilter {
6
- /**
7
- *
8
- * @type {boolean}
9
- */
10
- enabled = true;
11
-
12
- constructor({
13
- name,
14
- objectPredicateInitialize = noop,
15
- objectPredicateFinalize = noop,
16
- objectPredicateExecute = returnTrue,
17
- layerPredicate = returnTrue
18
- }) {
19
-
20
- assert.isString(name, 'name');
21
-
22
- /**
23
- * @type {string}
24
- */
25
- this.name = name;
26
-
27
- this.objectPredicateExecute = objectPredicateExecute;
28
- this.objectPredicateInitialize = objectPredicateInitialize;
29
- this.objectPredicateFinalize = objectPredicateFinalize;
30
-
31
- /**
32
- *
33
- * @type {function(RenderLayer): boolean}
34
- */
35
- this.layerPredicate = layerPredicate;
36
- }
37
- }
@@ -1,24 +0,0 @@
1
- /**
2
- * Hand one graph's blend down to the renderer: what each of its clips weighs, and where each of the
3
- * audible ones is playing.
4
- *
5
- * **Time is written every frame and weight only when it moves.** The clock is the reason this
6
- * function exists — Shade can advance a clip itself and is never asked to, because the pose gameplay
7
- * reads and the pose on the screen have to be the same one (I-4) — while a graph sitting in one
8
- * state has the same weights it had last frame and there is nothing to say. `set_playback_weight`
9
- * and `set_time` both go through the clip table's upload dedupe, so a repeated value costs a
10
- * comparison rather than a transfer; skipping the unchanged weights is about not doing the read
11
- * either.
12
- *
13
- * A clip at zero weight has its time left alone. It contributes nothing wherever it is, and where it
14
- * is, is where the state that owns it stopped.
15
- *
16
- * @param {GPUAnimationManager} manager
17
- * @param {AnimationGraphController} controller
18
- * @param {Int32Array} clip_ids the manager's id for each of `controller.def.clipIndex`, in order
19
- * @param {Float32Array} written the weight each of those clips was last given; updated in place.
20
- * A value no weight can take — `-1` — is how a caller says it does not know, which is the case
21
- * after a renderer restart
22
- */
23
- export function write_graph_playback(manager: GPUAnimationManager, controller: AnimationGraphController, clip_ids: Int32Array, written: Float32Array): void;
24
- //# sourceMappingURL=write_graph_playback.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"write_graph_playback.d.ts","sourceRoot":"","sources":["../../../../../src/engine/graphics3/animation/write_graph_playback.js"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,mHALW,UAAU,WACV,YAAY,QA2BtB"}
@@ -1,48 +0,0 @@
1
- import { assert } from "../../../core/assert.js";
2
-
3
- /**
4
- * Hand one graph's blend down to the renderer: what each of its clips weighs, and where each of the
5
- * audible ones is playing.
6
- *
7
- * **Time is written every frame and weight only when it moves.** The clock is the reason this
8
- * function exists — Shade can advance a clip itself and is never asked to, because the pose gameplay
9
- * reads and the pose on the screen have to be the same one (I-4) — while a graph sitting in one
10
- * state has the same weights it had last frame and there is nothing to say. `set_playback_weight`
11
- * and `set_time` both go through the clip table's upload dedupe, so a repeated value costs a
12
- * comparison rather than a transfer; skipping the unchanged weights is about not doing the read
13
- * either.
14
- *
15
- * A clip at zero weight has its time left alone. It contributes nothing wherever it is, and where it
16
- * is, is where the state that owns it stopped.
17
- *
18
- * @param {GPUAnimationManager} manager
19
- * @param {AnimationGraphController} controller
20
- * @param {Int32Array} clip_ids the manager's id for each of `controller.def.clipIndex`, in order
21
- * @param {Float32Array} written the weight each of those clips was last given; updated in place.
22
- * A value no weight can take — `-1` — is how a caller says it does not know, which is the case
23
- * after a renderer restart
24
- */
25
- export function write_graph_playback(manager, controller, clip_ids, written) {
26
- assert.defined(manager, 'manager');
27
- assert.defined(controller, 'controller');
28
-
29
- const weights = controller.blendState.weights;
30
-
31
- assert.equal(clip_ids.length, weights.length, 'clip_ids.length');
32
- assert.equal(written.length, weights.length, 'written.length');
33
-
34
- for (let i = 0; i < weights.length; i++) {
35
- const clip_id = clip_ids[i];
36
- const weight = weights[i];
37
-
38
- if (weight !== written[i]) {
39
- manager.set_playback_weight(clip_id, weight);
40
-
41
- written[i] = weight;
42
- }
43
-
44
- if (weight > 0) {
45
- manager.set_time(clip_id, controller.clip_time(i));
46
- }
47
- }
48
- }
@@ -1,32 +0,0 @@
1
- /**
2
- * How a decal atlas fills the border around a patch.
3
- *
4
- * Two rules rather than one, because the correct fill depends on what the channel means and getting
5
- * it wrong shows up only once the mip chain is built.
6
- *
7
- * @enum {number}
8
- */
9
- export const DecalAtlasFill = {
10
- /**
11
- * Colour weighted by coverage, and a gutter of nothing.
12
- *
13
- * The patch is stored **premultiplied** and its border is zero. Averaging that pair down a mip
14
- * chain gives premultiplied colour times coverage at every level, which is what a decal fading
15
- * out at its edge should look like. The same arrangement in *straight* alpha is where dark
16
- * halos come from — an edge texel averaged against transparent black keeps its alpha and loses
17
- * its colour — and straight alpha beside a zeroed gutter is exactly what the atlas this
18
- * replaces has today.
19
- */
20
- PremultipliedCoverage: 0,
21
-
22
- /**
23
- * The nearest content texel, repeated outward.
24
- *
25
- * For channels that carry no coverage of their own — a normal, a roughness, a metalness — there
26
- * is nothing to fade toward, and a zeroed gutter would drag a partially covered mip texel toward
27
- * a meaningless value (a zero normal, mirror-smooth roughness). Coverage for these comes from
28
- * the albedo's alpha, so their border repeats the edge and lets the mip chain average content
29
- * against more of the same.
30
- */
31
- EdgeExtend: 1,
32
- };
@@ -1,49 +0,0 @@
1
- import { chunk_cluster_depth_from_z_slice } from "../../light/cluster/chunk_cluster_depth_from_z_slice.js";
2
- import { chunk_camera_ray_from_uv } from "../../shader/chunk/geometry/ray/chunk_camera_ray_from_uv.js";
3
- import { RAY_STRUCT } from "../../shader/chunk/geometry/ray/RAY_STRUCT.js";
4
- import { chunk_texel_coordinate_to_uv } from "../../shader/chunk/texture/chunk_texel_coordinate_to_uv.js";
5
- import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
6
- import { chunk_camera_ray_planar_depth_scale } from "../chunk_camera_ray_planar_depth_scale.js";
7
- import { chunk_volumetrics_froxel_content_offset } from "../chunk_volumetrics_froxel_content_offset.js";
8
- import { CAMERA_RESOURCE } from "../../camera/CAMERA_RESOURCE.js";
9
- import { VOLUMETRICS_METADATA_RESOURCE } from "../VOLUMETRICS_RESOURCES.js";
10
-
11
- /**
12
- * `volumetrics_froxel_centre_ws(voxel, resolution)` — the world position a froxel's value stands for:
13
- * its column's centre, at the depth its slab's content sits at (`volumetrics_froxel_content_offset`),
14
- * which is where the lighting pass's jittered samples average to and where
15
- * `volumetrics_position_world_to_froxel_uvw` puts the froxel's texel centre. A froxel GI module
16
- * whose answer depends on position asks it there; GI is smooth enough across a froxel that one
17
- * sample is all of it.
18
- *
19
- * The enclosing shader binds `camera` and `volumetrics_metadata` under those names.
20
- *
21
- * @type {CodeChunk}
22
- */
23
- export const chunk_volumetrics_froxel_centre_ws = CodeChunk.from(
24
- //language=WGSL
25
- `
26
- fn volumetrics_froxel_centre_ws(voxel: vec3<u32>, resolution: vec3<u32>) -> vec3<f32> {
27
- let curve = volumetrics_metadata.froxel_cluster_parameters;
28
- let near_far = camera.clip_near_far;
29
-
30
- let slice = f32(voxel.z) + volumetrics_froxel_content_offset(curve.z);
31
- let view_depth = clamp(cluster_depth_from_z_slice(slice, curve, f32(resolution.z)), near_far.x, near_far.y);
32
-
33
- let ray = camera_ray_from_uv(texel_coordinate_to_uv(vec2<f32>(voxel.xy), resolution.xy), camera);
34
-
35
- // planar depth to a distance along the ray, as the lighting pass does
36
- return ray.origin + ray.direction * (view_depth * camera_ray_planar_depth_scale(ray.direction, camera));
37
- }
38
- `, [
39
- RAY_STRUCT.declaration_chunk,
40
- chunk_volumetrics_froxel_content_offset,
41
- chunk_cluster_depth_from_z_slice,
42
- chunk_camera_ray_from_uv,
43
- chunk_texel_coordinate_to_uv,
44
- chunk_camera_ray_planar_depth_scale,
45
- ]
46
- );
47
-
48
- chunk_volumetrics_froxel_centre_ws.requireResource(CAMERA_RESOURCE);
49
- chunk_volumetrics_froxel_centre_ws.requireResource(VOLUMETRICS_METADATA_RESOURCE);
@@ -1,50 +0,0 @@
1
- import {
2
- METRO_L1_IRRADIANCE_STRUCT
3
- } from "../../shader/chunk/spherical_harmonics/l1i/chunk_convert_to_irradiance_sh.js";
4
- import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
5
- import { INDIRECT_LIGHT_INTENSITY } from "../../deferred/INDIRECT_LIGHT_INTENSITY.js";
6
- import { chunk_volumetrics_irradiance_sh } from "../chunk_volumetrics_irradiance_sh.js";
7
- import { VOLUMETRICS_GI_COCG_RESOURCE, VOLUMETRICS_GI_Y_RESOURCE } from "./volumetrics_gi_resources.js";
8
-
9
- /**
10
- * How the froxel GI stage (`shader_volumetrics_gi`) stores its answer. One thread per froxel asks the
11
- * renderer's indirect lighting mode what radiance arrives at the froxel, as RGB SH2
12
- * (`chunk_volumetrics_gi_sample`), and hands the answer to `volumetrics_gi_store`. That starts the
13
- * froxel irradiance volume, and `shader_volumetrics_build_irradiance` adds the lights to it.
14
- *
15
- * `volumetrics_gi_store(voxel, radiance)` scales the field by `INDIRECT_LIGHT_INTENSITY`, as the
16
- * deferred and forward paths scale their indirect light, encodes it as the volume stores light
17
- * (`volumetrics_irradiance_sh_add_radiance`) and writes it to `tGIY` / `tGICoCg`.
18
- *
19
- * The enclosing shader binds `tGIY` and `tGICoCg` under those names.
20
- *
21
- * @type {CodeChunk}
22
- */
23
- export const chunk_volumetrics_gi = CodeChunk.from(
24
- //language=WGSL
25
- `
26
- fn volumetrics_gi_store(voxel: vec3<u32>, radiance: array<vec3<f32>, 4>) {
27
- const INDIRECT_INTENSITY : f32 = ${INDIRECT_LIGHT_INTENSITY};
28
-
29
- let scaled = array<vec3<f32>, 4>(
30
- radiance[0] * INDIRECT_INTENSITY,
31
- radiance[1] * INDIRECT_INTENSITY,
32
- radiance[2] * INDIRECT_INTENSITY,
33
- radiance[3] * INDIRECT_INTENSITY,
34
- );
35
-
36
- var sh: ${METRO_L1_IRRADIANCE_STRUCT.wgsl_ref};
37
-
38
- let stored = volumetrics_irradiance_sh_storable(volumetrics_irradiance_sh_add_radiance(sh, scaled));
39
-
40
- textureStore(tGIY, voxel, stored.Y);
41
- textureStore(tGICoCg, voxel, vec4<f32>(stored.CoCg, 0.0, 0.0));
42
- }
43
- `, [
44
- METRO_L1_IRRADIANCE_STRUCT.declaration_chunk,
45
- chunk_volumetrics_irradiance_sh,
46
- ]
47
- );
48
-
49
- chunk_volumetrics_gi.requireResource(VOLUMETRICS_GI_COCG_RESOURCE);
50
- chunk_volumetrics_gi.requireResource(VOLUMETRICS_GI_Y_RESOURCE);
@@ -1,105 +0,0 @@
1
- import { chunk_brick4_sample_sh } from "../../global_illumination/brick4/gpu/draw/chunk_brick4_sample_sh.js";
2
- import { INDIRECT_LIGHTING } from "../../INDIRECT_LIGHTING.js";
3
- import { ShadeIndirectLightingMode } from "../../ShadeIndirectLightingMode.js";
4
- import { chunk_lpv_mesh_interpolation_probe_sh } from "../../shader/chunk/light/lpv/chunk_lpv_mesh_interpolation_probe_sh.js";
5
- import { chunk_lpv_mesh_lookup_nearest_cell } from "../../shader/chunk/light/lpv/chunk_lpv_mesh_lookup_nearest_cell.js";
6
- import { INVALID_TET_DECLARATION } from "../../shader/chunk/light/lpv/INVALID_TET_DECLARATION.js";
7
- import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
8
- import { CodeChunkChoice } from "../../shader/compiler/CodeChunkChoice.js";
9
- import { chunk_volumetrics_froxel_centre_ws } from "./chunk_volumetrics_froxel_centre_ws.js";
10
- import { ENVIRONMENT_SH_RESOURCE } from "../../light/environment/ENVIRONMENT_SH_RESOURCE.js";
11
-
12
- /**
13
- * {@link chunk_volumetrics_gi_sample} under IBL: the environment, as `GPULightCollection.environment_sh`
14
- * holds it (`shader_project_environment_sh`). It is infinitely far, so every froxel receives the same
15
- * field.
16
- * @type {CodeChunk}
17
- */
18
- export const chunk_volumetrics_gi_sample_ibl = CodeChunk.from(
19
- //language=WGSL
20
- `
21
- fn volumetrics_gi_sample(voxel: vec3<u32>, resolution: vec3<u32>) -> array<vec3<f32>, 4> {
22
- return array<vec3<f32>, 4>(
23
- environment_sh[0].xyz,
24
- environment_sh[1].xyz,
25
- environment_sh[2].xyz,
26
- environment_sh[3].xyz,
27
- );
28
- }
29
- `, []);
30
-
31
- chunk_volumetrics_gi_sample_ibl.requireResource(ENVIRONMENT_SH_RESOURCE);
32
-
33
- /**
34
- * {@link chunk_volumetrics_gi_sample} under Brick4: the sparse volumetric light map's probes,
35
- * interpolated at the froxel's centre and truncated from SH3 to SH2. Reads `brick4`.
36
- * @type {CodeChunk}
37
- */
38
- export const chunk_volumetrics_gi_sample_brick4 = CodeChunk.from(
39
- //language=WGSL
40
- `
41
- fn volumetrics_gi_sample(voxel: vec3<u32>, resolution: vec3<u32>) -> array<vec3<f32>, 4> {
42
- let position = volumetrics_froxel_centre_ws(voxel, resolution);
43
-
44
- // A froxel has no surface. The normal only masks probes behind one, and a zero normal weighs
45
- // every probe of the brick the same (brick4_probe_compute_weight_by_normal), which is the
46
- // interpolation a point in open space wants.
47
- let sh = brick4_sample_sh(position, vec3<f32>(0.0));
48
-
49
- // SH3 to SH2: the first four coefficients are the same two bands, in the same order
50
- return array<vec3<f32>, 4>(sh[0], sh[1], sh[2], sh[3]);
51
- }
52
- `, [
53
- chunk_volumetrics_froxel_centre_ws,
54
- chunk_brick4_sample_sh,
55
- ]);
56
-
57
- /**
58
- * {@link chunk_volumetrics_gi_sample} under LPV: the light probe volume's tetrahedral mesh, its probes
59
- * (radiance SH2) interpolated barycentrically at the froxel's centre. Reads the LPV's buffers.
60
- * @type {CodeChunk}
61
- */
62
- export const chunk_volumetrics_gi_sample_lpv = CodeChunk.from(
63
- //language=WGSL
64
- `
65
- fn volumetrics_gi_sample(voxel: vec3<u32>, resolution: vec3<u32>) -> array<vec3<f32>, 4> {
66
- let position = volumetrics_froxel_centre_ws(voxel, resolution);
67
-
68
- var weights: vec4<f32>;
69
- let tet = lpv_mesh_lookup_nearest_cell(position, &weights);
70
-
71
- // Outside the probe mesh there is nothing to interpolate, and the deferred LPV pass gives such a
72
- // point no indirect light either. No visibility mask: that needs a surface normal, and a froxel
73
- // has none.
74
- var radiance = array<vec3<f32>, 4>();
75
-
76
- if (tet != INVALID_TET) {
77
- radiance = lpv_mesh_interpolation_probe_sh(weights, tet);
78
- }
79
-
80
- return radiance;
81
- }
82
- `, [
83
- chunk_volumetrics_froxel_centre_ws,
84
- chunk_lpv_mesh_lookup_nearest_cell,
85
- chunk_lpv_mesh_interpolation_probe_sh,
86
- INVALID_TET_DECLARATION,
87
- ]);
88
-
89
- /**
90
- * The radiance that arrives at a froxel, as RGB SH2, by the renderer's indirect lighting mode
91
- * ({@link INDIRECT_LIGHTING}):
92
- *
93
- * ```wgsl
94
- * fn volumetrics_gi_sample(voxel: vec3<u32>, resolution: vec3<u32>) -> array<vec3<f32>, 4>
95
- * ```
96
- *
97
- * A new mode is one more alternative: nothing downstream knows which mode wrote the volume.
98
- *
99
- * @type {CodeChunkChoice}
100
- */
101
- export const chunk_volumetrics_gi_sample = CodeChunkChoice.from(INDIRECT_LIGHTING);
102
-
103
- chunk_volumetrics_gi_sample.add(ShadeIndirectLightingMode.IBL, chunk_volumetrics_gi_sample_ibl);
104
- chunk_volumetrics_gi_sample.add(ShadeIndirectLightingMode.Brick4, chunk_volumetrics_gi_sample_brick4);
105
- chunk_volumetrics_gi_sample.add(ShadeIndirectLightingMode.LPV, chunk_volumetrics_gi_sample_lpv);
@@ -1,80 +0,0 @@
1
- import { TextureResourceDescriptor } from "../../../device/graph/TextureResourceDescriptor.js";
2
- import { graph_compute_pass } from "../../shader/graph/compute/graph_compute_pass.js";
3
- import { graph_import_buffer } from "../../shader/graph/graph_import_buffer.js";
4
- import { ShaderSwitchSet } from "../../shader/compiler/ShaderSwitchSet.js";
5
- import { shader_volumetrics_gi } from "./shader_volumetrics_gi.js";
6
- import { VOLUMETRICS_GI_WORKGROUP_RESOLUTION } from "./volumetrics_gi_resources.js";
7
-
8
- /**
9
- * The froxel GI stage: the renderer's indirect lighting at every froxel, as the froxel irradiance
10
- * volume encodes light, for `shader_volumetrics_build_irradiance` to add the lights to. The shader is
11
- * built for the renderer's switches, which pick the indirect lighting mode it samples
12
- * (`chunk_volumetrics_gi_sample`); this binds the environment and the running mode's source.
13
- *
14
- * @param {object} options
15
- * @param {import("../../../../engine/graphics/render/frame_graph/FrameGraph.js").FrameGraph} options.graph
16
- * @param {ShaderSwitchSet} [options.shader_switches] the renderer's
17
- * @param {import("../../scene/GPUSceneContext.js").GPUSceneContext} options.scene_ctx for its environment,
18
- * `lights.environment_sh`
19
- * @param {import("../../global_illumination/brick4/Brick4LightMap.js").Brick4LightMap} [options.brick4] the scene's,
20
- * while Brick4 runs
21
- * @param {import("../../global_illumination/lpv/GPULightProbeVolume.js").GPULightProbeVolume} [options.lpv] the
22
- * scene's, while LPV runs. A source not given is the shader's default, for a variant that does not read it
23
- * @param {import("../../camera/GPUCameraContext.js").GPUCameraContext} options.camera
24
- * @param {number} options.volumetrics_metadata graph handle
25
- * @param {number[]} options.resolution the froxel grid
26
- * @returns {{Y: number, CoCg: number}} handles of the GI volume, in the froxel irradiance encoding
27
- */
28
- export function graph_build_froxel_gi({
29
- graph,
30
- shader_switches = ShaderSwitchSet.EMPTY,
31
- scene_ctx,
32
- brick4,
33
- lpv,
34
- camera,
35
- volumetrics_metadata,
36
- resolution,
37
- }) {
38
- const volume = () => TextureResourceDescriptor.from({
39
- resolution,
40
- dimension: "3d",
41
- format: "rgba16float",
42
- usage: GPUTextureUsage.STORAGE_BINDING | GPUTextureUsage.TEXTURE_BINDING
43
- });
44
-
45
- const bindings = {
46
- volumetrics_metadata,
47
- camera: graph_import_buffer(graph, camera.buffer.buffer, "froxel gi camera"),
48
- tGIY: volume(),
49
- tGICoCg: volume(),
50
- environment_sh: scene_ctx.lights.environment_sh,
51
- };
52
-
53
- // the running mode's source; the others are the shader's defaults, which its variant does not read
54
- if (brick4 !== undefined) {
55
- bindings.brick4 = brick4.buffer;
56
- }
57
-
58
- if (lpv !== undefined) {
59
- bindings.lpv_lookup = lpv.buffer_mesh_bvh;
60
- bindings.lpv_metadata = lpv.buffer_metadata;
61
- bindings.lpv_mesh = lpv.buffer_mesh;
62
- bindings.lpv_probes = lpv.buffer_probes;
63
- }
64
-
65
- const outputs = graph_compute_pass({
66
- graph,
67
- shader: shader_volumetrics_gi.variant(shader_switches),
68
- group_count: [
69
- Math.ceil(resolution[0] / VOLUMETRICS_GI_WORKGROUP_RESOLUTION[0]),
70
- Math.ceil(resolution[1] / VOLUMETRICS_GI_WORKGROUP_RESOLUTION[1]),
71
- Math.ceil(resolution[2] / VOLUMETRICS_GI_WORKGROUP_RESOLUTION[2]),
72
- ],
73
- bindings,
74
- });
75
-
76
- return {
77
- Y: outputs.tGIY,
78
- CoCg: outputs.tGICoCg,
79
- };
80
- }
@@ -1,51 +0,0 @@
1
- import { BRICK4_DATA_STRUCT } from "../../global_illumination/brick4/gpu/BRICK4_DATA_STRUCT.js";
2
- import { LPV_SHADER_RESOURCE_GROUP_WITH_DEFAULTS } from "../../global_illumination/probe/octahedral/LPV_SHADER_RESOURCE_GROUP.js";
3
- import { ENVIRONMENT_SH_TYPE } from "../../light/environment/shader_project_environment_sh.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 { chunk_volumetrics_gi } from "./chunk_volumetrics_gi.js";
8
- import { chunk_volumetrics_gi_sample } from "./chunk_volumetrics_gi_sample.js";
9
- import { VOLUMETRICS_GI_WORKGROUP_RESOLUTION, volumetrics_gi_resource_group } from "./volumetrics_gi_resources.js";
10
-
11
- const resources = new ShaderResourceSetDescriptor();
12
-
13
- // every indirect lighting mode's source, whichever the variant reads (chunk_volumetrics_gi_sample). The pass
14
- // binds the environment and the running mode's source; the others have defaults the variant does not read.
15
- resources.addGroup(
16
- volumetrics_gi_resource_group()
17
- .addUniform("environment_sh", ENVIRONMENT_SH_TYPE)
18
- .addStorageBuffer("brick4", BRICK4_DATA_STRUCT, false, true)
19
- );
20
- resources.addGroup(LPV_SHADER_RESOURCE_GROUP_WITH_DEFAULTS);
21
-
22
- const body = CodeChunk.from(
23
- //language=WGSL
24
- `
25
- @compute @workgroup_size(${VOLUMETRICS_GI_WORKGROUP_RESOLUTION.join(", ")})
26
- fn main(@builtin(global_invocation_id) voxel: vec3<u32>) {
27
- let resolution = textureDimensions(tGIY);
28
-
29
- if (any(voxel >= resolution)) {
30
- return;
31
- }
32
-
33
- volumetrics_gi_store(voxel, volumetrics_gi_sample(voxel, resolution));
34
- }
35
- `, [
36
- chunk_volumetrics_gi,
37
- chunk_volumetrics_gi_sample,
38
- ]);
39
-
40
- /**
41
- * The froxel GI stage: the renderer's indirect lighting at every froxel, one thread per froxel. Which
42
- * mode's light it asks for is a shader switch ({@link chunk_volumetrics_gi_sample}); the bindings are
43
- * the same for every mode. See `chunk_volumetrics_gi` for what it does with the answer.
44
- *
45
- * @type {ComputeShader}
46
- */
47
- export const shader_volumetrics_gi = ComputeShader.from({
48
- label: "Volumetrics / GI",
49
- resources,
50
- body,
51
- });