@woosh/meep-engine 3.69.0 → 3.70.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.
- package/CHANGELOG.md +30 -1
- package/build/bundle-worker-terrain.js +1 -1
- package/package.json +1 -1
- package/src/core/bvh8/build/BVH8Converter.d.ts +16 -0
- package/src/core/bvh8/build/BVH8Converter.d.ts.map +1 -1
- package/src/core/bvh8/build/BVH8Converter.js +64 -37
- package/src/core/bvh8/build/bvh8_assign_slots_greedy.d.ts +25 -0
- package/src/core/bvh8/build/bvh8_assign_slots_greedy.d.ts.map +1 -0
- package/src/core/bvh8/build/bvh8_assign_slots_greedy.js +68 -0
- package/src/core/bvh8/build/bvh8_from_proxy.d.ts.map +1 -1
- package/src/core/bvh8/build/bvh8_from_proxy.js +2 -33
- package/src/core/bvh8/build/bvh8_node_fit_slots.d.ts +22 -0
- package/src/core/bvh8/build/bvh8_node_fit_slots.d.ts.map +1 -0
- package/src/core/bvh8/build/bvh8_node_fit_slots.js +115 -0
- package/src/core/bvh8/bvh8_depth.d.ts +8 -0
- package/src/core/bvh8/bvh8_depth.d.ts.map +1 -0
- package/src/core/bvh8/bvh8_depth.js +39 -0
- package/src/core/math/complex/complex_fft_radix2.d.ts +19 -0
- package/src/core/math/complex/complex_fft_radix2.d.ts.map +1 -0
- package/src/core/math/complex/complex_fft_radix2.js +71 -0
- package/src/engine/graphics3/GPUFluidSystem.d.ts +17 -4
- package/src/engine/graphics3/GPUFluidSystem.d.ts.map +1 -1
- package/src/engine/graphics3/GPUFluidSystem.js +113 -16
- package/src/engine/physics/cloth/playground/wind_main.js +7 -6
- package/src/engine/physics/cloth/wind/AbstractClothWind.d.ts +2 -2
- package/src/engine/physics/cloth/wind/AbstractClothWind.js +2 -2
- package/src/engine/physics/cloth/wind/ClothFluidWind.d.ts +3 -3
- package/src/engine/physics/cloth/wind/ClothFluidWind.d.ts.map +1 -1
- package/src/engine/physics/cloth/wind/ClothFluidWind.js +7 -9
- package/src/engine/physics/cloth/wind/ClothGPUFluidWind.d.ts +10 -10
- package/src/engine/physics/cloth/wind/ClothGPUFluidWind.d.ts.map +1 -1
- package/src/engine/physics/cloth/wind/ClothGPUFluidWind.js +14 -22
- package/src/engine/physics/fluid/FluidAtmosphere.d.ts +16 -2
- package/src/engine/physics/fluid/FluidAtmosphere.d.ts.map +1 -1
- package/src/engine/physics/fluid/FluidAtmosphere.js +17 -3
- package/src/engine/physics/fluid/ecs/FluidEffectorsComponentSerializationAdapter.d.ts +1 -2
- package/src/engine/physics/fluid/ecs/FluidEffectorsComponentSerializationAdapter.d.ts.map +1 -1
- package/src/engine/physics/fluid/ecs/FluidEffectorsComponentSerializationAdapter.js +1 -2
- package/src/engine/physics/fluid/ecs/FluidEffectorsSystem.d.ts +8 -5
- package/src/engine/physics/fluid/ecs/FluidEffectorsSystem.d.ts.map +1 -1
- package/src/engine/physics/fluid/ecs/FluidEffectorsSystem.js +60 -17
- package/src/engine/physics/fluid/effector/AbstractFluidEffector.d.ts +1 -1
- package/src/engine/physics/fluid/effector/AbstractFluidEffector.js +1 -1
- package/src/engine/physics/fluid/effector/GlobalFluidEffector.d.ts +33 -47
- package/src/engine/physics/fluid/effector/GlobalFluidEffector.d.ts.map +1 -1
- package/src/engine/physics/fluid/effector/GlobalFluidEffector.js +38 -176
- package/src/engine/physics/fluid/effector/GlobalFluidEffectorSerializationAdapter.d.ts +8 -11
- package/src/engine/physics/fluid/effector/GlobalFluidEffectorSerializationAdapter.d.ts.map +1 -1
- package/src/engine/physics/fluid/effector/GlobalFluidEffectorSerializationAdapter.js +13 -24
- package/src/engine/physics/fluid/effector/GlobalFluidEffectorSerializationUpgrader_0_1.d.ts +16 -0
- package/src/engine/physics/fluid/effector/GlobalFluidEffectorSerializationUpgrader_0_1.d.ts.map +1 -0
- package/src/engine/physics/fluid/effector/GlobalFluidEffectorSerializationUpgrader_0_1.js +35 -0
- package/src/engine/physics/fluid/fluid_apply_atmosphere.d.ts +1 -1
- package/src/engine/physics/fluid/fluid_apply_atmosphere.js +1 -1
- package/src/engine/physics/fluid/turbulence/FLUID_TURBULENCE_TILE.d.ts +28 -0
- package/src/engine/physics/fluid/turbulence/FLUID_TURBULENCE_TILE.d.ts.map +1 -0
- package/src/engine/physics/fluid/turbulence/FLUID_TURBULENCE_TILE.js +29 -0
- package/src/engine/physics/fluid/turbulence/fluid_atmosphere_velocity_at.d.ts +16 -0
- package/src/engine/physics/fluid/turbulence/fluid_atmosphere_velocity_at.d.ts.map +1 -0
- package/src/engine/physics/fluid/turbulence/fluid_atmosphere_velocity_at.js +49 -0
- package/src/engine/physics/fluid/turbulence/fluid_turbulence_inverse_tile_size.d.ts +11 -0
- package/src/engine/physics/fluid/turbulence/fluid_turbulence_inverse_tile_size.d.ts.map +1 -0
- package/src/engine/physics/fluid/turbulence/fluid_turbulence_inverse_tile_size.js +18 -0
- package/src/engine/physics/fluid/turbulence/fluid_turbulence_tile_data.d.ts +25 -0
- package/src/engine/physics/fluid/turbulence/fluid_turbulence_tile_data.d.ts.map +1 -0
- package/src/engine/physics/fluid/turbulence/fluid_turbulence_tile_data.js +65 -0
- package/src/engine/physics/fluid/turbulence/fluid_turbulence_tile_generate.d.ts +56 -0
- package/src/engine/physics/fluid/turbulence/fluid_turbulence_tile_generate.d.ts.map +1 -0
- package/src/engine/physics/fluid/turbulence/fluid_turbulence_tile_generate.js +313 -0
- package/src/engine/physics/fluid/turbulence/fluid_turbulence_tile_sample.d.ts +16 -0
- package/src/engine/physics/fluid/turbulence/fluid_turbulence_tile_sample.d.ts.map +1 -0
- package/src/engine/physics/fluid/turbulence/fluid_turbulence_tile_sample.js +69 -0
- package/src/generation/foliage/mesh/branch_ring_triangulate.d.ts +1 -1
- package/src/generation/foliage/mesh/branch_ring_triangulate.js +1 -1
- package/src/shade/playground/bvh_repro/README.md +8 -6
- package/src/shade/playground/bvh_repro/index.html +125 -124
- package/src/shade/playground/bvh_repro/main.js +259 -254
- package/src/shade/playground/foliage_wind/foliage_world.d.ts.map +1 -1
- package/src/shade/playground/foliage_wind/foliage_world.js +7 -4
- package/src/shade/playground/grass_surfaces/main.js +3 -2
- package/src/shade/playground/particle_ecs/bonfire_wind.d.ts +23 -13
- package/src/shade/playground/particle_ecs/bonfire_wind.d.ts.map +1 -1
- package/src/shade/playground/particle_ecs/bonfire_wind.js +30 -33
- package/src/shade/playground/skinned_blas_refit/README.md +26 -14
- package/src/shade/playground/skinned_blas_refit/shader_blas_audit_leaf_triangles.d.ts +14 -9
- package/src/shade/playground/skinned_blas_refit/shader_blas_audit_leaf_triangles.d.ts.map +1 -1
- package/src/shade/playground/skinned_blas_refit/shader_blas_audit_leaf_triangles.js +126 -127
- package/src/shade/playground/skinned_blas_refit/shader_blas_audit_points.js +95 -95
- package/src/shade/playground/skinned_blas_refit/shader_blas_audit_visibility.d.ts +9 -1
- package/src/shade/playground/skinned_blas_refit/shader_blas_audit_visibility.d.ts.map +1 -1
- package/src/shade/playground/skinned_blas_refit/shader_blas_audit_visibility.js +146 -135
- package/src/shade/playground/skinned_blas_refit/verify_clone_leaves.d.ts +6 -6
- package/src/shade/playground/skinned_blas_refit/verify_clone_leaves.d.ts.map +1 -1
- package/src/shade/playground/skinned_blas_refit/verify_clone_leaves.js +148 -134
- package/src/shade/playground/skinned_blas_refit/verify_leaf_triangles.d.ts +11 -8
- package/src/shade/playground/skinned_blas_refit/verify_leaf_triangles.d.ts.map +1 -1
- package/src/shade/playground/skinned_blas_refit/verify_leaf_triangles.js +342 -202
- package/src/shade/playground/skinned_blas_refit/verify_skinned_blas_refit.d.ts +12 -13
- package/src/shade/playground/skinned_blas_refit/verify_skinned_blas_refit.d.ts.map +1 -1
- package/src/shade/playground/skinned_blas_refit/verify_skinned_blas_refit.js +136 -116
- package/src/shade/playground/skinned_blas_refit/verify_traversal_reachability.d.ts +4 -4
- package/src/shade/playground/skinned_blas_refit/verify_traversal_reachability.d.ts.map +1 -1
- package/src/shade/playground/skinned_blas_refit/verify_traversal_reachability.js +255 -249
- package/src/shade/playground/water_surface/main.js +6 -3
- package/src/shade/renderer/animation/GPUAnimationManager.js +2 -2
- package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.d.ts.map +1 -1
- package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.js +7 -8
- package/src/shade/renderer/fluid/FLUID_FAR_FIELD_STRUCT.d.ts +111 -0
- package/src/shade/renderer/fluid/FLUID_FAR_FIELD_STRUCT.d.ts.map +1 -0
- package/src/shade/renderer/fluid/FLUID_FAR_FIELD_STRUCT.js +162 -0
- package/src/shade/renderer/fluid/GPUFluidCascade.d.ts +37 -8
- package/src/shade/renderer/fluid/GPUFluidCascade.d.ts.map +1 -1
- package/src/shade/renderer/fluid/GPUFluidCascade.js +149 -47
- package/src/shade/renderer/fluid/GPUFluidCascadeStack.d.ts +10 -3
- package/src/shade/renderer/fluid/GPUFluidCascadeStack.d.ts.map +1 -1
- package/src/shade/renderer/fluid/GPUFluidCascadeStack.js +69 -10
- package/src/shade/renderer/fluid/chunk_fluid_far_field.d.ts +19 -0
- package/src/shade/renderer/fluid/chunk_fluid_far_field.d.ts.map +1 -0
- package/src/shade/renderer/fluid/chunk_fluid_far_field.js +43 -0
- package/src/shade/renderer/fluid/coupling/FLUID_CASCADE_PARENT_STRUCT.d.ts +10 -9
- package/src/shade/renderer/fluid/coupling/FLUID_CASCADE_PARENT_STRUCT.d.ts.map +1 -1
- package/src/shade/renderer/fluid/coupling/FLUID_CASCADE_PARENT_STRUCT.js +14 -12
- package/src/shade/renderer/fluid/coupling/FLUID_CASCADE_RESTRICT_STRUCT.d.ts +3 -2
- package/src/shade/renderer/fluid/coupling/FLUID_CASCADE_RESTRICT_STRUCT.d.ts.map +1 -1
- package/src/shade/renderer/fluid/coupling/FLUID_CASCADE_RESTRICT_STRUCT.js +7 -5
- package/src/shade/renderer/fluid/coupling/chunk_fluid_cascade_epilogue.d.ts +17 -9
- package/src/shade/renderer/fluid/coupling/chunk_fluid_cascade_epilogue.d.ts.map +1 -1
- package/src/shade/renderer/fluid/coupling/chunk_fluid_cascade_epilogue.js +58 -18
- package/src/shade/renderer/fluid/coupling/chunk_fluid_cascade_parent.d.ts +23 -11
- package/src/shade/renderer/fluid/coupling/chunk_fluid_cascade_parent.d.ts.map +1 -1
- package/src/shade/renderer/fluid/coupling/chunk_fluid_cascade_parent.js +371 -335
- package/src/shade/renderer/fluid/coupling/shader_fluid_cascade_fill.d.ts.map +1 -1
- package/src/shade/renderer/fluid/coupling/shader_fluid_cascade_fill.js +2 -1
- package/src/shade/renderer/fluid/coupling/shader_fluid_cascade_ghosts.d.ts.map +1 -1
- package/src/shade/renderer/fluid/coupling/shader_fluid_cascade_ghosts.js +109 -108
- package/src/shade/renderer/fluid/coupling/shader_fluid_cascade_restrict.d.ts +5 -3
- package/src/shade/renderer/fluid/coupling/shader_fluid_cascade_restrict.d.ts.map +1 -1
- package/src/shade/renderer/fluid/coupling/shader_fluid_cascade_restrict.js +24 -12
- package/src/shade/renderer/fluid/mac/FLUID_MAC_STEP_STRUCT.d.ts +6 -2
- package/src/shade/renderer/fluid/mac/FLUID_MAC_STEP_STRUCT.d.ts.map +1 -1
- package/src/shade/renderer/fluid/mac/FLUID_MAC_STEP_STRUCT.js +10 -5
- package/src/shade/renderer/fluid/mac/FluidMacPasses.d.ts +20 -21
- package/src/shade/renderer/fluid/mac/FluidMacPasses.d.ts.map +1 -1
- package/src/shade/renderer/fluid/mac/FluidMacPasses.js +453 -427
- package/src/shade/renderer/fluid/mac/shader_fluid_mac_advect_correct.d.ts.map +1 -1
- package/src/shade/renderer/fluid/mac/shader_fluid_mac_advect_correct.js +2 -1
- package/src/shade/renderer/fluid/publish/FluidWindPublish.d.ts +13 -5
- package/src/shade/renderer/fluid/publish/FluidWindPublish.d.ts.map +1 -1
- package/src/shade/renderer/fluid/publish/FluidWindPublish.js +20 -10
- package/src/shade/renderer/fluid/publish/chunk_fluid_wind_publish_cell.d.ts +2 -2
- package/src/shade/renderer/fluid/publish/chunk_fluid_wind_publish_cell.js +2 -2
- package/src/shade/renderer/fluid/publish/shader_fluid_wind_publish.d.ts +5 -3
- package/src/shade/renderer/fluid/publish/shader_fluid_wind_publish.d.ts.map +1 -1
- package/src/shade/renderer/fluid/publish/shader_fluid_wind_publish.js +147 -142
- package/src/shade/renderer/fluid/query/GPUFluidQueries.js +2 -2
- package/src/shade/renderer/geometry/GPUGeometryManager.d.ts.map +1 -1
- package/src/shade/renderer/geometry/GPUGeometryManager.js +5 -7
- package/src/shade/renderer/geometry/MeshletGeometry.d.ts +4 -1
- package/src/shade/renderer/geometry/MeshletGeometry.d.ts.map +1 -1
- package/src/shade/renderer/geometry/MeshletGeometry.js +4 -1
- package/src/shade/renderer/geometry/MeshletGeometrySerializationAdapter.d.ts +20 -0
- package/src/shade/renderer/geometry/MeshletGeometrySerializationAdapter.d.ts.map +1 -1
- package/src/shade/renderer/geometry/MeshletGeometrySerializationAdapter.js +35 -3
- package/src/shade/renderer/geometry/blas_from_meshlets.d.ts +9 -3
- package/src/shade/renderer/geometry/blas_from_meshlets.d.ts.map +1 -1
- package/src/shade/renderer/geometry/blas_from_meshlets.js +16 -30
- package/src/shade/renderer/geometry/bvh/BLAS8_REFIT_TARGET_STRUCT.d.ts +14 -0
- package/src/shade/renderer/geometry/bvh/BLAS8_REFIT_TARGET_STRUCT.d.ts.map +1 -0
- package/src/shade/renderer/geometry/bvh/BLAS8_REFIT_TARGET_STRUCT.js +33 -0
- package/src/shade/renderer/geometry/bvh/GPUBLASRefitBatch.d.ts +18 -21
- package/src/shade/renderer/geometry/bvh/GPUBLASRefitBatch.d.ts.map +1 -1
- package/src/shade/renderer/geometry/bvh/GPUBLASRefitBatch.js +78 -158
- package/src/shade/renderer/geometry/bvh/GPUGeometryBVHManager.d.ts +18 -39
- package/src/shade/renderer/geometry/bvh/GPUGeometryBVHManager.d.ts.map +1 -1
- package/src/shade/renderer/geometry/bvh/GPUGeometryBVHManager.js +39 -398
- package/src/shade/renderer/geometry/bvh/GPUGeometryMeshletsBVH.d.ts +6 -7
- package/src/shade/renderer/geometry/bvh/GPUGeometryMeshletsBVH.d.ts.map +1 -1
- package/src/shade/renderer/geometry/bvh/GPUGeometryMeshletsBVH.js +5 -7
- package/src/shade/renderer/geometry/bvh/bvh8_build_for_meshlets.d.ts +36 -0
- package/src/shade/renderer/geometry/bvh/bvh8_build_for_meshlets.d.ts.map +1 -0
- package/src/shade/renderer/geometry/bvh/bvh8_build_for_meshlets.js +179 -0
- package/src/shade/renderer/geometry/bvh/meshlet_batch_to_clustered_bvh.d.ts +30 -0
- package/src/shade/renderer/geometry/bvh/meshlet_batch_to_clustered_bvh.d.ts.map +1 -0
- package/src/shade/renderer/geometry/bvh/meshlet_batch_to_clustered_bvh.js +207 -0
- package/src/shade/renderer/geometry/bvh/shader_blas8_refit_batch.d.ts +52 -0
- package/src/shade/renderer/geometry/bvh/shader_blas8_refit_batch.d.ts.map +1 -0
- package/src/shade/renderer/geometry/bvh/shader_blas8_refit_batch.js +464 -0
- package/src/shade/renderer/geometry/meshlet/MeshletBatch.d.ts +12 -0
- package/src/shade/renderer/geometry/meshlet/MeshletBatch.d.ts.map +1 -1
- package/src/shade/renderer/geometry/meshlet/MeshletBatch.js +37 -0
- package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_classify.d.ts.map +1 -1
- package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_classify.js +4 -4
- package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_evaluate.d.ts.map +1 -1
- package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_evaluate.js +2 -2
- package/src/shade/renderer/geometry/sdf/chunk_blas_query_band_sdf.d.ts.map +1 -1
- package/src/shade/renderer/geometry/sdf/chunk_blas_query_band_sdf.js +2 -2
- package/src/shade/renderer/geometry/sdf/shader_sdf_visualize.d.ts.map +1 -1
- package/src/shade/renderer/geometry/sdf/shader_sdf_visualize.js +4 -4
- package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_trace.d.ts.map +1 -1
- package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_trace.js +2 -2
- package/src/shade/renderer/geometry/sr_create_group_RTX.d.ts.map +1 -1
- package/src/shade/renderer/geometry/sr_create_group_RTX.js +4 -4
- package/src/shade/renderer/global_illumination/brick4/gpu/bake/brick4_bake_basic.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/brick4/gpu/bake/brick4_bake_basic.js +1 -0
- package/src/shade/renderer/global_illumination/lpv/bake/GPULightProbeVolumeRenderer.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/lpv/bake/GPULightProbeVolumeRenderer.js +1 -0
- package/src/shade/renderer/global_illumination/lpv/placement/graph_generate_probe_locations.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/lpv/placement/graph_generate_probe_locations.js +372 -376
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/MESH_BRICK.d.ts +9 -10
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/MESH_BRICK.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/MESH_BRICK.js +10 -11
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/chunk_mesh_brick_walk.d.ts +2 -2
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/chunk_mesh_brick_walk.js +2 -2
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/shader_mesh_brick_gather.d.ts +12 -8
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/shader_mesh_brick_gather.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/shader_mesh_brick_gather.js +109 -60
- package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_mesh_sdf.js +2 -2
- package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_mesh_surfaces.js +2 -2
- package/src/shade/renderer/gpu_primitive/bvh/BVH_BUFFER_LAYOUT.d.ts +2 -2
- package/src/shade/renderer/gpu_primitive/bvh/BVH_BUFFER_LAYOUT.js +70 -70
- package/src/shade/renderer/gpu_primitive/bvh/BVH_BUILD_SETTINGS_STRUCT.d.ts +6 -7
- package/src/shade/renderer/gpu_primitive/bvh/BVH_BUILD_SETTINGS_STRUCT.d.ts.map +1 -1
- package/src/shade/renderer/gpu_primitive/bvh/BVH_BUILD_SETTINGS_STRUCT.js +6 -7
- package/src/shade/renderer/gpu_primitive/bvh/graph_bvh_build_lbvh.d.ts +3 -3
- package/src/shade/renderer/gpu_primitive/bvh/graph_bvh_build_lbvh.js +3 -3
- package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_build_single_workgroup.js +1 -1
- package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_emit_hierarchy.d.ts +2 -2
- package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_emit_hierarchy.js +3 -3
- package/src/shade/renderer/gpu_primitive/bvh8/BVH8_TREE_BUFFER_LAYOUT.d.ts +69 -0
- package/src/shade/renderer/gpu_primitive/bvh8/BVH8_TREE_BUFFER_LAYOUT.d.ts.map +1 -0
- package/src/shade/renderer/gpu_primitive/bvh8/BVH8_TREE_BUFFER_LAYOUT.js +89 -0
- package/src/shade/renderer/gpu_primitive/bvh8/bvh8_encode_from_bvh2.d.ts +41 -0
- package/src/shade/renderer/gpu_primitive/bvh8/bvh8_encode_from_bvh2.d.ts.map +1 -0
- package/src/shade/renderer/gpu_primitive/bvh8/bvh8_encode_from_bvh2.js +348 -0
- package/src/shade/renderer/gpu_primitive/bvh8/check_bvh8_tree.d.ts +34 -0
- package/src/shade/renderer/gpu_primitive/bvh8/check_bvh8_tree.d.ts.map +1 -0
- package/src/shade/renderer/gpu_primitive/bvh8/check_bvh8_tree.js +291 -0
- package/src/shade/renderer/gpu_primitive/bvh8/chunk_bvh8_encode_assign.d.ts +31 -0
- package/src/shade/renderer/gpu_primitive/bvh8/chunk_bvh8_encode_assign.d.ts.map +1 -0
- package/src/shade/renderer/gpu_primitive/bvh8/chunk_bvh8_encode_assign.js +175 -0
- package/src/shade/renderer/gpu_primitive/bvh8/chunk_bvh8_encode_depth.d.ts +27 -0
- package/src/shade/renderer/gpu_primitive/bvh8/chunk_bvh8_encode_depth.d.ts.map +1 -0
- package/src/shade/renderer/gpu_primitive/bvh8/chunk_bvh8_encode_depth.js +48 -0
- package/src/shade/renderer/gpu_primitive/bvh8/chunk_bvh8_encode_gather.d.ts +26 -0
- package/src/shade/renderer/gpu_primitive/bvh8/chunk_bvh8_encode_gather.d.ts.map +1 -0
- package/src/shade/renderer/gpu_primitive/bvh8/chunk_bvh8_encode_gather.js +118 -0
- package/src/shade/renderer/gpu_primitive/bvh8/chunk_bvh8_encode_node.d.ts +22 -0
- package/src/shade/renderer/gpu_primitive/bvh8/chunk_bvh8_encode_node.d.ts.map +1 -0
- package/src/shade/renderer/gpu_primitive/bvh8/chunk_bvh8_encode_node.js +143 -0
- package/src/shade/renderer/gpu_primitive/bvh8/chunk_bvh8_encode_sums.d.ts +36 -0
- package/src/shade/renderer/gpu_primitive/bvh8/chunk_bvh8_encode_sums.d.ts.map +1 -0
- package/src/shade/renderer/gpu_primitive/bvh8/chunk_bvh8_encode_sums.js +97 -0
- package/src/shade/renderer/gpu_primitive/bvh8/graph_bvh8_encode_from_bvh2.d.ts +49 -0
- package/src/shade/renderer/gpu_primitive/bvh8/graph_bvh8_encode_from_bvh2.d.ts.map +1 -0
- package/src/shade/renderer/gpu_primitive/bvh8/graph_bvh8_encode_from_bvh2.js +265 -0
- package/src/shade/renderer/gpu_primitive/bvh8/shader_bvh8_encode_assign.d.ts +37 -0
- package/src/shade/renderer/gpu_primitive/bvh8/shader_bvh8_encode_assign.d.ts.map +1 -0
- package/src/shade/renderer/gpu_primitive/bvh8/shader_bvh8_encode_assign.js +109 -0
- package/src/shade/renderer/gpu_primitive/bvh8/shader_bvh8_encode_count.d.ts +15 -0
- package/src/shade/renderer/gpu_primitive/bvh8/shader_bvh8_encode_count.d.ts.map +1 -0
- package/src/shade/renderer/gpu_primitive/bvh8/shader_bvh8_encode_count.js +85 -0
- package/src/shade/renderer/gpu_primitive/bvh8/shader_bvh8_encode_count_single_workgroup.d.ts +26 -0
- package/src/shade/renderer/gpu_primitive/bvh8/shader_bvh8_encode_count_single_workgroup.d.ts.map +1 -0
- package/src/shade/renderer/gpu_primitive/bvh8/shader_bvh8_encode_count_single_workgroup.js +200 -0
- package/src/shade/renderer/gpu_primitive/bvh8/shader_bvh8_encode_parents.d.ts +19 -0
- package/src/shade/renderer/gpu_primitive/bvh8/shader_bvh8_encode_parents.d.ts.map +1 -0
- package/src/shade/renderer/gpu_primitive/bvh8/shader_bvh8_encode_parents.js +81 -0
- package/src/shade/renderer/gpu_primitive/bvh8/shader_bvh8_encode_write.d.ts +14 -0
- package/src/shade/renderer/gpu_primitive/bvh8/shader_bvh8_encode_write.d.ts.map +1 -0
- package/src/shade/renderer/gpu_primitive/bvh8/shader_bvh8_encode_write.js +101 -0
- package/src/shade/renderer/gpu_primitive/bvh8/verify_gpu_bvh8_encode.d.ts +19 -0
- package/src/shade/renderer/gpu_primitive/bvh8/verify_gpu_bvh8_encode.d.ts.map +1 -0
- package/src/shade/renderer/gpu_primitive/bvh8/verify_gpu_bvh8_encode.js +361 -0
- package/src/shade/renderer/grass/surface/shader_grass_surface_bake.d.ts.map +1 -1
- package/src/shade/renderer/grass/surface/shader_grass_surface_bake.js +5 -6
- package/src/shade/renderer/lightmap/GPULightMap.d.ts.map +1 -1
- package/src/shade/renderer/lightmap/GPULightMap.js +1 -0
- package/src/shade/renderer/path_tracer/accumulating/AccumulatingPathTracer.d.ts.map +1 -1
- package/src/shade/renderer/path_tracer/accumulating/AccumulatingPathTracer.js +1 -0
- package/src/shade/renderer/path_tracer/graph_path_trace_scene.d.ts.map +1 -1
- package/src/shade/renderer/path_tracer/graph_path_trace_scene.js +1 -0
- package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.d.ts +8 -4
- package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.d.ts.map +1 -1
- package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.js +60 -33
- package/src/shade/renderer/scene/verify_gpu_tlas_build.d.ts +6 -6
- package/src/shade/renderer/scene/verify_gpu_tlas_build.d.ts.map +1 -1
- package/src/shade/renderer/scene/verify_gpu_tlas_build.js +23 -53
- package/src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/BVH8_INODE_STRUCT.d.ts +3 -1
- package/src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/BVH8_INODE_STRUCT.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/BVH8_INODE_STRUCT.js +5 -3
- package/src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/BVH8_MAX_DEPTH.d.ts +28 -0
- package/src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/BVH8_MAX_DEPTH.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/BVH8_MAX_DEPTH.js +29 -0
- package/src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/chunk_bvh8_node_grid.d.ts +25 -0
- package/src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/chunk_bvh8_node_grid.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/chunk_bvh8_node_grid.js +97 -0
- package/src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/chunk_bvh8_node_intersect.d.ts +8 -0
- package/src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/chunk_bvh8_node_intersect.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/chunk_bvh8_node_intersect.js +23 -14
- package/src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/chunk_bvh8_node_slot_distances.d.ts +36 -0
- package/src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/chunk_bvh8_node_slot_distances.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/chunk_bvh8_node_slot_distances.js +222 -0
- package/src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/chunk_bvh8_ray_direction_rcp.d.ts +20 -0
- package/src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/chunk_bvh8_ray_direction_rcp.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/chunk_bvh8_ray_direction_rcp.js +30 -0
- package/src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/chunk_bvh8_tree_read.d.ts +30 -0
- package/src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/chunk_bvh8_tree_read.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/chunk_bvh8_tree_read.js +91 -0
- package/src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/chunk_bvh8_waiting_slots.d.ts +23 -0
- package/src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/chunk_bvh8_waiting_slots.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/chunk_bvh8_waiting_slots.js +40 -0
- package/src/shade/renderer/shader/chunk/geometry/ray/chunk_ray_query_blas_nearest.d.ts +22 -0
- package/src/shade/renderer/shader/chunk/geometry/ray/chunk_ray_query_blas_nearest.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/geometry/ray/chunk_ray_query_blas_nearest.js +121 -70
- package/src/shade/renderer/shader/chunk/geometry/ray/chunk_ray_query_blas_occluded.d.ts +13 -1
- package/src/shade/renderer/shader/chunk/geometry/ray/chunk_ray_query_blas_occluded.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/geometry/ray/chunk_ray_query_blas_occluded.js +117 -61
- package/src/shade/renderer/shader/chunk/geometry/ray/chunk_ray_query_nearest.d.ts +21 -0
- package/src/shade/renderer/shader/chunk/geometry/ray/chunk_ray_query_nearest.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/geometry/ray/chunk_ray_query_nearest.js +111 -72
- package/src/shade/renderer/shader/chunk/geometry/ray/chunk_ray_query_nearest_among.d.ts +1 -2
- package/src/shade/renderer/shader/chunk/geometry/ray/chunk_ray_query_nearest_among.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/geometry/ray/chunk_ray_query_nearest_among.js +83 -54
- package/src/shade/renderer/shader/chunk/geometry/ray/chunk_ray_query_occluded.d.ts +14 -0
- package/src/shade/renderer/shader/chunk/geometry/ray/chunk_ray_query_occluded.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/geometry/ray/chunk_ray_query_occluded.js +92 -60
- package/src/shade/renderer/shader/chunk/sdf/chunk_point_query_blas_nearest.d.ts +22 -0
- package/src/shade/renderer/shader/chunk/sdf/chunk_point_query_blas_nearest.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/sdf/chunk_point_query_blas_nearest.js +153 -106
- package/src/shade/renderer/shader/chunk/sdf/chunk_scene_point_query_nearest.d.ts +21 -0
- package/src/shade/renderer/shader/chunk/sdf/chunk_scene_point_query_nearest.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/sdf/chunk_scene_point_query_nearest.js +115 -74
- package/src/shade/renderer/shader/chunk/sdf/chunk_scene_sdf_raymarch.d.ts +5 -2
- package/src/shade/renderer/shader/chunk/sdf/chunk_scene_sdf_raymarch.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/sdf/chunk_scene_sdf_raymarch.js +89 -63
- package/src/shade/renderer/shader/chunk/sdf/chunk_sdf_query_distance.d.ts +15 -0
- package/src/shade/renderer/shader/chunk/sdf/chunk_sdf_query_distance.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/sdf/chunk_sdf_query_distance.js +108 -63
- package/src/shade/renderer/shadow/sdf/chunk_ray_query_sdf_raycast.d.ts +14 -0
- package/src/shade/renderer/shadow/sdf/chunk_ray_query_sdf_raycast.d.ts.map +1 -1
- package/src/shade/renderer/shadow/sdf/chunk_ray_query_sdf_raycast.js +94 -60
- package/src/shade/renderer/shadow/sdf/graph_draw_sdf_shadows.d.ts.map +1 -1
- package/src/shade/renderer/shadow/sdf/graph_draw_sdf_shadows.js +4 -4
- package/src/shade/renderer/volumetrics/graph_build_volumetrics.js +2 -2
- package/src/shade/renderer/water/query/shader_water_surface_query.d.ts.map +1 -1
- package/src/shade/renderer/water/query/shader_water_surface_query.js +227 -227
- package/src/shade/renderer/water/surface/particles/chunk_water_particle_step.d.ts.map +1 -1
- package/src/shade/renderer/water/surface/particles/chunk_water_particle_step.js +7 -4
- package/src/shade/renderer/water/surface/particles/shader_water_particles.js +2 -2
- package/src/shade/renderer/wind/GPUSceneWind.d.ts +36 -4
- package/src/shade/renderer/wind/GPUSceneWind.d.ts.map +1 -1
- package/src/shade/renderer/wind/GPUSceneWind.js +150 -4
- package/src/shade/renderer/wind/WIND_FIELD_STRUCT.d.ts +9 -3
- package/src/shade/renderer/wind/WIND_FIELD_STRUCT.d.ts.map +1 -1
- package/src/shade/renderer/wind/WIND_FIELD_STRUCT.js +13 -3
- package/src/shade/renderer/wind/WIND_FIELD_UNIFORM.d.ts +6 -6
- package/src/shade/renderer/wind/WIND_FIELD_UNIFORM.js +6 -6
- package/src/shade/renderer/wind/chunk_fluid_turbulence.d.ts +39 -0
- package/src/shade/renderer/wind/chunk_fluid_turbulence.d.ts.map +1 -0
- package/src/shade/renderer/wind/chunk_fluid_turbulence.js +63 -0
- package/src/shade/renderer/wind/chunk_wind_field_sample_cascades.d.ts +10 -7
- package/src/shade/renderer/wind/chunk_wind_field_sample_cascades.d.ts.map +1 -1
- package/src/shade/renderer/wind/chunk_wind_field_sample_cascades.js +34 -11
- package/src/shade/renderer/wind/chunk_wind_field_sample_uniform.d.ts +2 -2
- package/src/shade/renderer/wind/chunk_wind_field_sample_uniform.js +2 -2
- package/src/shade/renderer/wind/wind_field_add_resources.d.ts +6 -4
- package/src/shade/renderer/wind/wind_field_add_resources.d.ts.map +1 -1
- package/src/shade/renderer/wind/wind_field_add_resources.js +9 -6
- package/src/shade/renderer/geometry/bvh/BLAS_REFIT_TARGET_STRUCT.d.ts +0 -18
- package/src/shade/renderer/geometry/bvh/BLAS_REFIT_TARGET_STRUCT.d.ts.map +0 -1
- package/src/shade/renderer/geometry/bvh/BLAS_REFIT_TARGET_STRUCT.js +0 -50
- package/src/shade/renderer/geometry/bvh/bvh2_derive_topology.d.ts +0 -23
- package/src/shade/renderer/geometry/bvh/bvh2_derive_topology.d.ts.map +0 -1
- package/src/shade/renderer/geometry/bvh/bvh2_derive_topology.js +0 -87
- package/src/shade/renderer/geometry/bvh/shader_blas_refit_batch.d.ts +0 -42
- package/src/shade/renderer/geometry/bvh/shader_blas_refit_batch.d.ts.map +0 -1
- package/src/shade/renderer/geometry/bvh/shader_blas_refit_batch.js +0 -141
- package/src/shade/renderer/geometry/bvh/shader_blas_refit_batch_seed.d.ts +0 -21
- package/src/shade/renderer/geometry/bvh/shader_blas_refit_batch_seed.d.ts.map +0 -1
- package/src/shade/renderer/geometry/bvh/shader_blas_refit_batch_seed.js +0 -75
- package/src/shade/renderer/geometry/meshlet_batch_to_bvh.d.ts +0 -17
- package/src/shade/renderer/geometry/meshlet_batch_to_bvh.d.ts.map +0 -1
- package/src/shade/renderer/geometry/meshlet_batch_to_bvh.js +0 -247
- package/src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/chunk_bvh8_ray_query_blas_occlusion.d.ts +0 -7
- package/src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/chunk_bvh8_ray_query_blas_occlusion.d.ts.map +0 -1
- package/src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/chunk_bvh8_ray_query_blas_occlusion.js +0 -226
- package/src/shade/renderer/shader/chunk/light/lpv/chunk_lpv_mask_visibility_via_rays.d.ts +0 -8
- package/src/shade/renderer/shader/chunk/light/lpv/chunk_lpv_mask_visibility_via_rays.d.ts.map +0 -1
- package/src/shade/renderer/shader/chunk/light/lpv/chunk_lpv_mask_visibility_via_rays.js +0 -45
- package/src/shade/renderer/shader/chunk/light/sample/chunk_ray_sample_light.d.ts +0 -3
- package/src/shade/renderer/shader/chunk/light/sample/chunk_ray_sample_light.d.ts.map +0 -1
- package/src/shade/renderer/shader/chunk/light/sample/chunk_ray_sample_light.js +0 -105
- package/src/shade/renderer/shadow/sdf/chunk_ray_query_sdf_distance.d.ts +0 -6
- package/src/shade/renderer/shadow/sdf/chunk_ray_query_sdf_distance.d.ts.map +0 -1
- package/src/shade/renderer/shadow/sdf/chunk_ray_query_sdf_distance.js +0 -86
- package/src/shade/renderer/shadow/sdf/chunk_ray_query_sdf_raycast_traversal_count.d.ts +0 -2
- package/src/shade/renderer/shadow/sdf/chunk_ray_query_sdf_raycast_traversal_count.d.ts.map +0 -1
- package/src/shade/renderer/shadow/sdf/chunk_ray_query_sdf_raycast_traversal_count.js +0 -136
|
@@ -9,8 +9,8 @@
|
|
|
9
9
|
* ({@link fluid_apply_atmosphere}).
|
|
10
10
|
*
|
|
11
11
|
* - `TIME`: seconds the effectors system has integrated, at the end of its last tick.
|
|
12
|
-
* - `VELOCITY_*`: the far field
|
|
13
|
-
*
|
|
12
|
+
* - `VELOCITY_*`: `u`, the far field's mean: it relaxes toward the globals' drag-weighted
|
|
13
|
+
* mean wind at `DRAG`. Where a reader takes the far field as one vector, this is it.
|
|
14
14
|
* - `LAMBDA`: `Λ = ∫ D dt`, so air left to the far field over an interval keeps
|
|
15
15
|
* `e^(−ΔΛ)` of its deviation from it, however `D` varied.
|
|
16
16
|
* - `FORCED_*`: `P`, the velocity the summed body force has given air the atmosphere
|
|
@@ -20,6 +20,15 @@
|
|
|
20
20
|
* `F` and `D` varied. Not part of the far field: a term inside CPU fields only.
|
|
21
21
|
* - `FORCE_*`: `F`, the sum of the globals' body forces, this tick.
|
|
22
22
|
* - `DRAG`: `D`, the sum of the globals' drags, this tick.
|
|
23
|
+
* - `TURBULENCE_OFFSET_*`: `o = ∫ u dt`, how far the mean has carried the turbulence since the
|
|
24
|
+
* first tick, WORLD units, integrated exactly tick by tick.
|
|
25
|
+
* - `TURBULENCE_SIGMA`: `σ`, the turbulence's rms on each axis, `intensity · |u|`, WORLD units per
|
|
26
|
+
* second; 0 is none.
|
|
27
|
+
* - `TURBULENCE_LENGTH`: `L`, its length scale, WORLD units.
|
|
28
|
+
*
|
|
29
|
+
* The far field at a point `x` is `u + σ·T((x − o) ⊙ S⁻¹)` ({@link fluid_atmosphere_velocity_at}),
|
|
30
|
+
* `T` the unit-rms turbulence tile and `S` its size in the world for `L`. Not part of CPU fields,
|
|
31
|
+
* which take `u` alone.
|
|
23
32
|
*
|
|
24
33
|
* @readonly
|
|
25
34
|
* @enum {number}
|
|
@@ -37,13 +46,18 @@ export const FluidAtmosphere = {
|
|
|
37
46
|
FORCE_Y: 9,
|
|
38
47
|
FORCE_Z: 10,
|
|
39
48
|
DRAG: 11,
|
|
49
|
+
TURBULENCE_OFFSET_X: 12,
|
|
50
|
+
TURBULENCE_OFFSET_Y: 13,
|
|
51
|
+
TURBULENCE_OFFSET_Z: 14,
|
|
52
|
+
TURBULENCE_SIGMA: 15,
|
|
53
|
+
TURBULENCE_LENGTH: 16,
|
|
40
54
|
};
|
|
41
55
|
|
|
42
56
|
/**
|
|
43
57
|
* Words in an atmosphere record.
|
|
44
58
|
* @type {number}
|
|
45
59
|
*/
|
|
46
|
-
export const FLUID_ATMOSPHERE_WORDS =
|
|
60
|
+
export const FLUID_ATMOSPHERE_WORDS = 17;
|
|
47
61
|
|
|
48
62
|
/**
|
|
49
63
|
* Layout of a field's own atmosphere record, {@link FluidField#atmosphere}: the instant
|
|
@@ -6,8 +6,7 @@
|
|
|
6
6
|
* Every effector class in a saved component needs its adapter in the same registry: the engine's
|
|
7
7
|
* are {@link GlobalFluidEffectorSerializationAdapter}, {@link ImpulseFluidEffectorSerializationAdapter},
|
|
8
8
|
* {@link WakeFluidEffectorSerializationAdapter} and {@link VortexFluidEffectorSerializationAdapter}, and
|
|
9
|
-
* an effector class of your own needs a `typeName` and an adapter of its own.
|
|
10
|
-
* go with it, so a save resumes the gust where it was.
|
|
9
|
+
* an effector class of your own needs a `typeName` and an adapter of its own.
|
|
11
10
|
*
|
|
12
11
|
* Like the other physics adapters this is not in `populateEngineSerializationRegistry`; the host
|
|
13
12
|
* registers it with the effector adapters.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FluidEffectorsComponentSerializationAdapter.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/physics/fluid/ecs/FluidEffectorsComponentSerializationAdapter.js"],"names":[],"mappings":"AAGA
|
|
1
|
+
{"version":3,"file":"FluidEffectorsComponentSerializationAdapter.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/physics/fluid/ecs/FluidEffectorsComponentSerializationAdapter.js"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;GAiBG;AACH;;IAEI,sCAAgC;IAGhC;;OAEG;IACH,eAFU,mCAAiC,IAAI,CAE1B;IAErB;;;OAGG;IACH,+EAEC;IAED;;;OAGG;IACH,uCAFW,uBAAuB,QAWjC;IAED;;;;;OAKG;IACH,yCAFW,uBAAuB,QAWjC;CACJ;gDAtE+C,gEAAgE;wCACxE,8BAA8B"}
|
|
@@ -9,8 +9,7 @@ import { FluidEffectorsComponent } from "./FluidEffectorsComponent.js";
|
|
|
9
9
|
* Every effector class in a saved component needs its adapter in the same registry: the engine's
|
|
10
10
|
* are {@link GlobalFluidEffectorSerializationAdapter}, {@link ImpulseFluidEffectorSerializationAdapter},
|
|
11
11
|
* {@link WakeFluidEffectorSerializationAdapter} and {@link VortexFluidEffectorSerializationAdapter}, and
|
|
12
|
-
* an effector class of your own needs a `typeName` and an adapter of its own.
|
|
13
|
-
* go with it, so a save resumes the gust where it was.
|
|
12
|
+
* an effector class of your own needs a `typeName` and an adapter of its own.
|
|
14
13
|
*
|
|
15
14
|
* Like the other physics adapters this is not in `populateEngineSerializationRegistry`; the host
|
|
16
15
|
* registers it with the effector adapters.
|
|
@@ -11,22 +11,25 @@
|
|
|
11
11
|
*
|
|
12
12
|
* 3. the fold of every {@link GlobalFluidEffector} into one far field, integrated in f64.
|
|
13
13
|
*
|
|
14
|
-
* Effectors carry state across ticks — a wake's trail advances in its sync
|
|
15
|
-
*
|
|
16
|
-
* effectors. It used to be a line in each fluid system, and a scene with two of them advanced
|
|
14
|
+
* Effectors carry state across ticks — a wake's trail advances in its sync — so this has to happen
|
|
15
|
+
* exactly once a tick however many fluid systems apply the effectors. It used to be a line in each fluid system, and a scene with two of them advanced
|
|
17
16
|
* every wake twice.
|
|
18
17
|
*
|
|
19
18
|
* ## The far field
|
|
20
19
|
*
|
|
21
20
|
* The globals fold into `D = Σ d` (their drags), `W = Σ (d/D)·w` (the drag-weighted mean of their
|
|
22
|
-
* winds), `
|
|
21
|
+
* winds), `I = Σ (d/D)·i` and `L = Σ (d/D)·l` (of their turbulence intensities and length scales)
|
|
22
|
+
* and `F = Σ force`. The far field is `u`, its mean, plus turbulence of rms `σ = I·|u|`:
|
|
23
23
|
*
|
|
24
24
|
* - `u` relaxes toward `W` exactly, `u ← W + (u − W)·e^(−D·dt)`. Only this system's first fold
|
|
25
25
|
* seeds it at `W`, so a scene that starts with its globals starts in steady state; a global
|
|
26
26
|
* that arrives later relaxes the air from where it is, at its drag. With `D = 0` — the last
|
|
27
27
|
* global gone included — nothing relaxes it and it holds. A scene that never had a global is
|
|
28
28
|
* still air; calm is authored as a global with wind 0 and a drag.
|
|
29
|
-
* - `
|
|
29
|
+
* - `I` and `L` are this tick's, and with `D = 0` hold where they were, like `u`.
|
|
30
|
+
* - the turbulence is carried by `u`: its offset `o = ∫ u dt` is integrated exactly over each tick
|
|
31
|
+
* along `u`'s relaxation, `W·dt + (u₀ − W)·(1 − e^(−D·dt))/D`, or `u·dt` with no drag. `o` is this
|
|
32
|
+
* system's own and starts at 0, so a scene loaded from a save starts the eddies over.
|
|
30
33
|
* - `Λ += D·dt`, so a field brought from one instant to another keeps `e^(−ΔΛ)` of its deviation
|
|
31
34
|
* from the far field however `D` varied in between.
|
|
32
35
|
* - `F` is not part of the far field: a world-wide body force would be an unbounded downdraft at
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FluidEffectorsSystem.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/physics/fluid/ecs/FluidEffectorsSystem.js"],"names":[],"mappings":"AASA
|
|
1
|
+
{"version":3,"file":"FluidEffectorsSystem.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/physics/fluid/ecs/FluidEffectorsSystem.js"],"names":[],"mappings":"AASA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AACH;;IAEI,mIAME;IAyEF;;;;;;;;OAQG;IACH,qBAHW,YAAY,GAAC,MAAM,EAAE,UACrB,MAAM,QAQhB;;CAkMJ;uBA3VsB,wBAAwB;wCAIP,8BAA8B;4CAL1B,uDAAuD;4BAEvE,uCAAuC"}
|
|
@@ -20,22 +20,25 @@ import { fluid_sync_effectors_from_transform } from "./fluid_sync_effectors_from
|
|
|
20
20
|
*
|
|
21
21
|
* 3. the fold of every {@link GlobalFluidEffector} into one far field, integrated in f64.
|
|
22
22
|
*
|
|
23
|
-
* Effectors carry state across ticks — a wake's trail advances in its sync
|
|
24
|
-
*
|
|
25
|
-
* effectors. It used to be a line in each fluid system, and a scene with two of them advanced
|
|
23
|
+
* Effectors carry state across ticks — a wake's trail advances in its sync — so this has to happen
|
|
24
|
+
* exactly once a tick however many fluid systems apply the effectors. It used to be a line in each fluid system, and a scene with two of them advanced
|
|
26
25
|
* every wake twice.
|
|
27
26
|
*
|
|
28
27
|
* ## The far field
|
|
29
28
|
*
|
|
30
29
|
* The globals fold into `D = Σ d` (their drags), `W = Σ (d/D)·w` (the drag-weighted mean of their
|
|
31
|
-
* winds), `
|
|
30
|
+
* winds), `I = Σ (d/D)·i` and `L = Σ (d/D)·l` (of their turbulence intensities and length scales)
|
|
31
|
+
* and `F = Σ force`. The far field is `u`, its mean, plus turbulence of rms `σ = I·|u|`:
|
|
32
32
|
*
|
|
33
33
|
* - `u` relaxes toward `W` exactly, `u ← W + (u − W)·e^(−D·dt)`. Only this system's first fold
|
|
34
34
|
* seeds it at `W`, so a scene that starts with its globals starts in steady state; a global
|
|
35
35
|
* that arrives later relaxes the air from where it is, at its drag. With `D = 0` — the last
|
|
36
36
|
* global gone included — nothing relaxes it and it holds. A scene that never had a global is
|
|
37
37
|
* still air; calm is authored as a global with wind 0 and a drag.
|
|
38
|
-
* - `
|
|
38
|
+
* - `I` and `L` are this tick's, and with `D = 0` hold where they were, like `u`.
|
|
39
|
+
* - the turbulence is carried by `u`: its offset `o = ∫ u dt` is integrated exactly over each tick
|
|
40
|
+
* along `u`'s relaxation, `W·dt + (u₀ − W)·(1 − e^(−D·dt))/D`, or `u·dt` with no drag. `o` is this
|
|
41
|
+
* system's own and starts at 0, so a scene loaded from a save starts the eddies over.
|
|
39
42
|
* - `Λ += D·dt`, so a field brought from one instant to another keeps `e^(−ΔΛ)` of its deviation
|
|
40
43
|
* from the far field however `D` varied in between.
|
|
41
44
|
* - `F` is not part of the far field: a world-wide body force would be an unbounded downdraft at
|
|
@@ -91,10 +94,22 @@ export class FluidEffectorsSystem extends System {
|
|
|
91
94
|
#global_count = 0;
|
|
92
95
|
|
|
93
96
|
/**
|
|
94
|
-
*
|
|
97
|
+
* `o`, how far `u` has carried the turbulence, WORLD units.
|
|
95
98
|
* @type {Float64Array}
|
|
96
99
|
*/
|
|
97
|
-
#
|
|
100
|
+
#turbulence_offset = new Float64Array(3);
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* `I`, the folded turbulence intensity, held with `D = 0`.
|
|
104
|
+
* @type {number}
|
|
105
|
+
*/
|
|
106
|
+
#turbulence_intensity = 0;
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* `L`, the folded length scale, held with `D = 0`; 0 before any global with drag.
|
|
110
|
+
* @type {number}
|
|
111
|
+
*/
|
|
112
|
+
#turbulence_length = 0;
|
|
98
113
|
|
|
99
114
|
/**
|
|
100
115
|
* `u`, the far field's steady part, WORLD units per second.
|
|
@@ -207,10 +222,8 @@ export class FluidEffectorsSystem extends System {
|
|
|
207
222
|
#fold(dt) {
|
|
208
223
|
const globals = this.#globals;
|
|
209
224
|
const count = this.#global_count;
|
|
210
|
-
const gust = this.#gust;
|
|
211
225
|
|
|
212
226
|
let D = 0;
|
|
213
|
-
let gx = 0, gy = 0, gz = 0;
|
|
214
227
|
let fx = 0, fy = 0, fz = 0;
|
|
215
228
|
|
|
216
229
|
for (let i = 0; i < count; i++) {
|
|
@@ -224,19 +237,16 @@ export class FluidEffectorsSystem extends System {
|
|
|
224
237
|
fx += force[0];
|
|
225
238
|
fy += force[1];
|
|
226
239
|
fz += force[2];
|
|
227
|
-
|
|
228
|
-
effector.compute_gust(gust);
|
|
229
|
-
gx += gust[0];
|
|
230
|
-
gy += gust[1];
|
|
231
|
-
gz += gust[2];
|
|
232
240
|
}
|
|
233
241
|
|
|
234
242
|
const steady = this.#steady;
|
|
243
|
+
const offset = this.#turbulence_offset;
|
|
235
244
|
|
|
236
245
|
// With no drag (no global at all included) nothing relaxes the air: `u` holds.
|
|
237
246
|
if (D > 0) {
|
|
238
247
|
// Weights d/D, so one global's mean wind is its own wind exactly.
|
|
239
248
|
let wx = 0, wy = 0, wz = 0;
|
|
249
|
+
let intensity = 0, length = 0;
|
|
240
250
|
|
|
241
251
|
for (let i = 0; i < count; i++) {
|
|
242
252
|
const effector = globals[i];
|
|
@@ -251,11 +261,24 @@ export class FluidEffectorsSystem extends System {
|
|
|
251
261
|
wx += weight * wind[0];
|
|
252
262
|
wy += weight * wind[1];
|
|
253
263
|
wz += weight * wind[2];
|
|
264
|
+
|
|
265
|
+
intensity += weight * effector.turbulence_intensity;
|
|
266
|
+
length += weight * effector.turbulence_length;
|
|
254
267
|
}
|
|
255
268
|
|
|
269
|
+
this.#turbulence_intensity = intensity;
|
|
270
|
+
this.#turbulence_length = length;
|
|
271
|
+
|
|
256
272
|
if (this.#first_fold_done) {
|
|
257
273
|
const keep = Math.exp(-D * dt);
|
|
258
274
|
|
|
275
|
+
// ∫ u dt over the tick, along the relaxation, before u moves
|
|
276
|
+
const carried = (1 - keep) / D;
|
|
277
|
+
|
|
278
|
+
offset[0] += wx * dt + (steady[0] - wx) * carried;
|
|
279
|
+
offset[1] += wy * dt + (steady[1] - wy) * carried;
|
|
280
|
+
offset[2] += wz * dt + (steady[2] - wz) * carried;
|
|
281
|
+
|
|
259
282
|
steady[0] = wx + (steady[0] - wx) * keep;
|
|
260
283
|
steady[1] = wy + (steady[1] - wy) * keep;
|
|
261
284
|
steady[2] = wz + (steady[2] - wz) * keep;
|
|
@@ -264,7 +287,16 @@ export class FluidEffectorsSystem extends System {
|
|
|
264
287
|
steady[0] = wx;
|
|
265
288
|
steady[1] = wy;
|
|
266
289
|
steady[2] = wz;
|
|
290
|
+
|
|
291
|
+
offset[0] += wx * dt;
|
|
292
|
+
offset[1] += wy * dt;
|
|
293
|
+
offset[2] += wz * dt;
|
|
267
294
|
}
|
|
295
|
+
} else {
|
|
296
|
+
// nothing relaxes u: it carries the turbulence as it stands
|
|
297
|
+
offset[0] += steady[0] * dt;
|
|
298
|
+
offset[1] += steady[1] * dt;
|
|
299
|
+
offset[2] += steady[2] * dt;
|
|
268
300
|
}
|
|
269
301
|
|
|
270
302
|
this.#first_fold_done = true;
|
|
@@ -292,9 +324,9 @@ export class FluidEffectorsSystem extends System {
|
|
|
292
324
|
const atmosphere = this.#atmosphere;
|
|
293
325
|
|
|
294
326
|
atmosphere[FluidAtmosphere.TIME] += dt;
|
|
295
|
-
atmosphere[FluidAtmosphere.VELOCITY_X] = steady[0]
|
|
296
|
-
atmosphere[FluidAtmosphere.VELOCITY_Y] = steady[1]
|
|
297
|
-
atmosphere[FluidAtmosphere.VELOCITY_Z] = steady[2]
|
|
327
|
+
atmosphere[FluidAtmosphere.VELOCITY_X] = steady[0];
|
|
328
|
+
atmosphere[FluidAtmosphere.VELOCITY_Y] = steady[1];
|
|
329
|
+
atmosphere[FluidAtmosphere.VELOCITY_Z] = steady[2];
|
|
298
330
|
atmosphere[FluidAtmosphere.LAMBDA] += D * dt;
|
|
299
331
|
atmosphere[FluidAtmosphere.FORCED_X] = forced[0];
|
|
300
332
|
atmosphere[FluidAtmosphere.FORCED_Y] = forced[1];
|
|
@@ -303,5 +335,16 @@ export class FluidEffectorsSystem extends System {
|
|
|
303
335
|
atmosphere[FluidAtmosphere.FORCE_Y] = fy;
|
|
304
336
|
atmosphere[FluidAtmosphere.FORCE_Z] = fz;
|
|
305
337
|
atmosphere[FluidAtmosphere.DRAG] = D;
|
|
338
|
+
|
|
339
|
+
// no length scale, no tile to lay out: no turbulence
|
|
340
|
+
const length = this.#turbulence_length;
|
|
341
|
+
const speed = Math.sqrt(steady[0] * steady[0] + steady[1] * steady[1] + steady[2] * steady[2]);
|
|
342
|
+
const sigma = length > 0 && this.#turbulence_intensity > 0 ? this.#turbulence_intensity * speed : 0;
|
|
343
|
+
|
|
344
|
+
atmosphere[FluidAtmosphere.TURBULENCE_OFFSET_X] = offset[0];
|
|
345
|
+
atmosphere[FluidAtmosphere.TURBULENCE_OFFSET_Y] = offset[1];
|
|
346
|
+
atmosphere[FluidAtmosphere.TURBULENCE_OFFSET_Z] = offset[2];
|
|
347
|
+
atmosphere[FluidAtmosphere.TURBULENCE_SIGMA] = sigma;
|
|
348
|
+
atmosphere[FluidAtmosphere.TURBULENCE_LENGTH] = length;
|
|
306
349
|
}
|
|
307
350
|
}
|
|
@@ -53,7 +53,7 @@ export class AbstractFluidEffector {
|
|
|
53
53
|
* The per-tick hook: called by {@link FluidEffectorsSystem} exactly once per fixed
|
|
54
54
|
* step for every effector, with or without a `Transform64` on its entity, after
|
|
55
55
|
* {@link syncFromTransform} and before any fluid system applies it. Default: no-op.
|
|
56
|
-
* Effectors whose state evolves with time on their own
|
|
56
|
+
* Effectors whose state evolves with time on their own override
|
|
57
57
|
* this to advance it; `apply` then reads that state, and every field stepped this
|
|
58
58
|
* tick sees the same.
|
|
59
59
|
*
|
|
@@ -60,7 +60,7 @@ export class AbstractFluidEffector {
|
|
|
60
60
|
* The per-tick hook: called by {@link FluidEffectorsSystem} exactly once per fixed
|
|
61
61
|
* step for every effector, with or without a `Transform64` on its entity, after
|
|
62
62
|
* {@link syncFromTransform} and before any fluid system applies it. Default: no-op.
|
|
63
|
-
* Effectors whose state evolves with time on their own
|
|
63
|
+
* Effectors whose state evolves with time on their own override
|
|
64
64
|
* this to advance it; `apply` then reads that state, and every field stepped this
|
|
65
65
|
* tick sees the same.
|
|
66
66
|
*
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*
|
|
5
5
|
* dv/dt = force + drag · (wind − v)
|
|
6
6
|
*
|
|
7
|
-
*
|
|
7
|
+
* with turbulence carried on top of the wind.
|
|
8
8
|
*
|
|
9
9
|
* One effector covers the whole family of "push everything" behaviours —
|
|
10
10
|
* pick the regime by which fields you set:
|
|
@@ -28,9 +28,9 @@
|
|
|
28
28
|
* is the solver-level stability knob that exists even when no effectors
|
|
29
29
|
* are wired.)
|
|
30
30
|
*
|
|
31
|
-
* - **`
|
|
32
|
-
*
|
|
33
|
-
* {@link
|
|
31
|
+
* - **`turbulence_intensity`** — weather on top of the wind: a field of eddies, the
|
|
32
|
+
* wind's speed times the intensity in rms, carried along by the wind. See
|
|
33
|
+
* {@link turbulence_intensity}.
|
|
34
34
|
*
|
|
35
35
|
* `wind` only enters through the drag term — with `drag = 0` it is inert by
|
|
36
36
|
* construction (the model degenerates to dv/dt = force).
|
|
@@ -38,20 +38,21 @@
|
|
|
38
38
|
* ## The far field
|
|
39
39
|
*
|
|
40
40
|
* In a scene, globals act through {@link FluidEffectorsSystem}: once a tick it folds
|
|
41
|
-
* every global into one far field — `D = Σ drag`, the drag-weighted
|
|
42
|
-
* winds, the
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
*
|
|
46
|
-
*
|
|
47
|
-
*
|
|
41
|
+
* every global into one far field — `D = Σ drag`, the drag-weighted means of the
|
|
42
|
+
* winds, of the turbulence intensities and of the length scales, and the sum of the
|
|
43
|
+
* forces — and integrates `u`, the far field's mean, toward the mean wind at `D`. The
|
|
44
|
+
* far field is `u` plus its turbulence, `σ = intensity · |u|` in rms, carried by `u`.
|
|
45
|
+
* {@link FluidSystem} and {@link WorkerFluidSystem} then bring every field to the mean
|
|
46
|
+
* once a step through the atmosphere identity (`fluid_apply_atmosphere`); the GPU fluid
|
|
47
|
+
* brings every cascade to the whole far field, turbulence and all. Several globals act
|
|
48
|
+
* as one, whatever order they are in. A global has no `apply` of its own: it acts only through the far field, and
|
|
48
49
|
* `FluidSimulator#step` refuses one handed to it in its effector list.
|
|
49
50
|
*
|
|
50
51
|
* `force` is not part of the far field: it is a term inside CPU fields, applied exactly
|
|
51
52
|
* in the same step.
|
|
52
53
|
*
|
|
53
|
-
* All quantities are WORLD-space: `force` in units/s², `wind`
|
|
54
|
-
* `
|
|
54
|
+
* All quantities are WORLD-space: `force` in units/s², `wind` in units/s, `drag` in
|
|
55
|
+
* 1/s, `turbulence_length` in units. The `world_to_grid` matrix's linear part converts the vectors per
|
|
55
56
|
* field, so one instance produces the same world-space atmosphere on fields of any
|
|
56
57
|
* `cell_size` — gravity stays gravity.
|
|
57
58
|
*
|
|
@@ -84,49 +85,34 @@ export class GlobalFluidEffector extends AbstractFluidEffector {
|
|
|
84
85
|
*/
|
|
85
86
|
drag: number;
|
|
86
87
|
/**
|
|
87
|
-
*
|
|
88
|
-
*
|
|
89
|
-
*
|
|
90
|
-
*
|
|
88
|
+
* Turbulence intensity, `σ_u / |U|`: the rms of the far field's eddies on each axis, as a share
|
|
89
|
+
* of the far field's mean speed `|U|`. 0, the default, is no turbulence. Over grass and crops
|
|
90
|
+
* the near-ground wind measures 0.15 to 0.2; MIL-F-8785C's low-altitude model gives 0.19 at
|
|
91
|
+
* 20 ft.
|
|
91
92
|
*
|
|
92
|
-
*
|
|
93
|
-
*
|
|
94
|
-
*
|
|
95
|
-
*
|
|
96
|
-
* g_axis = gust · Σ_k a_k · sin(2π·phase_k + (k+1)·φ_axis)
|
|
97
|
-
*
|
|
98
|
-
* The air carries the gust; it does not relax toward it, so `drag` does not filter
|
|
99
|
-
* it. `0` (default) is no gust.
|
|
93
|
+
* The eddies are isotropic von Kármán turbulence, frozen and carried by the mean wind
|
|
94
|
+
* (Taylor's hypothesis), from one repeating tile (`FLUID_TURBULENCE_TILE_RESOLUTION`). The
|
|
95
|
+
* fluid then shapes them: the ground's shear stretches them into streaks, a canopy's drag
|
|
96
|
+
* rolls them up. Read through `GPUFluidSystem#far_field_at`; `far_field` is the mean.
|
|
100
97
|
*
|
|
101
98
|
* @type {number}
|
|
102
99
|
*/
|
|
103
|
-
|
|
100
|
+
turbulence_intensity: number;
|
|
104
101
|
/**
|
|
105
|
-
*
|
|
106
|
-
*
|
|
107
|
-
*
|
|
102
|
+
* The turbulence's length scale `L`, WORLD units, > 0: the von Kármán spectrum's, whose most
|
|
103
|
+
* energetic wavelength is about `4.05·L` and whose longitudinal integral scale is `0.747·L`.
|
|
104
|
+
* The tile repeats every `16·L` across and `4·L` up, and holds wavelengths down to `L/4`.
|
|
108
105
|
*
|
|
109
|
-
* The
|
|
110
|
-
*
|
|
111
|
-
*
|
|
106
|
+
* The default, 58.6 m, is MIL-F-8785C's low-altitude integral scale at 20 ft (43.8 m),
|
|
107
|
+
* divided by 0.747. Smaller scales reach down to a canopy's own eddies at the cost of a
|
|
108
|
+
* shorter repeat.
|
|
112
109
|
*
|
|
113
|
-
*
|
|
114
|
-
|
|
115
|
-
gust_period: number;
|
|
116
|
-
/**
|
|
117
|
-
* The gust's three phases, in turns, each in `[0, 1)`: state, advanced once a tick
|
|
118
|
-
* by {@link advance}. Written by hand only to restore a saved gust.
|
|
110
|
+
* Changing it rescales the eddies about the world's origin, so the air there jumps; it is a
|
|
111
|
+
* property of a scene's weather, set once.
|
|
119
112
|
*
|
|
120
|
-
* @type {
|
|
121
|
-
*/
|
|
122
|
-
gust_phase: Float64Array;
|
|
123
|
-
/**
|
|
124
|
-
* The gust at the current phases, WORLD units per second.
|
|
125
|
-
*
|
|
126
|
-
* @param {Float64Array|number[]} out written at 0..2
|
|
127
|
-
* @returns {Float64Array|number[]} `out`
|
|
113
|
+
* @type {number}
|
|
128
114
|
*/
|
|
129
|
-
|
|
115
|
+
turbulence_length: number;
|
|
130
116
|
}
|
|
131
117
|
export namespace GlobalFluidEffector {
|
|
132
118
|
let typeName: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GlobalFluidEffector.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/physics/fluid/effector/GlobalFluidEffector.js"],"names":[],"mappings":"AAIA
|
|
1
|
+
{"version":3,"file":"GlobalFluidEffector.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/physics/fluid/effector/GlobalFluidEffector.js"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6DG;AACH;IAEI;;;;;OAKG;IACH,OAFU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAEhB;IAElB;;;;;OAKG;IACH,MAFU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAEjB;IAEjB;;;;;;;OAOG;IACH,MAFU,MAAM,CAEP;IAET;;;;;;;;;;;;OAYG;IACH,sBAFU,MAAM,CAES;IAEzB;;;;;;;;;;;;;OAaG;IACH,mBAFU,MAAM,CAES;CAyD5B;;kBAIS,MAAM;;sCAtLsB,4BAA4B"}
|