@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
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A {@link FLUID_FAR_FIELD_STRUCT} value, filled in place: still air.
|
|
3
|
+
*
|
|
4
|
+
* @returns {{mean: Float32Array, sigma: number, origin: Float32Array, lod: number, scale: Float32Array}}
|
|
5
|
+
*/
|
|
6
|
+
export function fluid_far_field_value(): {
|
|
7
|
+
mean: Float32Array;
|
|
8
|
+
sigma: number;
|
|
9
|
+
origin: Float32Array;
|
|
10
|
+
lod: number;
|
|
11
|
+
scale: Float32Array;
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* The far field at one instant as a cascade keeps it on the CPU: what a {@link FluidAtmosphere}
|
|
15
|
+
* record says of it, the mean rounded to f32 as the device holds it.
|
|
16
|
+
*
|
|
17
|
+
* - `mean`: `u`, m/s, f32.
|
|
18
|
+
* - `sigma`: `σ`, m/s.
|
|
19
|
+
* - `offset`: `o`, m, f64: how far the mean has carried the turbulence.
|
|
20
|
+
* - `length`: `L`, m: the turbulence's length scale; anything when `sigma` is 0.
|
|
21
|
+
*
|
|
22
|
+
* @returns {{mean: Float32Array, sigma: number, offset: Float64Array, length: number}}
|
|
23
|
+
*/
|
|
24
|
+
export function fluid_far_record(): {
|
|
25
|
+
mean: Float32Array;
|
|
26
|
+
sigma: number;
|
|
27
|
+
offset: Float64Array;
|
|
28
|
+
length: number;
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Read a {@link fluid_far_record} from a {@link FluidAtmosphere} record.
|
|
32
|
+
*
|
|
33
|
+
* @param {{mean: Float32Array, sigma: number, offset: Float64Array, length: number}} out
|
|
34
|
+
* @param {Float64Array|number[]} atmosphere
|
|
35
|
+
* @param {number} offset where the record starts
|
|
36
|
+
*/
|
|
37
|
+
export function fluid_far_record_read(out: {
|
|
38
|
+
mean: Float32Array;
|
|
39
|
+
sigma: number;
|
|
40
|
+
offset: Float64Array;
|
|
41
|
+
length: number;
|
|
42
|
+
}, atmosphere: Float64Array | number[], offset: number): void;
|
|
43
|
+
/**
|
|
44
|
+
* Copy one {@link fluid_far_record} into another.
|
|
45
|
+
*
|
|
46
|
+
* @param {{mean: Float32Array, sigma: number, offset: Float64Array, length: number}} out
|
|
47
|
+
* @param {{mean: Float32Array, sigma: number, offset: Float64Array, length: number}} from
|
|
48
|
+
*/
|
|
49
|
+
export function fluid_far_record_copy(out: {
|
|
50
|
+
mean: Float32Array;
|
|
51
|
+
sigma: number;
|
|
52
|
+
offset: Float64Array;
|
|
53
|
+
length: number;
|
|
54
|
+
}, from: {
|
|
55
|
+
mean: Float32Array;
|
|
56
|
+
sigma: number;
|
|
57
|
+
offset: Float64Array;
|
|
58
|
+
length: number;
|
|
59
|
+
}): void;
|
|
60
|
+
/**
|
|
61
|
+
* Lay the far field `record` describes over a lattice of cell `h` whose cell coordinate 0 is the world
|
|
62
|
+
* cell `base` (its centre at `(base + ½)·h`), as a {@link FLUID_FAR_FIELD_STRUCT} value, band-limited to
|
|
63
|
+
* a cascade of cell `owner_h`, the one whose state it is the far field of. The turbulence is placed by
|
|
64
|
+
* `offset`, which may be another record's, and scaled by `length`: a step lays its start's mean and σ
|
|
65
|
+
* where the end's offset puts the eddies.
|
|
66
|
+
*
|
|
67
|
+
* @param {{mean: Float32Array, sigma: number, origin: Float32Array, scale: Float32Array}} out
|
|
68
|
+
* @param {{mean: Float32Array, sigma: number}} record the mean and σ
|
|
69
|
+
* @param {ArrayLike<number>} offset `o`, m
|
|
70
|
+
* @param {number} length `L`, m, > 0 when `record.sigma` is not 0
|
|
71
|
+
* @param {number} base_x
|
|
72
|
+
* @param {number} base_y
|
|
73
|
+
* @param {number} base_z
|
|
74
|
+
* @param {number} h the lattice's cell, m
|
|
75
|
+
* @param {number} owner_h the cell of the cascade whose far field this is, m
|
|
76
|
+
*/
|
|
77
|
+
export function fluid_far_field_place(out: {
|
|
78
|
+
mean: Float32Array;
|
|
79
|
+
sigma: number;
|
|
80
|
+
origin: Float32Array;
|
|
81
|
+
scale: Float32Array;
|
|
82
|
+
}, record: {
|
|
83
|
+
mean: Float32Array;
|
|
84
|
+
sigma: number;
|
|
85
|
+
}, offset: ArrayLike<number>, length: number, base_x: number, base_y: number, base_z: number, h: number, owner_h: number): void;
|
|
86
|
+
/**
|
|
87
|
+
* The far field at one instant, laid over one lattice, as a pass reads it
|
|
88
|
+
* (`chunk_fluid_far_field`): at the lattice's cell coordinate `c` (cell centres at integers),
|
|
89
|
+
*
|
|
90
|
+
* v_far(c) = mean + sigma · T(origin + c ⊙ scale)
|
|
91
|
+
*
|
|
92
|
+
* `T` the unit-rms turbulence tile, repeating (`fluid_turbulence_at`).
|
|
93
|
+
*
|
|
94
|
+
* - `mean`: `u`, m/s, the far field's mean.
|
|
95
|
+
* - `sigma`: `σ`, m/s, its turbulence's rms on each axis; 0 for none, and then a read never taps the
|
|
96
|
+
* tile.
|
|
97
|
+
* - `origin`: the tile coordinate of the lattice's cell `c = 0`, folded into `[0, 1)`.
|
|
98
|
+
* - `lod`: the tile's level it is read at: that of the cell of the cascade whose state it is the far
|
|
99
|
+
* field of (`fluid_turbulence_lod`), so a cascade and everything that reads it take its far field
|
|
100
|
+
* band-limited to what its cells hold.
|
|
101
|
+
* - `scale`: tile coordinates per cell on each axis, `h / S`.
|
|
102
|
+
*
|
|
103
|
+
* {@link fluid_far_field_place} lays a {@link fluid_far_record} over a lattice; the offset and the
|
|
104
|
+
* fold are taken there in f64, so the device sees small numbers however far the window is from the
|
|
105
|
+
* world's origin and however far the air has carried the turbulence. 48 bytes.
|
|
106
|
+
*
|
|
107
|
+
* @type {WebGPUStruct}
|
|
108
|
+
*/
|
|
109
|
+
export const FLUID_FAR_FIELD_STRUCT: WebGPUStruct;
|
|
110
|
+
import { WebGPUStruct } from "../shader/type/WebGPUStruct.js";
|
|
111
|
+
//# sourceMappingURL=FLUID_FAR_FIELD_STRUCT.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FLUID_FAR_FIELD_STRUCT.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/fluid/FLUID_FAR_FIELD_STRUCT.js"],"names":[],"mappings":"AAsCA;;;;GAIG;AACH,yCAFa;IAAC,IAAI,EAAE,YAAY,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,YAAY,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,YAAY,CAAA;CAAC,CAUvG;AAED;;;;;;;;;;GAUG;AACH,oCAFa;IAAC,IAAI,EAAE,YAAY,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,YAAY,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAC,CASrF;AAED;;;;;;GAMG;AACH,2CAJW;IAAC,IAAI,EAAE,YAAY,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,YAAY,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAC,cACzE,YAAY,GAAC,MAAM,EAAE,UACrB,MAAM,QAqBhB;AAED;;;;;GAKG;AACH,2CAHW;IAAC,IAAI,EAAE,YAAY,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,YAAY,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAC,QACzE;IAAC,IAAI,EAAE,YAAY,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,YAAY,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAC,QAOnF;AAID;;;;;;;;;;;;;;;;GAgBG;AACH,2CAVW;IAAC,IAAI,EAAE,YAAY,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,YAAY,CAAC;IAAC,KAAK,EAAE,YAAY,CAAA;CAAC,UAC9E;IAAC,IAAI,EAAE,YAAY,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAC,UACnC,UAAU,MAAM,CAAC,UACjB,MAAM,UACN,MAAM,UACN,MAAM,UACN,MAAM,KACN,MAAM,WACN,MAAM,QA8BhB;AA1JD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qCAFU,YAAY,CAQF;6BA/BS,gCAAgC"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
import { assert } from "../../../core/assert.js";
|
|
2
|
+
import { FluidAtmosphere } from "../../../engine/physics/fluid/FluidAtmosphere.js";
|
|
3
|
+
import { fluid_turbulence_inverse_tile_size } from "../../../engine/physics/fluid/turbulence/fluid_turbulence_inverse_tile_size.js";
|
|
4
|
+
import { FLUID_TURBULENCE_TEXELS_PER_LENGTH } from "../../../engine/physics/fluid/turbulence/FLUID_TURBULENCE_TILE.js";
|
|
5
|
+
import { f32, vec3f } from "../shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
|
|
6
|
+
import { WebGPUStruct } from "../shader/type/WebGPUStruct.js";
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* The far field at one instant, laid over one lattice, as a pass reads it
|
|
10
|
+
* (`chunk_fluid_far_field`): at the lattice's cell coordinate `c` (cell centres at integers),
|
|
11
|
+
*
|
|
12
|
+
* v_far(c) = mean + sigma · T(origin + c ⊙ scale)
|
|
13
|
+
*
|
|
14
|
+
* `T` the unit-rms turbulence tile, repeating (`fluid_turbulence_at`).
|
|
15
|
+
*
|
|
16
|
+
* - `mean`: `u`, m/s, the far field's mean.
|
|
17
|
+
* - `sigma`: `σ`, m/s, its turbulence's rms on each axis; 0 for none, and then a read never taps the
|
|
18
|
+
* tile.
|
|
19
|
+
* - `origin`: the tile coordinate of the lattice's cell `c = 0`, folded into `[0, 1)`.
|
|
20
|
+
* - `lod`: the tile's level it is read at: that of the cell of the cascade whose state it is the far
|
|
21
|
+
* field of (`fluid_turbulence_lod`), so a cascade and everything that reads it take its far field
|
|
22
|
+
* band-limited to what its cells hold.
|
|
23
|
+
* - `scale`: tile coordinates per cell on each axis, `h / S`.
|
|
24
|
+
*
|
|
25
|
+
* {@link fluid_far_field_place} lays a {@link fluid_far_record} over a lattice; the offset and the
|
|
26
|
+
* fold are taken there in f64, so the device sees small numbers however far the window is from the
|
|
27
|
+
* world's origin and however far the air has carried the turbulence. 48 bytes.
|
|
28
|
+
*
|
|
29
|
+
* @type {WebGPUStruct}
|
|
30
|
+
*/
|
|
31
|
+
export const FLUID_FAR_FIELD_STRUCT = WebGPUStruct.from({
|
|
32
|
+
mean: vec3f,
|
|
33
|
+
sigma: f32,
|
|
34
|
+
origin: vec3f,
|
|
35
|
+
lod: f32,
|
|
36
|
+
scale: vec3f,
|
|
37
|
+
}, 'FluidFarField');
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* A {@link FLUID_FAR_FIELD_STRUCT} value, filled in place: still air.
|
|
41
|
+
*
|
|
42
|
+
* @returns {{mean: Float32Array, sigma: number, origin: Float32Array, lod: number, scale: Float32Array}}
|
|
43
|
+
*/
|
|
44
|
+
export function fluid_far_field_value() {
|
|
45
|
+
return {
|
|
46
|
+
mean: new Float32Array(3),
|
|
47
|
+
sigma: 0,
|
|
48
|
+
origin: new Float32Array(3),
|
|
49
|
+
lod: 0,
|
|
50
|
+
scale: new Float32Array(3),
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* The far field at one instant as a cascade keeps it on the CPU: what a {@link FluidAtmosphere}
|
|
56
|
+
* record says of it, the mean rounded to f32 as the device holds it.
|
|
57
|
+
*
|
|
58
|
+
* - `mean`: `u`, m/s, f32.
|
|
59
|
+
* - `sigma`: `σ`, m/s.
|
|
60
|
+
* - `offset`: `o`, m, f64: how far the mean has carried the turbulence.
|
|
61
|
+
* - `length`: `L`, m: the turbulence's length scale; anything when `sigma` is 0.
|
|
62
|
+
*
|
|
63
|
+
* @returns {{mean: Float32Array, sigma: number, offset: Float64Array, length: number}}
|
|
64
|
+
*/
|
|
65
|
+
export function fluid_far_record() {
|
|
66
|
+
return {
|
|
67
|
+
mean: new Float32Array(3),
|
|
68
|
+
sigma: 0,
|
|
69
|
+
offset: new Float64Array(3),
|
|
70
|
+
length: 0,
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Read a {@link fluid_far_record} from a {@link FluidAtmosphere} record.
|
|
76
|
+
*
|
|
77
|
+
* @param {{mean: Float32Array, sigma: number, offset: Float64Array, length: number}} out
|
|
78
|
+
* @param {Float64Array|number[]} atmosphere
|
|
79
|
+
* @param {number} offset where the record starts
|
|
80
|
+
*/
|
|
81
|
+
export function fluid_far_record_read(out, atmosphere, offset) {
|
|
82
|
+
out.mean[0] = atmosphere[offset + FluidAtmosphere.VELOCITY_X];
|
|
83
|
+
out.mean[1] = atmosphere[offset + FluidAtmosphere.VELOCITY_Y];
|
|
84
|
+
out.mean[2] = atmosphere[offset + FluidAtmosphere.VELOCITY_Z];
|
|
85
|
+
|
|
86
|
+
out.sigma = atmosphere[offset + FluidAtmosphere.TURBULENCE_SIGMA];
|
|
87
|
+
out.offset[0] = atmosphere[offset + FluidAtmosphere.TURBULENCE_OFFSET_X];
|
|
88
|
+
out.offset[1] = atmosphere[offset + FluidAtmosphere.TURBULENCE_OFFSET_Y];
|
|
89
|
+
out.offset[2] = atmosphere[offset + FluidAtmosphere.TURBULENCE_OFFSET_Z];
|
|
90
|
+
out.length = atmosphere[offset + FluidAtmosphere.TURBULENCE_LENGTH];
|
|
91
|
+
|
|
92
|
+
for (let axis = 0; axis < 3; axis++) {
|
|
93
|
+
assert.isFinite(out.mean[axis], 'v_far');
|
|
94
|
+
assert.isFinite(out.offset[axis], 'turbulence offset');
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
assert.isFinite(out.sigma, 'σ');
|
|
98
|
+
assert.greaterThanOrEqual(out.sigma, 0, 'σ');
|
|
99
|
+
assert.ok(out.sigma === 0 || out.length > 0, 'turbulence has a length scale');
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* Copy one {@link fluid_far_record} into another.
|
|
104
|
+
*
|
|
105
|
+
* @param {{mean: Float32Array, sigma: number, offset: Float64Array, length: number}} out
|
|
106
|
+
* @param {{mean: Float32Array, sigma: number, offset: Float64Array, length: number}} from
|
|
107
|
+
*/
|
|
108
|
+
export function fluid_far_record_copy(out, from) {
|
|
109
|
+
out.mean.set(from.mean);
|
|
110
|
+
out.sigma = from.sigma;
|
|
111
|
+
out.offset.set(from.offset);
|
|
112
|
+
out.length = from.length;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
const inverse_size = new Float64Array(3);
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* Lay the far field `record` describes over a lattice of cell `h` whose cell coordinate 0 is the world
|
|
119
|
+
* cell `base` (its centre at `(base + ½)·h`), as a {@link FLUID_FAR_FIELD_STRUCT} value, band-limited to
|
|
120
|
+
* a cascade of cell `owner_h`, the one whose state it is the far field of. The turbulence is placed by
|
|
121
|
+
* `offset`, which may be another record's, and scaled by `length`: a step lays its start's mean and σ
|
|
122
|
+
* where the end's offset puts the eddies.
|
|
123
|
+
*
|
|
124
|
+
* @param {{mean: Float32Array, sigma: number, origin: Float32Array, scale: Float32Array}} out
|
|
125
|
+
* @param {{mean: Float32Array, sigma: number}} record the mean and σ
|
|
126
|
+
* @param {ArrayLike<number>} offset `o`, m
|
|
127
|
+
* @param {number} length `L`, m, > 0 when `record.sigma` is not 0
|
|
128
|
+
* @param {number} base_x
|
|
129
|
+
* @param {number} base_y
|
|
130
|
+
* @param {number} base_z
|
|
131
|
+
* @param {number} h the lattice's cell, m
|
|
132
|
+
* @param {number} owner_h the cell of the cascade whose far field this is, m
|
|
133
|
+
*/
|
|
134
|
+
export function fluid_far_field_place(out, record, offset, length, base_x, base_y, base_z, h, owner_h) {
|
|
135
|
+
out.mean.set(record.mean);
|
|
136
|
+
out.sigma = record.sigma;
|
|
137
|
+
|
|
138
|
+
if (record.sigma === 0) {
|
|
139
|
+
out.origin.fill(0);
|
|
140
|
+
out.scale.fill(0);
|
|
141
|
+
out.lod = 0;
|
|
142
|
+
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
// log2(cell / texel), the texel L / FLUID_TURBULENCE_TEXELS_PER_LENGTH, and level 0 for a finer cell
|
|
147
|
+
out.lod = Math.max(0, Math.log2(owner_h * FLUID_TURBULENCE_TEXELS_PER_LENGTH / length));
|
|
148
|
+
|
|
149
|
+
fluid_turbulence_inverse_tile_size(inverse_size, length);
|
|
150
|
+
|
|
151
|
+
const origin_x = ((base_x + 0.5) * h - offset[0]) * inverse_size[0];
|
|
152
|
+
const origin_y = ((base_y + 0.5) * h - offset[1]) * inverse_size[1];
|
|
153
|
+
const origin_z = ((base_z + 0.5) * h - offset[2]) * inverse_size[2];
|
|
154
|
+
|
|
155
|
+
out.origin[0] = origin_x - Math.floor(origin_x);
|
|
156
|
+
out.origin[1] = origin_y - Math.floor(origin_y);
|
|
157
|
+
out.origin[2] = origin_z - Math.floor(origin_z);
|
|
158
|
+
|
|
159
|
+
out.scale[0] = h * inverse_size[0];
|
|
160
|
+
out.scale[1] = h * inverse_size[1];
|
|
161
|
+
out.scale[2] = h * inverse_size[2];
|
|
162
|
+
}
|
|
@@ -76,11 +76,13 @@ export const GPU_FLUID_CASCADE_GROWTH_EXPONENT_LIMIT: number;
|
|
|
76
76
|
* `FLUID_FORCED_FLAG` where the tick's forcing was written for the cell's faces. A step reads these
|
|
77
77
|
* unless it is handed another buffer. `GPUFluidForcing` writes them before each step of the
|
|
78
78
|
* cascade, with {@link solid_bricks} saying which bricks it last wrote;
|
|
79
|
-
* - **its read record**: the instant its velocity was last brought to, `t_s`, with `v_far(t_s)`
|
|
80
|
-
* ({@link read_far_velocity}, rounded to f32 as the device holds it) and
|
|
81
|
-
* ({@link read_lambda}), on the CPU. The velocity is a
|
|
82
|
-
* it at an instant `t`
|
|
83
|
-
*
|
|
79
|
+
* - **its read record**: the instant its velocity was last brought to, `t_s`, with `v_far(t_s)` —
|
|
80
|
+
* its mean ({@link read_far_velocity}, rounded to f32 as the device holds it) and its turbulence's
|
|
81
|
+
* `σ`, offset and length scale — and `Λ(t_s)` ({@link read_lambda}), on the CPU. The velocity is a
|
|
82
|
+
* deviation from `v_far(t_s)`, so every read of it at an instant `t` at a point `x` is
|
|
83
|
+
* `v_far(t, x) + (v − v_far(t_s, x))·e^(−(Λ(t) − Λ(t_s)))` (§6); {@link update_read} computes that
|
|
84
|
+
* factor, {@link read_keep}, on the CPU, and the device never sees `Λ`. Each pass lays the far field
|
|
85
|
+
* over its own lattice (`FLUID_FAR_FIELD_STRUCT`), so the device never sees the offset either.
|
|
84
86
|
*
|
|
85
87
|
* It is created at the far field of a {@link FluidAtmosphere} record: velocity `v_far`, pressure 0,
|
|
86
88
|
* the read record that instant.
|
|
@@ -240,6 +242,24 @@ export class GPUFluidCascade {
|
|
|
240
242
|
* @returns {Readonly<Float32Array>}
|
|
241
243
|
*/
|
|
242
244
|
get read_far_velocity(): Readonly<Float32Array>;
|
|
245
|
+
/**
|
|
246
|
+
* `v_far(t_s)` laid over this cascade's window as a {@link FLUID_FAR_FIELD_STRUCT} value: cell
|
|
247
|
+
* coordinate 0 at window-local cell 0. What its publish subtracts.
|
|
248
|
+
*
|
|
249
|
+
* @param {{mean: Float32Array, sigma: number, origin: Float32Array, scale: Float32Array}} out
|
|
250
|
+
* @returns {{mean: Float32Array, sigma: number, origin: Float32Array, scale: Float32Array}} `out`
|
|
251
|
+
*/
|
|
252
|
+
describe_far(out: {
|
|
253
|
+
mean: Float32Array;
|
|
254
|
+
sigma: number;
|
|
255
|
+
origin: Float32Array;
|
|
256
|
+
scale: Float32Array;
|
|
257
|
+
}): {
|
|
258
|
+
mean: Float32Array;
|
|
259
|
+
sigma: number;
|
|
260
|
+
origin: Float32Array;
|
|
261
|
+
scale: Float32Array;
|
|
262
|
+
};
|
|
243
263
|
/**
|
|
244
264
|
* `k = e^(−(Λ(t) − Λ(t_s)))` for the instant of the last {@link update_read}, in [0, 1]: a read of
|
|
245
265
|
* the stored velocity `v` at that instant is `v_far(t) + (v − v_far(t_s))·k`. 1 until the first.
|
|
@@ -326,8 +346,10 @@ export class GPUFluidCascade {
|
|
|
326
346
|
* @param {GPUFluidCascadePressureArm} [options.arm]
|
|
327
347
|
* @param {number} [options.count] V-cycles under {@link GPUFluidCascadePressureArm.VCycles}, red-black
|
|
328
348
|
* sweeps under {@link GPUFluidCascadePressureArm.SOR}
|
|
349
|
+
* @param {GPUTextureView|null} [options.turbulence] the far field's turbulence tile
|
|
350
|
+
* (`GPUSceneWind#turbulence`); `null`, the default, only for a far field with none
|
|
329
351
|
*/
|
|
330
|
-
record_step({ graph, dt, atmosphere, atmosphere_offset, parent, relaxation_band, solid, forcing, vorticity_confinement, arm, count, }: {
|
|
352
|
+
record_step({ graph, dt, atmosphere, atmosphere_offset, parent, relaxation_band, solid, forcing, vorticity_confinement, arm, count, turbulence, }: {
|
|
331
353
|
graph: FrameGraph;
|
|
332
354
|
dt: number;
|
|
333
355
|
atmosphere: Float64Array | number[];
|
|
@@ -339,6 +361,7 @@ export class GPUFluidCascade {
|
|
|
339
361
|
vorticity_confinement?: number;
|
|
340
362
|
arm?: GPUFluidCascadePressureArm;
|
|
341
363
|
count?: number;
|
|
364
|
+
turbulence?: GPUTextureView | null;
|
|
342
365
|
}): void;
|
|
343
366
|
/**
|
|
344
367
|
* Record a fill into `graph`: the cells a placement exposed take the parent's identity read as of
|
|
@@ -352,12 +375,15 @@ export class GPUFluidCascade {
|
|
|
352
375
|
* one inside the window and on the 4-cell lattice
|
|
353
376
|
* @param {number} options.box_count 0 to 3
|
|
354
377
|
* @param {GPUFluidCascade|null} options.parent the parent to fill from, or `null` for the far field
|
|
378
|
+
* @param {GPUTextureView|null} [options.turbulence] the far field's turbulence tile; `null`, the
|
|
379
|
+
* default, only for a far field with none
|
|
355
380
|
*/
|
|
356
|
-
record_fill({ graph, boxes, box_count, parent }: {
|
|
381
|
+
record_fill({ graph, boxes, box_count, parent, turbulence }: {
|
|
357
382
|
graph: FrameGraph;
|
|
358
383
|
boxes: ArrayLike<number>;
|
|
359
384
|
box_count: number;
|
|
360
385
|
parent: GPUFluidCascade | null;
|
|
386
|
+
turbulence?: GPUTextureView | null;
|
|
361
387
|
}): void;
|
|
362
388
|
/**
|
|
363
389
|
* Record the feedback of `child` into this cascade (§8 pass 7, §9), as it must run before this
|
|
@@ -371,10 +397,13 @@ export class GPUFluidCascade {
|
|
|
371
397
|
* @param {object} options
|
|
372
398
|
* @param {FrameGraph} options.graph
|
|
373
399
|
* @param {GPUFluidCascade} options.child a cascade of half the cell and the same resolution
|
|
400
|
+
* @param {GPUTextureView|null} [options.turbulence] the far field's turbulence tile; `null`, the
|
|
401
|
+
* default, only for a far field with none
|
|
374
402
|
*/
|
|
375
|
-
record_restrict({ graph, child }: {
|
|
403
|
+
record_restrict({ graph, child, turbulence }: {
|
|
376
404
|
graph: FrameGraph;
|
|
377
405
|
child: GPUFluidCascade;
|
|
406
|
+
turbulence?: GPUTextureView | null;
|
|
378
407
|
}): void;
|
|
379
408
|
/**
|
|
380
409
|
* Release everything the cascade made. A step recorded into a graph that has not run yet encodes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GPUFluidCascade.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/fluid/GPUFluidCascade.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"GPUFluidCascade.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/fluid/GPUFluidCascade.js"],"names":[],"mappings":"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"}
|