@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
|
@@ -1,159 +1,185 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Simplex noise, written out in JavaScript, for the group in
|
|
3
|
-
* {@link ./particle_groups_noise.js} to be checked against.
|
|
4
|
-
*
|
|
5
|
-
* A second implementation of a thing is usually a bad oracle — it goes wrong in the same way the
|
|
6
|
-
* first one did — but that is not the risk here. The group is not written as arithmetic at all; it is
|
|
7
|
-
* a graph of two hundred nodes assembled through a builder, lowered by a register allocator and run
|
|
8
|
-
* on an interpreter. This is the algorithm as anybody else would write it, and agreeing with it lane
|
|
9
|
-
* for lane is what says the graph is that algorithm.
|
|
10
|
-
*
|
|
11
|
-
* ## Why every step rounds
|
|
12
|
-
*
|
|
13
|
-
* The VM's register file is `f32`, so every instruction's result is rounded to single precision
|
|
14
|
-
* before the next one reads it. That is normally a difference of a few ulps and of no interest.
|
|
15
|
-
* Here it decides which gradient a corner gets: the gradient table is reached by asking whether
|
|
16
|
-
* `1 - |x| - |y|` is at or below zero, and a seventh of the table sits at exactly zero in exact
|
|
17
|
-
* arithmetic — and a hundred-millionth *above* it once the seventh has been rounded to `f32`. A
|
|
18
|
-
* double-precision oracle takes the other branch there and disagrees with the VM about a third of the
|
|
19
|
-
* time, and it would be the one that was wrong: a GPU is `f32` too.
|
|
20
|
-
*
|
|
21
|
-
* So `fr` is applied wherever the VM would have stored a register, and nowhere else. Sums inside a
|
|
22
|
-
* dot product are not rounded per term, because the opcode accumulates and stores once.
|
|
23
|
-
*/
|
|
24
|
-
|
|
25
|
-
/** @type {function(number):number} */
|
|
26
|
-
const fr = Math.fround;
|
|
27
|
-
|
|
28
|
-
/** Skew factor for the 3-simplex lattice. @type {number} */
|
|
29
|
-
const F3 = 1 / 3;
|
|
30
|
-
|
|
31
|
-
/** Unskew factor for the 3-simplex lattice. @type {number} */
|
|
32
|
-
const G3 = 1 / 6;
|
|
33
|
-
|
|
34
|
-
/**
|
|
35
|
-
* @param {number[]} a
|
|
36
|
-
* @param {number[]} b
|
|
37
|
-
* @returns {number} the dot product, accumulated wide and rounded once, as `DOT` does
|
|
38
|
-
*/
|
|
39
|
-
function dot(a, b) {
|
|
40
|
-
let sum = 0;
|
|
41
|
-
|
|
42
|
-
for (let i = 0; i < a.length; i++) {
|
|
43
|
-
sum += a[i] * b[i];
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
return fr(sum);
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
/**
|
|
50
|
-
* GLSL's `step`: 1 where `x` is at or above the edge.
|
|
51
|
-
*
|
|
52
|
-
* @param {number} edge
|
|
53
|
-
* @param {number} x
|
|
54
|
-
* @returns {number}
|
|
55
|
-
*/
|
|
56
|
-
function step(edge, x) {
|
|
57
|
-
return x < edge ? 0 : 1;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
/**
|
|
61
|
-
* `
|
|
62
|
-
*
|
|
63
|
-
*
|
|
64
|
-
*
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
const
|
|
114
|
-
|
|
115
|
-
const
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
]
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
const
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Simplex noise, written out in JavaScript, for the group in
|
|
3
|
+
* {@link ./particle_groups_noise.js} to be checked against.
|
|
4
|
+
*
|
|
5
|
+
* A second implementation of a thing is usually a bad oracle — it goes wrong in the same way the
|
|
6
|
+
* first one did — but that is not the risk here. The group is not written as arithmetic at all; it is
|
|
7
|
+
* a graph of two hundred nodes assembled through a builder, lowered by a register allocator and run
|
|
8
|
+
* on an interpreter. This is the algorithm as anybody else would write it, and agreeing with it lane
|
|
9
|
+
* for lane is what says the graph is that algorithm.
|
|
10
|
+
*
|
|
11
|
+
* ## Why every step rounds
|
|
12
|
+
*
|
|
13
|
+
* The VM's register file is `f32`, so every instruction's result is rounded to single precision
|
|
14
|
+
* before the next one reads it. That is normally a difference of a few ulps and of no interest.
|
|
15
|
+
* Here it decides which gradient a corner gets: the gradient table is reached by asking whether
|
|
16
|
+
* `1 - |x| - |y|` is at or below zero, and a seventh of the table sits at exactly zero in exact
|
|
17
|
+
* arithmetic — and a hundred-millionth *above* it once the seventh has been rounded to `f32`. A
|
|
18
|
+
* double-precision oracle takes the other branch there and disagrees with the VM about a third of the
|
|
19
|
+
* time, and it would be the one that was wrong: a GPU is `f32` too.
|
|
20
|
+
*
|
|
21
|
+
* So `fr` is applied wherever the VM would have stored a register, and nowhere else. Sums inside a
|
|
22
|
+
* dot product are not rounded per term, because the opcode accumulates and stores once.
|
|
23
|
+
*/
|
|
24
|
+
|
|
25
|
+
/** @type {function(number):number} */
|
|
26
|
+
const fr = Math.fround;
|
|
27
|
+
|
|
28
|
+
/** Skew factor for the 3-simplex lattice. @type {number} */
|
|
29
|
+
const F3 = 1 / 3;
|
|
30
|
+
|
|
31
|
+
/** Unskew factor for the 3-simplex lattice. @type {number} */
|
|
32
|
+
const G3 = 1 / 6;
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* @param {number[]} a
|
|
36
|
+
* @param {number[]} b
|
|
37
|
+
* @returns {number} the dot product, accumulated wide and rounded once, as `DOT` does
|
|
38
|
+
*/
|
|
39
|
+
function dot(a, b) {
|
|
40
|
+
let sum = 0;
|
|
41
|
+
|
|
42
|
+
for (let i = 0; i < a.length; i++) {
|
|
43
|
+
sum += a[i] * b[i];
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
return fr(sum);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* GLSL's `step`: 1 where `x` is at or above the edge.
|
|
51
|
+
*
|
|
52
|
+
* @param {number} edge
|
|
53
|
+
* @param {number} x
|
|
54
|
+
* @returns {number}
|
|
55
|
+
*/
|
|
56
|
+
function step(edge, x) {
|
|
57
|
+
return x < edge ? 0 : 1;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* `NORMALIZE`, as the opcode does it: the length is accumulated and taken wide and only the lanes
|
|
62
|
+
* are rounded, and a zero vector normalises to zero rather than to nothing.
|
|
63
|
+
*
|
|
64
|
+
* The group used to spell this as Gustavson's `taylorInvSqrt` — a line through the band the gradient
|
|
65
|
+
* table's squared lengths fall in — and now calls the opcode, which is one instruction rather than
|
|
66
|
+
* five and is exact where the line was not. The field moves by the approximation's error, which is
|
|
67
|
+
* where this oracle moved with it.
|
|
68
|
+
*
|
|
69
|
+
* @param {number[]} v
|
|
70
|
+
* @returns {number[]}
|
|
71
|
+
*/
|
|
72
|
+
function normalize(v) {
|
|
73
|
+
let sum = 0;
|
|
74
|
+
|
|
75
|
+
for (const component of v) {
|
|
76
|
+
sum += component * component;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
const length = Math.sqrt(sum);
|
|
80
|
+
|
|
81
|
+
const inverse = length > 0 ? 1 / length : 0;
|
|
82
|
+
|
|
83
|
+
return v.map(component => fr(component * inverse));
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* `x mod 289`, as the shader spells it. Exact in `f32` over the range the hash reaches.
|
|
88
|
+
*
|
|
89
|
+
* @param {number} x
|
|
90
|
+
* @returns {number}
|
|
91
|
+
*/
|
|
92
|
+
function mod289(x) {
|
|
93
|
+
return x - Math.floor(x * (1 / 289)) * 289;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* The permutation polynomial, `(34x + 1) x mod 289`.
|
|
98
|
+
*
|
|
99
|
+
* @param {number} x
|
|
100
|
+
* @returns {number}
|
|
101
|
+
*/
|
|
102
|
+
function permute(x) {
|
|
103
|
+
return mod289((x * 34 + 1) * x);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* Simplex noise over three dimensions, in roughly `[-1, 1]`.
|
|
108
|
+
*
|
|
109
|
+
* @param {number[]} point a three-element position
|
|
110
|
+
* @returns {number}
|
|
111
|
+
*/
|
|
112
|
+
export function simplex3_reference(point) {
|
|
113
|
+
const v = point.map(fr);
|
|
114
|
+
|
|
115
|
+
const skew = dot(v, [fr(F3), fr(F3), fr(F3)]);
|
|
116
|
+
|
|
117
|
+
const cell = v.map(c => Math.floor(fr(c + skew)));
|
|
118
|
+
|
|
119
|
+
const unskew = dot(cell, [fr(G3), fr(G3), fr(G3)]);
|
|
120
|
+
|
|
121
|
+
const x0 = v.map((c, k) => fr(fr(c - cell[k]) + unskew));
|
|
122
|
+
|
|
123
|
+
const order = [step(x0[1], x0[0]), step(x0[2], x0[1]), step(x0[0], x0[2])];
|
|
124
|
+
const rest = order.map(c => 1 - c);
|
|
125
|
+
const rest_zxy = [rest[2], rest[0], rest[1]];
|
|
126
|
+
|
|
127
|
+
const step1 = order.map((c, k) => Math.min(c, rest_zxy[k]));
|
|
128
|
+
const step2 = order.map((c, k) => Math.max(c, rest_zxy[k]));
|
|
129
|
+
|
|
130
|
+
const cell289 = cell.map(mod289);
|
|
131
|
+
|
|
132
|
+
let hashed = [0, step1[2], step2[2], 1].map(c => permute(c + cell289[2]));
|
|
133
|
+
|
|
134
|
+
hashed = hashed.map((c, k) => permute(c + cell289[1] + [0, step1[1], step2[1], 1][k]));
|
|
135
|
+
hashed = hashed.map((c, k) => permute(c + cell289[0] + [0, step1[0], step2[0], 1][k]));
|
|
136
|
+
|
|
137
|
+
const ns_x = fr(2 / 7);
|
|
138
|
+
const ns_y = fr((1 / 7) * 0.5 - 1);
|
|
139
|
+
const ns_z = fr(1 / 7);
|
|
140
|
+
|
|
141
|
+
const offsets = [
|
|
142
|
+
x0,
|
|
143
|
+
x0.map((c, k) => fr(fr(c - step1[k]) + fr(G3))),
|
|
144
|
+
x0.map((c, k) => fr(fr(c - step2[k]) + fr(G3 * 2))),
|
|
145
|
+
x0.map(c => fr(c - 0.5)),
|
|
146
|
+
];
|
|
147
|
+
|
|
148
|
+
let total = 0;
|
|
149
|
+
|
|
150
|
+
for (let corner = 0; corner < 4; corner++) {
|
|
151
|
+
const index = hashed[corner];
|
|
152
|
+
|
|
153
|
+
const j = index - 49 * Math.floor(fr(index * fr(ns_z * ns_z)));
|
|
154
|
+
|
|
155
|
+
const row = Math.floor(fr(j * ns_z));
|
|
156
|
+
const column = Math.floor(fr(j - fr(7 * row)));
|
|
157
|
+
|
|
158
|
+
const gx = fr(row * ns_x + ns_y);
|
|
159
|
+
const gy = fr(column * ns_x + ns_y);
|
|
160
|
+
const gz = fr(fr(1 - Math.abs(gx)) - Math.abs(gy));
|
|
161
|
+
|
|
162
|
+
// at or below zero, matching the shader's `-step(h, 0)` — see the note above about why the
|
|
163
|
+
// boundary is reachable and which side of it single precision lands on. Negated, as the
|
|
164
|
+
// group negates it, so each reflection is one multiply-add and rounds once.
|
|
165
|
+
const inside = gz <= 0 ? -1 : 0;
|
|
166
|
+
|
|
167
|
+
const gradient = [
|
|
168
|
+
fr(fr(Math.floor(gx) * 2 + 1) * inside + gx),
|
|
169
|
+
fr(fr(Math.floor(gy) * 2 + 1) * inside + gy),
|
|
170
|
+
gz,
|
|
171
|
+
];
|
|
172
|
+
|
|
173
|
+
const normalized = normalize(gradient);
|
|
174
|
+
|
|
175
|
+
const offset = offsets[corner];
|
|
176
|
+
|
|
177
|
+
// `saturate`, which for a falloff that cannot exceed 0.6 is the `max` it replaced
|
|
178
|
+
const falloff = fr(Math.min(1, Math.max(fr(fr(0.6) - dot(offset, offset)), 0)));
|
|
179
|
+
const squared = fr(falloff * falloff);
|
|
180
|
+
|
|
181
|
+
total = fr(total + fr(fr(squared * squared) * dot(normalized, offset)));
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
return fr(fr(42) * total);
|
|
185
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"make_particle_group.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/particles/graph/make_particle_group.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"make_particle_group.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/particles/graph/make_particle_group.js"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH;IAtB6B,KAAK;IACE,KAAK,EAA9B,SAAS,MAAM,CAAC;IACD,IAAI,EAAnB,MAAM;IACU,KAAK,GAArB,MAAM;IACU,IAAI,GAApB,MAAM;IACU,IAAI,GAApB,MAAM;IACuB,MAAM;IAII,cAAc;IAES,MAAM,GAApE,OAAO,6BAA6B,EAAE,cAAc;;WAGnD,iBAAiB;YAChB,MAAM;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAC,CAAA;KAAC,CAAC;aACxD,MAAM;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAC,CAAC,CAAA;KAAC,CAAC;EAgE3E;kCAnI6D,wBAAwB"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { PortDirection } from "../../../../core/model/node-graph/node/PortDirection.js";
|
|
2
2
|
import { infer_particle_graph_types } from "./infer_particle_graph_types.js";
|
|
3
|
+
import { clone_particle_parameters } from "./particle_node_parameters.js";
|
|
3
4
|
import { is_particle_group_boundary, ParticleNodeGroup } from "./ParticleNodeGroup.js";
|
|
4
5
|
|
|
5
6
|
/**
|
|
@@ -282,7 +283,7 @@ function fill_body(group, graph, selected, boundary, visual, visualRegistry) {
|
|
|
282
283
|
|
|
283
284
|
const copy = body.getNodeSafe(body.createNode(outer.description));
|
|
284
285
|
|
|
285
|
-
copy.setParameters(
|
|
286
|
+
copy.setParameters(clone_particle_parameters(outer.parameters));
|
|
286
287
|
|
|
287
288
|
copies.set(id, copy);
|
|
288
289
|
|
|
@@ -406,22 +407,3 @@ function unique_name(candidate, claimed) {
|
|
|
406
407
|
|
|
407
408
|
return name;
|
|
408
409
|
}
|
|
409
|
-
|
|
410
|
-
/**
|
|
411
|
-
* A node's parameters, deep enough that the copy and the original cannot write through to each
|
|
412
|
-
* other. See the same function in {@link ./flatten_particle_graph.js}.
|
|
413
|
-
*
|
|
414
|
-
* @param {object} parameters
|
|
415
|
-
* @returns {object}
|
|
416
|
-
*/
|
|
417
|
-
function clone_parameters(parameters) {
|
|
418
|
-
const result = {};
|
|
419
|
-
|
|
420
|
-
for (const key of Object.keys(parameters)) {
|
|
421
|
-
const value = parameters[key];
|
|
422
|
-
|
|
423
|
-
result[key] = Array.isArray(value) ? value.slice() : value;
|
|
424
|
-
}
|
|
425
|
-
|
|
426
|
-
return result;
|
|
427
|
-
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Comparison operators the single `compare` node type covers, and the opcode each lowers to.
|
|
3
|
+
*
|
|
4
|
+
* A file of its own, small as it is, because it is the one thing
|
|
5
|
+
* {@link ./particle_node_parameters.js} needs from the node library *while it is being defined* —
|
|
6
|
+
* the parameter schema lists these options as its module body runs. Left in
|
|
7
|
+
* {@link ./ParticleNodeRegistry.js} it made the two modules a cycle that only held together while
|
|
8
|
+
* nobody imported them in the wrong order, and the registry now reaches for
|
|
9
|
+
* {@link ./ParticleGroupBuilder.js} — which reaches back through the parameter schema — so the
|
|
10
|
+
* order it held together in is no longer the order they load in.
|
|
11
|
+
*
|
|
12
|
+
* @type {Object<string, number>}
|
|
13
|
+
*/
|
|
14
|
+
export const PARTICLE_COMPARE_OPCODES: {
|
|
15
|
+
[x: string]: number;
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=particle_compare_ops.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"particle_compare_ops.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/particles/graph/particle_compare_ops.js"],"names":[],"mappings":"AAEA;;;;;;;;;;;;GAYG;AACH;QAFiB,MAAM,GAAE,MAAM;EAQ5B"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { VM_OP } from "../isa/ParticleVMISA.js";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Comparison operators the single `compare` node type covers, and the opcode each lowers to.
|
|
5
|
+
*
|
|
6
|
+
* A file of its own, small as it is, because it is the one thing
|
|
7
|
+
* {@link ./particle_node_parameters.js} needs from the node library *while it is being defined* —
|
|
8
|
+
* the parameter schema lists these options as its module body runs. Left in
|
|
9
|
+
* {@link ./ParticleNodeRegistry.js} it made the two modules a cycle that only held together while
|
|
10
|
+
* nobody imported them in the wrong order, and the registry now reaches for
|
|
11
|
+
* {@link ./ParticleGroupBuilder.js} — which reaches back through the parameter schema — so the
|
|
12
|
+
* order it held together in is no longer the order they load in.
|
|
13
|
+
*
|
|
14
|
+
* @type {Object<string, number>}
|
|
15
|
+
*/
|
|
16
|
+
export const PARTICLE_COMPARE_OPCODES = Object.freeze({
|
|
17
|
+
lt: VM_OP.CMP_LT,
|
|
18
|
+
le: VM_OP.CMP_LE,
|
|
19
|
+
gt: VM_OP.CMP_GT,
|
|
20
|
+
ge: VM_OP.CMP_GE,
|
|
21
|
+
eq: VM_OP.CMP_EQ,
|
|
22
|
+
});
|
|
@@ -8,30 +8,50 @@
|
|
|
8
8
|
* importing the other.
|
|
9
9
|
*/
|
|
10
10
|
/**
|
|
11
|
-
* One
|
|
11
|
+
* One finding about a graph.
|
|
12
12
|
*
|
|
13
13
|
* @typedef {object} ParticleGraphDiagnostic
|
|
14
|
-
* @property {number} node the
|
|
14
|
+
* @property {number} node the node it is about, or -1 for the graph as a whole
|
|
15
15
|
* @property {string} message
|
|
16
|
-
* @property {string} severity {@link PARTICLE_GRAPH_ERROR} — the graph will not compile —
|
|
17
|
-
* {@link PARTICLE_GRAPH_WARNING}
|
|
16
|
+
* @property {string} severity {@link PARTICLE_GRAPH_ERROR} — the graph will not compile —
|
|
17
|
+
* {@link PARTICLE_GRAPH_WARNING}, or {@link PARTICLE_GRAPH_INFO}
|
|
18
18
|
*/
|
|
19
19
|
/** @type {string} */
|
|
20
20
|
export const PARTICLE_GRAPH_ERROR: string;
|
|
21
21
|
/** @type {string} */
|
|
22
22
|
export const PARTICLE_GRAPH_WARNING: string;
|
|
23
23
|
/**
|
|
24
|
-
*
|
|
24
|
+
* Something worth knowing about a graph that is not wrong with it.
|
|
25
|
+
*
|
|
26
|
+
* A node no sink reads is the one that matters: it is not compiled, so nothing about it can break
|
|
27
|
+
* the effect and nothing about it is worth a warning — but an author who cannot see why their edit
|
|
28
|
+
* changed nothing is owed the reason. Saying it at this level is what lets the graph compile with
|
|
29
|
+
* half-built work sitting next to it.
|
|
30
|
+
*
|
|
31
|
+
* @type {string}
|
|
32
|
+
*/
|
|
33
|
+
export const PARTICLE_GRAPH_INFO: string;
|
|
34
|
+
/**
|
|
35
|
+
* How loudly each level speaks, so a caller with several findings about one node can show the
|
|
36
|
+
* loudest. Higher outranks lower.
|
|
37
|
+
*
|
|
38
|
+
* @type {Object<string, number>}
|
|
39
|
+
*/
|
|
40
|
+
export const PARTICLE_GRAPH_SEVERITY_RANK: {
|
|
41
|
+
[x: string]: number;
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* One finding about a graph.
|
|
25
45
|
*/
|
|
26
46
|
export type ParticleGraphDiagnostic = {
|
|
27
47
|
/**
|
|
28
|
-
* the
|
|
48
|
+
* the node it is about, or -1 for the graph as a whole
|
|
29
49
|
*/
|
|
30
50
|
node: number;
|
|
31
51
|
message: string;
|
|
32
52
|
/**
|
|
33
|
-
* {@link PARTICLE_GRAPH_ERROR } — the graph will not compile —
|
|
34
|
-
* {@link PARTICLE_GRAPH_WARNING }
|
|
53
|
+
* {@link PARTICLE_GRAPH_ERROR } — the graph will not compile —
|
|
54
|
+
* {@link PARTICLE_GRAPH_WARNING }, or {@link PARTICLE_GRAPH_INFO }
|
|
35
55
|
*/
|
|
36
56
|
severity: string;
|
|
37
57
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"particle_graph_diagnostic.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/particles/graph/particle_graph_diagnostic.js"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;;;;;;;GAQG;AAEH,qBAAqB;AACrB,mCADW,MAAM,CAC2B;AAE5C,qBAAqB;AACrB,qCADW,MAAM,CAC+B;;;;;;;;
|
|
1
|
+
{"version":3,"file":"particle_graph_diagnostic.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/particles/graph/particle_graph_diagnostic.js"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;;;;;;;GAQG;AAEH,qBAAqB;AACrB,mCADW,MAAM,CAC2B;AAE5C,qBAAqB;AACrB,qCADW,MAAM,CAC+B;AAEhD;;;;;;;;;GASG;AACH,kCAFU,MAAM,CAE0B;AAE1C;;;;;GAKG;AACH;QAFiB,MAAM,GAAE,MAAM;EAM5B;;;;;;;;UAlCW,MAAM;aACN,MAAM;;;;;cACN,MAAM"}
|
|
@@ -1,25 +1,49 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* What a check of a particle graph has to say about it, one finding at a time.
|
|
3
|
-
*
|
|
4
|
-
* Findings come from more than one place — the structural checks in
|
|
5
|
-
* {@link ./validate_particle_graph.js} and the type resolution in
|
|
6
|
-
* {@link ./infer_particle_graph_types.js} — and go to one place, a view that marks nodes and
|
|
7
|
-
* lists messages. This is the shape they agree on, kept where both can import it without either
|
|
8
|
-
* importing the other.
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* One
|
|
13
|
-
*
|
|
14
|
-
* @typedef {object} ParticleGraphDiagnostic
|
|
15
|
-
* @property {number} node the
|
|
16
|
-
* @property {string} message
|
|
17
|
-
* @property {string} severity {@link PARTICLE_GRAPH_ERROR} — the graph will not compile —
|
|
18
|
-
* {@link PARTICLE_GRAPH_WARNING}
|
|
19
|
-
*/
|
|
20
|
-
|
|
21
|
-
/** @type {string} */
|
|
22
|
-
export const PARTICLE_GRAPH_ERROR = "error";
|
|
23
|
-
|
|
24
|
-
/** @type {string} */
|
|
25
|
-
export const PARTICLE_GRAPH_WARNING = "warning";
|
|
1
|
+
/**
|
|
2
|
+
* What a check of a particle graph has to say about it, one finding at a time.
|
|
3
|
+
*
|
|
4
|
+
* Findings come from more than one place — the structural checks in
|
|
5
|
+
* {@link ./validate_particle_graph.js} and the type resolution in
|
|
6
|
+
* {@link ./infer_particle_graph_types.js} — and go to one place, a view that marks nodes and
|
|
7
|
+
* lists messages. This is the shape they agree on, kept where both can import it without either
|
|
8
|
+
* importing the other.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* One finding about a graph.
|
|
13
|
+
*
|
|
14
|
+
* @typedef {object} ParticleGraphDiagnostic
|
|
15
|
+
* @property {number} node the node it is about, or -1 for the graph as a whole
|
|
16
|
+
* @property {string} message
|
|
17
|
+
* @property {string} severity {@link PARTICLE_GRAPH_ERROR} — the graph will not compile —
|
|
18
|
+
* {@link PARTICLE_GRAPH_WARNING}, or {@link PARTICLE_GRAPH_INFO}
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
/** @type {string} */
|
|
22
|
+
export const PARTICLE_GRAPH_ERROR = "error";
|
|
23
|
+
|
|
24
|
+
/** @type {string} */
|
|
25
|
+
export const PARTICLE_GRAPH_WARNING = "warning";
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Something worth knowing about a graph that is not wrong with it.
|
|
29
|
+
*
|
|
30
|
+
* A node no sink reads is the one that matters: it is not compiled, so nothing about it can break
|
|
31
|
+
* the effect and nothing about it is worth a warning — but an author who cannot see why their edit
|
|
32
|
+
* changed nothing is owed the reason. Saying it at this level is what lets the graph compile with
|
|
33
|
+
* half-built work sitting next to it.
|
|
34
|
+
*
|
|
35
|
+
* @type {string}
|
|
36
|
+
*/
|
|
37
|
+
export const PARTICLE_GRAPH_INFO = "info";
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* How loudly each level speaks, so a caller with several findings about one node can show the
|
|
41
|
+
* loudest. Higher outranks lower.
|
|
42
|
+
*
|
|
43
|
+
* @type {Object<string, number>}
|
|
44
|
+
*/
|
|
45
|
+
export const PARTICLE_GRAPH_SEVERITY_RANK = Object.freeze({
|
|
46
|
+
[PARTICLE_GRAPH_INFO]: 0,
|
|
47
|
+
[PARTICLE_GRAPH_WARNING]: 1,
|
|
48
|
+
[PARTICLE_GRAPH_ERROR]: 2,
|
|
49
|
+
});
|
|
@@ -1,3 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A node's parameters, copied deeply enough that the copy and the original cannot write through to
|
|
3
|
+
* each other.
|
|
4
|
+
*
|
|
5
|
+
* There are four places a parameter object is copied — flattening a group, making one, taking one
|
|
6
|
+
* apart again, and handing a fresh node its defaults — and until the library had a parameter with a
|
|
7
|
+
* shape inside it they were all one level deep and all correct. A gradient's stops are a level
|
|
8
|
+
* further down than a literal's lanes, and a copy that stopped at the array would have left an
|
|
9
|
+
* ungrouped gradient sharing its stops with the group definition it came out of: edit the colour on
|
|
10
|
+
* one and it changes on the other, and on every other instance of that group.
|
|
11
|
+
*
|
|
12
|
+
* So there is one of these now, and it goes all the way down. Values are numbers, strings, and arrays
|
|
13
|
+
* and plain records of those; it is written out rather than handed to `structuredClone` because
|
|
14
|
+
* flattening a `curl4` runs it four thousand times and none of these values needs the machinery.
|
|
15
|
+
*
|
|
16
|
+
* @param {object} parameters
|
|
17
|
+
* @returns {object}
|
|
18
|
+
*/
|
|
19
|
+
export function clone_particle_parameters(parameters: object): object;
|
|
1
20
|
/**
|
|
2
21
|
* The parameters of one node type.
|
|
3
22
|
*
|
|
@@ -74,6 +93,16 @@ export const PARTICLE_PARAMETER_KIND: Readonly<{
|
|
|
74
93
|
SWIZZLE: "swizzle";
|
|
75
94
|
/** a non-negative integer — a curve handle */
|
|
76
95
|
INTEGER: "integer";
|
|
96
|
+
/**
|
|
97
|
+
* an {@link ../../../../engine/animation/curve/AnimationCurve.js AnimationCurve}, as the
|
|
98
|
+
* `{keys: [...]}` record that class writes and reads
|
|
99
|
+
*/
|
|
100
|
+
CURVE: "curve";
|
|
101
|
+
/**
|
|
102
|
+
* a colour gradient: a list of `{position, color}` stops, see
|
|
103
|
+
* {@link ./particle_ramp.js ParticleGradientStop}
|
|
104
|
+
*/
|
|
105
|
+
GRADIENT: "gradient";
|
|
77
106
|
}>;
|
|
78
107
|
/**
|
|
79
108
|
* One parameter of one node type.
|
|
@@ -84,6 +113,10 @@ export const PARTICLE_PARAMETER_KIND: Readonly<{
|
|
|
84
113
|
* @property {*} [default] the value a freshly created node takes; absent for
|
|
85
114
|
* {@link PARTICLE_PARAMETER_KIND.ATTRIBUTE}, whose default can only come from the effect's layout
|
|
86
115
|
* @property {Object<string, *>} [options] for {@link PARTICLE_PARAMETER_KIND.ENUM}: label -> value
|
|
116
|
+
* @property {boolean} [alpha] for {@link PARTICLE_PARAMETER_KIND.GRADIENT}: whether the node reads
|
|
117
|
+
* the alpha channel. Both gradients *store* one — see {@link ./particle_ramp.js} — so that a
|
|
118
|
+
* gradient moved from the RGBA node to the RGB one and back keeps it; this says whether to offer
|
|
119
|
+
* it for editing.
|
|
87
120
|
* @property {string} [description] one line of help, shown by the editor
|
|
88
121
|
*/
|
|
89
122
|
/**
|
|
@@ -138,6 +171,13 @@ export type ParticleNodeParameter = {
|
|
|
138
171
|
options?: {
|
|
139
172
|
[x: string]: any;
|
|
140
173
|
};
|
|
174
|
+
/**
|
|
175
|
+
* for {@link PARTICLE_PARAMETER_KIND.GRADIENT }: whether the node reads
|
|
176
|
+
* the alpha channel. Both gradients *store* one — see {@link ./particle_ramp.js} — so that a
|
|
177
|
+
* gradient moved from the RGBA node to the RGB one and back keeps it; this says whether to offer
|
|
178
|
+
* it for editing.
|
|
179
|
+
*/
|
|
180
|
+
alpha?: boolean;
|
|
141
181
|
/**
|
|
142
182
|
* one line of help, shown by the editor
|
|
143
183
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"particle_node_parameters.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/particles/graph/particle_node_parameters.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"particle_node_parameters.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/particles/graph/particle_node_parameters.js"],"names":[],"mappings":"AAwMA;;;;;;;;;;;;;;;;;GAiBG;AACH,sDAHW,MAAM,GACJ,MAAM,CAIlB;AAwBD;;;;;;GAMG;AACH,+CAJW,MAAM,GACJ,qBAAqB,EAAE,CAcnC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,uDANW,MAAM;IAEyD,MAAM,GAArE,OAAO,6BAA6B,EAAE,cAAc;IAElD,MAAM,CAmBlB;AAED;;;;GAIG;AACH,2CAFa,MAAM;IAAC,WAAW,EAAE,OAAO,8BAA8B,EAAE,uBAAuB,CAAC;IAAC,UAAU,EAAE,qBAAqB,EAAE,CAAA;CAAC,CAAC,CAOrI;;;;sCA7RS,MAAM;AApBhB;;;;;;;;;;;;;;;;GAgBG;AAEH;;;GAGG;AACH;IACI,0FAA0F;;IAE1F,kFAAkF;;IAElF,mFAAmF;;IAEnF,2EAA2E;;IAE3E,kEAAkE;;IAElE,8CAA8C;;IAE9C;;;OAGG;;IAEH;;;OAGG;;GAEJ;AAEH;;;;;;;;;;;;;;GAcG;AAEH;;;;;;;;;GASG;AACH,gDAFU,MAAM,EAAE,CAWf;AAEH;;;;;GAKG;AACH;QAFiB,MAAM,GAAE,MAAM;EAI7B;AAEF;;;;;GAKG;AACH;QAFiB,MAAM,GAAE,qBAAqB,EAAE;EA8F7C;;;;;;;;UA7IW,MAAM;;;;UACN,MAAM;;;;;;;;;;YAGC,MAAM;;;;;;;;YACb,OAAO;;;;kBAIP,MAAM"}
|