@woosh/meep-engine 3.33.0 → 3.34.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/editor/Editor.d.ts.map +1 -1
- package/editor/Editor.js +0 -3
- package/editor/ecs/component/prototypeObjectEditor.js +1 -165
- package/editor/ecs/component/registerBasicTypeEditors.d.ts.map +1 -1
- package/editor/ecs/component/registerBasicTypeEditors.js +0 -5
- package/editor/ecs/component/registerEngineComponentEditors.d.ts.map +1 -1
- package/editor/ecs/component/registerEngineComponentEditors.js +0 -20
- package/editor/process/SymbolicDisplayProcess.d.ts.map +1 -1
- package/editor/process/SymbolicDisplayProcess.js +100 -106
- package/editor/prototypeEditorShell.d.ts.map +1 -1
- package/editor/prototypeEditorShell.js +190 -186
- package/editor/templates/entity_templates.d.ts.map +1 -1
- package/editor/templates/entity_templates.js +10 -27
- package/editor/view/makeEntityDecorators.js +2 -2
- package/package.json +1 -1
- package/src/{engine/graphics/particles/particular/engine → core/geom/3d/aabb}/MovingBoundingBox.d.ts +3 -3
- package/src/core/geom/3d/aabb/MovingBoundingBox.d.ts.map +1 -0
- package/src/{engine/graphics/particles/particular/engine → core/geom/3d/aabb}/MovingBoundingBox.js +5 -5
- package/src/core/math/lookup/RGBA_LUT_HEATMAP_IR.d.ts +3 -0
- package/src/core/math/lookup/RGBA_LUT_HEATMAP_IR.d.ts.map +1 -0
- package/src/{engine/graphics/particles/particular/engine/parameter/sample → core/math/lookup}/RGBA_LUT_HEATMAP_IR.js +1 -1
- package/src/core/math/lookup/RGB_LUT_INFERNO.d.ts +6 -0
- package/src/core/math/lookup/RGB_LUT_INFERNO.d.ts.map +1 -0
- package/src/{engine/graphics/particles/particular/engine/parameter/sample → core/math/lookup}/RGB_LUT_INFERNO.js +1 -1
- package/src/{engine/graphics/particles/particular/engine/parameter/sample → core/math/lookup}/RGB_LUT_TURBO.d.ts +1 -1
- package/src/core/math/lookup/RGB_LUT_TURBO.d.ts.map +1 -0
- package/src/{engine/graphics/particles/particular/engine/parameter/sample → core/math/lookup}/RGB_LUT_TURBO.js +1 -1
- package/src/{engine/graphics/particles/particular/engine/parameter/sample → core/math/lookup}/RGB_LUT_VIRIDIS.d.ts +1 -1
- package/src/core/math/lookup/RGB_LUT_VIRIDIS.d.ts.map +1 -0
- package/src/{engine/graphics/particles/particular/engine/parameter/sample → core/math/lookup}/RGB_LUT_VIRIDIS.js +1 -1
- package/src/engine/animation/AnimatedActions.d.ts.map +1 -1
- package/src/engine/animation/AnimatedActions.js +2 -4
- package/src/engine/animation/AnimationUtils.d.ts +1 -17
- package/src/engine/animation/AnimationUtils.d.ts.map +1 -1
- package/src/engine/animation/AnimationUtils.js +138 -246
- package/src/engine/ecs/EntityManager.d.ts +1 -1
- package/src/engine/ecs/EntityManager.d.ts.map +1 -1
- package/src/engine/ecs/EntityManager.js +2 -2
- package/src/engine/ecs/storage/binary/SERIALIZATION_COVERAGE.md +268 -275
- package/src/engine/ecs/storage/populateEngineSerializationRegistry.d.ts.map +1 -1
- package/src/engine/ecs/storage/populateEngineSerializationRegistry.js +0 -10
- package/src/engine/graphics/geometry/distribute_points_on_indexed_triangles.d.ts.map +1 -0
- package/src/engine/graphics/{particles/particular/engine/utils → geometry}/distribute_points_on_indexed_triangles.js +3 -3
- package/src/engine/graphics/{particles/particular/engine/utils/volume → texture/sampler}/lut_to_sampler.d.ts +1 -1
- package/src/engine/graphics/texture/sampler/lut_to_sampler.d.ts.map +1 -0
- package/src/engine/graphics/{particles/particular/engine/utils/volume → texture/sampler}/lut_to_sampler.js +1 -1
- package/src/engine/graphics3/GPUParticleEmitterSystem.d.ts +0 -3
- package/src/engine/graphics3/GPUParticleEmitterSystem.d.ts.map +1 -1
- package/src/engine/graphics3/GPUParticleEmitterSystem.js +0 -3
- package/src/engine/network/NetworkSession.d.ts +1 -1
- package/src/engine/network/NetworkSession.js +1 -1
- package/src/engine/physics/cloth/MEASUREMENTS.md +115 -0
- package/src/engine/physics/cloth/solver/cloth_contact_find.d.ts.map +1 -1
- package/src/engine/physics/cloth/solver/cloth_contact_find.js +2 -0
- package/src/engine/physics/cloth/solver/constraint/cloth_contact_row.d.ts +9 -0
- package/src/engine/physics/cloth/solver/constraint/cloth_contact_row.d.ts.map +1 -1
- package/src/engine/physics/cloth/solver/constraint/cloth_contact_row.js +30 -7
- package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
- package/src/engine/sound/ecs/audio/AudioEmitterSystem.d.ts.map +1 -1
- package/src/engine/sound/ecs/audio/AudioEmitterSystem.js +12 -2
- package/src/engine/sound/ecs/audio/LiveEmitterSet.d.ts +11 -2
- package/src/engine/sound/ecs/audio/LiveEmitterSet.d.ts.map +1 -1
- package/src/engine/sound/ecs/audio/LiveEmitterSet.js +14 -7
- package/src/engine/sound/ecs/audio/SpatialAudioIndex.d.ts +6 -15
- package/src/engine/sound/ecs/audio/SpatialAudioIndex.d.ts.map +1 -1
- package/src/engine/sound/ecs/audio/SpatialAudioIndex.js +161 -174
- package/src/shade/device/mock/SoftwareGPUBuffer.d.ts +5 -3
- package/src/shade/device/mock/SoftwareGPUBuffer.d.ts.map +1 -1
- package/src/shade/device/mock/SoftwareGPUBuffer.js +32 -3
- package/src/shade/playground/caldera/main.js +73 -60
- package/src/shade/playground/vgeo_runtime/main.js +25 -77
- package/src/shade/playground/vgeo_scene/main.js +2231 -2217
- package/src/shade/renderer/GraphicsContext.d.ts +7 -0
- package/src/shade/renderer/GraphicsContext.d.ts.map +1 -1
- package/src/shade/renderer/GraphicsContext.js +11 -2
- package/src/shade/renderer/Renderer.d.ts.map +1 -1
- package/src/shade/renderer/Renderer.js +38 -0
- package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.d.ts +8 -0
- package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.d.ts.map +1 -1
- package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.js +21 -0
- package/src/shade/renderer/extension/RENDER_EXTENSION_DESIGN.md +1 -1
- package/src/shade/renderer/geometry/GPUGeometryManager.d.ts.map +1 -1
- package/src/shade/renderer/geometry/GPUGeometryManager.js +9 -10
- package/src/shade/renderer/geometry/bvh/GPUGeometryBVHManager.d.ts +5 -0
- package/src/shade/renderer/geometry/bvh/GPUGeometryBVHManager.d.ts.map +1 -1
- package/src/shade/renderer/geometry/bvh/GPUGeometryBVHManager.js +11 -0
- package/src/shade/renderer/geometry/virtual/runtime/GPUVirtualGeometryPool.d.ts +12 -0
- package/src/shade/renderer/geometry/virtual/runtime/GPUVirtualGeometryPool.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/GPUVirtualGeometryPool.js +25 -0
- package/src/shade/renderer/geometry/virtual/runtime/GPUVirtualGeometryRuntime.d.ts +115 -101
- package/src/shade/renderer/geometry/virtual/runtime/GPUVirtualGeometryRuntime.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/GPUVirtualGeometryRuntime.js +282 -140
- package/src/shade/renderer/geometry/virtual/runtime/REVIEW_LEDGER.md +30 -0
- package/src/shade/renderer/geometry/virtual/runtime/RUNTIME_PLAN_2026_09_14.md +4 -1
- package/src/shade/renderer/geometry/virtual/runtime/SHADOW_PLAN_2026_09_28.md +536 -0
- package/src/shade/renderer/geometry/virtual/runtime/VGeoFeedbackLoop.d.ts +6 -2
- package/src/shade/renderer/geometry/virtual/runtime/VGeoFeedbackLoop.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/VGeoFeedbackLoop.js +68 -19
- package/src/shade/renderer/geometry/virtual/runtime/VGeoPageFetcher.d.ts +2 -1
- package/src/shade/renderer/geometry/virtual/runtime/VGeoPageFetcher.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/VGeoPageFetcher.js +17 -1
- package/src/shade/renderer/geometry/virtual/runtime/VGeoResidency.d.ts +4 -0
- package/src/shade/renderer/geometry/virtual/runtime/VGeoResidency.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/VGeoResidency.js +42 -12
- package/src/shade/renderer/geometry/virtual/runtime/VGeoViewCut.d.ts +93 -12
- package/src/shade/renderer/geometry/virtual/runtime/VGeoViewCut.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/VGeoViewCut.js +166 -20
- package/src/shade/renderer/geometry/virtual/runtime/cut/VGEO_CUT_PARAMS_STRUCT.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/cut/VGEO_CUT_PARAMS_STRUCT.js +30 -7
- package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_access.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_access.js +12 -5
- package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_claim.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_claim.js +2 -2
- package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_collect.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_collect.js +23 -13
- package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_queue_remainder.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_queue_remainder.js +1 -2
- package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_seed.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_seed.js +1 -2
- package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_traverse.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_traverse.js +10 -6
- package/src/shade/renderer/geometry/virtual/runtime/cut/vgeo_cut_feedback_layout.d.ts +45 -17
- package/src/shade/renderer/geometry/virtual/runtime/cut/vgeo_cut_feedback_layout.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/cut/vgeo_cut_feedback_layout.js +61 -19
- package/src/shade/renderer/geometry/virtual/runtime/graph_vgeo_expand_if_enabled.d.ts +8 -11
- package/src/shade/renderer/geometry/virtual/runtime/graph_vgeo_expand_if_enabled.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/graph_vgeo_expand_if_enabled.js +9 -16
- package/src/shade/renderer/geometry/virtual/runtime/graph_vgeo_expand_instances_to_meshlets.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/graph_vgeo_expand_instances_to_meshlets.js +25 -10
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_FEEDBACK_OFFSET.js +10 -8
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_INSTANCE_OFFSET.d.ts +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_INSTANCE_OFFSET.js +19 -7
- package/src/shade/renderer/geometry/virtual/runtime/make_vgeo_page_worker.d.ts +4 -2
- package/src/shade/renderer/geometry/virtual/runtime/make_vgeo_page_worker.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/make_vgeo_page_worker.js +4 -2
- package/src/shade/renderer/global_illumination/brick4/Brick4LightMap.d.ts +4 -0
- package/src/shade/renderer/global_illumination/brick4/Brick4LightMap.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/brick4/Brick4LightMap.js +7 -0
- package/src/shade/renderer/global_illumination/lpv/GPULightProbeVolume.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/lpv/GPULightProbeVolume.js +1 -0
- package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts +1 -1
- package/src/shade/renderer/material/GPUMaterialManager.d.ts.map +1 -1
- package/src/shade/renderer/material/GPUMaterialManager.js +2 -0
- package/src/shade/renderer/particles/DESIGN.md +4 -10
- package/src/shade/renderer/particles/ParticleConstants.d.ts +1 -3
- package/src/shade/renderer/particles/ParticleConstants.d.ts.map +1 -1
- package/src/shade/renderer/particles/ParticleConstants.js +1 -3
- package/src/shade/renderer/particles/shaders/chunk_particle_billboard_vertex.d.ts +3 -4
- package/src/shade/renderer/particles/shaders/chunk_particle_billboard_vertex.d.ts.map +1 -1
- package/src/shade/renderer/particles/shaders/chunk_particle_billboard_vertex.js +3 -4
- package/src/shade/renderer/rasterize/bucket/graph_meshlets_rasterize_by_bucket.d.ts +45 -0
- package/src/shade/renderer/rasterize/bucket/graph_meshlets_rasterize_by_bucket.d.ts.map +1 -0
- package/src/shade/renderer/rasterize/bucket/graph_meshlets_rasterize_by_bucket.js +99 -0
- package/src/shade/renderer/rasterize/bucket/rasterization_opaque_buckets.d.ts +4 -4
- package/src/shade/renderer/rasterize/bucket/rasterization_opaque_buckets.js +36 -36
- package/src/shade/renderer/rasterize/bucket/shader_gather_bucket.d.ts +15 -0
- package/src/shade/renderer/rasterize/bucket/shader_gather_bucket.d.ts.map +1 -0
- package/src/shade/renderer/rasterize/bucket/shader_gather_bucket.js +103 -0
- package/src/shade/renderer/rasterize/expand/GPUCollectionLimits.d.ts +3 -0
- package/src/shade/renderer/rasterize/expand/GPUCollectionLimits.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/GPUCollectionLimits.js +6 -1
- package/src/shade/renderer/rasterize/expand/bucket/meshlet/graph_extract_meshlets_from_bucket.d.ts +26 -0
- package/src/shade/renderer/rasterize/expand/bucket/meshlet/graph_extract_meshlets_from_bucket.d.ts.map +1 -0
- package/src/shade/renderer/rasterize/expand/bucket/meshlet/graph_extract_meshlets_from_bucket.js +91 -0
- package/src/shade/renderer/rasterize/fast/graph_gather_meshes_from_buckets.d.ts +22 -0
- package/src/shade/renderer/rasterize/fast/graph_gather_meshes_from_buckets.d.ts.map +1 -0
- package/src/shade/renderer/rasterize/fast/graph_gather_meshes_from_buckets.js +102 -0
- package/src/shade/renderer/rasterize/fast/graph_rasterize_scene_fast.d.ts +2 -1
- package/src/shade/renderer/rasterize/fast/graph_rasterize_scene_fast.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/fast/graph_rasterize_scene_fast.js +28 -24
- package/src/shade/renderer/rasterize/standard/graph_rasterize_partial_opaque.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/standard/graph_rasterize_partial_opaque.js +32 -28
- package/src/shade/renderer/rasterize/standard/graph_rasterize_remaining_opaque.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/standard/graph_rasterize_remaining_opaque.js +9 -105
- package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.d.ts +5 -0
- package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.d.ts.map +1 -1
- package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.js +11 -0
- package/src/shade/renderer/scene/GPUSceneContext.d.ts +11 -3
- package/src/shade/renderer/scene/GPUSceneContext.d.ts.map +1 -1
- package/src/shade/renderer/scene/GPUSceneContext.js +93 -21
- package/src/shade/renderer/scene/rows/GPUSceneRows.d.ts +4 -1
- package/src/shade/renderer/scene/rows/GPUSceneRows.d.ts.map +1 -1
- package/src/shade/renderer/scene/rows/GPUSceneRows.js +5 -23
- package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.d.ts.map +1 -1
- package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.js +63 -0
- package/src/shade/renderer/shadow/map/SHADOWMAP_VGEO_TAU_SCALE.d.ts +12 -0
- package/src/shade/renderer/shadow/map/SHADOWMAP_VGEO_TAU_SCALE.d.ts.map +1 -0
- package/src/shade/renderer/shadow/map/SHADOWMAP_VGEO_TAU_SCALE.js +11 -0
- package/src/shade/renderer/shadow/map/Shadowmap.d.ts +15 -0
- package/src/shade/renderer/shadow/map/Shadowmap.d.ts.map +1 -1
- package/src/shade/renderer/shadow/map/Shadowmap.js +17 -0
- package/src/shade/renderer/shadow/map/shadowmap_caster_detail_pending.d.ts +25 -0
- package/src/shade/renderer/shadow/map/shadowmap_caster_detail_pending.d.ts.map +1 -0
- package/src/shade/renderer/shadow/map/shadowmap_caster_detail_pending.js +22 -0
- package/src/shade/renderer/shadow/map/shadowmap_update_score.d.ts.map +1 -1
- package/src/shade/renderer/shadow/map/shadowmap_update_score.js +5 -2
- package/src/shade/renderer/texture/TextureManager.d.ts +2 -1
- package/src/shade/renderer/texture/TextureManager.d.ts.map +1 -1
- package/src/shade/renderer/texture/TextureManager.js +4 -1
- package/src/shade/renderer/texture/mipmaps/WebGPUMipmapGenerator.js +1 -1
- package/src/shade/renderer/util/Uint32BufferSamplingStats.d.ts +9 -1
- package/src/shade/renderer/util/Uint32BufferSamplingStats.d.ts.map +1 -1
- package/src/shade/renderer/util/Uint32BufferSamplingStats.js +55 -5
- package/src/shade/renderer/view/ViewManager.d.ts +7 -1
- package/src/shade/renderer/view/ViewManager.d.ts.map +1 -1
- package/src/shade/renderer/view/ViewManager.js +17 -1
- package/src/shade/renderer/volumetrics/GPUSceneVolumetrics.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/GPUSceneVolumetrics.js +1 -0
- package/editor/ecs/component/editors/ecs/ParameterLookupTableEditor.d.ts +0 -20
- package/editor/ecs/component/editors/ecs/ParameterLookupTableEditor.d.ts.map +0 -1
- package/editor/ecs/component/editors/ecs/ParameterLookupTableEditor.js +0 -35
- package/editor/ecs/component/editors/ecs/ParameterTrackEditor.d.ts +0 -12
- package/editor/ecs/component/editors/ecs/ParameterTrackEditor.d.ts.map +0 -1
- package/editor/ecs/component/editors/ecs/ParameterTrackEditor.js +0 -17
- package/editor/ecs/component/editors/ecs/ParameterTrackSetEditor.d.ts +0 -14
- package/editor/ecs/component/editors/ecs/ParameterTrackSetEditor.d.ts.map +0 -1
- package/editor/ecs/component/editors/ecs/ParameterTrackSetEditor.js +0 -18
- package/editor/ecs/component/editors/ecs/ParticleEmitterEditor.d.ts +0 -52
- package/editor/ecs/component/editors/ecs/ParticleEmitterEditor.d.ts.map +0 -1
- package/editor/ecs/component/editors/ecs/ParticleEmitterEditor.js +0 -58
- package/editor/ecs/component/editors/ecs/ParticleEmitterLayerEditor.d.ts +0 -47
- package/editor/ecs/component/editors/ecs/ParticleEmitterLayerEditor.d.ts.map +0 -1
- package/editor/ecs/component/editors/ecs/ParticleEmitterLayerEditor.js +0 -58
- package/editor/ecs/component/editors/ecs/SimulationStepDefinitionEditor.d.ts +0 -16
- package/editor/ecs/component/editors/ecs/SimulationStepDefinitionEditor.d.ts.map +0 -1
- package/editor/ecs/component/editors/ecs/SimulationStepDefinitionEditor.js +0 -21
- package/editor/particles/rebuildParticleEmitter.d.ts +0 -11
- package/editor/particles/rebuildParticleEmitter.d.ts.map +0 -1
- package/editor/particles/rebuildParticleEmitter.js +0 -31
- package/editor/process/ParticleEmitterRebuildProcess.d.ts +0 -66
- package/editor/process/ParticleEmitterRebuildProcess.d.ts.map +0 -1
- package/editor/process/ParticleEmitterRebuildProcess.js +0 -217
- package/editor/process/symbolic/ParticleEmitterSymbolicDisplay.d.ts +0 -18
- package/editor/process/symbolic/ParticleEmitterSymbolicDisplay.d.ts.map +0 -1
- package/editor/process/symbolic/ParticleEmitterSymbolicDisplay.js +0 -140
- package/src/engine/animation/removeEntityGenericEffect.d.ts +0 -18
- package/src/engine/animation/removeEntityGenericEffect.d.ts.map +0 -1
- package/src/engine/animation/removeEntityGenericEffect.js +0 -160
- package/src/engine/animation/removeEntityWithMeshParticlesEffect.d.ts +0 -16
- package/src/engine/animation/removeEntityWithMeshParticlesEffect.d.ts.map +0 -1
- package/src/engine/animation/removeEntityWithMeshParticlesEffect.js +0 -194
- package/src/engine/graphics/ecs/sprite/Sprite.d.ts +0 -15
- package/src/engine/graphics/ecs/sprite/Sprite.d.ts.map +0 -1
- package/src/engine/graphics/ecs/sprite/Sprite.js +0 -14
- package/src/engine/graphics/ecs/sprite/SpriteSystemPE.d.ts +0 -11
- package/src/engine/graphics/ecs/sprite/SpriteSystemPE.d.ts.map +0 -1
- package/src/engine/graphics/ecs/sprite/SpriteSystemPE.js +0 -144
- package/src/engine/graphics/particles/particular/engine/MovingBoundingBox.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/ParticularEngine.d.ts +0 -61
- package/src/engine/graphics/particles/particular/engine/ParticularEngine.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/ParticularEngine.js +0 -229
- package/src/engine/graphics/particles/particular/engine/emitter/EmissionFromType.d.ts +0 -6
- package/src/engine/graphics/particles/particular/engine/emitter/EmissionFromType.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/emitter/EmissionFromType.js +0 -8
- package/src/engine/graphics/particles/particular/engine/emitter/EmissionShapeType.d.ts +0 -7
- package/src/engine/graphics/particles/particular/engine/emitter/EmissionShapeType.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/emitter/EmissionShapeType.js +0 -9
- package/src/engine/graphics/particles/particular/engine/emitter/PARTICLE_ATTRIBUTES.d.ts +0 -13
- package/src/engine/graphics/particles/particular/engine/emitter/PARTICLE_ATTRIBUTES.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/emitter/PARTICLE_ATTRIBUTES.js +0 -12
- package/src/engine/graphics/particles/particular/engine/emitter/PARTICULAR_PARTICLE_SPECIFICATION.d.ts +0 -3
- package/src/engine/graphics/particles/particular/engine/emitter/PARTICULAR_PARTICLE_SPECIFICATION.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/emitter/PARTICULAR_PARTICLE_SPECIFICATION.js +0 -84
- package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.d.ts +0 -285
- package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.js +0 -1201
- package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitterFlag.d.ts +0 -19
- package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitterFlag.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitterFlag.js +0 -67
- package/src/engine/graphics/particles/particular/engine/emitter/ParticleLayer.d.ts +0 -197
- package/src/engine/graphics/particles/particular/engine/emitter/ParticleLayer.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/emitter/ParticleLayer.js +0 -398
- package/src/engine/graphics/particles/particular/engine/emitter/ParticleParameters.d.ts +0 -5
- package/src/engine/graphics/particles/particular/engine/emitter/ParticleParameters.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/emitter/ParticleParameters.js +0 -4
- package/src/engine/graphics/particles/particular/engine/emitter/ParticlePool.d.ts +0 -162
- package/src/engine/graphics/particles/particular/engine/emitter/ParticlePool.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/emitter/ParticlePool.js +0 -472
- package/src/engine/graphics/particles/particular/engine/emitter/computeEmissionFunction.d.ts +0 -10
- package/src/engine/graphics/particles/particular/engine/emitter/computeEmissionFunction.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/emitter/computeEmissionFunction.js +0 -37
- package/src/engine/graphics/particles/particular/engine/emitter/distance_to_camera.d.ts +0 -9
- package/src/engine/graphics/particles/particular/engine/emitter/distance_to_camera.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/emitter/distance_to_camera.js +0 -25
- package/src/engine/graphics/particles/particular/engine/emitter/serde/ParameterLookupTableSerializationAdapter.d.ts +0 -19
- package/src/engine/graphics/particles/particular/engine/emitter/serde/ParameterLookupTableSerializationAdapter.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/emitter/serde/ParameterLookupTableSerializationAdapter.js +0 -28
- package/src/engine/graphics/particles/particular/engine/emitter/serde/ParticleEmitterSerializationAdapter.d.ts +0 -19
- package/src/engine/graphics/particles/particular/engine/emitter/serde/ParticleEmitterSerializationAdapter.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/emitter/serde/ParticleEmitterSerializationAdapter.js +0 -162
- package/src/engine/graphics/particles/particular/engine/emitter/serde/ParticleEmitterSerializationUpgrader_0_1.d.ts +0 -5
- package/src/engine/graphics/particles/particular/engine/emitter/serde/ParticleEmitterSerializationUpgrader_0_1.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/emitter/serde/ParticleEmitterSerializationUpgrader_0_1.js +0 -103
- package/src/engine/graphics/particles/particular/engine/emitter/write_particle_patch_uv.d.ts +0 -8
- package/src/engine/graphics/particles/particular/engine/emitter/write_particle_patch_uv.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/emitter/write_particle_patch_uv.js +0 -28
- package/src/engine/graphics/particles/particular/engine/parameter/ParameterLookupTable.d.ts +0 -2
- package/src/engine/graphics/particles/particular/engine/parameter/ParameterLookupTable.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/parameter/ParameterLookupTable.js +0 -2
- package/src/engine/graphics/particles/particular/engine/parameter/ParameterLookupTableFlags.d.ts +0 -2
- package/src/engine/graphics/particles/particular/engine/parameter/ParameterLookupTableFlags.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/parameter/ParameterLookupTableFlags.js +0 -2
- package/src/engine/graphics/particles/particular/engine/parameter/ParameterSet.d.ts +0 -60
- package/src/engine/graphics/particles/particular/engine/parameter/ParameterSet.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/parameter/ParameterSet.js +0 -128
- package/src/engine/graphics/particles/particular/engine/parameter/ParameterTrack.d.ts +0 -47
- package/src/engine/graphics/particles/particular/engine/parameter/ParameterTrack.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/parameter/ParameterTrack.js +0 -77
- package/src/engine/graphics/particles/particular/engine/parameter/ParameterTrackSet.d.ts +0 -45
- package/src/engine/graphics/particles/particular/engine/parameter/ParameterTrackSet.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/parameter/ParameterTrackSet.js +0 -93
- package/src/engine/graphics/particles/particular/engine/parameter/ParticleParameter.d.ts +0 -95
- package/src/engine/graphics/particles/particular/engine/parameter/ParticleParameter.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/parameter/ParticleParameter.js +0 -239
- package/src/engine/graphics/particles/particular/engine/parameter/sample/RGBA_LUT_HEATMAP_IR.d.ts +0 -3
- package/src/engine/graphics/particles/particular/engine/parameter/sample/RGBA_LUT_HEATMAP_IR.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/parameter/sample/RGB_LUT_INFERNO.d.ts +0 -6
- package/src/engine/graphics/particles/particular/engine/parameter/sample/RGB_LUT_INFERNO.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/parameter/sample/RGB_LUT_TURBO.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/parameter/sample/RGB_LUT_VIRIDIS.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/renderers/ParticleRenderer.d.ts +0 -13
- package/src/engine/graphics/particles/particular/engine/renderers/ParticleRenderer.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/renderers/ParticleRenderer.js +0 -28
- package/src/engine/graphics/particles/particular/engine/renderers/billboard/BILLBOARD_PARTICLE_SPECIFICATION.d.ts +0 -9
- package/src/engine/graphics/particles/particular/engine/renderers/billboard/BILLBOARD_PARTICLE_SPECIFICATION.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/renderers/billboard/BILLBOARD_PARTICLE_SPECIFICATION.js +0 -24
- package/src/engine/graphics/particles/particular/engine/renderers/billboard/SoftBillboardParticlePool.d.ts +0 -13
- package/src/engine/graphics/particles/particular/engine/renderers/billboard/SoftBillboardParticlePool.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/renderers/billboard/SoftBillboardParticlePool.js +0 -27
- package/src/engine/graphics/particles/particular/engine/renderers/billboard/SoftBillboardParticleRenderer.d.ts +0 -33
- package/src/engine/graphics/particles/particular/engine/renderers/billboard/SoftBillboardParticleRenderer.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/renderers/billboard/SoftBillboardParticleRenderer.js +0 -80
- package/src/engine/graphics/particles/particular/engine/shader/ShaderManager.d.ts +0 -49
- package/src/engine/graphics/particles/particular/engine/shader/ShaderManager.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/shader/ShaderManager.js +0 -135
- package/src/engine/graphics/particles/particular/engine/shader/debugAtlas.d.ts +0 -7
- package/src/engine/graphics/particles/particular/engine/shader/debugAtlas.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/shader/debugAtlas.js +0 -14
- package/src/engine/graphics/particles/particular/engine/simulator/AbstractSimulationStep.d.ts +0 -41
- package/src/engine/graphics/particles/particular/engine/simulator/AbstractSimulationStep.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/simulator/AbstractSimulationStep.js +0 -59
- package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepApplyForce.d.ts +0 -4
- package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepApplyForce.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepApplyForce.js +0 -56
- package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepCurlNoiseAcceleration.d.ts +0 -4
- package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepCurlNoiseAcceleration.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepCurlNoiseAcceleration.js +0 -84
- package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepCurlNoiseVelocity.d.ts +0 -4
- package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepCurlNoiseVelocity.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepCurlNoiseVelocity.js +0 -80
- package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepDefinition.d.ts +0 -29
- package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepDefinition.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepDefinition.js +0 -43
- package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepFixedPhysics.d.ts +0 -5
- package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepFixedPhysics.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepFixedPhysics.js +0 -104
- package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepType.d.ts +0 -9
- package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepType.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepType.js +0 -11
- package/src/engine/graphics/particles/particular/engine/simulator/update_parameters.d.ts +0 -9
- package/src/engine/graphics/particles/particular/engine/simulator/update_parameters.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/simulator/update_parameters.js +0 -64
- package/src/engine/graphics/particles/particular/engine/utils/distributeParticlesOnObject3D.d.ts +0 -9
- package/src/engine/graphics/particles/particular/engine/utils/distributeParticlesOnObject3D.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/utils/distributeParticlesOnObject3D.js +0 -172
- package/src/engine/graphics/particles/particular/engine/utils/distribute_points_on_indexed_triangles.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/utils/distrubuteParticlesOnMesh.d.ts +0 -20
- package/src/engine/graphics/particles/particular/engine/utils/distrubuteParticlesOnMesh.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/utils/distrubuteParticlesOnMesh.js +0 -84
- package/src/engine/graphics/particles/particular/engine/utils/volume/AttributeValue.d.ts +0 -81
- package/src/engine/graphics/particles/particular/engine/utils/volume/AttributeValue.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/utils/volume/AttributeValue.js +0 -200
- package/src/engine/graphics/particles/particular/engine/utils/volume/SamplingFunctionKind.d.ts +0 -6
- package/src/engine/graphics/particles/particular/engine/utils/volume/SamplingFunctionKind.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/utils/volume/SamplingFunctionKind.js +0 -8
- package/src/engine/graphics/particles/particular/engine/utils/volume/lut_to_sampler.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/group/Operation.d.ts +0 -20
- package/src/engine/graphics/particles/particular/group/Operation.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/group/Operation.js +0 -20
- package/src/engine/graphics/particles/particular/group/OperationType.d.ts +0 -7
- package/src/engine/graphics/particles/particular/group/OperationType.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/group/OperationType.js +0 -9
- package/src/engine/graphics/particles/particular/group/ParticleAttribute.d.ts +0 -27
- package/src/engine/graphics/particles/particular/group/ParticleAttribute.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/group/ParticleAttribute.js +0 -27
- package/src/engine/graphics/particles/particular/group/ParticleAttributeType.d.ts +0 -8
- package/src/engine/graphics/particles/particular/group/ParticleAttributeType.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/group/ParticleAttributeType.js +0 -11
- package/src/engine/graphics/particles/particular/group/ParticleDataType.d.ts +0 -7
- package/src/engine/graphics/particles/particular/group/ParticleDataType.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/group/ParticleDataType.js +0 -10
- package/src/engine/graphics/particles/particular/group/ParticleSpecification.d.ts +0 -24
- package/src/engine/graphics/particles/particular/group/ParticleSpecification.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/group/ParticleSpecification.js +0 -48
- package/src/engine/graphics/particles/particular/group/itemSizeFromAttributeType.d.ts +0 -7
- package/src/engine/graphics/particles/particular/group/itemSizeFromAttributeType.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/group/itemSizeFromAttributeType.js +0 -20
- package/src/engine/graphics/particles/particular/group/optimizeCommandQueue.d.ts +0 -6
- package/src/engine/graphics/particles/particular/group/optimizeCommandQueue.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/group/optimizeCommandQueue.js +0 -162
- package/src/engine/graphics/particles/particular/group/typedArrayConstructorFromDataType.d.ts +0 -8
- package/src/engine/graphics/particles/particular/group/typedArrayConstructorFromDataType.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/group/typedArrayConstructorFromDataType.js +0 -19
- package/src/engine/graphics3/ParticleEmitterSystem.d.ts +0 -77
- package/src/engine/graphics3/ParticleEmitterSystem.d.ts.map +0 -1
- package/src/engine/graphics3/ParticleEmitterSystem.js +0 -307
- package/src/engine/graphics3/ParticleEmitterSystem3.d.ts +0 -10
- package/src/engine/graphics3/ParticleEmitterSystem3.d.ts.map +0 -1
- package/src/engine/graphics3/ParticleEmitterSystem3.js +0 -10
- package/src/engine/graphics3/particles/GPUParticularRenderer.d.ts +0 -61
- package/src/engine/graphics3/particles/GPUParticularRenderer.d.ts.map +0 -1
- package/src/engine/graphics3/particles/GPUParticularRenderer.js +0 -627
- package/src/engine/graphics3/particles/particle_gpu_records.d.ts +0 -85
- package/src/engine/graphics3/particles/particle_gpu_records.d.ts.map +0 -1
- package/src/engine/graphics3/particles/particle_gpu_records.js +0 -227
- package/src/shade/renderer/particles/shaders/shader_particle_render.d.ts +0 -35
- package/src/shade/renderer/particles/shaders/shader_particle_render.d.ts.map +0 -1
- package/src/shade/renderer/particles/shaders/shader_particle_render.js +0 -135
- /package/src/engine/graphics/{particles/particular/engine/utils → geometry}/distribute_points_on_indexed_triangles.d.ts +0 -0
|
@@ -89,9 +89,6 @@ export function apply_particle_effect(emitter: ParticleEmitter, effect: Particle
|
|
|
89
89
|
* inside the renderer, driven from the emitter table these rows are in — see
|
|
90
90
|
* `shade/renderer/particles/DESIGN.md`. This system's whole contribution is membership, placement,
|
|
91
91
|
* the fields, and the sprite sheet.
|
|
92
|
-
*
|
|
93
|
-
* It also does not retire the CPU `ParticleEmitterSystem`, which serves the `particular` effects the
|
|
94
|
-
* game still ships. The two coexist and share nothing.
|
|
95
92
|
*/
|
|
96
93
|
export class GPUParticleEmitterSystem extends System<any> {
|
|
97
94
|
/**
|
|
@@ -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":"AAszBA;;;;;;;;;;;;;;;;GAgBG;AACH,+CAJW,eAAe,UACf,cAAc,GACZ,OAAO,CA4BnB;AAv0BD;;;;GAIG;AAEH;;;;;;;;;;;;GAYG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDG;AACH;IAoDI;;;;;OAKG;IACH,sBALW,OAAO,qBAAqB,EAAE,cAAc,SAC5C,OAAO,qCAAqC,EAAE,KAAK,gEAgB7D;IArED,6DAA6C;IAE7C;;;OAGG;IACH,OAFU,YAAY,CAEO;IAiE7B;;;;;;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;IA6BD,+BAA+B;IAC/B,YADc,QAAQ,IAAI,CAAC,CAyB1B;IAED;;;;OAIG;IACH,aAJW,cAAc,aACd,WAAW,UACX,MAAM,QAqChB;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,CAqChB;;CAiWJ;;;;;gBAxxBa,MAAM;;;;WACN,OAAO,yCAAyC,EAAE,UAAU,GAAC,IAAI;;;YAKjE,MAAM;;;;YACN,cAAc;;;;eACd,WAAW;;;;aACX,eAAe,GAAC,IAAI;;;;;aACpB,OAAO,+CAA+C,EAAE,eAAe,GAAC,IAAI;gCAGjE,IAAI;;;;SACf,MAAM,GAAC,IAAI;;;;aACX,oBAAoB,GAAC,IAAI;;gCAvCP,2DAA2D;+BAS5D,6CAA6C;uBAPrD,kBAAkB;4BAEb,iCAAiC;6BAMhC,2CAA2C"}
|
|
@@ -99,9 +99,6 @@ const BURST_QUEUE_LIMIT = 256;
|
|
|
99
99
|
* inside the renderer, driven from the emitter table these rows are in — see
|
|
100
100
|
* `shade/renderer/particles/DESIGN.md`. This system's whole contribution is membership, placement,
|
|
101
101
|
* the fields, and the sprite sheet.
|
|
102
|
-
*
|
|
103
|
-
* It also does not retire the CPU `ParticleEmitterSystem`, which serves the `particular` effects the
|
|
104
|
-
* game still ships. The two coexist and share nothing.
|
|
105
102
|
*/
|
|
106
103
|
export class GPUParticleEmitterSystem extends System {
|
|
107
104
|
dependencies = [ParticleEffect, Transform64];
|
|
@@ -140,7 +140,7 @@ export class NetworkSession {
|
|
|
140
140
|
* Default 4. See {@link ServerAuthoritativeServer}.
|
|
141
141
|
* - `tick_rate_hz`: the network tick rate, which is the engine's fixed-step
|
|
142
142
|
* rate — given, it sets `entity_manager.fixedUpdateStepSize`; omitted, the
|
|
143
|
-
* session uses the step the engine already has
|
|
143
|
+
* session uses the step the engine already has. Every
|
|
144
144
|
* peer must run the same rate.
|
|
145
145
|
* - `frame_capacity` sizes the action-log ring (rollback depth + back-fill
|
|
146
146
|
* range + retransmit window — see {@link DEFAULT_ACTION_LOG_FRAME_CAPACITY}).
|
|
@@ -747,7 +747,7 @@ export class NetworkSession {
|
|
|
747
747
|
* Default 4. See {@link ServerAuthoritativeServer}.
|
|
748
748
|
* - `tick_rate_hz`: the network tick rate, which is the engine's fixed-step
|
|
749
749
|
* rate — given, it sets `entity_manager.fixedUpdateStepSize`; omitted, the
|
|
750
|
-
* session uses the step the engine already has
|
|
750
|
+
* session uses the step the engine already has. Every
|
|
751
751
|
* peer must run the same rate.
|
|
752
752
|
* - `frame_capacity` sizes the action-log ring (rollback depth + back-fill
|
|
753
753
|
* range + retransmit window — see {@link DEFAULT_ACTION_LOG_FRAME_CAPACITY}).
|
|
@@ -3869,3 +3869,118 @@ The slack now carries a relative term of two ulps as well as the constant. It
|
|
|
3869
3869
|
fails without it, and only for a cloth grazing a face: a query box as wide as
|
|
3870
3870
|
the collider survives losing one side, which is why the first spec written for
|
|
3871
3871
|
this passed and pinned nothing.
|
|
3872
|
+
|
|
3873
|
+
---
|
|
3874
|
+
|
|
3875
|
+
## 60. Every particle paid for a contact, and the loop paying most was not the one named
|
|
3876
|
+
|
|
3877
|
+
The 2026-09-18 engine review (CPX-018) said `cloth_contact_warm_start` and
|
|
3878
|
+
`cloth_contact_dual_update` sweep every particle's four slots — once a substep
|
|
3879
|
+
and once an iteration — to find the few that hold a row, and proposed a compact
|
|
3880
|
+
list of occupied slots, emitted by `cloth_contact_find`, for them to walk
|
|
3881
|
+
instead. The sweep is real. What it costs is about a per cent, and the loop
|
|
3882
|
+
that does cost is a third one the review did not name: `cloth_contact_accumulate`,
|
|
3883
|
+
which the vertex solve calls for every particle every iteration, and which set up
|
|
3884
|
+
a contact's whole working set before it looked at a slot.
|
|
3885
|
+
|
|
3886
|
+
**How it was measured.** Nothing under `__fixtures__` can see it: the library
|
|
3887
|
+
bench steps with a null collider table (§58), and §23's harness times a whole
|
|
3888
|
+
step once per variant. So both numbers here come from scratch harnesses over
|
|
3889
|
+
§23's hanging sheet at three sizes, paired and interleaved in one process with the
|
|
3890
|
+
arm order rotated and reversed every round. Each variant runs on its own copy of
|
|
3891
|
+
`cloth_step` → `cloth_solve_vertex` → `cloth_contact_row`, beside an unmodified
|
|
3892
|
+
copy as a control — a patched copy gets its own compiled code, and without the
|
|
3893
|
+
control that difference reads as a result. Every arm computes the same thing,
|
|
3894
|
+
and the states agree byte for byte after every run, which is how the harness
|
|
3895
|
+
knows it timed the same work.
|
|
3896
|
+
|
|
3897
|
+
The two passes the review named, with a timer around each call inside the
|
|
3898
|
+
running step:
|
|
3899
|
+
|
|
3900
|
+
```
|
|
3901
|
+
rows the passes compact list slot-0 test
|
|
3902
|
+
(share of step) saves saves
|
|
3903
|
+
400 p 2×4, 4 spheres 22 1.8% 1.3% 1.1%
|
|
3904
|
+
1024 p 2×4, 1 sphere 6 1.3% 1.2% 1.0%
|
|
3905
|
+
1024 p 2×4, 20 spheres 137 2.0% 1.1% 0.9%
|
|
3906
|
+
1024 p 2×4, out of reach 0 1.3% 1.3% 1.0%
|
|
3907
|
+
8100 p 4×2, 6 spheres 93 1.4% 1.2% 1.0%
|
|
3908
|
+
```
|
|
3909
|
+
|
|
3910
|
+
**Flat in the particle count**, because the passes and the step are both linear
|
|
3911
|
+
in particles — the review's 8,000-particle garment is the same share as a
|
|
3912
|
+
400-particle one. And the whole step, one change at a time, as a ratio to the
|
|
3913
|
+
shipping step:
|
|
3914
|
+
|
|
3915
|
+
```
|
|
3916
|
+
rows copy the the both contact path
|
|
3917
|
+
control passes accumulate withheld
|
|
3918
|
+
400 p 2×4, out of reach 0 1.009 1.023 0.988 0.980 0.964
|
|
3919
|
+
1024 p 2×4, out of reach 0 1.013 1.006 0.975 0.965 0.946
|
|
3920
|
+
8100 p 4×2, out of reach 0 0.982 0.974 0.989 0.975 0.947
|
|
3921
|
+
400 p 2×4, 4 spheres 22 0.994 0.982 0.905 0.890 —
|
|
3922
|
+
1024 p 2×4, 20 spheres 156 0.984 0.994 0.937 0.907 —
|
|
3923
|
+
8100 p 4×2, 6 spheres 116 1.035 0.990 0.936 0.901 —
|
|
3924
|
+
```
|
|
3925
|
+
|
|
3926
|
+
The passes alone do not clear the control's ±3.5%, which is the timer's one per
|
|
3927
|
+
cent agreeing with it. **The accumulate is the cost: 6% to 9.5% of a colliding
|
|
3928
|
+
step**, and 1% to 2.5% of one with no rows. Why an untouched particle costs more
|
|
3929
|
+
on a cloth that has contacts somewhere is a reading rather than a measurement:
|
|
3930
|
+
only then is the friction path compiled in, and the function loaded three
|
|
3931
|
+
positions, six arrays and ten accumulator words — writing the ten straight back —
|
|
3932
|
+
for every particle before it looked at a slot.
|
|
3933
|
+
|
|
3934
|
+
The last column withholds the collider table from `cloth_step` when there are no
|
|
3935
|
+
rows, which is an exact deletion there, and it prices the idle contact path at
|
|
3936
|
+
**3.6% to 5.4%**. §23 put the same thing at +1.1%; that figure was a difference of
|
|
3937
|
+
two separately run minima inside its own table's ±5%, and should not be read as
|
|
3938
|
+
a bound.
|
|
3939
|
+
|
|
3940
|
+
### What changed
|
|
3941
|
+
|
|
3942
|
+
A particle's rows were already its leading slots: `cloth_contact_find` clears all
|
|
3943
|
+
four and fills from the first. The accumulate, the warm start and the dual
|
|
3944
|
+
update now read them that way — an empty first slot is a particle with no
|
|
3945
|
+
contact and costs the load that says so, and the first empty slot ends a
|
|
3946
|
+
particle's rows. The contract is written on `CLOTH_CONTACT_SLOTS` and pinned by a
|
|
3947
|
+
spec that walks five colliders in and out of reach of one particle, more than
|
|
3948
|
+
there are slots and with the survivors changing places. A `cloth_contact_find`
|
|
3949
|
+
that right-aligns its rows fails it, and eleven other contact specs with it.
|
|
3950
|
+
|
|
3951
|
+
Before and after, on the code as landed — two "after" arms, so their
|
|
3952
|
+
disagreement is the reading's precision:
|
|
3953
|
+
|
|
3954
|
+
```
|
|
3955
|
+
rows before after after, second copy
|
|
3956
|
+
400 p 2×4, out of reach 0 1.921 ms 0.924 0.918
|
|
3957
|
+
1024 p 2×4, out of reach 0 4.940 ms 0.931 0.945
|
|
3958
|
+
8100 p 4×2, out of reach 0 63.00 ms 0.942 0.951
|
|
3959
|
+
400 p 2×4, 4 spheres 22 2.802 ms 0.897 0.909
|
|
3960
|
+
1024 p 2×4, 20 spheres 156 5.576 ms 0.872 0.902
|
|
3961
|
+
8100 p 4×2, 6 spheres 116 70.46 ms 0.961 0.919
|
|
3962
|
+
```
|
|
3963
|
+
|
|
3964
|
+
**About a tenth off a colliding step, and a twentieth off an idle one**: across
|
|
3965
|
+
this run and an earlier one at three times the background load, the twelve
|
|
3966
|
+
colliding readings have a median of 0.90 and the twelve idle ones 0.95.
|
|
3967
|
+
|
|
3968
|
+
### Not done, and why
|
|
3969
|
+
|
|
3970
|
+
- **The compact list.** It needs a new `ClothState` region — 16 bytes a particle,
|
|
3971
|
+
and the worker's shared layout with it — for the passes' one per cent, and it
|
|
3972
|
+
cannot reach the accumulate at all: that loop is driven one particle at a time
|
|
3973
|
+
by the colour sweep, not by a list of slots.
|
|
3974
|
+
- **The self-collision scratch keeps its `fill(0)`.** The review proposed clearing
|
|
3975
|
+
only the particles the pair list touches. At §33's pair counts — 318 to 740 on
|
|
3976
|
+
400 particles — that measured 2.2 to 5.2 µs an iteration against the fill's
|
|
3977
|
+
0.14, which is a 29 KB memset. And clearing from the *current* list goes stale:
|
|
3978
|
+
the list is rebuilt every step, so a particle that has left a pair keeps last
|
|
3979
|
+
step's force.
|
|
3980
|
+
- **Withholding the table when `cloth_contact_find` returns nothing.** Exact where
|
|
3981
|
+
it applies, and priced above, but since §59 a collider reaches the table only
|
|
3982
|
+
within reach of the cloth's bounds, so a table with no rows in it is a passing
|
|
3983
|
+
moment, and the slot-0 test already takes most of it.
|
|
3984
|
+
|
|
3985
|
+
**No library entry is re-sized.** Its bench cannot see a collider (§58), and a
|
|
3986
|
+
garment on a body is the colliding half of the tables above.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloth_contact_find.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/physics/cloth/solver/cloth_contact_find.js"],"names":[],"mappings":"AAgHA;;;;;;;;;;;;;;;;;;GAkBG;AACH,6DARW,YAAY,GAAC,YAAY,QACzB,UAAU,SACV,MAAM,MACN,MAAM,GAGJ,MAAM,
|
|
1
|
+
{"version":3,"file":"cloth_contact_find.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/physics/cloth/solver/cloth_contact_find.js"],"names":[],"mappings":"AAgHA;;;;;;;;;;;;;;;;;;GAkBG;AACH,6DARW,YAAY,GAAC,YAAY,QACzB,UAAU,SACV,MAAM,MACN,MAAM,GAGJ,MAAM,CAqLlB;AA/RD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2EG;AAEH;;;;;;;;;GASG;AACH,mCAFU,MAAM,CAEsB"}
|
|
@@ -264,6 +264,8 @@ export function cloth_contact_find(state, table, keys, count, dt) {
|
|
|
264
264
|
}
|
|
265
265
|
}
|
|
266
266
|
|
|
267
|
+
// Into the leading slots and nothing after them: the rows read the first
|
|
268
|
+
// empty slot as the end of a particle's contacts (CLOTH_CONTACT_SLOTS).
|
|
267
269
|
for (let s = 0; s < found; s++) {
|
|
268
270
|
const slot = base + s;
|
|
269
271
|
|
|
@@ -116,6 +116,15 @@ export function cloth_contact_dual_update(state: ClothState, table: Float32Array
|
|
|
116
116
|
* accumulation is a counted loop over `CLOTH_CONTACT_SLOTS` adjacent entries,
|
|
117
117
|
* and a per-cloth capacity would put a load and a multiply in the inner loop to
|
|
118
118
|
* buy a garment nothing.
|
|
119
|
+
*
|
|
120
|
+
* **A particle's rows are its leading slots.** `cloth_contact_find` fills them
|
|
121
|
+
* from the first and leaves every slot after the last row empty, and every loop
|
|
122
|
+
* over them reads it that way: an empty first slot is a particle with no
|
|
123
|
+
* contact, and the first empty slot is the end of a particle's rows. That is
|
|
124
|
+
* what lets a particle touching nothing cost one load. Most particles of a
|
|
125
|
+
* colliding cloth touch nothing, the accumulation visits every one of them every
|
|
126
|
+
* iteration, and setting up a contact's working set for each of them was 6–9% of
|
|
127
|
+
* the step (`MEASUREMENTS.md` §60).
|
|
119
128
|
* @type {number}
|
|
120
129
|
*/
|
|
121
130
|
export const CLOTH_CONTACT_SLOTS: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloth_contact_row.d.ts","sourceRoot":"","sources":["../../../../../../../src/engine/physics/cloth/solver/constraint/cloth_contact_row.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cloth_contact_row.d.ts","sourceRoot":"","sources":["../../../../../../../src/engine/physics/cloth/solver/constraint/cloth_contact_row.js"],"names":[],"mappings":"AAuHA;;;;;;;;GAQG;AACH,sDANW,YAAY,+BAEZ,MAAM,SACN,YAAY,GAAC,YAAY,QA8LnC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,mEANW,MAAM,SACN,MAAM,eACN,MAAM,eACN,MAAM,qBACN,MAAM,QA8ChB;AAED;;;;;;;;;;;;;;;GAeG;AACH,oEALW,YAAY,GAAC,YAAY,QACzB,MAAM,eACN,MAAM,qBACN,MAAM,QAsGhB;AAxdD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2DG;AAEH;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,kCAFU,MAAM,CAEqB;AAErC;;;;;GAKG;AACH,qCAFU,MAAM,CAE2B"}
|
|
@@ -96,6 +96,15 @@ import {
|
|
|
96
96
|
* accumulation is a counted loop over `CLOTH_CONTACT_SLOTS` adjacent entries,
|
|
97
97
|
* and a per-cloth capacity would put a load and a multiply in the inner loop to
|
|
98
98
|
* buy a garment nothing.
|
|
99
|
+
*
|
|
100
|
+
* **A particle's rows are its leading slots.** `cloth_contact_find` fills them
|
|
101
|
+
* from the first and leaves every slot after the last row empty, and every loop
|
|
102
|
+
* over them reads it that way: an empty first slot is a particle with no
|
|
103
|
+
* contact, and the first empty slot is the end of a particle's rows. That is
|
|
104
|
+
* what lets a particle touching nothing cost one load. Most particles of a
|
|
105
|
+
* colliding cloth touch nothing, the accumulation visits every one of them every
|
|
106
|
+
* iteration, and setting up a contact's working set for each of them was 6–9% of
|
|
107
|
+
* the step (`MEASUREMENTS.md` §60).
|
|
99
108
|
* @type {number}
|
|
100
109
|
*/
|
|
101
110
|
export const CLOTH_CONTACT_SLOTS = 4;
|
|
@@ -122,6 +131,12 @@ export function cloth_contact_accumulate(accumulator, state, particle, table) {
|
|
|
122
131
|
|
|
123
132
|
const base = particle * CLOTH_CONTACT_SLOTS;
|
|
124
133
|
|
|
134
|
+
if (collider[base] < 0) {
|
|
135
|
+
// No contact, and it leaves before anything below is loaded — see
|
|
136
|
+
// CLOTH_CONTACT_SLOTS for why that is most particles.
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
|
|
125
140
|
const position = state.position;
|
|
126
141
|
|
|
127
142
|
const self = particle * 3;
|
|
@@ -157,7 +172,7 @@ export function cloth_contact_accumulate(accumulator, state, particle, table) {
|
|
|
157
172
|
const record = collider[slot];
|
|
158
173
|
|
|
159
174
|
if (record < 0) {
|
|
160
|
-
|
|
175
|
+
break;
|
|
161
176
|
}
|
|
162
177
|
|
|
163
178
|
const r = record * CCR_STRIDE;
|
|
@@ -330,6 +345,12 @@ export function cloth_contact_warm_start(state, alpha, gamma, k_min_ratio, k_max
|
|
|
330
345
|
const decay = alpha * gamma;
|
|
331
346
|
|
|
332
347
|
for (let particle = 0; particle < particle_count; particle++) {
|
|
348
|
+
const base = particle * CLOTH_CONTACT_SLOTS;
|
|
349
|
+
|
|
350
|
+
if (collider[base] < 0) {
|
|
351
|
+
continue;
|
|
352
|
+
}
|
|
353
|
+
|
|
333
354
|
const compliance = mass_inverse[particle];
|
|
334
355
|
|
|
335
356
|
if (compliance === 0) {
|
|
@@ -341,13 +362,11 @@ export function cloth_contact_warm_start(state, alpha, gamma, k_min_ratio, k_max
|
|
|
341
362
|
const lo = k_min_ratio * scale;
|
|
342
363
|
const hi = k_max_ratio * scale;
|
|
343
364
|
|
|
344
|
-
const base = particle * CLOTH_CONTACT_SLOTS;
|
|
345
|
-
|
|
346
365
|
for (let s = 0; s < CLOTH_CONTACT_SLOTS; s++) {
|
|
347
366
|
const slot = base + s;
|
|
348
367
|
|
|
349
368
|
if (collider[slot] < 0) {
|
|
350
|
-
|
|
369
|
+
break;
|
|
351
370
|
}
|
|
352
371
|
|
|
353
372
|
lambda[slot] *= decay;
|
|
@@ -390,14 +409,18 @@ export function cloth_contact_dual_update(state, table, beta, k_max_ratio, inver
|
|
|
390
409
|
const radius = state.contact_radius;
|
|
391
410
|
|
|
392
411
|
for (let particle = 0; particle < particle_count; particle++) {
|
|
412
|
+
const base = particle * CLOTH_CONTACT_SLOTS;
|
|
413
|
+
|
|
414
|
+
if (collider[base] < 0) {
|
|
415
|
+
continue;
|
|
416
|
+
}
|
|
417
|
+
|
|
393
418
|
const compliance = mass_inverse[particle];
|
|
394
419
|
|
|
395
420
|
if (compliance === 0) {
|
|
396
421
|
continue;
|
|
397
422
|
}
|
|
398
423
|
|
|
399
|
-
const base = particle * CLOTH_CONTACT_SLOTS;
|
|
400
|
-
|
|
401
424
|
const self = particle * 3;
|
|
402
425
|
|
|
403
426
|
const x = position[self];
|
|
@@ -412,7 +435,7 @@ export function cloth_contact_dual_update(state, table, beta, k_max_ratio, inver
|
|
|
412
435
|
const record = collider[slot];
|
|
413
436
|
|
|
414
437
|
if (record < 0) {
|
|
415
|
-
|
|
438
|
+
break;
|
|
416
439
|
}
|
|
417
440
|
|
|
418
441
|
const r = record * CCR_STRIDE;
|
|
@@ -64,11 +64,11 @@ export class FluidObstacleSystem extends System<any> {
|
|
|
64
64
|
/**
|
|
65
65
|
* @param {FluidComponent} fluid
|
|
66
66
|
*/
|
|
67
|
-
static "__#
|
|
67
|
+
static "__#413@#refresh_masks"(fluid: FluidComponent): void;
|
|
68
68
|
/**
|
|
69
69
|
* @param {FluidComponent} fluid
|
|
70
70
|
*/
|
|
71
|
-
static "__#
|
|
71
|
+
static "__#413@#clear_field"(fluid: FluidComponent): void;
|
|
72
72
|
/**
|
|
73
73
|
* Mark every cell of `fluid` whose centre lies within `inflation` of the
|
|
74
74
|
* posed shape as solid. Iteration is clipped to the shape's world AABB
|
|
@@ -80,7 +80,7 @@ export class FluidObstacleSystem extends System<any> {
|
|
|
80
80
|
* @param {number} inflation world-units SDF threshold
|
|
81
81
|
* @param {Float64Array} point length-3 scratch
|
|
82
82
|
*/
|
|
83
|
-
static "__#
|
|
83
|
+
static "__#413@#voxelize"(fluid: FluidComponent, posed: PosedShape3D, aabb: Float64Array, inflation: number, point: Float64Array): void;
|
|
84
84
|
/**
|
|
85
85
|
* Write the obstacle's translation velocity onto every face of every cell
|
|
86
86
|
* it voxelized — the moving-wall boundary condition. Runs AFTER the mask
|
|
@@ -100,7 +100,7 @@ export class FluidObstacleSystem extends System<any> {
|
|
|
100
100
|
* @param {number} wvy
|
|
101
101
|
* @param {number} wvz
|
|
102
102
|
*/
|
|
103
|
-
static "__#
|
|
103
|
+
static "__#413@#stamp_wall_velocity"(fluid: FluidComponent, posed: PosedShape3D, aabb: Float64Array, inflation: number, point: Float64Array, wvx: number, wvy: number, wvz: number): void;
|
|
104
104
|
constructor();
|
|
105
105
|
dependencies: (typeof FluidObstacle)[];
|
|
106
106
|
components_used: (ResourceAccessSpecification<typeof Transform64> | ResourceAccessSpecification<typeof RigidBody> | ResourceAccessSpecification<typeof Collider> | ResourceAccessSpecification<typeof FluidComponent> | ResourceAccessSpecification<typeof FluidObstacle>)[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AudioEmitterSystem.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/sound/ecs/audio/AudioEmitterSystem.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AudioEmitterSystem.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/sound/ecs/audio/AudioEmitterSystem.js"],"names":[],"mappings":"AAwBA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH;IAgCI;;;;;OAKG;IACH,0FAHW;QAAC,MAAM,CAAC,EAAC,MAAM,CAAC;QAAC,cAAc,CAAC,EAAC,MAAM,CAAC;QAAC,cAAc,CAAC,EAAC,MAAM,CAAA;KAAC,qBA+C1E;IAjFD,2DAA2C;IAE3C;;;;;OAKG;IACH,iBAFU,kBAAkB,CAEA;IAE5B;;;OAGG;IACH,cAFU,eAAe,CAEP;IAElB;;;;;OAKG;IACH,MAFU,MAAM,EAAE,CAER;IAEV;;;;OAIG;IACH,aAFU,sBAAoB,IAAI,CAEf;IAWf;;;;;OAKG;IACH,aAFU,oBAAkB,IAAI,CAEF;IAE9B;;OAEG;IACH,yBAA8B;IAE9B;;OAEG;IACH,iBAFU,YAAY,CAEoB;IAE1C;;OAEG;IACH,2BAAgC;IAQhC;;;OAGG;IACH,mBAAkF;IAElF;;;;OAIG;IACH,SAFU,cAAc,CAE4C;IAGxE;;;;OAIG;IACH,cAJW,YAAY,aACZ,WAAW,UACX,MAAM,QA4ChB;IAED;;;;OAIG;IACH,gBAJW,YAAY,aACZ,WAAW,UACX,MAAM,QA+BhB;IAED;;;;;;OAMG;IACH,oBAHW,MAAM,GACJ,gBAAc,IAAI,CAe9B;IAqDD,6BAoFC;;CACJ;uBAvXsB,wBAAwB;4BAGnB,uCAAuC;6BAKtC,mBAAmB;+BACjB,qBAAqB"}
|
|
@@ -11,6 +11,7 @@ import SoundListener from "../SoundListener.js";
|
|
|
11
11
|
import { AudioEmitter } from "./AudioEmitter.js";
|
|
12
12
|
import { LiveEmitterSet } from "./LiveEmitterSet.js";
|
|
13
13
|
import { EventType } from "../../../ecs/EventType.js";
|
|
14
|
+
import { TRANSFORM64_EVENT_CHANGE } from "../../../ecs/transform/TRANSFORM64_EVENT_CHANGE.js";
|
|
14
15
|
|
|
15
16
|
/**
|
|
16
17
|
* The listener's orientation, read out of its transform once a frame.
|
|
@@ -143,12 +144,19 @@ export class AudioEmitterSystem extends System {
|
|
|
143
144
|
// class doc.
|
|
144
145
|
const managed = emitter.autoplay && emitter.event.is3D && emitter.event.rootClip.loops();
|
|
145
146
|
|
|
146
|
-
const record = { emitter, transform, managed, instance: null, onVolume: null, onEnded: null };
|
|
147
|
+
const record = { emitter, transform, managed, instance: null, onVolume: null, onEnded: null, onMoved: null };
|
|
147
148
|
|
|
148
149
|
if (managed) {
|
|
149
150
|
const pathing = emitter.acoustic && this.acousticSim !== null && this.acousticSim.pathing;
|
|
150
151
|
this.liveSet.add(entity, emitter.event, transform.translation, volume2dB(emitter.volume.getValue()), emitter.acoustic, pathing, emitter.sourceRadius, transform.rotation, emitter.directivity);
|
|
151
152
|
record.onVolume = () => this.liveSet.setGainDb(entity, volume2dB(emitter.volume.getValue()));
|
|
153
|
+
|
|
154
|
+
// The live set reads the translation through a live view, but a Transform64 cannot say it
|
|
155
|
+
// was written - its writer announces that through the dataset. Refitting on the
|
|
156
|
+
// announcement is what keeps a dormant emitter free: one that never moves is never visited.
|
|
157
|
+
record.onMoved = () => this.liveSet.moved(entity);
|
|
158
|
+
|
|
159
|
+
this.entityManager.dataset.addEntityEventListener(entity, TRANSFORM64_EVENT_CHANGE, record.onMoved);
|
|
152
160
|
} else {
|
|
153
161
|
if (emitter.autoplay) {
|
|
154
162
|
record.instance = this.#play(emitter, transform, record);
|
|
@@ -191,6 +199,8 @@ export class AudioEmitterSystem extends System {
|
|
|
191
199
|
emitter.volume.onChanged.remove(record.onVolume);
|
|
192
200
|
|
|
193
201
|
if (record.managed) {
|
|
202
|
+
this.entityManager.dataset.removeEntityEventListener(entity, TRANSFORM64_EVENT_CHANGE, record.onMoved);
|
|
203
|
+
|
|
194
204
|
this.liveSet.remove(entity); // demotes (hard cut) if live, then unregisters
|
|
195
205
|
} else if (record.instance !== null) {
|
|
196
206
|
this.directInstances.delete(record.instance);
|
|
@@ -315,7 +325,7 @@ export class AudioEmitterSystem extends System {
|
|
|
315
325
|
}
|
|
316
326
|
}
|
|
317
327
|
|
|
318
|
-
// Promote/demote the spatial live set
|
|
328
|
+
// Promote/demote the spatial live set. Refresh BEFORE the tick so a
|
|
319
329
|
// freshly-promoted instance spatializes on the same frame. With no usable listener the live set
|
|
320
330
|
// is not refreshed: never-promoted managed emitters stay dormant, while any already-live ones
|
|
321
331
|
// keep playing against the last known listener pose until a listener returns. The direct (2D)
|
|
@@ -58,7 +58,7 @@ export class LiveEmitterSet {
|
|
|
58
58
|
* Register an emitter (dormant until a refresh promotes it).
|
|
59
59
|
* @param {number} entity
|
|
60
60
|
* @param {EventDescription} event
|
|
61
|
-
* @param {
|
|
61
|
+
* @param {Float64Array} position live translation view over the entity's transform; report its moves with {@link moved}
|
|
62
62
|
* @param {number} [gainDb] per-emitter instance gain in dB, applied on every promotion (default 0 = unity)
|
|
63
63
|
* @param {boolean} [acoustic] opt the promoted instances into the acoustic simulation (default false)
|
|
64
64
|
* @param {boolean} [pathing] opt the promoted instances into corner-leakage render (default false)
|
|
@@ -66,7 +66,16 @@ export class LiveEmitterSet {
|
|
|
66
66
|
* @param {Quaternion|null} [orientation] shared source orientation ref (tracks the entity), for directivity
|
|
67
67
|
* @param {AcousticDirectivity|null} [directivity] source radiation directivity (null = omni)
|
|
68
68
|
*/
|
|
69
|
-
add(entity: number, event: EventDescription, position:
|
|
69
|
+
add(entity: number, event: EventDescription, position: Float64Array, gainDb?: number, acoustic?: boolean, pathing?: boolean, sourceRadius?: number, orientation?: Quaternion | null, directivity?: AcousticDirectivity | null): void;
|
|
70
|
+
/**
|
|
71
|
+
* Report that a registered emitter moved, so the broadphase refits it. No-op for an unknown entity.
|
|
72
|
+
*
|
|
73
|
+
* The position is a live view, so whatever reads it reads the current value - what the set cannot
|
|
74
|
+
* do is notice that it was written. {@link refresh} considers only what this reported, which is
|
|
75
|
+
* what keeps a dormant emitter free: nothing visits it until it moves.
|
|
76
|
+
* @param {number} entity
|
|
77
|
+
*/
|
|
78
|
+
moved(entity: number): void;
|
|
70
79
|
/**
|
|
71
80
|
* Invoke `callback` for each currently-live instance (bounded by the budget). Used by the
|
|
72
81
|
* `AudioEmitterSystem` to feed live spatial instances to the acoustic simulation.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LiveEmitterSet.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/sound/ecs/audio/LiveEmitterSet.js"],"names":[],"mappings":"AAcA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH;IA2EI;;;OAGG;IACH,6EAFW;QAAC,MAAM,CAAC,EAAC,MAAM,CAAC;QAAC,cAAc,CAAC,EAAC,MAAM,CAAC;QAAC,cAAc,CAAC,EAAC,MAAM,CAAA;KAAC,EAO1E;IAED;;OAEG;IACH,wBAEC;IAED;;OAEG;IACH,mBAEC;IAED;;;OAGG;IACH,eAHW,MAAM,GACJ,OAAO,CAInB;IAED;;;OAGG;IACH,mBAHW,MAAM,GACJ,gBAAc,SAAS,CAInC;IAED;;;;;;;;;;;OAWG;IACH,YAVW,MAAM,
|
|
1
|
+
{"version":3,"file":"LiveEmitterSet.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/sound/ecs/audio/LiveEmitterSet.js"],"names":[],"mappings":"AAcA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH;IA2EI;;;OAGG;IACH,6EAFW;QAAC,MAAM,CAAC,EAAC,MAAM,CAAC;QAAC,cAAc,CAAC,EAAC,MAAM,CAAC;QAAC,cAAc,CAAC,EAAC,MAAM,CAAA;KAAC,EAO1E;IAED;;OAEG;IACH,wBAEC;IAED;;OAEG;IACH,mBAEC;IAED;;;OAGG;IACH,eAHW,MAAM,GACJ,OAAO,CAInB;IAED;;;OAGG;IACH,mBAHW,MAAM,GACJ,gBAAc,SAAS,CAInC;IAED;;;;;;;;;;;OAWG;IACH,YAVW,MAAM,qCAEN,YAAY,WACZ,MAAM,aACN,OAAO,YACP,OAAO,iBACP,MAAM,gBACN,aAAW,IAAI,gBACf,sBAAoB,IAAI,QAOlC;IAED;;;;;;;OAOG;IACH,cAFW,MAAM,QAIhB;IAED;;;;OAIG;IACH,+CAFmC,IAAI,QAMtC;IAED;;;;;;;OAOG;IACH,kBAHW,MAAM,UACN,MAAM,QAehB;IAED;;;OAGG;IACH,eAFW,MAAM,QAwBhB;IAED;;;;;;;OAOG;IACH,0BAFW,MAAM,EAAE,GAAC,YAAY,QA+D/B;;CAgFJ"}
|
|
@@ -75,7 +75,7 @@ export class LiveEmitterSet {
|
|
|
75
75
|
* entity -> { event, position, gainDb, playingSince }. `gainDb` is the per-emitter instance gain
|
|
76
76
|
* (e.g. the owning `AudioEmitter.volume` in dB) re-applied on every promotion so it survives a
|
|
77
77
|
* demote→re-promote cycle; `playingSince` carries the continuous-clock phase (see {@link add}).
|
|
78
|
-
* @type {Map<number, {event: EventDescription, position:
|
|
78
|
+
* @type {Map<number, {event: EventDescription, position: Float64Array, gainDb: number, playingSince: number, acoustic: boolean, pathing: boolean, sourceRadius: number, orientation: Quaternion|null, directivity: AcousticDirectivity|null}>}
|
|
79
79
|
*/
|
|
80
80
|
#emitters = new Map();
|
|
81
81
|
|
|
@@ -160,7 +160,7 @@ export class LiveEmitterSet {
|
|
|
160
160
|
* Register an emitter (dormant until a refresh promotes it).
|
|
161
161
|
* @param {number} entity
|
|
162
162
|
* @param {EventDescription} event
|
|
163
|
-
* @param {
|
|
163
|
+
* @param {Float64Array} position live translation view over the entity's transform; report its moves with {@link moved}
|
|
164
164
|
* @param {number} [gainDb] per-emitter instance gain in dB, applied on every promotion (default 0 = unity)
|
|
165
165
|
* @param {boolean} [acoustic] opt the promoted instances into the acoustic simulation (default false)
|
|
166
166
|
* @param {boolean} [pathing] opt the promoted instances into corner-leakage render (default false)
|
|
@@ -175,6 +175,18 @@ export class LiveEmitterSet {
|
|
|
175
175
|
this.#emitters.set(entity, { event, position, gainDb, playingSince: this.#sopra.currentTime, acoustic, pathing, sourceRadius, orientation, directivity });
|
|
176
176
|
}
|
|
177
177
|
|
|
178
|
+
/**
|
|
179
|
+
* Report that a registered emitter moved, so the broadphase refits it. No-op for an unknown entity.
|
|
180
|
+
*
|
|
181
|
+
* The position is a live view, so whatever reads it reads the current value - what the set cannot
|
|
182
|
+
* do is notice that it was written. {@link refresh} considers only what this reported, which is
|
|
183
|
+
* what keeps a dormant emitter free: nothing visits it until it moves.
|
|
184
|
+
* @param {number} entity
|
|
185
|
+
*/
|
|
186
|
+
moved(entity) {
|
|
187
|
+
this.#index.refresh(entity);
|
|
188
|
+
}
|
|
189
|
+
|
|
178
190
|
/**
|
|
179
191
|
* Invoke `callback` for each currently-live instance (bounded by the budget). Used by the
|
|
180
192
|
* `AudioEmitterSystem` to feed live spatial instances to the acoustic simulation.
|
|
@@ -246,11 +258,6 @@ export class LiveEmitterSet {
|
|
|
246
258
|
* @param {number[]|Float64Array} listenerPosition reads 3 elements
|
|
247
259
|
*/
|
|
248
260
|
refresh(listenerPosition) {
|
|
249
|
-
// The translations are live views over the entities' transforms, so the positions are
|
|
250
|
-
// already current - only the BVH leaves are stale, and a transform has no signal to refit
|
|
251
|
-
// them on. One pass here costs what the per-move refits cost before.
|
|
252
|
-
this.#index.refresh_all();
|
|
253
|
-
|
|
254
261
|
const candidates = this.#candidates;
|
|
255
262
|
const candidateCount = this.#index.queryAudible(candidates, 0, listenerPosition);
|
|
256
263
|
|
|
@@ -8,9 +8,10 @@
|
|
|
8
8
|
* `EventInstance`, no WebAudio nodes, no per-frame work. Promoting in-range emitters to live instances
|
|
9
9
|
* (voice slots, stealing, fades) is layered on top later; this class only answers the cull.
|
|
10
10
|
*
|
|
11
|
-
* Leaf bounds track the emitter
|
|
12
|
-
*
|
|
13
|
-
*
|
|
11
|
+
* Leaf bounds track the emitter on demand: a position is a live view with no signal of its own, so the
|
|
12
|
+
* owner calls {@link refresh} for an entity when the dataset announces its transform changed. A still
|
|
13
|
+
* emitter costs nothing per frame and a moving one refits only when it actually moves. (meep is fully
|
|
14
|
+
* dynamic — there is no static/dynamic distinction and no per-tick refit loop.)
|
|
14
15
|
*
|
|
15
16
|
* The cull is conservative: the leaf is a cube of half-extent `distanceMax`, so its corners admit a
|
|
16
17
|
* few emitters whose true (spherical) distance slightly exceeds `distanceMax`. That is correct
|
|
@@ -56,7 +57,7 @@ export class SpatialAudioIndex {
|
|
|
56
57
|
*/
|
|
57
58
|
queryAudible(out: number[], out_offset: number, listenerPosition: Vector3): number;
|
|
58
59
|
/**
|
|
59
|
-
* Re-fit the entity's leaf to its current pose.
|
|
60
|
+
* Re-fit the entity's leaf to its current pose. No-op for an unknown entity.
|
|
60
61
|
*
|
|
61
62
|
* The translation this index holds is a live view over the transform's buffer, so it is already
|
|
62
63
|
* up to date - what it cannot do is announce itself. The owner calls this when the dataset says
|
|
@@ -64,17 +65,7 @@ export class SpatialAudioIndex {
|
|
|
64
65
|
*
|
|
65
66
|
* @param {number} entity
|
|
66
67
|
*/
|
|
67
|
-
|
|
68
|
-
* Re-fit every leaf.
|
|
69
|
-
*
|
|
70
|
-
* The translations are live views over their transforms, so the data is already current - what
|
|
71
|
-
* is stale is the leaf AABB in the BVH. One pass per tick costs what the per-move refits cost
|
|
72
|
-
* before, and it is what the emitters' own "next tick re-attenuates" behaviour expects.
|
|
73
|
-
*
|
|
74
|
-
* @returns {void}
|
|
75
|
-
*/
|
|
76
|
-
refresh_all(): void;
|
|
77
|
-
refresh(entity: any): void;
|
|
68
|
+
refresh(entity: number): void;
|
|
78
69
|
#private;
|
|
79
70
|
}
|
|
80
71
|
//# sourceMappingURL=SpatialAudioIndex.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SpatialAudioIndex.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/sound/ecs/audio/SpatialAudioIndex.js"],"names":[],"mappings":"AAKA
|
|
1
|
+
{"version":3,"file":"SpatialAudioIndex.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/sound/ecs/audio/SpatialAudioIndex.js"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;;;;;GAkBG;AACH;IAyBI;;OAEG;IACH,mBAEC;IAED;;;OAGG;IACH,YAHW,MAAM,GACJ,OAAO,CAInB;IAED;;;;;;;;OAQG;IACH,YALW,MAAM,qCAEN,YAAY,QAgBtB;IAED;;;;OAIG;IACH,eAFW,MAAM,QAYhB;IAiBD;;;;;;;;;;;OAWG;IACH,kBALW,MAAM,EAAE,cACR,MAAM,8BAEJ,MAAM,CASlB;IAED;;;;;;;;OAQG;IACH,gBAFW,MAAM,QAUhB;;CAEJ"}
|