@woosh/meep-engine 3.16.0 → 3.17.1
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/README.md +8 -72
- package/editor/particles/effect/ParticleEffectDocument.d.ts +21 -6
- package/editor/particles/effect/ParticleEffectDocument.d.ts.map +1 -1
- package/editor/particles/effect/ParticleEffectDocument.js +38 -17
- package/editor/view/node-graph/NodeGraphClipboard.d.ts +186 -0
- package/editor/view/node-graph/NodeGraphClipboard.d.ts.map +1 -0
- package/editor/view/node-graph/NodeGraphClipboard.js +231 -0
- package/editor/view/node-graph/NodeGraphEditorView.d.ts +59 -1
- package/editor/view/node-graph/NodeGraphEditorView.d.ts.map +1 -1
- package/editor/view/node-graph/NodeGraphEditorView.js +248 -5
- package/editor/view/node-graph/NodeGraphView.d.ts.map +1 -1
- package/editor/view/node-graph/NodeGraphView.js +84 -8
- package/editor/view/node-graph/actions/connection_bind_actions.d.ts +23 -0
- package/editor/view/node-graph/actions/connection_bind_actions.d.ts.map +1 -0
- package/editor/view/node-graph/actions/connection_bind_actions.js +39 -0
- package/editor/view/particles/effect/ParticleCodeEditorView.d.ts.map +1 -1
- package/editor/view/particles/effect/ParticleCodeEditorView.js +4 -3
- package/editor/view/particles/effect/ParticleCurveEditorView.d.ts +20 -0
- package/editor/view/particles/effect/ParticleCurveEditorView.d.ts.map +1 -0
- package/editor/view/particles/effect/ParticleCurveEditorView.js +574 -0
- package/editor/view/particles/effect/ParticleEmitterInspectorView.d.ts.map +1 -1
- package/editor/view/particles/effect/ParticleEmitterInspectorView.js +27 -1
- package/editor/view/particles/effect/ParticleGradientEditorView.d.ts +24 -0
- package/editor/view/particles/effect/ParticleGradientEditorView.d.ts.map +1 -0
- package/editor/view/particles/effect/ParticleGradientEditorView.js +472 -0
- package/editor/view/particles/effect/ParticleGraphEditorView.d.ts +5 -0
- package/editor/view/particles/effect/ParticleGraphEditorView.d.ts.map +1 -1
- package/editor/view/particles/effect/ParticleGraphEditorView.js +61 -31
- package/editor/view/particles/effect/ParticleNodeParametersView.d.ts.map +1 -1
- package/editor/view/particles/effect/ParticleNodeParametersView.js +33 -0
- package/editor/view/particles/effect/particle-editor.css +123 -35
- package/package.json +1 -1
- package/src/core/binary/allocator/OffsetAllocator.d.ts +25 -16
- package/src/core/binary/allocator/OffsetAllocator.d.ts.map +1 -1
- package/src/core/binary/allocator/OffsetAllocator.js +10 -1
- package/src/core/collection/array/typed/float32_array_hash.d.ts +21 -0
- package/src/core/collection/array/typed/float32_array_hash.d.ts.map +1 -0
- package/src/core/collection/array/typed/float32_array_hash.js +38 -0
- package/src/core/graph/csr/CSRGraph.d.ts +8 -1
- package/src/core/graph/csr/CSRGraph.d.ts.map +1 -1
- package/src/core/graph/csr/CSRGraph.js +14 -6
- package/src/core/model/node-graph/visual/layout/LayoutProblem.d.ts +24 -0
- package/src/core/model/node-graph/visual/layout/LayoutProblem.d.ts.map +1 -1
- package/src/core/model/node-graph/visual/layout/LayoutProblem.js +27 -0
- package/src/core/model/node-graph/visual/layout/NodeGraphLayoutOptions.d.ts +26 -0
- package/src/core/model/node-graph/visual/layout/NodeGraphLayoutOptions.d.ts.map +1 -1
- package/src/core/model/node-graph/visual/layout/NodeGraphLayoutOptions.js +28 -0
- package/src/core/model/node-graph/visual/layout/RouteGrid.d.ts +92 -3
- package/src/core/model/node-graph/visual/layout/RouteGrid.d.ts.map +1 -1
- package/src/core/model/node-graph/visual/layout/RouteGrid.js +405 -242
- package/src/core/model/node-graph/visual/layout/RouteSearch.d.ts +50 -5
- package/src/core/model/node-graph/visual/layout/RouteSearch.d.ts.map +1 -1
- package/src/core/model/node-graph/visual/layout/RouteSearch.js +160 -24
- package/src/core/model/node-graph/visual/layout/RouteSet.d.ts +7 -0
- package/src/core/model/node-graph/visual/layout/RouteSet.d.ts.map +1 -1
- package/src/core/model/node-graph/visual/layout/RouteSet.js +8 -0
- package/src/core/model/node-graph/visual/layout/layout_assign_coordinates.js +9 -3
- package/src/core/model/node-graph/visual/layout/layout_build_problem.d.ts.map +1 -1
- package/src/core/model/node-graph/visual/layout/layout_build_problem.js +7 -0
- package/src/core/model/node-graph/visual/layout/layout_insert_lanes.d.ts +9 -3
- package/src/core/model/node-graph/visual/layout/layout_insert_lanes.d.ts.map +1 -1
- package/src/core/model/node-graph/visual/layout/layout_insert_lanes.js +17 -3
- package/src/core/model/node-graph/visual/layout/layout_node_graph.d.ts +9 -6
- package/src/core/model/node-graph/visual/layout/layout_node_graph.d.ts.map +1 -1
- package/src/core/model/node-graph/visual/layout/layout_node_graph.js +49 -7
- package/src/core/model/node-graph/visual/layout/layout_order_layers.d.ts +11 -1
- package/src/core/model/node-graph/visual/layout/layout_order_layers.d.ts.map +1 -1
- package/src/core/model/node-graph/visual/layout/layout_order_layers.js +135 -16
- package/src/core/model/node-graph/visual/layout/route_connections.d.ts +29 -0
- package/src/core/model/node-graph/visual/layout/route_connections.d.ts.map +1 -1
- package/src/core/model/node-graph/visual/layout/route_connections.js +716 -309
- package/src/core/model/node-graph/visual/layout/route_grid_build.d.ts +3 -2
- package/src/core/model/node-graph/visual/layout/route_grid_build.d.ts.map +1 -1
- package/src/core/model/node-graph/visual/layout/route_grid_build.js +7 -15
- package/src/core/model/node-graph/visual/layout/route_nudge.d.ts +6 -0
- package/src/core/model/node-graph/visual/layout/route_nudge.d.ts.map +1 -1
- package/src/core/model/node-graph/visual/layout/route_nudge.js +42 -13
- package/src/engine/animation/AnimationUtils.js +246 -246
- package/src/engine/animation/Animations.js +74 -74
- package/src/engine/control/first-person/FirstPersonPlayerControllerSystem.js +2078 -2078
- package/src/engine/ecs/EventType.d.ts +0 -1
- package/src/engine/ecs/EventType.js +1 -26
- package/src/engine/ecs/ik/ik_write_local_rotation.d.ts +1 -1
- package/src/engine/ecs/ik/ik_write_local_rotation.d.ts.map +1 -1
- package/src/engine/ecs/ik/ik_write_local_rotation.js +3 -7
- package/src/engine/ecs/parent/EntityNode.d.ts.map +1 -1
- package/src/engine/ecs/parent/EntityNode.js +4 -9
- package/src/engine/ecs/terrain/ecs/cling/ClingToTerrainSystem.d.ts.map +1 -1
- package/src/engine/ecs/terrain/ecs/cling/ClingToTerrainSystem.js +360 -364
- package/src/engine/ecs/transform/TRANSFORM64_EVENT_CHANGE.d.ts +41 -0
- package/src/engine/ecs/transform/TRANSFORM64_EVENT_CHANGE.d.ts.map +1 -0
- package/src/engine/ecs/transform/TRANSFORM64_EVENT_CHANGE.js +40 -0
- package/src/engine/ecs/transform/TRANSFORM64_MIGRATION_PLAN_2026_09_04.md +8 -0
- package/src/engine/ecs/transform/t64_announce_change.d.ts +10 -7
- package/src/engine/ecs/transform/t64_announce_change.d.ts.map +1 -1
- package/src/engine/ecs/transform/t64_announce_change.js +12 -12
- package/src/engine/ecs/transform/t64_set_rotation_axis_angle.d.ts +25 -0
- package/src/engine/ecs/transform/t64_set_rotation_axis_angle.d.ts.map +1 -0
- package/src/engine/ecs/transform/t64_set_rotation_axis_angle.js +45 -0
- package/src/engine/ecs/transform-attachment/TRANSFORM_ATTACHMENT_EVENT_CHANGE.d.ts +30 -0
- package/src/engine/ecs/transform-attachment/TRANSFORM_ATTACHMENT_EVENT_CHANGE.d.ts.map +1 -0
- package/src/engine/ecs/transform-attachment/TRANSFORM_ATTACHMENT_EVENT_CHANGE.js +29 -0
- package/src/engine/ecs/transform-attachment/TransformAttachmentSystem.d.ts.map +1 -1
- package/src/engine/ecs/transform-attachment/TransformAttachmentSystem.js +13 -21
- package/src/engine/graphics/ecs/sprite/SpriteSystemPE.d.ts.map +1 -1
- package/src/engine/graphics/ecs/sprite/SpriteSystemPE.js +4 -8
- package/src/engine/graphics3/LightSystem.d.ts.map +1 -1
- package/src/engine/graphics3/LightSystem.js +4 -8
- package/src/engine/graphics3/MeshSystem.d.ts.map +1 -1
- package/src/engine/graphics3/MeshSystem.js +9 -19
- package/src/engine/graphics3/ParticleEmitterSystem.d.ts.map +1 -1
- package/src/engine/graphics3/ParticleEmitterSystem.js +4 -8
- package/src/engine/graphics3/ShadedGeometrySystem.d.ts.map +1 -1
- package/src/engine/graphics3/ShadedGeometrySystem.js +4 -10
- package/src/engine/grid/transform2grid/Transform2GridPositionSystem.d.ts +1 -1
- package/src/engine/grid/transform2grid/Transform2GridPositionSystem.d.ts.map +1 -1
- package/src/engine/grid/transform2grid/Transform2GridPositionSystem.js +4 -8
- package/src/engine/intelligence/behavior/ecs/OrbitingBehavior.js +218 -218
- package/src/engine/physics/ecs/PhysicsSystem.d.ts.map +1 -1
- package/src/engine/physics/ecs/PhysicsSystem.js +2 -5
- package/src/engine/sound/ecs/SoundListenerSystem.d.ts.map +1 -1
- package/src/engine/sound/ecs/SoundListenerSystem.js +6 -8
- package/src/engine/sound/simulation/AcousticSimulator.d.ts +11 -8
- package/src/engine/sound/simulation/AcousticSimulator.d.ts.map +1 -1
- package/src/engine/sound/simulation/AcousticSimulator.js +45 -36
- package/src/engine/sound/simulation/README.md +2 -2
- package/src/engine/sound/simulation/core/OcclusionSolver.d.ts.map +1 -1
- package/src/engine/sound/simulation/core/VolumeField.d.ts +9 -9
- package/src/engine/sound/simulation/core/VolumeField.d.ts.map +1 -1
- package/src/engine/sound/simulation/core/VolumeField.js +29 -13
- package/src/engine/sound/simulation/core/acoustic_occlusion_solve.d.ts +31 -0
- package/src/engine/sound/simulation/core/acoustic_occlusion_solve.d.ts.map +1 -0
- package/src/engine/sound/simulation/core/acoustic_occlusion_solve.js +134 -0
- package/src/engine/sound/simulation/ecs/AcousticSimulationSystem.d.ts +0 -4
- package/src/engine/sound/simulation/ecs/AcousticSimulationSystem.d.ts.map +1 -1
- package/src/engine/sound/simulation/ecs/AcousticSimulationSystem.js +5 -11
- package/src/shade/playground/particle_editor/README.md +43 -2
- package/src/shade/playground/particle_system/particle_prototype.d.ts.map +1 -1
- package/src/shade/playground/particle_system/particle_prototype.js +4 -5
- package/src/shade/playground/particle_system/particle_scene.js +4 -4
- package/src/shade/playground/volumetrics_froxel/main.d.ts.map +1 -1
- package/src/shade/playground/volumetrics_froxel/main.js +6 -1
- package/src/shade/renderer/Renderer.d.ts.map +1 -1
- package/src/shade/renderer/Renderer.js +13 -1
- package/src/shade/renderer/particles/DESIGN.md +104 -19
- package/src/shade/renderer/particles/GPUParticleSystem.d.ts +64 -50
- package/src/shade/renderer/particles/GPUParticleSystem.d.ts.map +1 -1
- package/src/shade/renderer/particles/GPUParticleSystem.js +176 -78
- package/src/shade/renderer/particles/ParticleConstants.d.ts +59 -23
- package/src/shade/renderer/particles/ParticleConstants.d.ts.map +1 -1
- package/src/shade/renderer/particles/ParticleConstants.js +66 -23
- package/src/shade/renderer/particles/ParticleRenderMode.d.ts +19 -0
- package/src/shade/renderer/particles/ParticleRenderMode.d.ts.map +1 -0
- package/src/shade/renderer/particles/ParticleRenderMode.js +33 -0
- package/src/shade/renderer/particles/data/PARTICLE_EMITTER_STRUCT.d.ts.map +1 -1
- package/src/shade/renderer/particles/data/PARTICLE_EMITTER_STRUCT.js +167 -166
- package/src/shade/renderer/particles/data/particle_emitter_record.d.ts +37 -0
- package/src/shade/renderer/particles/data/particle_emitter_record.d.ts.map +1 -0
- package/src/shade/renderer/particles/data/particle_emitter_record.js +109 -0
- package/src/shade/renderer/particles/graph/ParticleGroupBuilder.d.ts +3 -3
- package/src/shade/renderer/particles/graph/ParticleGroupBuilder.js +303 -303
- package/src/shade/renderer/particles/graph/ParticleNodeDescription.d.ts +18 -0
- package/src/shade/renderer/particles/graph/ParticleNodeDescription.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/ParticleNodeDescription.js +152 -133
- package/src/shade/renderer/particles/graph/ParticleNodeRegistry.d.ts +0 -11
- package/src/shade/renderer/particles/graph/ParticleNodeRegistry.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/ParticleNodeRegistry.js +720 -621
- package/src/shade/renderer/particles/graph/compile_particle_graph.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/compile_particle_graph.js +8 -3
- package/src/shade/renderer/particles/graph/flatten_particle_graph.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/flatten_particle_graph.js +244 -213
- package/src/shade/renderer/particles/graph/groups/particle_builtin_groups.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/groups/particle_builtin_groups.js +6 -0
- package/src/shade/renderer/particles/graph/groups/particle_groups_geometry.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/groups/particle_groups_geometry.js +294 -319
- package/src/shade/renderer/particles/graph/groups/particle_groups_noise.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/groups/particle_groups_noise.js +524 -517
- package/src/shade/renderer/particles/graph/groups/particle_groups_psrdnoise.d.ts +22 -0
- package/src/shade/renderer/particles/graph/groups/particle_groups_psrdnoise.d.ts.map +1 -0
- package/src/shade/renderer/particles/graph/groups/particle_groups_psrdnoise.js +517 -0
- package/src/shade/renderer/particles/graph/groups/simplex_reference.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/groups/simplex_reference.js +185 -159
- package/src/shade/renderer/particles/graph/make_particle_group.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/make_particle_group.js +2 -20
- package/src/shade/renderer/particles/graph/particle_compare_ops.d.ts +17 -0
- package/src/shade/renderer/particles/graph/particle_compare_ops.d.ts.map +1 -0
- package/src/shade/renderer/particles/graph/particle_compare_ops.js +22 -0
- package/src/shade/renderer/particles/graph/particle_graph_diagnostic.d.ts +28 -8
- package/src/shade/renderer/particles/graph/particle_graph_diagnostic.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/particle_graph_diagnostic.js +49 -25
- package/src/shade/renderer/particles/graph/particle_node_parameters.d.ts +40 -0
- package/src/shade/renderer/particles/graph/particle_node_parameters.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/particle_node_parameters.js +312 -234
- package/src/shade/renderer/particles/graph/particle_node_presentation.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/particle_node_presentation.js +59 -3
- package/src/shade/renderer/particles/graph/particle_ramp.d.ts +230 -0
- package/src/shade/renderer/particles/graph/particle_ramp.d.ts.map +1 -0
- package/src/shade/renderer/particles/graph/particle_ramp.js +403 -0
- package/src/shade/renderer/particles/graph/validate_particle_graph.d.ts +7 -1
- package/src/shade/renderer/particles/graph/validate_particle_graph.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/validate_particle_graph.js +66 -10
- package/src/shade/renderer/particles/graph_particles.d.ts +23 -69
- package/src/shade/renderer/particles/graph_particles.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph_particles.js +105 -262
- package/src/shade/renderer/particles/graph_particles_avboit.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph_particles_avboit.js +3 -2
- package/src/shade/renderer/particles/graph_particles_billboard.d.ts +37 -0
- package/src/shade/renderer/particles/graph_particles_billboard.d.ts.map +1 -0
- package/src/shade/renderer/particles/graph_particles_billboard.js +93 -0
- package/src/shade/renderer/particles/isa/InstructionStream.d.ts +51 -22
- package/src/shade/renderer/particles/isa/InstructionStream.d.ts.map +1 -1
- package/src/shade/renderer/particles/isa/InstructionStream.js +98 -38
- package/src/shade/renderer/particles/isa/ParticleProgram.d.ts +49 -8
- package/src/shade/renderer/particles/isa/ParticleProgram.d.ts.map +1 -1
- package/src/shade/renderer/particles/isa/ParticleProgram.js +95 -150
- package/src/shade/renderer/particles/isa/ParticleVMISA.d.ts +306 -64
- package/src/shade/renderer/particles/isa/ParticleVMISA.d.ts.map +1 -1
- package/src/shade/renderer/particles/isa/ParticleVMISA.js +505 -136
- package/src/shade/renderer/particles/isa/particle_assembly.d.ts +36 -12
- package/src/shade/renderer/particles/isa/particle_assembly.d.ts.map +1 -1
- package/src/shade/renderer/particles/isa/particle_assembly.js +354 -139
- package/src/shade/renderer/particles/isa/validate_particle_program.d.ts +9 -0
- package/src/shade/renderer/particles/isa/validate_particle_program.d.ts.map +1 -0
- package/src/shade/renderer/particles/isa/validate_particle_program.js +128 -0
- package/src/shade/renderer/particles/layout/ParticleLayout.d.ts +23 -0
- package/src/shade/renderer/particles/layout/ParticleLayout.d.ts.map +1 -1
- package/src/shade/renderer/particles/layout/ParticleLayout.js +68 -0
- package/src/shade/renderer/particles/optimizer/dag/optimize_particle_program_vector.d.ts +77 -0
- package/src/shade/renderer/particles/optimizer/dag/optimize_particle_program_vector.d.ts.map +1 -0
- package/src/shade/renderer/particles/optimizer/dag/optimize_particle_program_vector.js +219 -0
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_extract.d.ts +83 -0
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_extract.d.ts.map +1 -0
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_extract.js +283 -0
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_graph.d.ts +133 -0
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_graph.d.ts.map +1 -0
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_graph.js +334 -0
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_groups.d.ts +117 -0
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_groups.d.ts.map +1 -0
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_groups.js +70 -0
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_lift.d.ts +97 -0
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_lift.d.ts.map +1 -0
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_lift.js +462 -0
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_lower.d.ts +116 -0
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_lower.d.ts.map +1 -0
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_lower.js +687 -0
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_pack.d.ts +57 -0
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_pack.d.ts.map +1 -0
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_pack.js +860 -0
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_rules.d.ts +115 -0
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_rules.d.ts.map +1 -0
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_rules.js +264 -0
- package/src/shade/renderer/particles/optimizer/optimize_particle_program.d.ts +81 -42
- package/src/shade/renderer/particles/optimizer/optimize_particle_program.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/optimize_particle_program.js +477 -478
- package/src/shade/renderer/particles/optimizer/particle_integer_bounds.d.ts +100 -0
- package/src/shade/renderer/particles/optimizer/particle_integer_bounds.d.ts.map +1 -0
- package/src/shade/renderer/particles/optimizer/particle_integer_bounds.js +236 -0
- package/src/shade/renderer/particles/optimizer/particle_program_analysis.d.ts +139 -59
- package/src/shade/renderer/particles/optimizer/particle_program_analysis.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/particle_program_analysis.js +764 -647
- package/src/shade/renderer/particles/optimizer/particle_program_equivalence.d.ts +40 -7
- package/src/shade/renderer/particles/optimizer/particle_program_equivalence.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/particle_program_equivalence.js +376 -213
- package/src/shade/renderer/particles/optimizer/particle_program_fuzz.d.ts +30 -3
- package/src/shade/renderer/particles/optimizer/particle_program_fuzz.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/particle_program_fuzz.js +337 -223
- package/src/shade/renderer/particles/optimizer/particle_vm_semantics.d.ts +24 -38
- package/src/shade/renderer/particles/optimizer/particle_vm_semantics.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/particle_vm_semantics.js +166 -206
- package/src/shade/renderer/particles/optimizer/pass_allocate_registers.d.ts +99 -0
- package/src/shade/renderer/particles/optimizer/pass_allocate_registers.d.ts.map +1 -0
- package/src/shade/renderer/particles/optimizer/pass_allocate_registers.js +313 -0
- package/src/shade/renderer/particles/optimizer/pass_dedup_constants.d.ts +3 -2
- package/src/shade/renderer/particles/optimizer/pass_dedup_constants.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/pass_dedup_constants.js +198 -197
- package/src/shade/renderer/particles/optimizer/pass_eliminate_dead_code.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/pass_fold_constants.d.ts +19 -0
- package/src/shade/renderer/particles/optimizer/pass_fold_constants.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/pass_fold_constants.js +678 -561
- package/src/shade/renderer/particles/optimizer/pass_inline_constants.d.ts +22 -0
- package/src/shade/renderer/particles/optimizer/pass_inline_constants.d.ts.map +1 -0
- package/src/shade/renderer/particles/optimizer/pass_inline_constants.js +221 -0
- package/src/shade/renderer/particles/optimizer/pass_narrow_widths.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/pass_narrow_widths.js +63 -72
- package/src/shade/renderer/particles/optimizer/pass_pack_registers.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/pass_pack_registers.js +87 -86
- package/src/shade/renderer/particles/optimizer/pass_peephole.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/pass_peephole.js +392 -271
- package/src/shade/renderer/particles/optimizer/pass_propagate_copies.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/pass_propagate_copies.js +361 -268
- package/src/shade/renderer/particles/optimizer/pass_schedule.d.ts +4 -0
- package/src/shade/renderer/particles/optimizer/pass_schedule.d.ts.map +1 -0
- package/src/shade/renderer/particles/optimizer/pass_schedule.js +244 -0
- package/src/shade/renderer/particles/optimizer/pass_share_subexpressions.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/pass_share_subexpressions.js +154 -151
- package/src/shade/renderer/particles/particle_test_fixtures.d.ts +20 -0
- package/src/shade/renderer/particles/particle_test_fixtures.d.ts.map +1 -1
- package/src/shade/renderer/particles/particle_test_fixtures.js +229 -203
- package/src/shade/renderer/particles/runtime/EmitterRegistry.d.ts +99 -25
- package/src/shade/renderer/particles/runtime/EmitterRegistry.d.ts.map +1 -1
- package/src/shade/renderer/particles/runtime/EmitterRegistry.js +438 -286
- package/src/shade/renderer/particles/runtime/GPUParticleEmitterContext.d.ts +109 -0
- package/src/shade/renderer/particles/runtime/GPUParticleEmitterContext.d.ts.map +1 -0
- package/src/shade/renderer/particles/runtime/GPUParticleEmitterContext.js +127 -0
- package/src/shade/renderer/particles/runtime/ParticleEmitter.d.ts +87 -102
- package/src/shade/renderer/particles/runtime/ParticleEmitter.d.ts.map +1 -1
- package/src/shade/renderer/particles/runtime/ParticleEmitter.js +184 -163
- package/src/shade/renderer/particles/runtime/ProgramHeap.d.ts +130 -0
- package/src/shade/renderer/particles/runtime/ProgramHeap.d.ts.map +1 -0
- package/src/shade/renderer/particles/runtime/ProgramHeap.js +595 -0
- package/src/shade/renderer/particles/runtime/ProgramPlacement.d.ts +91 -0
- package/src/shade/renderer/particles/runtime/ProgramPlacement.d.ts.map +1 -0
- package/src/shade/renderer/particles/runtime/ProgramPlacement.js +106 -0
- package/src/shade/renderer/particles/runtime/create_particle_effect.d.ts +5 -2
- package/src/shade/renderer/particles/runtime/create_particle_effect.d.ts.map +1 -1
- package/src/shade/renderer/particles/runtime/create_particle_effect.js +22 -19
- package/src/shade/renderer/particles/shaders/chunk_particle_emit_step.d.ts +28 -0
- package/src/shade/renderer/particles/shaders/chunk_particle_emit_step.d.ts.map +1 -0
- package/src/shade/renderer/particles/shaders/chunk_particle_emit_step.js +136 -0
- package/src/shade/renderer/particles/shaders/chunk_particle_simulate_step.d.ts +35 -0
- package/src/shade/renderer/particles/shaders/chunk_particle_simulate_step.d.ts.map +1 -0
- package/src/shade/renderer/particles/shaders/chunk_particle_simulate_step.js +133 -0
- package/src/shade/renderer/particles/shaders/shader_particle_emit.d.ts +18 -9
- package/src/shade/renderer/particles/shaders/shader_particle_emit.d.ts.map +1 -1
- package/src/shade/renderer/particles/shaders/shader_particle_emit.js +20 -80
- package/src/shade/renderer/particles/shaders/shader_particle_emit_wide.d.ts +33 -0
- package/src/shade/renderer/particles/shaders/shader_particle_emit_wide.d.ts.map +1 -0
- package/src/shade/renderer/particles/shaders/shader_particle_emit_wide.js +114 -0
- package/src/shade/renderer/particles/shaders/shader_particle_simulate.d.ts +8 -0
- package/src/shade/renderer/particles/shaders/shader_particle_simulate.d.ts.map +1 -1
- package/src/shade/renderer/particles/shaders/shader_particle_simulate.js +33 -101
- package/src/shade/renderer/particles/shaders/shader_particle_simulate_wide.d.ts +45 -0
- package/src/shade/renderer/particles/shaders/shader_particle_simulate_wide.d.ts.map +1 -0
- package/src/shade/renderer/particles/shaders/shader_particle_simulate_wide.js +123 -0
- package/src/shade/renderer/particles/sort/graph_particle_sort.d.ts +51 -0
- package/src/shade/renderer/particles/sort/graph_particle_sort.d.ts.map +1 -0
- package/src/shade/renderer/particles/sort/graph_particle_sort.js +120 -0
- package/src/shade/renderer/particles/vm/PARTICLE_VM_CONTEXT_STRUCT.d.ts +6 -0
- package/src/shade/renderer/particles/vm/PARTICLE_VM_CONTEXT_STRUCT.d.ts.map +1 -0
- package/src/shade/renderer/particles/vm/PARTICLE_VM_CONTEXT_STRUCT.js +16 -0
- package/src/shade/renderer/particles/vm/ParticleVMReference.d.ts +4 -1
- package/src/shade/renderer/particles/vm/ParticleVMReference.d.ts.map +1 -1
- package/src/shade/renderer/particles/vm/ParticleVMReference.js +261 -140
- package/src/shade/renderer/particles/vm/chunk_particle_vm.d.ts.map +1 -1
- package/src/shade/renderer/particles/vm/chunk_particle_vm.js +217 -255
- package/src/shade/renderer/particles/vm/chunk_particle_vm_registers_fast.d.ts +43 -0
- package/src/shade/renderer/particles/vm/chunk_particle_vm_registers_fast.d.ts.map +1 -0
- package/src/shade/renderer/particles/vm/chunk_particle_vm_registers_fast.js +55 -0
- package/src/shade/renderer/particles/vm/chunk_particle_vm_registers_wide.d.ts +62 -0
- package/src/shade/renderer/particles/vm/chunk_particle_vm_registers_wide.d.ts.map +1 -0
- package/src/shade/renderer/particles/vm/chunk_particle_vm_registers_wide.js +86 -0
- package/src/shade/renderer/shader/chunk/math/chunk_mod_v3f.d.ts +22 -0
- package/src/shade/renderer/shader/chunk/math/chunk_mod_v3f.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/math/chunk_mod_v3f.js +32 -0
- package/src/shade/renderer/shader/chunk/math/chunk_mod_v4f.d.ts +9 -0
- package/src/shade/renderer/shader/chunk/math/chunk_mod_v4f.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/math/chunk_mod_v4f.js +19 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/README.md +65 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise2.d.ts +24 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise2.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise2.js +83 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise2_hash.d.ts +25 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise2_hash.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise2_hash.js +42 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise2_kernel.d.ts +31 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise2_kernel.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise2_kernel.js +80 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise3.d.ts +26 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise3.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise3.js +109 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise3_kernel.d.ts +38 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise3_kernel.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise3_kernel.js +129 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise3_permute.d.ts +21 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise3_permute.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise3_permute.js +35 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise3_skew.d.ts +19 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise3_skew.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise3_skew.js +28 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise3_unskew.d.ts +13 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise3_unskew.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise3_unskew.js +22 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_srdnoise2.d.ts +22 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_srdnoise2.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_srdnoise2.js +59 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_srdnoise3.d.ts +23 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_srdnoise3.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_srdnoise3.js +74 -0
- package/src/shade/renderer/volumetrics/ParticipatingMediaVolume.d.ts +7 -0
- package/src/shade/renderer/volumetrics/ParticipatingMediaVolume.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/ParticipatingMediaVolume.js +7 -0
- package/src/shade/wgsl/emulator/ComputeShaderEmulator.d.ts +34 -1
- package/src/shade/wgsl/emulator/ComputeShaderEmulator.d.ts.map +1 -1
- package/src/shade/wgsl/emulator/ComputeShaderEmulator.js +41 -1
- package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.d.ts +3 -2
- package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.d.ts.map +1 -1
- package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.js +49 -10
- package/src/view/minimap/dom/MinimapCameraView.d.ts.map +1 -1
- package/src/view/minimap/dom/MinimapCameraView.js +4 -9
- package/src/core/model/node-graph/visual/layout/BoxLayoutSpec.d.ts +0 -15
- package/src/core/model/node-graph/visual/layout/BoxLayoutSpec.d.ts.map +0 -1
- package/src/core/model/node-graph/visual/layout/ConnectedBoxLayouter.d.ts +0 -45
- package/src/core/model/node-graph/visual/layout/ConnectedBoxLayouter.d.ts.map +0 -1
- package/src/core/model/node-graph/visual/layout/ConnectionEndpointLayoutSpec.d.ts +0 -24
- package/src/core/model/node-graph/visual/layout/ConnectionEndpointLayoutSpec.d.ts.map +0 -1
- package/src/core/model/node-graph/visual/layout/ConnectionLayoutSpec.d.ts +0 -19
- package/src/core/model/node-graph/visual/layout/ConnectionLayoutSpec.d.ts.map +0 -1
- package/src/engine/ecs/transform/__probe.d.ts +0 -4
- package/src/engine/ecs/transform/__probe.d.ts.map +0 -1
- package/src/engine/ecs/util/hideEntityGracefully.d.ts +0 -9
- package/src/engine/ecs/util/hideEntityGracefully.d.ts.map +0 -1
- package/src/engine/sound/simulation/core/OcclusionSolver.js +0 -112
- package/src/shade/renderer/buffer/table/gpu_database_emulator_image.d.ts +0 -27
- package/src/shade/renderer/buffer/table/gpu_database_emulator_image.d.ts.map +0 -1
- package/src/shade/renderer/particles/cull/chunk_particle_cull.d.ts +0 -14
- package/src/shade/renderer/particles/cull/chunk_particle_cull.d.ts.map +0 -1
- package/src/shade/renderer/particles/data/PARTICLE_EMITTER_LAYOUT.d.ts +0 -156
- package/src/shade/renderer/particles/data/PARTICLE_EMITTER_LAYOUT.d.ts.map +0 -1
- package/src/shade/renderer/particles/runtime/Emitter.d.ts +0 -219
- package/src/shade/renderer/particles/runtime/Emitter.d.ts.map +0 -1
- package/src/shade/renderer/particles/runtime/ParticleSpawnScheduler.d.ts +0 -77
- package/src/shade/renderer/particles/runtime/ParticleSpawnScheduler.d.ts.map +0 -1
- package/src/shade/renderer/particles/runtime/ProgramArena.d.ts +0 -89
- package/src/shade/renderer/particles/runtime/ProgramArena.d.ts.map +0 -1
- package/src/shade/renderer/particles/runtime/ProgramArena.js +0 -155
- package/src/shade/renderer/particles/runtime/emitter_database_image.d.ts +0 -15
- package/src/shade/renderer/particles/runtime/emitter_database_image.d.ts.map +0 -1
- package/src/shade/renderer/particles/runtime/spawn_request_encoding.d.ts +0 -34
- package/src/shade/renderer/particles/runtime/spawn_request_encoding.d.ts.map +0 -1
- package/src/shade/renderer/particles/shaders/chunk_particle_context.d.ts +0 -32
- package/src/shade/renderer/particles/shaders/chunk_particle_context.d.ts.map +0 -1
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Packs many compiled {@link ../isa/ParticleProgram.js} programs into one shared buffer — a header,
|
|
3
|
-
* every program's constant pool, then every program's instruction words — and hands back the
|
|
4
|
-
* offsets each emitter records.
|
|
5
|
-
*
|
|
6
|
-
* Data before code, behind a four-word header whose first word says where the code starts: the VM
|
|
7
|
-
* reads both sections through one binding (a storage buffer per stage is not free, and code and
|
|
8
|
-
* constants are read together), and an emitter's constant pool sits next to the pools of the
|
|
9
|
-
* programs it shares a wave with.
|
|
10
|
-
*
|
|
11
|
-
* Because VM instructions carry no absolute code addresses (control flow is branchless) and
|
|
12
|
-
* constant references are program-local (the VM adds the emitter's `constant_offset`), programs
|
|
13
|
-
* can be concatenated at any offset. INIT and UPDATE sections are laid out back-to-back per program.
|
|
14
|
-
*/
|
|
15
|
-
export class ProgramArena {
|
|
16
|
-
/**
|
|
17
|
-
* Flat instruction words, every program's INIT and UPDATE sections concatenated.
|
|
18
|
-
* @type {number[]}
|
|
19
|
-
*/
|
|
20
|
-
instruction_words: number[];
|
|
21
|
-
/**
|
|
22
|
-
* Flat constant words (f32 bit patterns), every program's pool concatenated.
|
|
23
|
-
* @type {number[]}
|
|
24
|
-
*/
|
|
25
|
-
constant_words: number[];
|
|
26
|
-
/**
|
|
27
|
-
* Running instruction index — INIT/UPDATE offsets are in these units.
|
|
28
|
-
* @type {number}
|
|
29
|
-
*/
|
|
30
|
-
instruction_count: number;
|
|
31
|
-
/**
|
|
32
|
-
* Running constant word index — the pool is addressed by word, so a scalar literal costs one
|
|
33
|
-
* rather than the four a `vec4` entry used to.
|
|
34
|
-
* @type {number}
|
|
35
|
-
*/
|
|
36
|
-
constant_word_count: number;
|
|
37
|
-
/**
|
|
38
|
-
* Content key -> the placement the first identical program got.
|
|
39
|
-
* @type {Map<string, {init_offset: number, init_count: number, update_offset: number, update_count: number, constant_offset: number, program_id: number}>}
|
|
40
|
-
*/
|
|
41
|
-
programs: Map<string, {
|
|
42
|
-
init_offset: number;
|
|
43
|
-
init_count: number;
|
|
44
|
-
update_offset: number;
|
|
45
|
-
update_count: number;
|
|
46
|
-
constant_offset: number;
|
|
47
|
-
program_id: number;
|
|
48
|
-
}>;
|
|
49
|
-
/**
|
|
50
|
-
* Number of distinct programs in the arena — and therefore the number of buckets the
|
|
51
|
-
* simulation-order pass histograms into. Program ids are dense in `[0, program_count)`.
|
|
52
|
-
* @returns {number}
|
|
53
|
-
*/
|
|
54
|
-
get program_count(): number;
|
|
55
|
-
/**
|
|
56
|
-
* Append a program, or hand back the placement an identical one already has.
|
|
57
|
-
*
|
|
58
|
-
* Deduplication is by CONTENT, not object identity: two emitters that authored the same graph
|
|
59
|
-
* separately compile to distinct {@link ParticleProgram} objects holding the same bytecode, and
|
|
60
|
-
* they should still land in one simulation bucket. Emitters are few and long-lived, so hashing
|
|
61
|
-
* the words is not a cost worth avoiding.
|
|
62
|
-
*
|
|
63
|
-
* The `program_id` it returns is what the emitter record carries and what the coherence pass
|
|
64
|
-
* buckets on. Keying on the emitter index instead would be simpler but strictly worse: N
|
|
65
|
-
* emitters running one shared effect would become N buckets, each padded to a whole workgroup,
|
|
66
|
-
* which both wastes lanes and splits a run that was already program-coherent.
|
|
67
|
-
*
|
|
68
|
-
* @param {import("../isa/ParticleProgram.js").ParticleProgram} program
|
|
69
|
-
* @returns {{init_offset: number, init_count: number, update_offset: number, update_count: number, constant_offset: number, program_id: number}}
|
|
70
|
-
*/
|
|
71
|
-
add(program: import("../isa/ParticleProgram.js").ParticleProgram): {
|
|
72
|
-
init_offset: number;
|
|
73
|
-
init_count: number;
|
|
74
|
-
update_offset: number;
|
|
75
|
-
update_count: number;
|
|
76
|
-
constant_offset: number;
|
|
77
|
-
program_id: number;
|
|
78
|
-
};
|
|
79
|
-
/**
|
|
80
|
-
* The packed buffer: `[header][constants][code]`. Word {@link PARTICLE_PROGRAM_CODE_BASE_WORD} of
|
|
81
|
-
* the header is the word index the code starts at, which moves every time a program's constants
|
|
82
|
-
* are appended — the emitter records never carry it, they carry offsets into each section.
|
|
83
|
-
*
|
|
84
|
-
* @returns {Uint32Array}
|
|
85
|
-
*/
|
|
86
|
-
build_program_buffer(): Uint32Array;
|
|
87
|
-
#private;
|
|
88
|
-
}
|
|
89
|
-
//# sourceMappingURL=ProgramArena.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ProgramArena.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/particles/runtime/ProgramArena.js"],"names":[],"mappings":"AAMA;;;;;;;;;;;;;GAaG;AACH;IAEI;;;OAGG;IACH,mBAFU,MAAM,EAAE,CAEK;IAEvB;;;OAGG;IACH,gBAFU,MAAM,EAAE,CAEE;IAEpB;;;OAGG;IACH,mBAFU,MAAM,CAEM;IAEtB;;;;OAIG;IACH,qBAFU,MAAM,CAEQ;IAExB;;;OAGG;IACH,UAFU,IAAI,MAAM,EAAE;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAC,CAAC,CAErI;IAErB;;;;OAIG;IACH,4BAEC;IAED;;;;;;;;;;;;;;;OAeG;IACH,aAHW,OAAO,2BAA2B,EAAE,eAAe;qBACnC,MAAM;oBAAc,MAAM;uBAAiB,MAAM;sBAAgB,MAAM;yBAAmB,MAAM;oBAAc,MAAM;MAgC9I;IAUD;;;;;;OAMG;IACH,wBAFa,WAAW,CAcvB;;CACJ"}
|
|
@@ -1,155 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
PARTICLE_PROGRAM_CODE_BASE_WORD,
|
|
3
|
-
PARTICLE_PROGRAM_HEADER_WORDS,
|
|
4
|
-
PARTICLE_VM_INSTRUCTION_WORDS,
|
|
5
|
-
} from "../ParticleConstants.js";
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Packs many compiled {@link ../isa/ParticleProgram.js} programs into one shared buffer — a header,
|
|
9
|
-
* every program's constant pool, then every program's instruction words — and hands back the
|
|
10
|
-
* offsets each emitter records.
|
|
11
|
-
*
|
|
12
|
-
* Data before code, behind a four-word header whose first word says where the code starts: the VM
|
|
13
|
-
* reads both sections through one binding (a storage buffer per stage is not free, and code and
|
|
14
|
-
* constants are read together), and an emitter's constant pool sits next to the pools of the
|
|
15
|
-
* programs it shares a wave with.
|
|
16
|
-
*
|
|
17
|
-
* Because VM instructions carry no absolute code addresses (control flow is branchless) and
|
|
18
|
-
* constant references are program-local (the VM adds the emitter's `constant_offset`), programs
|
|
19
|
-
* can be concatenated at any offset. INIT and UPDATE sections are laid out back-to-back per program.
|
|
20
|
-
*/
|
|
21
|
-
export class ProgramArena {
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
* Flat instruction words, every program's INIT and UPDATE sections concatenated.
|
|
25
|
-
* @type {number[]}
|
|
26
|
-
*/
|
|
27
|
-
instruction_words = [];
|
|
28
|
-
|
|
29
|
-
/**
|
|
30
|
-
* Flat constant words (f32 bit patterns), every program's pool concatenated.
|
|
31
|
-
* @type {number[]}
|
|
32
|
-
*/
|
|
33
|
-
constant_words = [];
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* Running instruction index — INIT/UPDATE offsets are in these units.
|
|
37
|
-
* @type {number}
|
|
38
|
-
*/
|
|
39
|
-
instruction_count = 0;
|
|
40
|
-
|
|
41
|
-
/**
|
|
42
|
-
* Running constant word index — the pool is addressed by word, so a scalar literal costs one
|
|
43
|
-
* rather than the four a `vec4` entry used to.
|
|
44
|
-
* @type {number}
|
|
45
|
-
*/
|
|
46
|
-
constant_word_count = 0;
|
|
47
|
-
|
|
48
|
-
/**
|
|
49
|
-
* Content key -> the placement the first identical program got.
|
|
50
|
-
* @type {Map<string, {init_offset: number, init_count: number, update_offset: number, update_count: number, constant_offset: number, program_id: number}>}
|
|
51
|
-
*/
|
|
52
|
-
programs = new Map();
|
|
53
|
-
|
|
54
|
-
/**
|
|
55
|
-
* Number of distinct programs in the arena — and therefore the number of buckets the
|
|
56
|
-
* simulation-order pass histograms into. Program ids are dense in `[0, program_count)`.
|
|
57
|
-
* @returns {number}
|
|
58
|
-
*/
|
|
59
|
-
get program_count() {
|
|
60
|
-
return this.programs.size;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
/**
|
|
64
|
-
* Append a program, or hand back the placement an identical one already has.
|
|
65
|
-
*
|
|
66
|
-
* Deduplication is by CONTENT, not object identity: two emitters that authored the same graph
|
|
67
|
-
* separately compile to distinct {@link ParticleProgram} objects holding the same bytecode, and
|
|
68
|
-
* they should still land in one simulation bucket. Emitters are few and long-lived, so hashing
|
|
69
|
-
* the words is not a cost worth avoiding.
|
|
70
|
-
*
|
|
71
|
-
* The `program_id` it returns is what the emitter record carries and what the coherence pass
|
|
72
|
-
* buckets on. Keying on the emitter index instead would be simpler but strictly worse: N
|
|
73
|
-
* emitters running one shared effect would become N buckets, each padded to a whole workgroup,
|
|
74
|
-
* which both wastes lanes and splits a run that was already program-coherent.
|
|
75
|
-
*
|
|
76
|
-
* @param {import("../isa/ParticleProgram.js").ParticleProgram} program
|
|
77
|
-
* @returns {{init_offset: number, init_count: number, update_offset: number, update_count: number, constant_offset: number, program_id: number}}
|
|
78
|
-
*/
|
|
79
|
-
add(program) {
|
|
80
|
-
const key = program_content_key(program);
|
|
81
|
-
|
|
82
|
-
const existing = this.programs.get(key);
|
|
83
|
-
if (existing !== undefined) {
|
|
84
|
-
return existing;
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
const init_offset = this.instruction_count;
|
|
88
|
-
this.#append_instructions(program.init);
|
|
89
|
-
const init_count = program.init_instruction_count;
|
|
90
|
-
|
|
91
|
-
const update_offset = this.instruction_count;
|
|
92
|
-
this.#append_instructions(program.update);
|
|
93
|
-
const update_count = program.update_instruction_count;
|
|
94
|
-
|
|
95
|
-
const constant_offset = this.constant_word_count;
|
|
96
|
-
const constant_u32 = new Uint32Array(program.constants.buffer, program.constants.byteOffset, program.constants.length);
|
|
97
|
-
for (let i = 0; i < constant_u32.length; i++) {
|
|
98
|
-
this.constant_words.push(constant_u32[i]);
|
|
99
|
-
}
|
|
100
|
-
this.constant_word_count += program.constant_word_count;
|
|
101
|
-
|
|
102
|
-
const placement = {
|
|
103
|
-
init_offset, init_count, update_offset, update_count, constant_offset,
|
|
104
|
-
program_id: this.programs.size,
|
|
105
|
-
};
|
|
106
|
-
this.programs.set(key, placement);
|
|
107
|
-
|
|
108
|
-
return placement;
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
/** @param {Uint32Array} words */
|
|
112
|
-
#append_instructions(words) {
|
|
113
|
-
for (let i = 0; i < words.length; i++) {
|
|
114
|
-
this.instruction_words.push(words[i]);
|
|
115
|
-
}
|
|
116
|
-
this.instruction_count += words.length / PARTICLE_VM_INSTRUCTION_WORDS;
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
/**
|
|
120
|
-
* The packed buffer: `[header][constants][code]`. Word {@link PARTICLE_PROGRAM_CODE_BASE_WORD} of
|
|
121
|
-
* the header is the word index the code starts at, which moves every time a program's constants
|
|
122
|
-
* are appended — the emitter records never carry it, they carry offsets into each section.
|
|
123
|
-
*
|
|
124
|
-
* @returns {Uint32Array}
|
|
125
|
-
*/
|
|
126
|
-
build_program_buffer() {
|
|
127
|
-
const constants = this.constant_words;
|
|
128
|
-
const code = this.instruction_words;
|
|
129
|
-
|
|
130
|
-
const code_base = PARTICLE_PROGRAM_HEADER_WORDS + constants.length;
|
|
131
|
-
const buffer = new Uint32Array(code_base + code.length);
|
|
132
|
-
|
|
133
|
-
buffer[PARTICLE_PROGRAM_CODE_BASE_WORD] = code_base;
|
|
134
|
-
buffer.set(constants, PARTICLE_PROGRAM_HEADER_WORDS);
|
|
135
|
-
buffer.set(code, code_base);
|
|
136
|
-
|
|
137
|
-
return buffer;
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
/**
|
|
142
|
-
* A key that is equal exactly when two programs would execute identically.
|
|
143
|
-
*
|
|
144
|
-
* Constants are keyed by their `u32` bit patterns rather than their float values, so `-0` and `0`
|
|
145
|
-
* — which stringify the same but differ in the buffer the shader reads — stay distinct.
|
|
146
|
-
*
|
|
147
|
-
* @param {import("../isa/ParticleProgram.js").ParticleProgram} program
|
|
148
|
-
* @returns {string}
|
|
149
|
-
*/
|
|
150
|
-
function program_content_key(program) {
|
|
151
|
-
const constants = program.constants;
|
|
152
|
-
const constant_u32 = new Uint32Array(constants.buffer, constants.byteOffset, constants.length);
|
|
153
|
-
|
|
154
|
-
return `${program.register_count}|${program.init.join(",")}|${program.update.join(",")}|${constant_u32.join(",")}`;
|
|
155
|
-
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The emitter table as the `array<u32>` a shader binds, built on the CPU.
|
|
3
|
-
*
|
|
4
|
-
* For the WGSL emulator: on a device the rows get there through the database's upload dispatch, and
|
|
5
|
-
* the software device records dispatches without running them, so a spec that wants to run
|
|
6
|
-
* `shader_particle_emit` (or simulate, or sort, or the bucket histogram) over real emitters has no
|
|
7
|
-
* other way to hand it their bytes. See
|
|
8
|
-
* {@link ../../buffer/table/gpu_database_emulator_image.js}.
|
|
9
|
-
*
|
|
10
|
-
* @param {Iterable<import("./Emitter.js").Emitter>} emitters registered emitters — each one's
|
|
11
|
-
* {@link Emitter#id} is the row it lands on, so the layout matches what the shaders index
|
|
12
|
-
* @returns {Uint32Array}
|
|
13
|
-
*/
|
|
14
|
-
export function emitter_database_image(emitters: Iterable<import("./Emitter.js").Emitter>): Uint32Array;
|
|
15
|
-
//# sourceMappingURL=emitter_database_image.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"emitter_database_image.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/particles/runtime/emitter_database_image.js"],"names":[],"mappings":"AAGA;;;;;;;;;;;;GAYG;AACH,iDAJW,SAAS,OAAO,cAAc,EAAE,OAAO,CAAC,GAEtC,WAAW,CAMvB"}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @param {number} emitter_index
|
|
3
|
-
* @param {number} fraction in [0, 1]
|
|
4
|
-
* @returns {number} packed u32
|
|
5
|
-
*/
|
|
6
|
-
export function spawn_request_pack(emitter_index: number, fraction: number): number;
|
|
7
|
-
/**
|
|
8
|
-
* @param {number} packed
|
|
9
|
-
* @returns {number} emitter index
|
|
10
|
-
*/
|
|
11
|
-
export function spawn_request_emitter(packed: number): number;
|
|
12
|
-
/**
|
|
13
|
-
* @param {number} packed
|
|
14
|
-
* @returns {number} batch fraction in [0, 1]
|
|
15
|
-
*/
|
|
16
|
-
export function spawn_request_fraction(packed: number): number;
|
|
17
|
-
/**
|
|
18
|
-
* Encoding of one spawn request as a single `u32`.
|
|
19
|
-
*
|
|
20
|
-
* The emit pass needs two things per request: which emitter owns the new particle, and the
|
|
21
|
-
* particle's fraction within its emitter's batch this frame (`i / spawn_count`, the SPAWN_FRACTION
|
|
22
|
-
* VM builtin — used to spread a batch along spawn curves). Packing both into the one `u32` keeps
|
|
23
|
-
* the request stream a single buffer with unchanged upload paths.
|
|
24
|
-
*
|
|
25
|
-
* Layout: low 16 bits = emitter index, high 16 bits = batch fraction quantized to [0, 0xFFFF].
|
|
26
|
-
* The WGSL emit shader mirrors this exactly (shader_particle_emit).
|
|
27
|
-
*/
|
|
28
|
-
/** @type {number} */
|
|
29
|
-
export const SPAWN_REQUEST_EMITTER_MASK: number;
|
|
30
|
-
/** @type {number} */
|
|
31
|
-
export const SPAWN_REQUEST_FRACTION_SHIFT: number;
|
|
32
|
-
/** @type {number} */
|
|
33
|
-
export const SPAWN_REQUEST_FRACTION_MAX: number;
|
|
34
|
-
//# sourceMappingURL=spawn_request_encoding.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"spawn_request_encoding.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/particles/runtime/spawn_request_encoding.js"],"names":[],"mappings":"AAuBA;;;;GAIG;AACH,kDAJW,MAAM,YACN,MAAM,GACJ,MAAM,CASlB;AAED;;;GAGG;AACH,8CAHW,MAAM,GACJ,MAAM,CAIlB;AAED;;;GAGG;AACH,+CAHW,MAAM,GACJ,MAAM,CAIlB;AAjDD;;;;;;;;;;GAUG;AAEH,qBAAqB;AACrB,yCADW,MAAM,CACgC;AAEjD,qBAAqB;AACrB,2CADW,MAAM,CAC8B;AAE/C,qBAAqB;AACrB,yCADW,MAAM,CACgC"}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Populates the VM's builtin context and seeds its RNG for one particle before a program section
|
|
3
|
-
* runs.
|
|
4
|
-
*
|
|
5
|
-
* The emitter's world position / direction / up come from its scene node — the `global` of its row
|
|
6
|
-
* in the scene database's `transforms` table, which the GPU hierarchy pass composed this frame from
|
|
7
|
-
* the node's own transform and its parents'. An emitter parented to an animated joint therefore
|
|
8
|
-
* spawns and simulates where the joint is *now*, with nothing copied through the CPU: the joint's
|
|
9
|
-
* pose was written by the animation passes and composed by the hierarchy pass, and this reads the
|
|
10
|
-
* result. The caller fetches the node with `scene_read_node(&scene_database, em.node)`.
|
|
11
|
-
*
|
|
12
|
-
* The emitter's age is the tick pass's running total, read off the `emitter_state` table of the
|
|
13
|
-
* same database the emitter record came from ({@link ../data/PARTICLE_EMITTER_STATE.js}) — one
|
|
14
|
-
* binding for both, through the table's single-field reader.
|
|
15
|
-
*
|
|
16
|
-
* Depends on {@link chunk_particle_vm} (owns `vm_ctx` / `vm_rng_state`),
|
|
17
|
-
* {@link chunk_particle_emitter} (the `ParticleEmitter` struct) and
|
|
18
|
-
* {@link chunk_scene_database_access} (the node struct + reader).
|
|
19
|
-
*
|
|
20
|
-
* @type {CodeChunk}
|
|
21
|
-
*/
|
|
22
|
-
export const chunk_particle_context: CodeChunk;
|
|
23
|
-
/**
|
|
24
|
-
* Default curve provider: no curves bound, `CURVE` opcodes evaluate to 0. The production feature
|
|
25
|
-
* swaps this for an animation-database-backed provider (see the feature wiring). Kept separate so an
|
|
26
|
-
* effect that uses no curves compiles without any animation bindings.
|
|
27
|
-
*
|
|
28
|
-
* @type {CodeChunk}
|
|
29
|
-
*/
|
|
30
|
-
export const chunk_particle_curve_disabled: CodeChunk;
|
|
31
|
-
import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
|
|
32
|
-
//# sourceMappingURL=chunk_particle_context.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chunk_particle_context.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/particles/shaders/chunk_particle_context.js"],"names":[],"mappings":"AAOA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qCAFU,SAAS,CA8ChB;AAEH;;;;;;GAMG;AACH,4CAFU,SAAS,CAIhB;0BAnFuB,oCAAoC"}
|