@woosh/meep-engine 3.68.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 +74 -0
- package/build/bundle-worker-terrain.js +1 -1
- package/editor/ecs/component/editors/ecs/Trail3DEditor.d.ts +2 -17
- package/editor/ecs/component/editors/ecs/Trail3DEditor.d.ts.map +1 -1
- package/editor/ecs/component/editors/ecs/Trail3DEditor.js +3 -18
- 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/graphics/ecs/trail3d/Trail3D.d.ts +33 -65
- package/src/engine/graphics/ecs/trail3d/Trail3D.d.ts.map +1 -1
- package/src/engine/graphics/ecs/trail3d/Trail3D.js +37 -245
- package/src/engine/graphics/ecs/trail3d/Trail3DFlags.d.ts +0 -4
- package/src/engine/graphics/ecs/trail3d/Trail3DFlags.js +4 -10
- package/src/engine/graphics/ecs/trail3d/seed_trail_stroke.d.ts +13 -10
- package/src/engine/graphics/ecs/trail3d/seed_trail_stroke.d.ts.map +1 -1
- package/src/engine/graphics/ecs/trail3d/seed_trail_stroke.js +28 -37
- package/src/engine/graphics/ecs/trail3d/trail_knot_count.d.ts +10 -0
- package/src/engine/graphics/ecs/trail3d/trail_knot_count.d.ts.map +1 -0
- package/src/engine/graphics/ecs/trail3d/trail_knot_count.js +27 -0
- package/src/engine/graphics/trail/TrailKnots.d.ts +62 -0
- package/src/engine/graphics/trail/TrailKnots.d.ts.map +1 -0
- package/src/engine/graphics/trail/TrailKnots.js +137 -0
- package/src/engine/graphics/trail/tube/TubeXMaterialSpec.d.ts +1 -1
- package/src/engine/graphics/trail/tube/TubeXMaterialSpec.js +1 -1
- package/src/engine/graphics3/EntityRowHold.d.ts +48 -0
- package/src/engine/graphics3/EntityRowHold.d.ts.map +1 -0
- package/src/engine/graphics3/EntityRowHold.js +128 -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/graphics3/GPUParticleEmitterSystem.d.ts +6 -2
- package/src/engine/graphics3/GPUParticleEmitterSystem.d.ts.map +1 -1
- package/src/engine/graphics3/GPUParticleEmitterSystem.js +11 -44
- package/src/engine/graphics3/Trail3DSystem.d.ts +69 -35
- package/src/engine/graphics3/Trail3DSystem.d.ts.map +1 -1
- package/src/engine/graphics3/Trail3DSystem.js +380 -81
- 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/ecs/FluidObstacle.d.ts +17 -0
- package/src/engine/physics/fluid/ecs/FluidObstacle.d.ts.map +1 -1
- package/src/engine/physics/fluid/ecs/FluidObstacle.js +22 -2
- package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +6 -5
- package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts.map +1 -1
- package/src/engine/physics/fluid/ecs/FluidObstacleSystem.js +14 -3
- 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/obstacle/FLUID_OBSTACLE_RECORD_STRUCT.d.ts +9 -1
- package/src/engine/physics/fluid/obstacle/FLUID_OBSTACLE_RECORD_STRUCT.d.ts.map +1 -1
- package/src/engine/physics/fluid/obstacle/FLUID_OBSTACLE_RECORD_STRUCT.js +11 -1
- package/src/engine/physics/fluid/obstacle/fluid_obstacle_record_create.d.ts +5 -0
- package/src/engine/physics/fluid/obstacle/fluid_obstacle_record_create.d.ts.map +1 -1
- package/src/engine/physics/fluid/obstacle/fluid_obstacle_record_create.js +2 -0
- package/src/engine/physics/fluid/obstacle/fluid_obstacle_write_gpu_record.d.ts +4 -3
- package/src/engine/physics/fluid/obstacle/fluid_obstacle_write_gpu_record.d.ts.map +1 -1
- package/src/engine/physics/fluid/obstacle/fluid_obstacle_write_gpu_record.js +11 -3
- 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/trails/index.html +50 -0
- package/src/shade/playground/trails/main.d.ts +2 -0
- package/src/shade/playground/trails/main.d.ts.map +1 -0
- package/src/shade/playground/trails/main.js +258 -0
- package/src/shade/playground/water_surface/main.js +6 -3
- package/src/shade/renderer/animation/GPUAnimationManager.js +2 -2
- package/src/shade/renderer/animation/animation_curve_write_keys.d.ts +18 -0
- package/src/shade/renderer/animation/animation_curve_write_keys.d.ts.map +1 -0
- package/src/shade/renderer/animation/animation_curve_write_keys.js +34 -0
- 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/deferred/tonemap/ColorGrade.d.ts.map +1 -1
- package/src/shade/renderer/deferred/tonemap/ColorGrade.js +13 -36
- package/src/shade/renderer/dynamic/GPUDynamicMeshResidency.js +2 -2
- package/src/shade/renderer/dynamic/chunk_dynamic_mesh_avboit_vertex.d.ts +2 -13
- package/src/shade/renderer/dynamic/chunk_dynamic_mesh_avboit_vertex.d.ts.map +1 -1
- package/src/shade/renderer/dynamic/chunk_dynamic_mesh_avboit_vertex.js +6 -21
- package/src/shade/renderer/dynamic/graph_dynamic_mesh_avboit.d.ts +17 -6
- package/src/shade/renderer/dynamic/graph_dynamic_mesh_avboit.d.ts.map +1 -1
- package/src/shade/renderer/dynamic/graph_dynamic_mesh_avboit.js +38 -178
- package/src/shade/renderer/dynamic/shader_dynamic_mesh_avboit_draw.d.ts +7 -9
- package/src/shade/renderer/dynamic/shader_dynamic_mesh_avboit_draw.d.ts.map +1 -1
- package/src/shade/renderer/dynamic/shader_dynamic_mesh_avboit_draw.js +17 -106
- package/src/shade/renderer/dynamic/shader_dynamic_mesh_avboit_splat.d.ts +7 -17
- package/src/shade/renderer/dynamic/shader_dynamic_mesh_avboit_splat.d.ts.map +1 -1
- package/src/shade/renderer/dynamic/shader_dynamic_mesh_avboit_splat.js +18 -118
- 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/forcing/FLUID_FORCING.d.ts +14 -0
- package/src/shade/renderer/fluid/forcing/FLUID_FORCING.d.ts.map +1 -1
- package/src/shade/renderer/fluid/forcing/FLUID_FORCING.js +18 -0
- package/src/shade/renderer/fluid/forcing/FLUID_FORCING_APPLY_STRUCT.d.ts +3 -1
- package/src/shade/renderer/fluid/forcing/FLUID_FORCING_APPLY_STRUCT.d.ts.map +1 -1
- package/src/shade/renderer/fluid/forcing/FLUID_FORCING_APPLY_STRUCT.js +4 -1
- package/src/shade/renderer/fluid/forcing/GPUFluidForcing.d.ts +9 -0
- package/src/shade/renderer/fluid/forcing/GPUFluidForcing.d.ts.map +1 -1
- package/src/shade/renderer/fluid/forcing/GPUFluidForcing.js +20 -4
- package/src/shade/renderer/fluid/forcing/chunk_fluid_forcing_cell.d.ts +11 -2
- package/src/shade/renderer/fluid/forcing/chunk_fluid_forcing_cell.d.ts.map +1 -1
- package/src/shade/renderer/fluid/forcing/chunk_fluid_forcing_cell.js +59 -2
- package/src/shade/renderer/fluid/forcing/shader_fluid_forcing_apply.d.ts +4 -1
- package/src/shade/renderer/fluid/forcing/shader_fluid_forcing_apply.d.ts.map +1 -1
- package/src/shade/renderer/fluid/forcing/shader_fluid_forcing_apply.js +367 -341
- 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 +6 -2
- 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 +340 -282
- 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/press/shader_grass_press_mark.d.ts +3 -2
- package/src/shade/renderer/grass/press/shader_grass_press_mark.d.ts.map +1 -1
- package/src/shade/renderer/grass/press/shader_grass_press_mark.js +5 -3
- 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/rasterize/native/avboit/avboit_unlit_draw.d.ts +49 -0
- package/src/shade/renderer/rasterize/native/avboit/avboit_unlit_draw.d.ts.map +1 -0
- package/src/shade/renderer/rasterize/native/avboit/avboit_unlit_draw.js +144 -0
- package/src/shade/renderer/rasterize/native/avboit/avboit_unlit_splat.d.ts +71 -0
- package/src/shade/renderer/rasterize/native/avboit/avboit_unlit_splat.d.ts.map +1 -0
- package/src/shade/renderer/rasterize/native/avboit/avboit_unlit_splat.js +152 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_unlit_varyings.d.ts +21 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_unlit_varyings.d.ts.map +1 -0
- package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_unlit_varyings.js +30 -0
- package/src/shade/renderer/rasterize/native/avboit/graph_avboit_unlit.d.ts +101 -0
- package/src/shade/renderer/rasterize/native/avboit/graph_avboit_unlit.d.ts.map +1 -0
- package/src/shade/renderer/rasterize/native/avboit/graph_avboit_unlit.js +306 -0
- package/src/shade/renderer/rasterize/native/avboit/shader_avboit_splat.d.ts +9 -0
- package/src/shade/renderer/rasterize/native/avboit/shader_avboit_splat.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/avboit/shader_avboit_splat.js +11 -4
- 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/trails/GPUTrailAVBOITChannel.d.ts +69 -0
- package/src/shade/renderer/trails/GPUTrailAVBOITChannel.d.ts.map +1 -0
- package/src/shade/renderer/trails/GPUTrailAVBOITChannel.js +129 -0
- package/src/shade/renderer/trails/GPUTrailSystem.d.ts +164 -0
- package/src/shade/renderer/trails/GPUTrailSystem.d.ts.map +1 -0
- package/src/shade/renderer/trails/GPUTrailSystem.js +725 -0
- package/src/shade/renderer/trails/data/TRAIL_DATABASE_SPEC.d.ts +14 -0
- package/src/shade/renderer/trails/data/TRAIL_DATABASE_SPEC.d.ts.map +1 -0
- package/src/shade/renderer/trails/data/TRAIL_DATABASE_SPEC.js +38 -0
- package/src/shade/renderer/trails/data/TRAIL_KNOT.d.ts +66 -0
- package/src/shade/renderer/trails/data/TRAIL_KNOT.d.ts.map +1 -0
- package/src/shade/renderer/trails/data/TRAIL_KNOT.js +154 -0
- package/src/shade/renderer/trails/data/TRAIL_RECORD.d.ts +19 -0
- package/src/shade/renderer/trails/data/TRAIL_RECORD.d.ts.map +1 -0
- package/src/shade/renderer/trails/data/TRAIL_RECORD.js +68 -0
- package/src/shade/renderer/trails/data/TRAIL_STATE.d.ts +18 -0
- package/src/shade/renderer/trails/data/TRAIL_STATE.d.ts.map +1 -0
- package/src/shade/renderer/trails/data/TRAIL_STATE.js +43 -0
- package/src/shade/renderer/trails/graph_trails.d.ts +58 -0
- package/src/shade/renderer/trails/graph_trails.d.ts.map +1 -0
- package/src/shade/renderer/trails/graph_trails.js +155 -0
- package/src/shade/renderer/trails/graph_trails_avboit.d.ts +126 -0
- package/src/shade/renderer/trails/graph_trails_avboit.d.ts.map +1 -0
- package/src/shade/renderer/trails/graph_trails_avboit.js +300 -0
- package/src/shade/renderer/trails/runtime/TrailFadeCurves.d.ts +56 -0
- package/src/shade/renderer/trails/runtime/TrailFadeCurves.d.ts.map +1 -0
- package/src/shade/renderer/trails/runtime/TrailFadeCurves.js +220 -0
- package/src/shade/renderer/trails/runtime/TrailKnotPool.d.ts +49 -0
- package/src/shade/renderer/trails/runtime/TrailKnotPool.d.ts.map +1 -0
- package/src/shade/renderer/trails/runtime/TrailKnotPool.js +162 -0
- package/src/shade/renderer/trails/runtime/TrailParameters.d.ts +52 -0
- package/src/shade/renderer/trails/runtime/TrailParameters.d.ts.map +1 -0
- package/src/shade/renderer/trails/runtime/TrailParameters.js +126 -0
- package/src/shade/renderer/trails/shaders/chunk_trail_frame_transport.d.ts +23 -0
- package/src/shade/renderer/trails/shaders/chunk_trail_frame_transport.d.ts.map +1 -0
- package/src/shade/renderer/trails/shaders/chunk_trail_frame_transport.js +57 -0
- package/src/shade/renderer/trails/shaders/chunk_trail_knot_alpha.d.ts +14 -0
- package/src/shade/renderer/trails/shaders/chunk_trail_knot_alpha.d.ts.map +1 -0
- package/src/shade/renderer/trails/shaders/chunk_trail_knot_alpha.js +40 -0
- package/src/shade/renderer/trails/shaders/chunk_trail_seed.d.ts +18 -0
- package/src/shade/renderer/trails/shaders/chunk_trail_seed.d.ts.map +1 -0
- package/src/shade/renderer/trails/shaders/chunk_trail_seed.js +64 -0
- package/src/shade/renderer/trails/shaders/chunk_trail_segment.d.ts +14 -0
- package/src/shade/renderer/trails/shaders/chunk_trail_segment.d.ts.map +1 -0
- package/src/shade/renderer/trails/shaders/chunk_trail_segment.js +51 -0
- package/src/shade/renderer/trails/shaders/chunk_trail_update.d.ts +48 -0
- package/src/shade/renderer/trails/shaders/chunk_trail_update.d.ts.map +1 -0
- package/src/shade/renderer/trails/shaders/chunk_trail_update.js +197 -0
- package/src/shade/renderer/trails/shaders/chunk_trail_vertex.d.ts +34 -0
- package/src/shade/renderer/trails/shaders/chunk_trail_vertex.d.ts.map +1 -0
- package/src/shade/renderer/trails/shaders/chunk_trail_vertex.js +111 -0
- package/src/shade/renderer/trails/shaders/shader_trail_avboit.d.ts +24 -0
- package/src/shade/renderer/trails/shaders/shader_trail_avboit.d.ts.map +1 -0
- package/src/shade/renderer/trails/shaders/shader_trail_avboit.js +78 -0
- package/src/shade/renderer/trails/shaders/shader_trail_avboit_segments.d.ts +23 -0
- package/src/shade/renderer/trails/shaders/shader_trail_avboit_segments.d.ts.map +1 -0
- package/src/shade/renderer/trails/shaders/shader_trail_avboit_segments.js +130 -0
- package/src/shade/renderer/trails/shaders/shader_trail_draw_args.d.ts +29 -0
- package/src/shade/renderer/trails/shaders/shader_trail_draw_args.d.ts.map +1 -0
- package/src/shade/renderer/trails/shaders/shader_trail_draw_args.js +78 -0
- package/src/shade/renderer/trails/shaders/shader_trail_seed.d.ts +18 -0
- package/src/shade/renderer/trails/shaders/shader_trail_seed.d.ts.map +1 -0
- package/src/shade/renderer/trails/shaders/shader_trail_seed.js +79 -0
- package/src/shade/renderer/trails/shaders/shader_trail_update.d.ts +20 -0
- package/src/shade/renderer/trails/shaders/shader_trail_update.d.ts.map +1 -0
- package/src/shade/renderer/trails/shaders/shader_trail_update.js +101 -0
- 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/engine/graphics/ecs/trail3d/advance_trail.d.ts +0 -18
- package/src/engine/graphics/ecs/trail3d/advance_trail.d.ts.map +0 -1
- package/src/engine/graphics/ecs/trail3d/advance_trail.js +0 -42
- package/src/engine/graphics/ecs/trail3d/seed_trail_tube.d.ts +0 -14
- package/src/engine/graphics/ecs/trail3d/seed_trail_tube.d.ts.map +0 -1
- package/src/engine/graphics/ecs/trail3d/seed_trail_tube.js +0 -75
- package/src/engine/graphics/ecs/trail3d/trail_head_position.d.ts +0 -17
- package/src/engine/graphics/ecs/trail3d/trail_head_position.d.ts.map +0 -1
- package/src/engine/graphics/ecs/trail3d/trail_head_position.js +0 -19
- package/src/engine/graphics/trail/tube/TubeX.d.ts +0 -186
- package/src/engine/graphics/trail/tube/TubeX.d.ts.map +0 -1
- package/src/engine/graphics/trail/tube/TubeX.js +0 -575
- package/src/engine/graphics/trail/tube/simulator/TubeXFixedPhysicsSimulator.d.ts +0 -16
- package/src/engine/graphics/trail/tube/simulator/TubeXFixedPhysicsSimulator.d.ts.map +0 -1
- package/src/engine/graphics/trail/tube/simulator/TubeXFixedPhysicsSimulator.js +0 -34
- package/src/engine/graphics/trail/tube/tube_attributes_spec.d.ts +0 -27
- package/src/engine/graphics/trail/tube/tube_attributes_spec.d.ts.map +0 -1
- package/src/engine/graphics/trail/tube/tube_attributes_spec.js +0 -70
- package/src/engine/graphics3/trail/trail_tube_write_geometry.d.ts +0 -38
- package/src/engine/graphics3/trail/trail_tube_write_geometry.d.ts.map +0 -1
- package/src/engine/graphics3/trail/trail_tube_write_geometry.js +0 -119
- 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,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reads a version-0 {@link GlobalFluidEffector} stream as version 1: `force`, `wind` and `drag` as
|
|
3
|
+
* they were; the gust (`gust`, `gust_period`, three phases), which version 1 no longer has, dropped;
|
|
4
|
+
* then no turbulence, at the default length scale.
|
|
5
|
+
*
|
|
6
|
+
* Every value an f64, in and out.
|
|
7
|
+
*/
|
|
8
|
+
export class GlobalFluidEffectorSerializationUpgrader_0_1 extends BinaryClassUpgrader {
|
|
9
|
+
/**
|
|
10
|
+
* @param {BinaryBuffer} source
|
|
11
|
+
* @param {BinaryBuffer} target
|
|
12
|
+
*/
|
|
13
|
+
upgrade(source: BinaryBuffer, target: BinaryBuffer): void;
|
|
14
|
+
}
|
|
15
|
+
import { BinaryClassUpgrader } from "../../../ecs/storage/binary/BinaryClassUpgrader.js";
|
|
16
|
+
//# sourceMappingURL=GlobalFluidEffectorSerializationUpgrader_0_1.d.ts.map
|
package/src/engine/physics/fluid/effector/GlobalFluidEffectorSerializationUpgrader_0_1.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GlobalFluidEffectorSerializationUpgrader_0_1.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/physics/fluid/effector/GlobalFluidEffectorSerializationUpgrader_0_1.js"],"names":[],"mappings":"AAGA;;;;;;GAMG;AACH;IAII;;;OAGG;IACH,0DAeC;CACJ;oCAlCmC,oDAAoD"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { BinaryClassUpgrader } from "../../../ecs/storage/binary/BinaryClassUpgrader.js";
|
|
2
|
+
import { GlobalFluidEffector } from "./GlobalFluidEffector.js";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Reads a version-0 {@link GlobalFluidEffector} stream as version 1: `force`, `wind` and `drag` as
|
|
6
|
+
* they were; the gust (`gust`, `gust_period`, three phases), which version 1 no longer has, dropped;
|
|
7
|
+
* then no turbulence, at the default length scale.
|
|
8
|
+
*
|
|
9
|
+
* Every value an f64, in and out.
|
|
10
|
+
*/
|
|
11
|
+
export class GlobalFluidEffectorSerializationUpgrader_0_1 extends BinaryClassUpgrader {
|
|
12
|
+
__startVersion = 0;
|
|
13
|
+
__targetVersion = 1;
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* @param {BinaryBuffer} source
|
|
17
|
+
* @param {BinaryBuffer} target
|
|
18
|
+
*/
|
|
19
|
+
upgrade(source, target) {
|
|
20
|
+
// force, wind, drag
|
|
21
|
+
for (let i = 0; i < 7; i++) {
|
|
22
|
+
target.writeFloat64(source.readFloat64());
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
// the gust, its period and its three phases
|
|
26
|
+
for (let i = 0; i < 5; i++) {
|
|
27
|
+
source.readFloat64();
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
const defaults = new GlobalFluidEffector();
|
|
31
|
+
|
|
32
|
+
target.writeFloat64(defaults.turbulence_intensity);
|
|
33
|
+
target.writeFloat64(defaults.turbulence_length);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
*
|
|
8
8
|
* Air the atmosphere alone acts on relaxes toward the far field at `D` while carrying the
|
|
9
9
|
* far field's own changes, so its deviation `e = v − v_far` obeys `de/dt = −D·e` whatever
|
|
10
|
-
* the
|
|
10
|
+
* the mean does and however `D` varied: the step is exact over any interval, one tick or
|
|
11
11
|
* many, and a face equal to the far field stays equal to it.
|
|
12
12
|
*
|
|
13
13
|
* The body force is applied exactly in the same linear step, through the forced response
|
|
@@ -9,7 +9,7 @@ import { FluidAtmosphere, FluidFieldAtmosphere } from "./FluidAtmosphere.js";
|
|
|
9
9
|
*
|
|
10
10
|
* Air the atmosphere alone acts on relaxes toward the far field at `D` while carrying the
|
|
11
11
|
* far field's own changes, so its deviation `e = v − v_far` obeys `de/dt = −D·e` whatever
|
|
12
|
-
* the
|
|
12
|
+
* the mean does and however `D` varied: the step is exact over any interval, one tick or
|
|
13
13
|
* many, and a face equal to the far field stays equal to it.
|
|
14
14
|
*
|
|
15
15
|
* The body force is applied exactly in the same linear step, through the forced response
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* of rows; one with no record of its own (a mesh, a heightmap, a scaled wrapper) is one row, its
|
|
9
9
|
* oriented box (`shape_record_pack_bounding_box`), until the SDF stage. A hull's planes are rows of a
|
|
10
10
|
* plane table, `vec4<f32>` each in core's `(n, offset)` layout, from `shape_parameters.x` for
|
|
11
|
-
* `shape_parameters.y` planes.
|
|
11
|
+
* `shape_parameters.y` planes. 96 bytes.
|
|
12
12
|
*
|
|
13
13
|
* Written field by field in two halves: {@link fluid_obstacle_write_gpu_shape} when the collider's
|
|
14
14
|
* shape changes, {@link fluid_obstacle_write_gpu_motion} every frame, so an obstacle whose inflation
|
|
@@ -25,6 +25,14 @@
|
|
|
25
25
|
* `fluid_obstacle_record_signed_distance` and `fluid_obstacle_record_wall_velocity`
|
|
26
26
|
* (`chunk_fluid_obstacle_record`) are those, with CPU twins.
|
|
27
27
|
*
|
|
28
|
+
* ## Solid or porous
|
|
29
|
+
*
|
|
30
|
+
* A record whose `drag` is 0 is **solid**: the air in it moves with the wall, and the faces of its
|
|
31
|
+
* cells are pinned. One whose `drag` is above 0 is **porous**: the air passes through it and is
|
|
32
|
+
* slowed toward the wall's velocity by `drag · |u − v| · (u − v)` a second, `u` the air's velocity
|
|
33
|
+
* and `v` the wall's (`FluidObstacle.drag`). The solid is the limit of the porous as the drag grows
|
|
34
|
+
* without bound. A porous record has no inflation: what it slows is what its surface holds.
|
|
35
|
+
*
|
|
28
36
|
* @type {WebGPUStruct}
|
|
29
37
|
*/
|
|
30
38
|
export const FLUID_OBSTACLE_RECORD_STRUCT: WebGPUStruct;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FLUID_OBSTACLE_RECORD_STRUCT.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/physics/fluid/obstacle/FLUID_OBSTACLE_RECORD_STRUCT.js"],"names":[],"mappings":"AAGA
|
|
1
|
+
{"version":3,"file":"FLUID_OBSTACLE_RECORD_STRUCT.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/physics/fluid/obstacle/FLUID_OBSTACLE_RECORD_STRUCT.js"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,2CAFU,YAAY,CAqBI;6BA1DG,wDAAwD"}
|
|
@@ -11,7 +11,7 @@ import { WebGPUStruct } from "../../../../shade/renderer/shader/type/WebGPUStruc
|
|
|
11
11
|
* of rows; one with no record of its own (a mesh, a heightmap, a scaled wrapper) is one row, its
|
|
12
12
|
* oriented box (`shape_record_pack_bounding_box`), until the SDF stage. A hull's planes are rows of a
|
|
13
13
|
* plane table, `vec4<f32>` each in core's `(n, offset)` layout, from `shape_parameters.x` for
|
|
14
|
-
* `shape_parameters.y` planes.
|
|
14
|
+
* `shape_parameters.y` planes. 96 bytes.
|
|
15
15
|
*
|
|
16
16
|
* Written field by field in two halves: {@link fluid_obstacle_write_gpu_shape} when the collider's
|
|
17
17
|
* shape changes, {@link fluid_obstacle_write_gpu_motion} every frame, so an obstacle whose inflation
|
|
@@ -28,6 +28,14 @@ import { WebGPUStruct } from "../../../../shade/renderer/shader/type/WebGPUStruc
|
|
|
28
28
|
* `fluid_obstacle_record_signed_distance` and `fluid_obstacle_record_wall_velocity`
|
|
29
29
|
* (`chunk_fluid_obstacle_record`) are those, with CPU twins.
|
|
30
30
|
*
|
|
31
|
+
* ## Solid or porous
|
|
32
|
+
*
|
|
33
|
+
* A record whose `drag` is 0 is **solid**: the air in it moves with the wall, and the faces of its
|
|
34
|
+
* cells are pinned. One whose `drag` is above 0 is **porous**: the air passes through it and is
|
|
35
|
+
* slowed toward the wall's velocity by `drag · |u − v| · (u − v)` a second, `u` the air's velocity
|
|
36
|
+
* and `v` the wall's (`FluidObstacle.drag`). The solid is the limit of the porous as the drag grows
|
|
37
|
+
* without bound. A porous record has no inflation: what it slows is what its surface holds.
|
|
38
|
+
*
|
|
31
39
|
* @type {WebGPUStruct}
|
|
32
40
|
*/
|
|
33
41
|
export const FLUID_OBSTACLE_RECORD_STRUCT = WebGPUStruct.from({
|
|
@@ -47,4 +55,6 @@ export const FLUID_OBSTACLE_RECORD_STRUCT = WebGPUStruct.from({
|
|
|
47
55
|
angular_velocity: vec3f,
|
|
48
56
|
/** The transforms row that poses the record; `NODE3D_SCENE_ID` (0) for the world. */
|
|
49
57
|
node: u32,
|
|
58
|
+
/** `FluidObstacle.drag`, 1/m: 0 for a solid, above 0 for a porous obstacle's drag. */
|
|
59
|
+
drag: f32,
|
|
50
60
|
}, "FluidObstacleRecord");
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
* @property {number} inflation metres
|
|
9
9
|
* @property {Float32Array} angular_velocity `[x, y, z]`, world rad/s
|
|
10
10
|
* @property {number} node the transforms row that poses the record
|
|
11
|
+
* @property {number} drag 1/m: 0 for a solid, above 0 for a porous obstacle's drag
|
|
11
12
|
*/
|
|
12
13
|
/**
|
|
13
14
|
* A staging record for one row of {@link FLUID_OBSTACLE_RECORD_STRUCT}: what
|
|
@@ -54,5 +55,9 @@ export type FluidObstacleRecord = {
|
|
|
54
55
|
* the transforms row that poses the record
|
|
55
56
|
*/
|
|
56
57
|
node: number;
|
|
58
|
+
/**
|
|
59
|
+
* 1/m: 0 for a solid, above 0 for a porous obstacle's drag
|
|
60
|
+
*/
|
|
61
|
+
drag: number;
|
|
57
62
|
};
|
|
58
63
|
//# sourceMappingURL=fluid_obstacle_record_create.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fluid_obstacle_record_create.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/physics/fluid/obstacle/fluid_obstacle_record_create.js"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"fluid_obstacle_record_create.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/physics/fluid/obstacle/fluid_obstacle_record_create.js"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH;;;;;;;;;;GAUG;AACH,gDAFa,mBAAmB,CAc/B;;;;;sBAlCa,YAAY;;;;sBACZ,YAAY;;;;gBACZ,MAAM;;;;mBACN,YAAY;;;;qBACZ,YAAY;;;;eACZ,MAAM;;;;sBACN,YAAY;;;;UACZ,MAAM;;;;UACN,MAAM"}
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
* @property {number} inflation metres
|
|
9
9
|
* @property {Float32Array} angular_velocity `[x, y, z]`, world rad/s
|
|
10
10
|
* @property {number} node the transforms row that poses the record
|
|
11
|
+
* @property {number} drag 1/m: 0 for a solid, above 0 for a porous obstacle's drag
|
|
11
12
|
*/
|
|
12
13
|
|
|
13
14
|
/**
|
|
@@ -31,5 +32,6 @@ export function fluid_obstacle_record_create() {
|
|
|
31
32
|
inflation: 0,
|
|
32
33
|
angular_velocity: new Float32Array(3),
|
|
33
34
|
node: 0,
|
|
35
|
+
drag: 0,
|
|
34
36
|
};
|
|
35
37
|
}
|
|
@@ -39,8 +39,8 @@ export function fluid_obstacle_record_plane_count(record: FluidObstacleRecord):
|
|
|
39
39
|
*/
|
|
40
40
|
export function fluid_obstacle_write_gpu_shape(record: FluidObstacleRecord, planes: Float32Array, plane_index: number, shape: AbstractShape3D, element: number): number;
|
|
41
41
|
/**
|
|
42
|
-
* Write the motion half of a record: the obstacle's inflation and its body's linear and
|
|
43
|
-
* velocity, comparing each as it is assigned. Every record of a collider's run takes the same.
|
|
42
|
+
* Write the motion half of a record: the obstacle's inflation and drag and its body's linear and
|
|
43
|
+
* angular velocity, comparing each as it is assigned. Every record of a collider's run takes the same.
|
|
44
44
|
* Allocates nothing.
|
|
45
45
|
*
|
|
46
46
|
* @param {FluidObstacleRecord} record
|
|
@@ -64,7 +64,8 @@ export function fluid_obstacle_write_gpu_motion(record: FluidObstacleRecord, obs
|
|
|
64
64
|
* - {@link fluid_obstacle_write_gpu_shape}: the shape record, its pose within the collider and a
|
|
65
65
|
* hull's planes. A collider's shape is shared and never mutated, so it changes only when the
|
|
66
66
|
* collider is handed another shape object, which is when a caller writes this half, and on link;
|
|
67
|
-
* - {@link fluid_obstacle_write_gpu_motion}: the inflation and the body's velocities,
|
|
67
|
+
* - {@link fluid_obstacle_write_gpu_motion}: the inflation, the drag and the body's velocities,
|
|
68
|
+
* every frame.
|
|
68
69
|
*
|
|
69
70
|
* So an obstacle whose inflation and motion have not changed (a static wall, a sleeping body) writes
|
|
70
71
|
* nothing, and its pose is its node's. A caller links a collider as
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fluid_obstacle_write_gpu_record.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/physics/fluid/obstacle/fluid_obstacle_write_gpu_record.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fluid_obstacle_write_gpu_record.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/physics/fluid/obstacle/fluid_obstacle_write_gpu_record.js"],"names":[],"mappings":"AAiEA;;;;;;GAMG;AACH,qEAFa,MAAM,CAUlB;AAED;;;;;GAKG;AACH,oEAFa,MAAM,CAclB;AAED;;;;;;GAMG;AACH,gFAFa,MAAM,CAOlB;AAED;;;;;;;;;;;;;;;GAeG;AACH,oFAPW,YAAY,eACZ,MAAM,mCAEN,MAAM,GACJ,MAAM,CA4FlB;AAED;;;;;;;;;GASG;AACH,wHAFa,OAAO,CAgDnB;AAxQD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH;;;GAGG;AACH,4CAFU,MAAM,CAE+B;AAE/C;;;GAGG;AACH,4CAFU,MAAM,CAE+B"}
|
|
@@ -28,7 +28,8 @@ import { shape_record_pack_bounding_box } from "../../../../core/geom/3d/shape/r
|
|
|
28
28
|
* - {@link fluid_obstacle_write_gpu_shape}: the shape record, its pose within the collider and a
|
|
29
29
|
* hull's planes. A collider's shape is shared and never mutated, so it changes only when the
|
|
30
30
|
* collider is handed another shape object, which is when a caller writes this half, and on link;
|
|
31
|
-
* - {@link fluid_obstacle_write_gpu_motion}: the inflation and the body's velocities,
|
|
31
|
+
* - {@link fluid_obstacle_write_gpu_motion}: the inflation, the drag and the body's velocities,
|
|
32
|
+
* every frame.
|
|
32
33
|
*
|
|
33
34
|
* So an obstacle whose inflation and motion have not changed (a static wall, a sleeping body) writes
|
|
34
35
|
* nothing, and its pose is its node's. A caller links a collider as
|
|
@@ -221,8 +222,8 @@ export function fluid_obstacle_write_gpu_shape(record, planes, plane_index, shap
|
|
|
221
222
|
}
|
|
222
223
|
|
|
223
224
|
/**
|
|
224
|
-
* Write the motion half of a record: the obstacle's inflation and its body's linear and
|
|
225
|
-
* velocity, comparing each as it is assigned. Every record of a collider's run takes the same.
|
|
225
|
+
* Write the motion half of a record: the obstacle's inflation and drag and its body's linear and
|
|
226
|
+
* angular velocity, comparing each as it is assigned. Every record of a collider's run takes the same.
|
|
226
227
|
* Allocates nothing.
|
|
227
228
|
*
|
|
228
229
|
* @param {FluidObstacleRecord} record
|
|
@@ -240,6 +241,13 @@ export function fluid_obstacle_write_gpu_motion(record, obstacle, body) {
|
|
|
240
241
|
changed = true;
|
|
241
242
|
}
|
|
242
243
|
|
|
244
|
+
const drag = Math.fround(obstacle.drag);
|
|
245
|
+
|
|
246
|
+
if (record.drag !== drag) {
|
|
247
|
+
record.drag = drag;
|
|
248
|
+
changed = true;
|
|
249
|
+
}
|
|
250
|
+
|
|
243
251
|
const linear = body.linearVelocity;
|
|
244
252
|
const linear_velocity = record.linear_velocity;
|
|
245
253
|
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Texels of the far field's turbulence tile on x, y and z: 128 × 32 × 128, y up.
|
|
3
|
+
*
|
|
4
|
+
* The tile repeats, so the far field's turbulence repeats every `16·L` across the wind and `4·L`
|
|
5
|
+
* up, `L` the length scale: four of the spectrum's most energetic wavelength (`≈ 4.05·L`) across,
|
|
6
|
+
* one up. 4 MiB as `rgba16float`.
|
|
7
|
+
*
|
|
8
|
+
* @type {ReadonlyArray<number>}
|
|
9
|
+
*/
|
|
10
|
+
export const FLUID_TURBULENCE_TILE_RESOLUTION: ReadonlyArray<number>;
|
|
11
|
+
/**
|
|
12
|
+
* Texels of the turbulence tile per length scale `L`: the tile's spacing is `L/8`.
|
|
13
|
+
*
|
|
14
|
+
* The von Kármán spectrum is a function of `k·L` alone, so a tile laid out in units of `L` is the same
|
|
15
|
+
* tile for every `L`: the length scale is only how far apart its texels are in the world, and changing
|
|
16
|
+
* it regenerates nothing. Eight a length keeps the spectrum's peak (`≈ 4·L`) at 32 texels and resolves
|
|
17
|
+
* wavelengths down to `L` at 8 texels each, the fewest a trilinear read and the solver's advection
|
|
18
|
+
* carry without visible loss; shorter ones, down to the tile's Nyquist `L/4`, are in it too.
|
|
19
|
+
*
|
|
20
|
+
* @type {number}
|
|
21
|
+
*/
|
|
22
|
+
export const FLUID_TURBULENCE_TEXELS_PER_LENGTH: number;
|
|
23
|
+
/**
|
|
24
|
+
* The seed the engine's turbulence tile is generated from: one tile, the same on every machine.
|
|
25
|
+
* @type {number}
|
|
26
|
+
*/
|
|
27
|
+
export const FLUID_TURBULENCE_TILE_SEED: number;
|
|
28
|
+
//# sourceMappingURL=FLUID_TURBULENCE_TILE.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FLUID_TURBULENCE_TILE.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/physics/fluid/turbulence/FLUID_TURBULENCE_TILE.js"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,+CAFU,cAAc,MAAM,CAAC,CAE+C;AAE9E;;;;;;;;;;GAUG;AACH,iDAFU,MAAM,CAEoC;AAEpD;;;GAGG;AACH,yCAFU,MAAM,CAEmC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Texels of the far field's turbulence tile on x, y and z: 128 × 32 × 128, y up.
|
|
3
|
+
*
|
|
4
|
+
* The tile repeats, so the far field's turbulence repeats every `16·L` across the wind and `4·L`
|
|
5
|
+
* up, `L` the length scale: four of the spectrum's most energetic wavelength (`≈ 4.05·L`) across,
|
|
6
|
+
* one up. 4 MiB as `rgba16float`.
|
|
7
|
+
*
|
|
8
|
+
* @type {ReadonlyArray<number>}
|
|
9
|
+
*/
|
|
10
|
+
export const FLUID_TURBULENCE_TILE_RESOLUTION = Object.freeze([128, 32, 128]);
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Texels of the turbulence tile per length scale `L`: the tile's spacing is `L/8`.
|
|
14
|
+
*
|
|
15
|
+
* The von Kármán spectrum is a function of `k·L` alone, so a tile laid out in units of `L` is the same
|
|
16
|
+
* tile for every `L`: the length scale is only how far apart its texels are in the world, and changing
|
|
17
|
+
* it regenerates nothing. Eight a length keeps the spectrum's peak (`≈ 4·L`) at 32 texels and resolves
|
|
18
|
+
* wavelengths down to `L` at 8 texels each, the fewest a trilinear read and the solver's advection
|
|
19
|
+
* carry without visible loss; shorter ones, down to the tile's Nyquist `L/4`, are in it too.
|
|
20
|
+
*
|
|
21
|
+
* @type {number}
|
|
22
|
+
*/
|
|
23
|
+
export const FLUID_TURBULENCE_TEXELS_PER_LENGTH = 8;
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* The seed the engine's turbulence tile is generated from: one tile, the same on every machine.
|
|
27
|
+
* @type {number}
|
|
28
|
+
*/
|
|
29
|
+
export const FLUID_TURBULENCE_TILE_SEED = 0x6b6172;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The far field a {@link FluidAtmosphere} record describes, at a WORLD point: its mean `u`, plus
|
|
3
|
+
* `σ·T((x − o) ⊙ S⁻¹)` when it has turbulence, `T` the engine's tile read trilinearly
|
|
4
|
+
* ({@link fluid_turbulence_tile_sample}), as every GPU reader of the far field reads it.
|
|
5
|
+
*
|
|
6
|
+
* With `σ = 0` it is `u`, and the tile is never made. Allocates nothing once the tile exists.
|
|
7
|
+
*
|
|
8
|
+
* @param {Float64Array|Float32Array|number[]} out receives `[x, y, z]`, WORLD units per second
|
|
9
|
+
* @param {Float64Array|number[]} atmosphere
|
|
10
|
+
* @param {number} offset where the record starts
|
|
11
|
+
* @param {number} x
|
|
12
|
+
* @param {number} y
|
|
13
|
+
* @param {number} z
|
|
14
|
+
*/
|
|
15
|
+
export function fluid_atmosphere_velocity_at(out: Float64Array | Float32Array | number[], atmosphere: Float64Array | number[], offset: number, x: number, y: number, z: number): void;
|
|
16
|
+
//# sourceMappingURL=fluid_atmosphere_velocity_at.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fluid_atmosphere_velocity_at.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/physics/fluid/turbulence/fluid_atmosphere_velocity_at.js"],"names":[],"mappings":"AAQA;;;;;;;;;;;;;GAaG;AACH,kDAPW,YAAY,GAAC,YAAY,GAAC,MAAM,EAAE,cAClC,YAAY,GAAC,MAAM,EAAE,UACrB,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,QA4BhB"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { FluidAtmosphere } from "../FluidAtmosphere.js";
|
|
2
|
+
import { fluid_turbulence_inverse_tile_size } from "./fluid_turbulence_inverse_tile_size.js";
|
|
3
|
+
import { fluid_turbulence_tile_data } from "./fluid_turbulence_tile_data.js";
|
|
4
|
+
import { fluid_turbulence_tile_sample } from "./fluid_turbulence_tile_sample.js";
|
|
5
|
+
|
|
6
|
+
const inverse_size = new Float64Array(3);
|
|
7
|
+
const coordinate = new Float64Array(3);
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* The far field a {@link FluidAtmosphere} record describes, at a WORLD point: its mean `u`, plus
|
|
11
|
+
* `σ·T((x − o) ⊙ S⁻¹)` when it has turbulence, `T` the engine's tile read trilinearly
|
|
12
|
+
* ({@link fluid_turbulence_tile_sample}), as every GPU reader of the far field reads it.
|
|
13
|
+
*
|
|
14
|
+
* With `σ = 0` it is `u`, and the tile is never made. Allocates nothing once the tile exists.
|
|
15
|
+
*
|
|
16
|
+
* @param {Float64Array|Float32Array|number[]} out receives `[x, y, z]`, WORLD units per second
|
|
17
|
+
* @param {Float64Array|number[]} atmosphere
|
|
18
|
+
* @param {number} offset where the record starts
|
|
19
|
+
* @param {number} x
|
|
20
|
+
* @param {number} y
|
|
21
|
+
* @param {number} z
|
|
22
|
+
*/
|
|
23
|
+
export function fluid_atmosphere_velocity_at(out, atmosphere, offset, x, y, z) {
|
|
24
|
+
const sigma = atmosphere[offset + FluidAtmosphere.TURBULENCE_SIGMA];
|
|
25
|
+
|
|
26
|
+
const ux = atmosphere[offset + FluidAtmosphere.VELOCITY_X];
|
|
27
|
+
const uy = atmosphere[offset + FluidAtmosphere.VELOCITY_Y];
|
|
28
|
+
const uz = atmosphere[offset + FluidAtmosphere.VELOCITY_Z];
|
|
29
|
+
|
|
30
|
+
if (sigma === 0) {
|
|
31
|
+
out[0] = ux;
|
|
32
|
+
out[1] = uy;
|
|
33
|
+
out[2] = uz;
|
|
34
|
+
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
fluid_turbulence_inverse_tile_size(inverse_size, atmosphere[offset + FluidAtmosphere.TURBULENCE_LENGTH]);
|
|
39
|
+
|
|
40
|
+
coordinate[0] = (x - atmosphere[offset + FluidAtmosphere.TURBULENCE_OFFSET_X]) * inverse_size[0];
|
|
41
|
+
coordinate[1] = (y - atmosphere[offset + FluidAtmosphere.TURBULENCE_OFFSET_Y]) * inverse_size[1];
|
|
42
|
+
coordinate[2] = (z - atmosphere[offset + FluidAtmosphere.TURBULENCE_OFFSET_Z]) * inverse_size[2];
|
|
43
|
+
|
|
44
|
+
fluid_turbulence_tile_sample(out, fluid_turbulence_tile_data(), coordinate);
|
|
45
|
+
|
|
46
|
+
out[0] = ux + sigma * out[0];
|
|
47
|
+
out[1] = uy + sigma * out[1];
|
|
48
|
+
out[2] = uz + sigma * out[2];
|
|
49
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One over the turbulence tile's size in the world on each axis, for a length scale `L`: a world
|
|
3
|
+
* distance times it is a distance in tiles. The tile is `n·L / FLUID_TURBULENCE_TEXELS_PER_LENGTH`
|
|
4
|
+
* on an axis of `n` texels.
|
|
5
|
+
*
|
|
6
|
+
* @param {Float64Array|Float32Array|number[]} out receives x, y, z
|
|
7
|
+
* @param {number} length `L`, WORLD units, > 0
|
|
8
|
+
* @returns {Float64Array|Float32Array|number[]} `out`
|
|
9
|
+
*/
|
|
10
|
+
export function fluid_turbulence_inverse_tile_size(out: Float64Array | Float32Array | number[], length: number): Float64Array | Float32Array | number[];
|
|
11
|
+
//# sourceMappingURL=fluid_turbulence_inverse_tile_size.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fluid_turbulence_inverse_tile_size.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/physics/fluid/turbulence/fluid_turbulence_inverse_tile_size.js"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,wDAJW,YAAY,GAAC,YAAY,GAAC,MAAM,EAAE,UAClC,MAAM,GACJ,YAAY,GAAC,YAAY,GAAC,MAAM,EAAE,CAQ9C"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { FLUID_TURBULENCE_TEXELS_PER_LENGTH, FLUID_TURBULENCE_TILE_RESOLUTION } from "./FLUID_TURBULENCE_TILE.js";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* One over the turbulence tile's size in the world on each axis, for a length scale `L`: a world
|
|
5
|
+
* distance times it is a distance in tiles. The tile is `n·L / FLUID_TURBULENCE_TEXELS_PER_LENGTH`
|
|
6
|
+
* on an axis of `n` texels.
|
|
7
|
+
*
|
|
8
|
+
* @param {Float64Array|Float32Array|number[]} out receives x, y, z
|
|
9
|
+
* @param {number} length `L`, WORLD units, > 0
|
|
10
|
+
* @returns {Float64Array|Float32Array|number[]} `out`
|
|
11
|
+
*/
|
|
12
|
+
export function fluid_turbulence_inverse_tile_size(out, length) {
|
|
13
|
+
for (let axis = 0; axis < 3; axis++) {
|
|
14
|
+
out[axis] = FLUID_TURBULENCE_TEXELS_PER_LENGTH / (FLUID_TURBULENCE_TILE_RESOLUTION[axis] * length);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
return out;
|
|
18
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The engine's turbulence tile and its levels ({@link fluid_turbulence_tile_generate_levels} at
|
|
3
|
+
* {@link FLUID_TURBULENCE_TILE_RESOLUTION}, {@link FLUID_TURBULENCE_TEXELS_PER_LENGTH} and
|
|
4
|
+
* {@link FLUID_TURBULENCE_TILE_SEED}, a full mip chain), every value rounded to `float16`, as the device
|
|
5
|
+
* holds it. Three values a texel, x fastest. Generated on the first call and kept: about 0.3 s and
|
|
6
|
+
* 7 MiB, once a process, and only for a scene that asks for turbulence. Never write to them.
|
|
7
|
+
*
|
|
8
|
+
* @returns {Float32Array[]}
|
|
9
|
+
*/
|
|
10
|
+
export function fluid_turbulence_tile_levels(): Float32Array[];
|
|
11
|
+
/**
|
|
12
|
+
* The engine's turbulence tile at full resolution: level 0 of {@link fluid_turbulence_tile_levels},
|
|
13
|
+
* what a read of the far field at a point takes. Three values a texel, x fastest.
|
|
14
|
+
*
|
|
15
|
+
* @returns {Float32Array}
|
|
16
|
+
*/
|
|
17
|
+
export function fluid_turbulence_tile_data(): Float32Array;
|
|
18
|
+
/**
|
|
19
|
+
* The tile's levels as an `rgba16float` texture's mips: four halves a texel, alpha 0, x fastest, level
|
|
20
|
+
* 0 first. Allocates the result, about 4.6 MiB, for one upload.
|
|
21
|
+
*
|
|
22
|
+
* @returns {Uint16Array[]}
|
|
23
|
+
*/
|
|
24
|
+
export function fluid_turbulence_tile_data_rgba16(): Uint16Array[];
|
|
25
|
+
//# sourceMappingURL=fluid_turbulence_tile_data.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fluid_turbulence_tile_data.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/physics/fluid/turbulence/fluid_turbulence_tile_data.js"],"names":[],"mappings":"AAUA;;;;;;;;GAQG;AACH,gDAFa,YAAY,EAAE,CAgB1B;AAED;;;;;GAKG;AACH,8CAFa,YAAY,CAIxB;AAED;;;;;GAKG;AACH,qDAFa,WAAW,EAAE,CAezB"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { half_to_float_uint16 } from "../../../../core/binary/half_to_float_uint16.js";
|
|
2
|
+
import { to_half_float_uint16 } from "../../../../core/binary/to_half_float_uint16.js";
|
|
3
|
+
import { FLUID_TURBULENCE_TEXELS_PER_LENGTH, FLUID_TURBULENCE_TILE_RESOLUTION, FLUID_TURBULENCE_TILE_SEED } from "./FLUID_TURBULENCE_TILE.js";
|
|
4
|
+
import { fluid_turbulence_tile_generate_levels } from "./fluid_turbulence_tile_generate.js";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* @type {Float32Array[]|null}
|
|
8
|
+
*/
|
|
9
|
+
let levels = null;
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* The engine's turbulence tile and its levels ({@link fluid_turbulence_tile_generate_levels} at
|
|
13
|
+
* {@link FLUID_TURBULENCE_TILE_RESOLUTION}, {@link FLUID_TURBULENCE_TEXELS_PER_LENGTH} and
|
|
14
|
+
* {@link FLUID_TURBULENCE_TILE_SEED}, a full mip chain), every value rounded to `float16`, as the device
|
|
15
|
+
* holds it. Three values a texel, x fastest. Generated on the first call and kept: about 0.3 s and
|
|
16
|
+
* 7 MiB, once a process, and only for a scene that asks for turbulence. Never write to them.
|
|
17
|
+
*
|
|
18
|
+
* @returns {Float32Array[]}
|
|
19
|
+
*/
|
|
20
|
+
export function fluid_turbulence_tile_levels() {
|
|
21
|
+
if (levels === null) {
|
|
22
|
+
const generated = fluid_turbulence_tile_generate_levels(FLUID_TURBULENCE_TILE_RESOLUTION, FLUID_TURBULENCE_TEXELS_PER_LENGTH, FLUID_TURBULENCE_TILE_SEED);
|
|
23
|
+
|
|
24
|
+
for (const values of generated) {
|
|
25
|
+
for (let i = 0; i < values.length; i++) {
|
|
26
|
+
values[i] = half_to_float_uint16(to_half_float_uint16(values[i]));
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
levels = generated;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
return levels;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* The engine's turbulence tile at full resolution: level 0 of {@link fluid_turbulence_tile_levels},
|
|
38
|
+
* what a read of the far field at a point takes. Three values a texel, x fastest.
|
|
39
|
+
*
|
|
40
|
+
* @returns {Float32Array}
|
|
41
|
+
*/
|
|
42
|
+
export function fluid_turbulence_tile_data() {
|
|
43
|
+
return fluid_turbulence_tile_levels()[0];
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* The tile's levels as an `rgba16float` texture's mips: four halves a texel, alpha 0, x fastest, level
|
|
48
|
+
* 0 first. Allocates the result, about 4.6 MiB, for one upload.
|
|
49
|
+
*
|
|
50
|
+
* @returns {Uint16Array[]}
|
|
51
|
+
*/
|
|
52
|
+
export function fluid_turbulence_tile_data_rgba16() {
|
|
53
|
+
return fluid_turbulence_tile_levels().map(values => {
|
|
54
|
+
const count = values.length / 3;
|
|
55
|
+
const out = new Uint16Array(4 * count);
|
|
56
|
+
|
|
57
|
+
for (let i = 0; i < count; i++) {
|
|
58
|
+
out[4 * i] = to_half_float_uint16(values[3 * i]);
|
|
59
|
+
out[4 * i + 1] = to_half_float_uint16(values[3 * i + 1]);
|
|
60
|
+
out[4 * i + 2] = to_half_float_uint16(values[3 * i + 2]);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
return out;
|
|
64
|
+
});
|
|
65
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A repeating tile of isotropic, divergence-free turbulence with the von Kármán spectrum, unit rms:
|
|
3
|
+
* the mean over the tile of each component's square, averaged over the three components, is 1.
|
|
4
|
+
* Level 0 of {@link fluid_turbulence_tile_generate_levels}.
|
|
5
|
+
*
|
|
6
|
+
* @param {ArrayLike<number>} resolution texels on x, y and z, each a power of two, 2 or more
|
|
7
|
+
* @param {number} texels_per_length texels per length scale `L`, > 0
|
|
8
|
+
* @param {number} seed
|
|
9
|
+
* @returns {Float32Array} three values a texel, `(u, v, w)`, x fastest, then y, then z
|
|
10
|
+
*/
|
|
11
|
+
export function fluid_turbulence_tile_generate(resolution: ArrayLike<number>, texels_per_length: number, seed: number): Float32Array;
|
|
12
|
+
/**
|
|
13
|
+
* Texels of level `level` of a tile on each axis: the tile's halved `level` times, and at least 1.
|
|
14
|
+
*
|
|
15
|
+
* @param {number[]} out
|
|
16
|
+
* @param {ArrayLike<number>} resolution level 0's
|
|
17
|
+
* @param {number} level
|
|
18
|
+
* @returns {number[]} `out`
|
|
19
|
+
*/
|
|
20
|
+
export function fluid_turbulence_tile_level_size(out: number[], resolution: ArrayLike<number>, level: number): number[];
|
|
21
|
+
/**
|
|
22
|
+
* A repeating tile of isotropic, divergence-free turbulence with the von Kármán spectrum, and its
|
|
23
|
+
* levels: level `ℓ` is the same field band-limited to what texels `2^ℓ` times as large can hold.
|
|
24
|
+
*
|
|
25
|
+
* The tile is laid out in units of the length scale `L`: `texels_per_length` texels a length. In
|
|
26
|
+
* those units the von Kármán energy spectrum is
|
|
27
|
+
*
|
|
28
|
+
* E(k) ∝ (kL)⁴ / (1 + (kL)²)^(17/6)
|
|
29
|
+
*
|
|
30
|
+
* which rises as k⁴ from the largest scales, peaks at a wavelength of about `4.05·L`, and falls as
|
|
31
|
+
* the inertial range's k^(−5/3) below it.
|
|
32
|
+
*
|
|
33
|
+
* Spectral synthesis, Shinozuka's: each wavenumber of the tile's lattice draws a complex Gaussian
|
|
34
|
+
* vector, projects it onto the plane normal to the wavenumber, which makes the field divergence-free,
|
|
35
|
+
* and scales it by `sqrt(E(k) / (4π k²))`, an isotropic field's amplitude at a lattice point; an
|
|
36
|
+
* inverse FFT then gives the field, of which the real part is kept. The mean (`k = 0`) and the
|
|
37
|
+
* Nyquist planes are left at zero.
|
|
38
|
+
*
|
|
39
|
+
* A level keeps the wavenumbers below its own Nyquist and no others, and is the inverse FFT of those at
|
|
40
|
+
* its own texel centres: an ideal low-pass of level 0, evaluated where a sampler reads that level, so
|
|
41
|
+
* a read of level `ℓ` is level 0 with every wavelength shorter than two of its texels taken out, and
|
|
42
|
+
* nothing aliased in. Every level is scaled as level 0 is to unit rms, so a level holds the energy of
|
|
43
|
+
* its band and no more.
|
|
44
|
+
*
|
|
45
|
+
* Deterministic in `seed`, and the same level 0 whatever the level count. Allocates the levels and
|
|
46
|
+
* about 13 MB of transforms, once: this is an asset's generation, not a per-frame path.
|
|
47
|
+
*
|
|
48
|
+
* @param {ArrayLike<number>} resolution texels on x, y and z, each a power of two, 2 or more
|
|
49
|
+
* @param {number} texels_per_length texels per length scale `L`, > 0
|
|
50
|
+
* @param {number} seed
|
|
51
|
+
* @param {number} [level_count] levels to make, 1 or more; by default down to one texel on the
|
|
52
|
+
* longest axis, a full mip chain
|
|
53
|
+
* @returns {Float32Array[]} per level, three values a texel, `(u, v, w)`, x fastest, then y, then z
|
|
54
|
+
*/
|
|
55
|
+
export function fluid_turbulence_tile_generate_levels(resolution: ArrayLike<number>, texels_per_length: number, seed: number, level_count?: number): Float32Array[];
|
|
56
|
+
//# sourceMappingURL=fluid_turbulence_tile_generate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fluid_turbulence_tile_generate.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/physics/fluid/turbulence/fluid_turbulence_tile_generate.js"],"names":[],"mappings":"AAKA;;;;;;;;;GASG;AACH,2DALW,UAAU,MAAM,CAAC,qBACjB,MAAM,QACN,MAAM,GACJ,YAAY,CAIxB;AAED;;;;;;;GAOG;AACH,sDALW,MAAM,EAAE,cACR,UAAU,MAAM,CAAC,SACjB,MAAM,GACJ,MAAM,EAAE,CAQpB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,kEAPW,UAAU,MAAM,CAAC,qBACjB,MAAM,QACN,MAAM,gBACN,MAAM,GAEJ,YAAY,EAAE,CA2L1B"}
|