@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
|
@@ -27,6 +27,7 @@ import {
|
|
|
27
27
|
} from "../physics/fluid/ecs/GPUFluidComponent.js";
|
|
28
28
|
import { fluid_effector_record_create } from "../physics/fluid/effector/record/fluid_effector_record_create.js";
|
|
29
29
|
import { FLUID_ATMOSPHERE_WORDS, FluidAtmosphere } from "../physics/fluid/FluidAtmosphere.js";
|
|
30
|
+
import { fluid_atmosphere_velocity_at } from "../physics/fluid/turbulence/fluid_atmosphere_velocity_at.js";
|
|
30
31
|
import { fluid_obstacle_record_create } from "../physics/fluid/obstacle/fluid_obstacle_record_create.js";
|
|
31
32
|
import {
|
|
32
33
|
FLUID_OBSTACLE_PLANES_CHANGED,
|
|
@@ -154,6 +155,20 @@ class ObstacleEntry {
|
|
|
154
155
|
held = false;
|
|
155
156
|
}
|
|
156
157
|
|
|
158
|
+
/**
|
|
159
|
+
* Point `i` of `n` along an axis of a request's box: `mix(min, max, i / (n − 1))`, or `min` for one
|
|
160
|
+
* point, as the device's gather places it.
|
|
161
|
+
*
|
|
162
|
+
* @param {number} min
|
|
163
|
+
* @param {number} max
|
|
164
|
+
* @param {number} i
|
|
165
|
+
* @param {number} n
|
|
166
|
+
* @returns {number}
|
|
167
|
+
*/
|
|
168
|
+
function request_axis_point(min, max, i, n) {
|
|
169
|
+
return n > 1 ? min + (max - min) * (i / (n - 1)) : min;
|
|
170
|
+
}
|
|
171
|
+
|
|
157
172
|
/**
|
|
158
173
|
* # The GPU wind fluid of a scene
|
|
159
174
|
*
|
|
@@ -172,11 +187,12 @@ class ObstacleEntry {
|
|
|
172
187
|
* new Entity().add(new Transform64()).add(new GPUFluidComponent()).build(dataset);
|
|
173
188
|
* ```
|
|
174
189
|
*
|
|
175
|
-
* ## The CPU half: {@link far_field}
|
|
190
|
+
* ## The CPU half: {@link far_field} and {@link far_field_at}
|
|
176
191
|
*
|
|
177
192
|
* The far field in m/s, synchronously, from {@link FluidEffectorsSystem}'s fold: deterministic, the
|
|
178
193
|
* same headless as on a device, and still air with no `FluidEffectorsSystem`. Gameplay reads this,
|
|
179
|
-
* never the fluid (§6).
|
|
194
|
+
* never the fluid (§6). `far_field` is its mean; `far_field_at` is the far field at a point, its
|
|
195
|
+
* turbulence included, as every GPU reader of the wind field takes it beyond the cascades.
|
|
180
196
|
*
|
|
181
197
|
* ## The CPU half: {@link request}, a lattice of the wind, asynchronously
|
|
182
198
|
*
|
|
@@ -198,8 +214,8 @@ class ObstacleEntry {
|
|
|
198
214
|
* most 4 batches (a frame's requests each) in flight; a frame's requests past that are dropped,
|
|
199
215
|
* with the status. Measured latency: see the proposal (§12). Rows are freed after delivery or a
|
|
200
216
|
* drop. A device restart drops what was in flight; requests not yet recorded go to the new device.
|
|
201
|
-
* - **Headless** (no scene context at the update): answered from {@link
|
|
202
|
-
* {@link update}, every point the far field.
|
|
217
|
+
* - **Headless** (no scene context at the update): answered from {@link far_field_at} at the next
|
|
218
|
+
* {@link update}, every point the far field there.
|
|
203
219
|
*
|
|
204
220
|
* At steady state nothing is allocated per request.
|
|
205
221
|
*
|
|
@@ -370,6 +386,15 @@ export class GPUFluidSystem extends System {
|
|
|
370
386
|
#bounds = new Float64Array(6);
|
|
371
387
|
#far = new Float64Array(3);
|
|
372
388
|
|
|
389
|
+
/** The turbulence `σ` last written into the wind field with no domain. */
|
|
390
|
+
#wind_sigma = 0;
|
|
391
|
+
|
|
392
|
+
/** Scratch for an atmosphere's turbulence offset. */
|
|
393
|
+
#turbulence_offset = new Float64Array(3);
|
|
394
|
+
|
|
395
|
+
/** The atmosphere a tick steps against, its turbulence carried back to the tick. */
|
|
396
|
+
#tick_atmosphere = new Float64Array(FLUID_ATMOSPHERE_WORDS);
|
|
397
|
+
|
|
373
398
|
/*
|
|
374
399
|
The read API: per handle, the request's box and counts, its target, and its status.
|
|
375
400
|
*/
|
|
@@ -478,6 +503,21 @@ export class GPUFluidSystem extends System {
|
|
|
478
503
|
out[2] = atmosphere[FluidAtmosphere.VELOCITY_Z];
|
|
479
504
|
}
|
|
480
505
|
|
|
506
|
+
/**
|
|
507
|
+
* The far field now at a world point, m/s: its mean plus its turbulence there, `u + σ·T((x − o) ⊙ S⁻¹)`,
|
|
508
|
+
* as every GPU reader of the wind field takes it where no cascade holds the point
|
|
509
|
+
* (`fluid_atmosphere_velocity_at`). Synchronous and deterministic, with or without a device; the mean
|
|
510
|
+
* alone ({@link far_field}) with no turbulence. Allocates nothing once the turbulence tile exists.
|
|
511
|
+
*
|
|
512
|
+
* @param {Float64Array|Float32Array|number[]} out receives `[x, y, z]`
|
|
513
|
+
* @param {number} x world metres
|
|
514
|
+
* @param {number} y
|
|
515
|
+
* @param {number} z
|
|
516
|
+
*/
|
|
517
|
+
far_field_at(out, x, y, z) {
|
|
518
|
+
fluid_atmosphere_velocity_at(out, this.#read_atmosphere(), 0, x, y, z);
|
|
519
|
+
}
|
|
520
|
+
|
|
481
521
|
/**
|
|
482
522
|
* What became of each request, by handle: a `GPUReadbackStatus`. `Pending` from {@link request}
|
|
483
523
|
* until the apply point ({@link update}) that answers it, `Delivered` (the lattice is in its
|
|
@@ -646,26 +686,38 @@ export class GPUFluidSystem extends System {
|
|
|
646
686
|
return;
|
|
647
687
|
}
|
|
648
688
|
|
|
649
|
-
// headless: every point the far field
|
|
689
|
+
// headless: every point the far field there, at the points the device would gather
|
|
650
690
|
const far = this.#far;
|
|
651
|
-
|
|
652
|
-
this.far_field(far);
|
|
691
|
+
const atmosphere = this.#read_atmosphere();
|
|
653
692
|
|
|
654
693
|
const asked = this.#asked;
|
|
655
694
|
const counts = this.#request_counts;
|
|
695
|
+
const box = this.#request_box;
|
|
656
696
|
|
|
657
697
|
for (let i = 0; i < this.#asked_count; i++) {
|
|
658
698
|
const h = asked[i];
|
|
659
699
|
const target = this.#request_targets[h];
|
|
660
|
-
const
|
|
700
|
+
const nx = counts[3 * h], ny = counts[3 * h + 1], nz = counts[3 * h + 2];
|
|
661
701
|
|
|
662
702
|
let at = this.#request_offsets[h];
|
|
663
703
|
|
|
664
|
-
for (let
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
704
|
+
for (let k = 0; k < nz; k++) {
|
|
705
|
+
const z = request_axis_point(box[6 * h + 2], box[6 * h + 5], k, nz);
|
|
706
|
+
|
|
707
|
+
for (let j = 0; j < ny; j++) {
|
|
708
|
+
const y = request_axis_point(box[6 * h + 1], box[6 * h + 4], j, ny);
|
|
709
|
+
|
|
710
|
+
for (let p = 0; p < nx; p++, at += FLUID_QUERY_SAMPLE_FLOATS) {
|
|
711
|
+
const x = request_axis_point(box[6 * h], box[6 * h + 3], p, nx);
|
|
712
|
+
|
|
713
|
+
fluid_atmosphere_velocity_at(far, atmosphere, 0, x, y, z);
|
|
714
|
+
|
|
715
|
+
target[at] = far[0];
|
|
716
|
+
target[at + 1] = far[1];
|
|
717
|
+
target[at + 2] = far[2];
|
|
718
|
+
target[at + 3] = 0;
|
|
719
|
+
}
|
|
720
|
+
}
|
|
669
721
|
}
|
|
670
722
|
|
|
671
723
|
this.#settle(h, GPUReadbackStatus.Delivered);
|
|
@@ -740,6 +792,22 @@ export class GPUFluidSystem extends System {
|
|
|
740
792
|
this.#queries = null;
|
|
741
793
|
}
|
|
742
794
|
|
|
795
|
+
/**
|
|
796
|
+
* The turbulence's offset in an atmosphere record, into {@link #turbulence_offset}.
|
|
797
|
+
*
|
|
798
|
+
* @param {Float64Array} atmosphere
|
|
799
|
+
* @returns {Float64Array}
|
|
800
|
+
*/
|
|
801
|
+
#read_turbulence_offset(atmosphere) {
|
|
802
|
+
const out = this.#turbulence_offset;
|
|
803
|
+
|
|
804
|
+
out[0] = atmosphere[FluidAtmosphere.TURBULENCE_OFFSET_X];
|
|
805
|
+
out[1] = atmosphere[FluidAtmosphere.TURBULENCE_OFFSET_Y];
|
|
806
|
+
out[2] = atmosphere[FluidAtmosphere.TURBULENCE_OFFSET_Z];
|
|
807
|
+
|
|
808
|
+
return out;
|
|
809
|
+
}
|
|
810
|
+
|
|
743
811
|
/**
|
|
744
812
|
* The far field and its terms, into {@link #atmosphere}; still air at time 0 with no effectors
|
|
745
813
|
* system.
|
|
@@ -1556,16 +1624,39 @@ export class GPUFluidSystem extends System {
|
|
|
1556
1624
|
anchor[1] = transform.translation_y;
|
|
1557
1625
|
anchor[2] = transform.translation_z;
|
|
1558
1626
|
|
|
1627
|
+
const wind = context.wind;
|
|
1628
|
+
const sigma = atmosphere[FluidAtmosphere.TURBULENCE_SIGMA];
|
|
1629
|
+
|
|
1630
|
+
// the tile, before any pass binds it
|
|
1631
|
+
if (sigma !== 0) {
|
|
1632
|
+
this.#read_turbulence_offset(atmosphere);
|
|
1633
|
+
wind.set_turbulence(sigma, this.#turbulence_offset, atmosphere[FluidAtmosphere.TURBULENCE_LENGTH]);
|
|
1634
|
+
}
|
|
1635
|
+
|
|
1636
|
+
const tick_atmosphere = this.#tick_atmosphere;
|
|
1637
|
+
tick_atmosphere.set(atmosphere);
|
|
1638
|
+
|
|
1559
1639
|
for (let tick = first_tick; tick <= tick_now; tick++) {
|
|
1640
|
+
// every tick steps against the far field at the end of the frame's last, its eddies
|
|
1641
|
+
// carried back by the mean to where the tick left them, so a frame of several ticks
|
|
1642
|
+
// advances them as one tick at a time does
|
|
1643
|
+
const behind = (tick_now - tick) * dt;
|
|
1644
|
+
|
|
1645
|
+
tick_atmosphere[FluidAtmosphere.TURBULENCE_OFFSET_X] = atmosphere[FluidAtmosphere.TURBULENCE_OFFSET_X] - atmosphere[FluidAtmosphere.VELOCITY_X] * behind;
|
|
1646
|
+
tick_atmosphere[FluidAtmosphere.TURBULENCE_OFFSET_Y] = atmosphere[FluidAtmosphere.TURBULENCE_OFFSET_Y] - atmosphere[FluidAtmosphere.VELOCITY_Y] * behind;
|
|
1647
|
+
tick_atmosphere[FluidAtmosphere.TURBULENCE_OFFSET_Z] = atmosphere[FluidAtmosphere.TURBULENCE_OFFSET_Z] - atmosphere[FluidAtmosphere.VELOCITY_Z] * behind;
|
|
1648
|
+
|
|
1560
1649
|
stack.record_tick({
|
|
1561
1650
|
graph,
|
|
1562
1651
|
tick,
|
|
1563
1652
|
dt,
|
|
1564
1653
|
anchor,
|
|
1565
|
-
atmosphere,
|
|
1654
|
+
atmosphere: tick_atmosphere,
|
|
1566
1655
|
atmosphere_offset: 0,
|
|
1567
1656
|
forcing: this.#forcing,
|
|
1568
1657
|
vorticity_confinement: domain.component.vorticity_confinement,
|
|
1658
|
+
// always the wind's: a cascade may still hold turbulence the far field has let go of
|
|
1659
|
+
turbulence: wind.turbulence,
|
|
1569
1660
|
});
|
|
1570
1661
|
}
|
|
1571
1662
|
}
|
|
@@ -1583,25 +1674,31 @@ export class GPUFluidSystem extends System {
|
|
|
1583
1674
|
}
|
|
1584
1675
|
|
|
1585
1676
|
/**
|
|
1586
|
-
* With no domain, the wind field is the far field alone: written when it changes
|
|
1677
|
+
* With no domain, the wind field is the far field alone: written when it changes, which with
|
|
1678
|
+
* turbulence is every frame, the mean carrying the eddies.
|
|
1587
1679
|
*
|
|
1588
1680
|
* @param {GPUSceneContext} context
|
|
1589
1681
|
*/
|
|
1590
1682
|
#publish_far_field(context) {
|
|
1591
1683
|
const far = this.#far;
|
|
1592
1684
|
const written = this.#wind_far;
|
|
1685
|
+
const atmosphere = this.#read_atmosphere();
|
|
1686
|
+
const sigma = atmosphere[FluidAtmosphere.TURBULENCE_SIGMA];
|
|
1593
1687
|
|
|
1594
1688
|
this.far_field(far);
|
|
1595
1689
|
|
|
1596
|
-
if (far[0] === written[0] && far[1] === written[1] && far[2] === written[2]) {
|
|
1690
|
+
if (far[0] === written[0] && far[1] === written[1] && far[2] === written[2] && sigma === 0 && this.#wind_sigma === 0) {
|
|
1597
1691
|
return;
|
|
1598
1692
|
}
|
|
1599
1693
|
|
|
1600
1694
|
const wind = context.wind;
|
|
1601
1695
|
|
|
1602
1696
|
wind.set_far_velocity(far);
|
|
1697
|
+
wind.set_turbulence(sigma, this.#read_turbulence_offset(atmosphere), atmosphere[FluidAtmosphere.TURBULENCE_LENGTH]);
|
|
1603
1698
|
wind.update();
|
|
1604
1699
|
|
|
1700
|
+
this.#wind_sigma = sigma;
|
|
1701
|
+
|
|
1605
1702
|
written[0] = far[0];
|
|
1606
1703
|
written[1] = far[1];
|
|
1607
1704
|
written[2] = far[2];
|
|
@@ -32,7 +32,7 @@ export function apply_particle_effect(emitter: ParticleEmitter, effect: Particle
|
|
|
32
32
|
* @property {import("../../shade/renderer/scene/GPUSceneContext.js").GPUSceneContext|null} context
|
|
33
33
|
* the scene context the emitter is registered with, at the entity's row; null until a frame has
|
|
34
34
|
* registered it, or after a device restart took that context away
|
|
35
|
-
* @property {
|
|
35
|
+
* @property {EntityRowHold} hold the entity's row, held in {@link context} while the emitter is registered
|
|
36
36
|
* @property {string|null} url last observed {@link ParticleEffect#texture}
|
|
37
37
|
* @property {import("../graphics/texture/atlas/ManagedTextureAtlas.js").ManagedAtlasReference|null} texture shared image reference, or null for an untextured effect
|
|
38
38
|
* @property {Map<string, {entity: number, channel: number, live: boolean, on_removed: function|null, layout: import("../../shade/renderer/particles/layout/ParticleLayout.js").ParticleLayout|null}>} bound
|
|
@@ -248,7 +248,10 @@ export type ParticleEmitterEntry = {
|
|
|
248
248
|
* registered it, or after a device restart took that context away
|
|
249
249
|
*/
|
|
250
250
|
context: import("../../shade/renderer/scene/GPUSceneContext.js").GPUSceneContext | null;
|
|
251
|
-
|
|
251
|
+
/**
|
|
252
|
+
* the entity's row, held in {@link context } while the emitter is registered
|
|
253
|
+
*/
|
|
254
|
+
hold: EntityRowHold;
|
|
252
255
|
/**
|
|
253
256
|
* last observed {@link ParticleEffecttexture }
|
|
254
257
|
*/
|
|
@@ -280,4 +283,5 @@ import { ParticleEffect } from "../graphics/ecs/particles/ParticleEffect.js";
|
|
|
280
283
|
import { System } from "../ecs/System.js";
|
|
281
284
|
import { Transform64 } from "../ecs/transform/Transform64.js";
|
|
282
285
|
import { SpriteAtlas } from "../graphics/texture/atlas/SpriteAtlas.js";
|
|
286
|
+
import { EntityRowHold } from "./EntityRowHold.js";
|
|
283
287
|
//# sourceMappingURL=GPUParticleEmitterSystem.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GPUParticleEmitterSystem.d.ts","sourceRoot":"","sources":["../../../../src/engine/graphics3/GPUParticleEmitterSystem.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"GPUParticleEmitterSystem.d.ts","sourceRoot":"","sources":["../../../../src/engine/graphics3/GPUParticleEmitterSystem.js"],"names":[],"mappings":"AA4rCA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,+CAJW,eAAe,UACf,cAAc,GACZ,OAAO,CAyGnB;AAzxCD;;;;;;;;;;;;;;;;;;;GAmBG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwDG;AACH;IA4FI;;;;;OAKG;IACH,sBALW,OAAO,qBAAqB,EAAE,cAAc,SAC5C,OAAO,qCAAqC,EAAE,KAAK,gEAoB7D;IAjHD,6DAA6C;IAE7C;;;OAGG;IACH,OAFU,WAAW,CAEkC;IA6GvD;;;;;;OAMG;IACH,iEAEC;IAED;;;;;OAKG;IACH,kCAEC;IAED;;;;;;;;;;OAUG;IACH,mBAJW,MAAM,GACJ,eAAe,GAAC,IAAI,CAWhC;IAED;;;;;;;;;;;OAWG;IACH,cAHW,MAAM,SACN,MAAM,QA4BhB;IAED;;;;;;;;;;;;OAYG;IACH,uBAHW,MAAM,UACN,UAAU,MAAM,CAAC,QA8B3B;IAED;;;;;;;;;;;;;OAaG;IACH,wBAJW,MAAM,UACN,MAAM,WACN,MAAM,QAOhB;IAED;;;;;OAKG;IACH,0BAFW,MAAM,QAIhB;IA8PD,+BAA+B;IAC/B,YADc,QAAQ,IAAI,CAAC,CAuB1B;IA0ED;;;;OAIG;IACH,aAJW,cAAc,aACd,WAAW,UACX,MAAM,QA6BhB;IAED;;;;OAIG;IACH,eAJW,cAAc,aACd,WAAW,UACX,MAAM,QAIhB;IAED;;;;;;;OAOG;IACH,4BAHW,MAAM,GACJ,IAAI,CAgBhB;IAoCD;;;;;;;;;;;;OAYG;IACH,eAHW,OAAO,gDAAgD,EAAE,YAAY,GACnE,IAAI,CAgDhB;;CA6TJ;;YAtpCa,MAAM;;;;YACN,cAAc;;;;eACd,WAAW;;;;aACX,eAAe,GAAC,IAAI;;;;;aACpB,OAAO,+CAA+C,EAAE,eAAe,GAAC,IAAI;;;;UAG5E,aAAa;;;;SACb,MAAM,GAAC,IAAI;;;;aACX,OAAO,kDAAkD,EAAE,qBAAqB,GAAC,IAAI;;;;;;;WACrF,IAAI,MAAM,EAAE;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,CAAC;QAAC,UAAU,EAAE,WAAS,IAAI,CAAC;QAAC,MAAM,EAAE,OAAO,yDAAyD,EAAE,cAAc,GAAC,IAAI,CAAA;KAAC,CAAC;;;;qBAKvL,OAAO,uDAAuD,EAAE,eAAe,GAAC,IAAI;;gCA/ClE,2DAA2D;+BAU5D,6CAA6C;uBARrD,kBAAkB;4BAGb,iCAAiC;4BAOjC,0CAA0C;8BATxC,oBAAoB"}
|
|
@@ -5,10 +5,10 @@ import { RenderExtension } from "../../shade/renderer/extension/RenderExtension.
|
|
|
5
5
|
import { ParticleEmitter } from "../../shade/renderer/particles/runtime/ParticleEmitter.js";
|
|
6
6
|
import { GPUTextureContext } from "../../shade/renderer/texture/GPUTextureContext.js";
|
|
7
7
|
import { System } from "../ecs/System.js";
|
|
8
|
+
import { EntityRowHold } from "./EntityRowHold.js";
|
|
8
9
|
import Name from "../ecs/name/Name.js";
|
|
9
10
|
import { Transform64 } from "../ecs/transform/Transform64.js";
|
|
10
11
|
import { EventType } from "../ecs/EventType.js";
|
|
11
|
-
import { TRANSFORM64_EVENT_CHANGE } from "../ecs/transform/TRANSFORM64_EVENT_CHANGE.js";
|
|
12
12
|
import { row_of_entity } from "../../shade/renderer/scene/rows/GPUSceneRows.js";
|
|
13
13
|
import { GameAssetType } from "../asset/GameAssetType.js";
|
|
14
14
|
import { ImageRGBADataLoader } from "../asset/loaders/image/ImageRGBADataLoader.js";
|
|
@@ -41,7 +41,7 @@ const BURST_QUEUE_LIMIT = 256;
|
|
|
41
41
|
* @property {import("../../shade/renderer/scene/GPUSceneContext.js").GPUSceneContext|null} context
|
|
42
42
|
* the scene context the emitter is registered with, at the entity's row; null until a frame has
|
|
43
43
|
* registered it, or after a device restart took that context away
|
|
44
|
-
* @property {
|
|
44
|
+
* @property {EntityRowHold} hold the entity's row, held in {@link context} while the emitter is registered
|
|
45
45
|
* @property {string|null} url last observed {@link ParticleEffect#texture}
|
|
46
46
|
* @property {import("../graphics/texture/atlas/ManagedTextureAtlas.js").ManagedAtlasReference|null} texture shared image reference, or null for an untextured effect
|
|
47
47
|
* @property {Map<string, {entity: number, channel: number, live: boolean, on_removed: function|null, layout: import("../../shade/renderer/particles/layout/ParticleLayout.js").ParticleLayout|null}>} bound
|
|
@@ -744,7 +744,7 @@ export class GPUParticleEmitterSystem extends System {
|
|
|
744
744
|
transform,
|
|
745
745
|
emitter: null,
|
|
746
746
|
context: null,
|
|
747
|
-
|
|
747
|
+
hold: null,
|
|
748
748
|
url: null,
|
|
749
749
|
texture: null,
|
|
750
750
|
bound: new Map(),
|
|
@@ -753,18 +753,8 @@ export class GPUParticleEmitterSystem extends System {
|
|
|
753
753
|
|
|
754
754
|
this.#entries.set(entity, entry);
|
|
755
755
|
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
has no signals of its own, so the announcement comes from the dataset: whoever wrote the
|
|
759
|
-
transform sends TRANSFORM64_EVENT_CHANGE and this wakes on it. Coarser than watching
|
|
760
|
-
position, rotation and scale separately — a scale write wakes a placement that reads the
|
|
761
|
-
whole transform anyway — and that is the trade the type makes everywhere.
|
|
762
|
-
*/
|
|
763
|
-
entry.on_transform_changed = () => this.#place(entry);
|
|
764
|
-
|
|
765
|
-
this.#dataset.addEntityEventListener(
|
|
766
|
-
entity, TRANSFORM64_EVENT_CHANGE, entry.on_transform_changed
|
|
767
|
-
);
|
|
756
|
+
// The emitter is placed the moment its transform moves rather than on a poll: see EntityRowHold.
|
|
757
|
+
entry.hold = new EntityRowHold(this.#dataset, entity, () => this.#graphics.scene_context(this.#scene));
|
|
768
758
|
|
|
769
759
|
// Everything else — building the emitter, acquiring the texture — is what a frame does
|
|
770
760
|
// anyway, and doing it here as well would be a second copy of it that has to stay in step.
|
|
@@ -916,14 +906,12 @@ export class GPUParticleEmitterSystem extends System {
|
|
|
916
906
|
* @param {import("../../shade/renderer/scene/GPUSceneContext.js").GPUSceneContext} scene_context
|
|
917
907
|
*/
|
|
918
908
|
#register(particles, scene_context) {
|
|
919
|
-
const rows = scene_context.rows;
|
|
920
|
-
|
|
921
909
|
for (const entry of this.#entries.values()) {
|
|
922
910
|
if (entry.emitter === null || entry.context === scene_context || entry.emitter.program === entry.refused_program) {
|
|
923
911
|
continue;
|
|
924
912
|
}
|
|
925
913
|
|
|
926
|
-
|
|
914
|
+
entry.hold.acquire(scene_context);
|
|
927
915
|
|
|
928
916
|
try {
|
|
929
917
|
particles.add_emitter(entry.emitter, row_of_entity(entry.entity));
|
|
@@ -931,7 +919,7 @@ export class GPUParticleEmitterSystem extends System {
|
|
|
931
919
|
// The program's global imports do not link against the scene's global fields. One
|
|
932
920
|
// effect must not stop every other one: it is reported, and not tried again until
|
|
933
921
|
// its program changes.
|
|
934
|
-
|
|
922
|
+
entry.hold.release();
|
|
935
923
|
entry.refused_program = entry.emitter.program;
|
|
936
924
|
warn_limited(`GPUParticleEmitterSystem: an effect was refused: ${e.message}`);
|
|
937
925
|
continue;
|
|
@@ -1073,21 +1061,6 @@ export class GPUParticleEmitterSystem extends System {
|
|
|
1073
1061
|
}
|
|
1074
1062
|
}
|
|
1075
1063
|
|
|
1076
|
-
/**
|
|
1077
|
-
* The entity moved: its row is rewritten from its transform by the context that holds it.
|
|
1078
|
-
*
|
|
1079
|
-
* @param {ParticleEmitterEntry} entry
|
|
1080
|
-
*/
|
|
1081
|
-
#place(entry) {
|
|
1082
|
-
const context = entry.context;
|
|
1083
|
-
|
|
1084
|
-
if (context === null || context !== this.#graphics.scene_context(this.#scene)) {
|
|
1085
|
-
return;
|
|
1086
|
-
}
|
|
1087
|
-
|
|
1088
|
-
context.rows.mark_world(entry.entity);
|
|
1089
|
-
}
|
|
1090
|
-
|
|
1091
1064
|
/**
|
|
1092
1065
|
* Retire an entity's emitter and let go of its row, leaving the entry linked.
|
|
1093
1066
|
*
|
|
@@ -1111,14 +1084,15 @@ export class GPUParticleEmitterSystem extends System {
|
|
|
1111
1084
|
particles.remove_emitter(emitter);
|
|
1112
1085
|
}
|
|
1113
1086
|
|
|
1114
|
-
context.rows.release(entry.entity);
|
|
1115
|
-
|
|
1116
1087
|
// the registry dropped the bindings with the emitter; the rows they held go too
|
|
1117
1088
|
for (const binding of entry.bound.values()) {
|
|
1118
1089
|
this.#let_go(context, binding);
|
|
1119
1090
|
}
|
|
1120
1091
|
}
|
|
1121
1092
|
|
|
1093
|
+
// a hold in a context that has been replaced went with it, and releasing it gives nothing back
|
|
1094
|
+
entry.hold.release();
|
|
1095
|
+
|
|
1122
1096
|
entry.context = null;
|
|
1123
1097
|
this.#forget_bindings(entry);
|
|
1124
1098
|
|
|
@@ -1137,15 +1111,8 @@ export class GPUParticleEmitterSystem extends System {
|
|
|
1137
1111
|
return;
|
|
1138
1112
|
}
|
|
1139
1113
|
|
|
1140
|
-
if (entry.on_transform_changed !== null) {
|
|
1141
|
-
this.#dataset.removeEntityEventListener(
|
|
1142
|
-
entity, TRANSFORM64_EVENT_CHANGE, entry.on_transform_changed
|
|
1143
|
-
);
|
|
1144
|
-
|
|
1145
|
-
entry.on_transform_changed = null;
|
|
1146
|
-
}
|
|
1147
|
-
|
|
1148
1114
|
this.#detach_emitter(entry);
|
|
1115
|
+
entry.hold.dispose();
|
|
1149
1116
|
entry.texture?.release();
|
|
1150
1117
|
|
|
1151
1118
|
entry.url = null;
|
|
@@ -1,48 +1,43 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Copy a component onto runtime parameters.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
* are part of, so path display and the selection highlight land over a trail rather than under it.
|
|
15
|
-
* Under MBOIT, the legacy transparency mode, trails are not drawn — as the particles are not.
|
|
4
|
+
* @param {TrailParameters} parameters
|
|
5
|
+
* @param {Trail3D} trail
|
|
6
|
+
* @param {Trail3DEntry} entry
|
|
7
|
+
*/
|
|
8
|
+
export function apply_trail3d(parameters: TrailParameters, trail: Trail3D, entry: Trail3DEntry): void;
|
|
9
|
+
/**
|
|
10
|
+
* Draws every {@link Trail3D}: simulated on the GPU, its head following the entity's `transforms` row,
|
|
11
|
+
* its knots seeded and committed in compute and its tube extruded in the vertex stage, drawn inside the
|
|
12
|
+
* transparency pipeline (AVBOIT), so a trail behind glass or smoke composites with them by depth.
|
|
13
|
+
* Nothing per knot happens on the CPU.
|
|
16
14
|
*
|
|
17
|
-
* **
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
15
|
+
* **What is the CPU's:** registering a trail with the scene context's {@link GPUTrailSystem} — a row, a
|
|
16
|
+
* knot run, the entity's transform row held through {@link EntityRowHold} — comparing each component's
|
|
17
|
+
* fields once a tick with what was staged and restaging what differs, and moving the clock by the
|
|
18
|
+
* simulation time it is given. A game writes `trail.color` or `trail.maxAge` from code that never heard
|
|
19
|
+
* of this system; there is no change signal to send.
|
|
22
20
|
*
|
|
23
|
-
* **
|
|
24
|
-
*
|
|
25
|
-
*
|
|
21
|
+
* **The head follows announced transforms.** A trail reads where its entity is from the GPU row, which a
|
|
22
|
+
* transform write reaches when it is announced (`TRANSFORM64_EVENT_CHANGE`), as meshes and particle
|
|
23
|
+
* emitters do.
|
|
26
24
|
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
* unlit straight alpha, depth tested against the opaque scene and never written, which is what a
|
|
30
|
-
* trail wants and what the game's trails are authored as. `Trail3D.textureURL` therefore draws
|
|
31
|
-
* untinted here; nothing in the game's own effects sets it to anything a flat colour does not
|
|
32
|
-
* carry.
|
|
25
|
+
* A trail's knot count (from its `maxAge`, or its authored layout's) and its `radialSegments` are fixed
|
|
26
|
+
* when it registers; a replaced authored layout brings its own count.
|
|
33
27
|
*/
|
|
34
28
|
export class Trail3DSystem extends System<any> {
|
|
35
29
|
/**
|
|
36
|
-
* @param {GraphicsEngine} graphics
|
|
30
|
+
* @param {import("./GraphicsEngine.js").GraphicsEngine} graphics
|
|
31
|
+
* @param {import("../../shade/renderer/scene/Scene.js").Scene} scene the scene the trails' entities are in
|
|
37
32
|
*/
|
|
38
|
-
constructor(graphics: GraphicsEngine);
|
|
33
|
+
constructor(graphics: import("./GraphicsEngine.js").GraphicsEngine, scene: import("../../shade/renderer/scene/Scene.js").Scene);
|
|
39
34
|
dependencies: (typeof Transform64 | typeof Trail3D)[];
|
|
40
35
|
/**
|
|
41
|
-
*
|
|
36
|
+
* The runtime the scene's trails are registered with, or null while there is no scene context.
|
|
42
37
|
*
|
|
43
|
-
* @returns {
|
|
38
|
+
* @returns {GPUTrailSystem|null}
|
|
44
39
|
*/
|
|
45
|
-
get
|
|
40
|
+
get runtime(): GPUTrailSystem;
|
|
46
41
|
startup(entityManager: any): Promise<void>;
|
|
47
42
|
shutdown(entityManager: any): Promise<void>;
|
|
48
43
|
/**
|
|
@@ -57,7 +52,19 @@ export class Trail3DSystem extends System<any> {
|
|
|
57
52
|
* @param {number} entity
|
|
58
53
|
*/
|
|
59
54
|
unlink(trail: Trail3D, transform: Transform64, entity: number): void;
|
|
60
|
-
|
|
55
|
+
/**
|
|
56
|
+
* Move the clock by the simulation time given, register what is waiting, and restage every trail
|
|
57
|
+
* whose component changed.
|
|
58
|
+
*
|
|
59
|
+
* @param {number} [time_delta_seconds]
|
|
60
|
+
*/
|
|
61
|
+
update(time_delta_seconds?: number): void;
|
|
62
|
+
/**
|
|
63
|
+
* Record the frame's trail work — called by the frame extension.
|
|
64
|
+
*
|
|
65
|
+
* @param {import("../../shade/renderer/extension/FrameContext.js").FrameContext} frame
|
|
66
|
+
*/
|
|
67
|
+
record(frame: import("../../shade/renderer/extension/FrameContext.js").FrameContext): void;
|
|
61
68
|
#private;
|
|
62
69
|
}
|
|
63
70
|
/**
|
|
@@ -73,9 +80,36 @@ export class Trail3DSystem extends System<any> {
|
|
|
73
80
|
export class TrailExtension extends RenderExtension {
|
|
74
81
|
record(frame: any): void;
|
|
75
82
|
}
|
|
83
|
+
export type Trail3DEntry = {
|
|
84
|
+
entity: number;
|
|
85
|
+
trail: Trail3D;
|
|
86
|
+
/**
|
|
87
|
+
* the entity's row, kept current as it moves
|
|
88
|
+
*/
|
|
89
|
+
hold: EntityRowHold;
|
|
90
|
+
/**
|
|
91
|
+
* the
|
|
92
|
+
* trail in the runtime, or null while it is not registered
|
|
93
|
+
*/
|
|
94
|
+
context: import("../../shade/renderer/trails/GPUTrailSystem.js").GPUTrailContext | null;
|
|
95
|
+
/**
|
|
96
|
+
* knots of the trail's ring, fixed when it is built
|
|
97
|
+
*/
|
|
98
|
+
knot_count: number;
|
|
99
|
+
/**
|
|
100
|
+
* radial segments, fixed when it is built
|
|
101
|
+
*/
|
|
102
|
+
radial: number;
|
|
103
|
+
/**
|
|
104
|
+
* the component's `clearCount` as last seen
|
|
105
|
+
*/
|
|
106
|
+
clears: number;
|
|
107
|
+
};
|
|
108
|
+
import { TrailParameters } from "../../shade/renderer/trails/runtime/TrailParameters.js";
|
|
109
|
+
import Trail3D from "../graphics/ecs/trail3d/Trail3D.js";
|
|
76
110
|
import { System } from "../ecs/System.js";
|
|
77
111
|
import { Transform64 } from "../ecs/transform/Transform64.js";
|
|
78
|
-
import
|
|
79
|
-
import { DynamicMeshBatch } from "../../shade/renderer/scene/DynamicMeshBatch.js";
|
|
112
|
+
import { GPUTrailSystem } from "../../shade/renderer/trails/GPUTrailSystem.js";
|
|
80
113
|
import { RenderExtension } from "../../shade/renderer/extension/RenderExtension.js";
|
|
114
|
+
import { EntityRowHold } from "./EntityRowHold.js";
|
|
81
115
|
//# sourceMappingURL=Trail3DSystem.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Trail3DSystem.d.ts","sourceRoot":"","sources":["../../../../src/engine/graphics3/Trail3DSystem.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Trail3DSystem.d.ts","sourceRoot":"","sources":["../../../../src/engine/graphics3/Trail3DSystem.js"],"names":[],"mappings":"AAsCA;;;;;;GAMG;AACH,0CAJW,eAAe,SACf,OAAO,SACP,YAAY,QA8BtB;AA8BD;;;;;;;;;;;;;;;;;;GAkBG;AACH;IAuDI;;;OAGG;IACH,sBAHW,OAAO,qBAAqB,EAAE,cAAc,SAC5C,OAAO,qCAAqC,EAAE,KAAK,EAW7D;IAnED,sDAAsC;IAqEtC;;;;OAIG;IACH,8BAEC;IAED,2CAOC;IAED,4CAWC;IA4BD;;;;OAIG;IACH,YAJW,OAAO,aACP,WAAW,UACX,MAAM,QAqBhB;IAED;;;;OAIG;IACH,cAJW,OAAO,aACP,WAAW,UACX,MAAM,QAIhB;IAED;;;;;OAKG;IACH,4BAFW,MAAM,QAchB;IAED;;;;OAIG;IACH,cAFW,OAAO,gDAAgD,EAAE,YAAY,QA2B/E;;CA2IJ;AAQD;;;;;;;;;GASG;AACH;IAeI,yBAEC;CACJ;;YA3ea,MAAM;WACN,OAAO;;;;UACP,aAAa;;;;;aACb,OAAO,+CAA+C,EAAE,eAAe,GAAC,IAAI;;;;gBAE5E,MAAM;;;;YACN,MAAM;;;;YACN,MAAM;;gCAlBY,wDAAwD;oBAIpE,oCAAoC;uBAHjC,kBAAkB;4BACb,iCAAiC;+BAH9B,+CAA+C;gCAJ9C,mDAAmD;8BAYrD,oBAAoB"}
|