@woosh/meep-engine 3.16.0 → 3.17.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/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-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/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/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/ProgramArena.d.ts +26 -0
- package/src/shade/renderer/particles/runtime/ProgramArena.d.ts.map +1 -1
- 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/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/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.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
|
@@ -145,6 +145,12 @@ export const PARTICLE_NODE_PRESENTATION = Object.freeze({
|
|
|
145
145
|
icon: "M6 5v14 M18 5v14 M6 12h12",
|
|
146
146
|
help: "held between a low and a high bound",
|
|
147
147
|
},
|
|
148
|
+
saturate: {
|
|
149
|
+
// `clamp`'s two walls, drawn where its bounds actually are: at 0 and at 1.
|
|
150
|
+
label: "Saturate",
|
|
151
|
+
icon: "M6 5v14 M18 5v14 M6 18h12 M6 18l12-12 M6 6h12",
|
|
152
|
+
help: "held between 0 and 1",
|
|
153
|
+
},
|
|
148
154
|
smoothstep: {
|
|
149
155
|
label: "Smooth Step",
|
|
150
156
|
icon: "M4 18C8 18 8 6 12 6s4 12 8 12",
|
|
@@ -202,6 +208,35 @@ export const PARTICLE_NODE_PRESENTATION = Object.freeze({
|
|
|
202
208
|
icon: "M4 4v16h16 M7 19c1-9 5-12 11-13",
|
|
203
209
|
help: "the natural logarithm",
|
|
204
210
|
},
|
|
211
|
+
rsqrt: {
|
|
212
|
+
// The radical under a fraction bar: one over what `sqrt` draws.
|
|
213
|
+
label: "Inverse Square Root",
|
|
214
|
+
icon: "M6 6h12 M5 14h2.5l2.5 5 4-11h5",
|
|
215
|
+
help: "one over the square root",
|
|
216
|
+
},
|
|
217
|
+
tan: {
|
|
218
|
+
// Steep at both ends and shallow through the middle, which is the curve between two poles.
|
|
219
|
+
label: "Tangent",
|
|
220
|
+
icon: "M6 20c2-4 3-6 6-8s4-4 6-8",
|
|
221
|
+
help: "the tangent, in radians",
|
|
222
|
+
},
|
|
223
|
+
asin: {
|
|
224
|
+
// The sine wave on its side: an inverse is its function reflected about the diagonal.
|
|
225
|
+
label: "Arcsine",
|
|
226
|
+
icon: "M12 4c-7 2.5-7 5.5 0 8s7 5.5 0 8",
|
|
227
|
+
help: "the angle whose sine this is, in radians",
|
|
228
|
+
},
|
|
229
|
+
acos: {
|
|
230
|
+
label: "Arccosine",
|
|
231
|
+
icon: "M7 4c0 4 10 4 10 8s-10 4-10 8",
|
|
232
|
+
help: "the angle whose cosine this is, in radians",
|
|
233
|
+
},
|
|
234
|
+
atan2: {
|
|
235
|
+
// A ray from the origin with the angle it makes marked off against the axis.
|
|
236
|
+
label: "Arctangent",
|
|
237
|
+
icon: "M5 19h13 M5 19L16 8 M11 19a6 6 0 0 0 -1.8 -4.2",
|
|
238
|
+
help: "the angle of the point (x, y), in radians",
|
|
239
|
+
},
|
|
205
240
|
|
|
206
241
|
// --- vector ---
|
|
207
242
|
normalize: {
|
|
@@ -265,11 +300,32 @@ export const PARTICLE_NODE_PRESENTATION = Object.freeze({
|
|
|
265
300
|
help: "b where the condition is positive, a elsewhere",
|
|
266
301
|
},
|
|
267
302
|
|
|
268
|
-
// ---
|
|
303
|
+
// --- ramps ---
|
|
304
|
+
// Two ways to have a curve, and the labels say which is which. The table one came first and was
|
|
305
|
+
// called just "Curve"; it is renamed here rather than leaving the new one to explain itself,
|
|
306
|
+
// because "the one that samples the host's table" is the surprising half of the pair and the
|
|
307
|
+
// one an author has to have decided to want.
|
|
269
308
|
curve: {
|
|
270
|
-
label: "Curve",
|
|
309
|
+
label: "Curve Table",
|
|
271
310
|
icon: `M5 18C10 18 9 6 19 6 ${dot(5, 18, 1.6)} ${dot(19, 6, 1.6)}`,
|
|
272
|
-
help: "sample
|
|
311
|
+
help: "sample a row of the host's animation-curve table at t",
|
|
312
|
+
},
|
|
313
|
+
curveLiteral: {
|
|
314
|
+
// the same curve with its keys on it: this one is the curve rather than a handle to one
|
|
315
|
+
label: "Curve",
|
|
316
|
+
icon: `M4 19C10 19 8 5 20 5 ${dot(4, 19, 1.8)} ${dot(12, 12, 1.8)} ${dot(20, 5, 1.8)}`,
|
|
317
|
+
help: "a curve of your own, written into the program: t in, its value out",
|
|
318
|
+
},
|
|
319
|
+
gradientRGBA: {
|
|
320
|
+
// a strip with its stops underneath, which is what the control is
|
|
321
|
+
label: "RGBA Gradient",
|
|
322
|
+
icon: `M4 5h16v8H4z M4 9h16 ${dot(6, 18, 1.8)} ${dot(12, 18, 1.8)} ${dot(18, 18, 1.8)}`,
|
|
323
|
+
help: "a colour gradient looked up at t, with alpha",
|
|
324
|
+
},
|
|
325
|
+
gradientRGB: {
|
|
326
|
+
label: "RGB Gradient",
|
|
327
|
+
icon: `M4 5h16v8H4z ${dot(6, 18, 1.8)} ${dot(12, 18, 1.8)} ${dot(18, 18, 1.8)}`,
|
|
328
|
+
help: "a colour gradient looked up at t, no alpha",
|
|
273
329
|
},
|
|
274
330
|
});
|
|
275
331
|
|
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A fresh straight 0..1 ramp: what a curve node starts as.
|
|
3
|
+
*
|
|
4
|
+
* Linear rather than eased, because a curve node's first job is almost always to be *changed*, and a
|
|
5
|
+
* straight line is the shape whose change is easiest to see. Tangents of 1 are what make it straight
|
|
6
|
+
* — see {@link roll_out_particle_curve}.
|
|
7
|
+
*
|
|
8
|
+
* @returns {ParticleCurveParameter}
|
|
9
|
+
*/
|
|
10
|
+
export function particle_curve_default(): ParticleCurveParameter;
|
|
11
|
+
/**
|
|
12
|
+
* A fresh black-to-white gradient: what a gradient node starts as.
|
|
13
|
+
*
|
|
14
|
+
* @returns {ParticleGradientStop[]}
|
|
15
|
+
*/
|
|
16
|
+
export function particle_gradient_default(): ParticleGradientStop[];
|
|
17
|
+
/**
|
|
18
|
+
* Whether a value is a curve parameter this can lower — every key a record of four finite numbers.
|
|
19
|
+
*
|
|
20
|
+
* The validator's question and the editor's, asked in one place so that "a curve" means the same
|
|
21
|
+
* thing to both. Not a repair: something that fails this is reported against the node rather than
|
|
22
|
+
* quietly turned into a curve nobody asked for.
|
|
23
|
+
*
|
|
24
|
+
* @param {*} value
|
|
25
|
+
* @returns {boolean}
|
|
26
|
+
*/
|
|
27
|
+
export function is_particle_curve(value: any): boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Whether a value is a gradient parameter this can lower.
|
|
30
|
+
*
|
|
31
|
+
* @param {*} value
|
|
32
|
+
* @returns {boolean}
|
|
33
|
+
*/
|
|
34
|
+
export function is_particle_gradient(value: any): boolean;
|
|
35
|
+
/**
|
|
36
|
+
* A curve's keys in time order.
|
|
37
|
+
*
|
|
38
|
+
* Sorted here rather than trusted, because a key dragged past its neighbour in the editor is an
|
|
39
|
+
* ordinary thing to do and the rollout's telescoping sum is only the piecewise function if the
|
|
40
|
+
* segments are walked in order.
|
|
41
|
+
*
|
|
42
|
+
* @param {ParticleCurveParameter} value
|
|
43
|
+
* @returns {ParticleCurveKey[]}
|
|
44
|
+
*/
|
|
45
|
+
export function particle_curve_keys(value: ParticleCurveParameter): ParticleCurveKey[];
|
|
46
|
+
/**
|
|
47
|
+
* The same curve as the engine's own {@link AnimationCurve} — what the editor draws and evaluates,
|
|
48
|
+
* and what a spec checks the rolled-out instructions against.
|
|
49
|
+
*
|
|
50
|
+
* @param {ParticleCurveParameter} value
|
|
51
|
+
* @returns {AnimationCurve}
|
|
52
|
+
*/
|
|
53
|
+
export function particle_curve_animation(value: ParticleCurveParameter): AnimationCurve;
|
|
54
|
+
/**
|
|
55
|
+
* A curve parameter holding what this {@link AnimationCurve} holds.
|
|
56
|
+
*
|
|
57
|
+
* @param {AnimationCurve} curve
|
|
58
|
+
* @returns {ParticleCurveParameter}
|
|
59
|
+
*/
|
|
60
|
+
export function particle_curve_from_animation(curve: AnimationCurve): ParticleCurveParameter;
|
|
61
|
+
/**
|
|
62
|
+
* A gradient's stops in position order, each with its colour copied.
|
|
63
|
+
*
|
|
64
|
+
* @param {ParticleGradientStop[]} value
|
|
65
|
+
* @returns {ParticleGradientStop[]}
|
|
66
|
+
*/
|
|
67
|
+
export function particle_gradient_stops(value: ParticleGradientStop[]): ParticleGradientStop[];
|
|
68
|
+
/**
|
|
69
|
+
* What a gradient is at `t`, in JavaScript: the same piecewise-linear function the rollout computes,
|
|
70
|
+
* for an editor to draw the strip with and for a spec to check the instructions against.
|
|
71
|
+
*
|
|
72
|
+
* @param {ParticleGradientStop[]} value
|
|
73
|
+
* @param {number} t
|
|
74
|
+
* @returns {number[]} four channels
|
|
75
|
+
*/
|
|
76
|
+
export function particle_gradient_sample(value: ParticleGradientStop[], t: number): number[];
|
|
77
|
+
/**
|
|
78
|
+
* Roll a curve out into arithmetic: `t` in, the curve's value at `t` out, as a scalar.
|
|
79
|
+
*
|
|
80
|
+
* Each segment is a cubic Hermite in its own weight, written in the form the sum wants — `c(0) = 0`
|
|
81
|
+
* and `c(1)` the step across the segment — which is the standard basis with the leading value
|
|
82
|
+
* subtracted back off:
|
|
83
|
+
*
|
|
84
|
+
* c(u) = ((A·u + B)·u + C)·u, A = m0 + m1 - 2Δv, B = 3Δv - 2m0 - m1, C = m0
|
|
85
|
+
*
|
|
86
|
+
* where `Δv` is the segment's rise and `m0`, `m1` are its tangents scaled by its width — exactly what
|
|
87
|
+
* {@link ../../../../engine/animation/curve/evaluate_two_key_curve.js} hands
|
|
88
|
+
* {@link ../../../../core/math/spline/spline3_hermite.js}, so a curve evaluates here to what it
|
|
89
|
+
* evaluates to anywhere else in the engine. Three multiply-adds, the last of which is also the
|
|
90
|
+
* accumulation.
|
|
91
|
+
*
|
|
92
|
+
* A segment whose tangents are its own slope has `A` and `B` at zero, which is a straight line and
|
|
93
|
+
* one instruction instead of three. A segment that neither rises nor turns contributes nothing at
|
|
94
|
+
* all and is not emitted — which is how the flat tail an author leaves on a fade costs nothing.
|
|
95
|
+
*
|
|
96
|
+
* @param {import("./ParticleGroupBuilder.js").ParticleGroupBuilder} g
|
|
97
|
+
* @param {*} t
|
|
98
|
+
* @param {ParticleCurveParameter} value
|
|
99
|
+
* @returns {*} a scalar
|
|
100
|
+
*/
|
|
101
|
+
export function roll_out_particle_curve(g: import("./ParticleGroupBuilder.js").ParticleGroupBuilder, t: any, value: ParticleCurveParameter): any;
|
|
102
|
+
/**
|
|
103
|
+
* Roll a gradient out into arithmetic: `t` in, the colour at `t` out.
|
|
104
|
+
*
|
|
105
|
+
* The same sum as the curve's, with a vector where the curve has a number and a straight line where
|
|
106
|
+
* it has a cubic — a stop's difference times the segment's weight, scaled and added. The weight is
|
|
107
|
+
* one lane and the difference is three or four, which is what `scale` is for: a vector times a
|
|
108
|
+
* broadcast scalar, one instruction, no widening.
|
|
109
|
+
*
|
|
110
|
+
* A segment between two stops of the same colour adds a zero vector and is not emitted, so the flat
|
|
111
|
+
* run an author leaves at either end of a gradient is free.
|
|
112
|
+
*
|
|
113
|
+
* @param {import("./ParticleGroupBuilder.js").ParticleGroupBuilder} g
|
|
114
|
+
* @param {*} t
|
|
115
|
+
* @param {ParticleGradientStop[]} value
|
|
116
|
+
* @param {number} components how many channels to produce: 3 for an RGB gradient, 4 for RGBA
|
|
117
|
+
* @returns {*} a vector of `components` lanes
|
|
118
|
+
*/
|
|
119
|
+
export function roll_out_particle_gradient(g: import("./ParticleGroupBuilder.js").ParticleGroupBuilder, t: any, value: ParticleGradientStop[], components: number): any;
|
|
120
|
+
/**
|
|
121
|
+
* Ramps: a curve and a colour gradient, and the arithmetic either one becomes.
|
|
122
|
+
*
|
|
123
|
+
* Both are the same shape of thing — a value that depends on one number `t`, written down as a
|
|
124
|
+
* handful of points with something interpolated between them — and both are *authored data* rather
|
|
125
|
+
* than wiring, so neither can be a {@link ./ParticleNodeGroup.js node group}: a group's body is
|
|
126
|
+
* fixed when the group is built, and a gradient with five stops is different arithmetic from a
|
|
127
|
+
* gradient with two. They are expanding node types instead (see
|
|
128
|
+
* {@link ./ParticleNodeDescription.js ParticleNodeDescription#expand}), and this is what they expand
|
|
129
|
+
* *into*: stock nodes, which is to say VM instructions, with the curve rolled out along them.
|
|
130
|
+
*
|
|
131
|
+
* ## Rolled out, not sampled
|
|
132
|
+
*
|
|
133
|
+
* There is a `CURVE` opcode, and it is not this. That one samples a row of the animation-curve table
|
|
134
|
+
* a host uploads, which is the right answer for a curve an author is dragging around at runtime and
|
|
135
|
+
* the wrong one for a curve that is part of the effect: it costs a table, a row, a handle to keep in
|
|
136
|
+
* step with it, and a texture fetch. A ramp with four stops rolls out to about twenty instructions
|
|
137
|
+
* of pure arithmetic, needs nothing from the host, and constant-folds where an author has left a
|
|
138
|
+
* segment flat.
|
|
139
|
+
*
|
|
140
|
+
* ## How a piecewise function becomes straight-line code
|
|
141
|
+
*
|
|
142
|
+
* There is no control flow to pick a segment with, so every segment is evaluated and the ones that
|
|
143
|
+
* do not apply are made to contribute nothing. Each segment gets a weight
|
|
144
|
+
*
|
|
145
|
+
* u = clamp((t - t0) / (t1 - t0), 0, 1)
|
|
146
|
+
*
|
|
147
|
+
* which is 0 everywhere before the segment, 1 everywhere after it, and the position within it in
|
|
148
|
+
* between. Contributions are then written as *differences* and summed:
|
|
149
|
+
*
|
|
150
|
+
* f(t) = v0 + sum over segments of c(u), where c(0) = 0 and c(1) = v1 - v0
|
|
151
|
+
*
|
|
152
|
+
* Before a segment, `u` is 0 and it adds nothing. After it, `u` is 1 and it has added exactly the
|
|
153
|
+
* step from its start value to its end value, so the segments before the one `t` is in telescope to
|
|
154
|
+
* "the value at the start of this segment" and the ones after it are silent. Only one segment is
|
|
155
|
+
* ever partway through, and its `c(u)` is the interpolation. The sum is therefore the piecewise
|
|
156
|
+
* function exactly — not an approximation of it — and it is three or four instructions per segment
|
|
157
|
+
* with no comparisons and no branches.
|
|
158
|
+
*
|
|
159
|
+
* It also gives the endpoint behaviour for free: `t` below the first stop leaves every weight at 0
|
|
160
|
+
* and the value is the first stop's, and above the last stop every weight is 1. That is what
|
|
161
|
+
* {@link AnimationCurve#evaluate} does at the ends, so the rollout and the editor's own preview
|
|
162
|
+
* agree there as well as in the middle.
|
|
163
|
+
*
|
|
164
|
+
* ## Why a gradient is not four curves
|
|
165
|
+
*
|
|
166
|
+
* A curve is an {@link AnimationCurve} — keys with tangents, the same class the rest of the engine
|
|
167
|
+
* animates with, so a curve authored here can be moved anywhere a curve is wanted and the editor's
|
|
168
|
+
* preview is the engine's own evaluation rather than a second opinion about it.
|
|
169
|
+
*
|
|
170
|
+
* A gradient is *not* four of those. A colour stop is one position with a colour on it, and that is
|
|
171
|
+
* the whole reason a gradient is easy to author: drag the stop and the colour moves. Four
|
|
172
|
+
* independent curves would let the red key drift away from the green one, and the interface the
|
|
173
|
+
* stops are for — Photoshop's, and everybody else's — could no longer be drawn over the data. So a
|
|
174
|
+
* gradient keeps a shared position per stop and interpolates linearly, and shares with the curve the
|
|
175
|
+
* thing actually worth sharing: the weights above, and the sum they go into.
|
|
176
|
+
*/
|
|
177
|
+
/**
|
|
178
|
+
* One key of a curve, as it is stored in a node's parameters — the shape {@link AnimationCurve}
|
|
179
|
+
* writes and reads.
|
|
180
|
+
*
|
|
181
|
+
* @typedef {object} ParticleCurveKey
|
|
182
|
+
* @property {number} time
|
|
183
|
+
* @property {number} value
|
|
184
|
+
* @property {number} inTangent
|
|
185
|
+
* @property {number} outTangent
|
|
186
|
+
*/
|
|
187
|
+
/**
|
|
188
|
+
* A curve, as a node parameter holds one.
|
|
189
|
+
*
|
|
190
|
+
* @typedef {{keys: ParticleCurveKey[]}} ParticleCurveParameter
|
|
191
|
+
*/
|
|
192
|
+
/**
|
|
193
|
+
* One stop of a gradient: where it sits along `t`, and the colour there. The colour is always four
|
|
194
|
+
* numbers, whatever the node reads of it — an RGB gradient uses the first three — so that a gradient
|
|
195
|
+
* survives being moved between the two node types with its alpha intact.
|
|
196
|
+
*
|
|
197
|
+
* @typedef {{position: number, color: number[]}} ParticleGradientStop
|
|
198
|
+
*/
|
|
199
|
+
/**
|
|
200
|
+
* How many lanes a gradient's colour is written with, whichever node reads it.
|
|
201
|
+
* @type {number}
|
|
202
|
+
*/
|
|
203
|
+
export const PARTICLE_GRADIENT_COLOR_COMPONENTS: number;
|
|
204
|
+
/**
|
|
205
|
+
* One key of a curve, as it is stored in a node's parameters — the shape {@link AnimationCurve }
|
|
206
|
+
* writes and reads.
|
|
207
|
+
*/
|
|
208
|
+
export type ParticleCurveKey = {
|
|
209
|
+
time: number;
|
|
210
|
+
value: number;
|
|
211
|
+
inTangent: number;
|
|
212
|
+
outTangent: number;
|
|
213
|
+
};
|
|
214
|
+
/**
|
|
215
|
+
* A curve, as a node parameter holds one.
|
|
216
|
+
*/
|
|
217
|
+
export type ParticleCurveParameter = {
|
|
218
|
+
keys: ParticleCurveKey[];
|
|
219
|
+
};
|
|
220
|
+
/**
|
|
221
|
+
* One stop of a gradient: where it sits along `t`, and the colour there. The colour is always four
|
|
222
|
+
* numbers, whatever the node reads of it — an RGB gradient uses the first three — so that a gradient
|
|
223
|
+
* survives being moved between the two node types with its alpha intact.
|
|
224
|
+
*/
|
|
225
|
+
export type ParticleGradientStop = {
|
|
226
|
+
position: number;
|
|
227
|
+
color: number[];
|
|
228
|
+
};
|
|
229
|
+
import { AnimationCurve } from "../../../../engine/animation/curve/AnimationCurve.js";
|
|
230
|
+
//# sourceMappingURL=particle_ramp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"particle_ramp.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/particles/graph/particle_ramp.js"],"names":[],"mappings":"AA2FA;;;;;;;;GAQG;AACH,0CAFa,sBAAsB,CASlC;AAED;;;;GAIG;AACH,6CAFa,oBAAoB,EAAE,CAOlC;AAUD;;;;;;;;;GASG;AACH,+CAFa,OAAO,CAanB;AAED;;;;;GAKG;AACH,kDAFa,OAAO,CAanB;AAED;;;;;;;;;GASG;AACH,2CAHW,sBAAsB,GACpB,gBAAgB,EAAE,CAI9B;AAED;;;;;;GAMG;AACH,gDAHW,sBAAsB,GACpB,cAAc,CAQ1B;AAED;;;;;GAKG;AACH,qDAHW,cAAc,GACZ,sBAAsB,CAWlC;AAED;;;;;GAKG;AACH,+CAHW,oBAAoB,EAAE,GACpB,oBAAoB,EAAE,CAMlC;AAED;;;;;;;GAOG;AACH,gDAJW,oBAAoB,EAAE,KACtB,MAAM,GACJ,MAAM,EAAE,CAsBpB;AA8BD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,2CALW,OAAO,2BAA2B,EAAE,oBAAoB,iBAExD,sBAAsB,OA+ChC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,8CANW,OAAO,2BAA2B,EAAE,oBAAoB,iBAExD,oBAAoB,EAAE,cACtB,MAAM,OA8BhB;AA/YD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwDG;AAEH;;;;;;;;;GASG;AAEH;;;;GAIG;AAEH;;;;;;GAMG;AAEH;;;GAGG;AACH,iDAFU,MAAM,CAEoC;;;;;;UAxBtC,MAAM;WACN,MAAM;eACN,MAAM;gBACN,MAAM;;;;;qCAMP;IAAC,IAAI,EAAE,gBAAgB,EAAE,CAAA;CAAC;;;;;;mCAQ1B;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAC;+BAlFjB,sDAAsD"}
|