@woosh/meep-engine 3.14.4 → 3.14.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -0
- package/editor/Editor.d.ts +162 -0
- package/editor/Editor.d.ts.map +1 -0
- package/editor/EditorCameraNavigation.d.ts +22 -0
- package/editor/EditorCameraNavigation.d.ts.map +1 -0
- package/editor/EditorKeyMap.d.ts +28 -0
- package/editor/EditorKeyMap.d.ts.map +1 -0
- package/editor/SelectionVisualizer.d.ts +37 -0
- package/editor/SelectionVisualizer.d.ts.map +1 -0
- package/editor/actions/concrete/ActionInvalidateSampler.d.ts +18 -0
- package/editor/actions/concrete/ActionInvalidateSampler.d.ts.map +1 -0
- package/editor/actions/concrete/ActionUpdateTexture.d.ts +12 -0
- package/editor/actions/concrete/ActionUpdateTexture.d.ts.map +1 -0
- package/editor/actions/concrete/ActionUpdateTexture.js +1 -1
- package/editor/actions/concrete/ArrayCopyAction.d.ts +20 -0
- package/editor/actions/concrete/ArrayCopyAction.d.ts.map +1 -0
- package/editor/actions/concrete/ComponentAddAction.d.ts +15 -0
- package/editor/actions/concrete/ComponentAddAction.d.ts.map +1 -0
- package/editor/actions/concrete/ComponentRemoveAction.d.ts +11 -0
- package/editor/actions/concrete/ComponentRemoveAction.d.ts.map +1 -0
- package/editor/actions/concrete/EntityCreateAction.d.ts +18 -0
- package/editor/actions/concrete/EntityCreateAction.d.ts.map +1 -0
- package/editor/actions/concrete/EntityRemoveAction.d.ts +11 -0
- package/editor/actions/concrete/EntityRemoveAction.d.ts.map +1 -0
- package/editor/actions/concrete/ModifyPatchSampler2DAction.d.ts +47 -0
- package/editor/actions/concrete/ModifyPatchSampler2DAction.d.ts.map +1 -0
- package/editor/actions/concrete/ModifyPatchTextureArray2DAction.d.ts +38 -0
- package/editor/actions/concrete/ModifyPatchTextureArray2DAction.d.ts.map +1 -0
- package/editor/actions/concrete/PaintTerrainOverlayAction.d.ts +23 -0
- package/editor/actions/concrete/PaintTerrainOverlayAction.d.ts.map +1 -0
- package/editor/actions/concrete/PatchTerrainHeightAction.d.ts +32 -0
- package/editor/actions/concrete/PatchTerrainHeightAction.d.ts.map +1 -0
- package/editor/actions/concrete/SelectionAddAction.d.ts +19 -0
- package/editor/actions/concrete/SelectionAddAction.d.ts.map +1 -0
- package/editor/actions/concrete/SelectionClearAction.d.ts +9 -0
- package/editor/actions/concrete/SelectionClearAction.d.ts.map +1 -0
- package/editor/actions/concrete/SelectionRemoveAction.d.ts +10 -0
- package/editor/actions/concrete/SelectionRemoveAction.d.ts.map +1 -0
- package/editor/actions/concrete/TransformModifyAction.d.ts +17 -0
- package/editor/actions/concrete/TransformModifyAction.d.ts.map +1 -0
- package/editor/actions/concrete/WriteGridValueAction.d.ts +14 -0
- package/editor/actions/concrete/WriteGridValueAction.d.ts.map +1 -0
- package/editor/camera/camera_framing.d.ts +33 -0
- package/editor/camera/camera_framing.d.ts.map +1 -0
- package/editor/clipboard.d.ts +19 -0
- package/editor/clipboard.d.ts.map +1 -0
- package/editor/ecs/EditorEntity.d.ts +16 -0
- package/editor/ecs/EditorEntity.d.ts.map +1 -0
- package/editor/ecs/EditorEntitySystem.d.ts +8 -0
- package/editor/ecs/EditorEntitySystem.d.ts.map +1 -0
- package/editor/ecs/component/TypeEditor.d.ts +7 -1
- package/editor/ecs/component/TypeEditor.d.ts.map +1 -1
- package/editor/ecs/component/TypeEditor.js +5 -0
- package/editor/ecs/component/editors/ColorEditor.d.ts +7 -0
- package/editor/ecs/component/editors/ColorEditor.d.ts.map +1 -0
- package/editor/ecs/component/editors/HTMLElementEditor.d.ts +7 -0
- package/editor/ecs/component/editors/HTMLElementEditor.d.ts.map +1 -0
- package/editor/ecs/component/editors/ImagePathEditor.d.ts +7 -0
- package/editor/ecs/component/editors/ImagePathEditor.d.ts.map +1 -0
- package/editor/ecs/component/editors/LargeStringEditor.d.ts +16 -0
- package/editor/ecs/component/editors/LargeStringEditor.d.ts.map +1 -0
- package/editor/ecs/component/editors/NumericIntervalEditor.d.ts +7 -0
- package/editor/ecs/component/editors/NumericIntervalEditor.d.ts.map +1 -0
- package/editor/ecs/component/editors/ObservedBooleanEditor.d.ts +7 -0
- package/editor/ecs/component/editors/ObservedBooleanEditor.d.ts.map +1 -0
- package/editor/ecs/component/editors/ObservedEnumEditor.d.ts +7 -0
- package/editor/ecs/component/editors/ObservedEnumEditor.d.ts.map +1 -0
- package/editor/ecs/component/editors/ObservedIntegerEditor.d.ts +7 -0
- package/editor/ecs/component/editors/ObservedIntegerEditor.d.ts.map +1 -0
- package/editor/ecs/component/editors/ObservedStringEditor.d.ts +7 -0
- package/editor/ecs/component/editors/ObservedStringEditor.d.ts.map +1 -0
- package/editor/ecs/component/editors/Sampler2DEditor.d.ts +7 -0
- package/editor/ecs/component/editors/Sampler2DEditor.d.ts.map +1 -0
- package/editor/ecs/component/editors/collection/ListEditor.d.ts +8 -0
- package/editor/ecs/component/editors/collection/ListEditor.d.ts.map +1 -0
- package/editor/ecs/component/editors/common/BitFlagsEditor.d.ts +12 -0
- package/editor/ecs/component/editors/common/BitFlagsEditor.d.ts.map +1 -0
- package/editor/ecs/component/editors/common/EnumEditor.d.ts +8 -0
- package/editor/ecs/component/editors/common/EnumEditor.d.ts.map +1 -0
- package/editor/ecs/component/editors/common/makeV3_editor.d.ts +15 -0
- package/editor/ecs/component/editors/common/makeV3_editor.d.ts.map +1 -0
- package/editor/ecs/component/editors/common/noEditor.d.ts +3 -0
- package/editor/ecs/component/editors/common/noEditor.d.ts.map +1 -0
- package/editor/ecs/component/editors/common/two_way_sync.d.ts +22 -0
- package/editor/ecs/component/editors/common/two_way_sync.d.ts.map +1 -0
- package/editor/ecs/component/editors/ecs/GridObstacleEditor.d.ts +7 -0
- package/editor/ecs/component/editors/ecs/GridObstacleEditor.d.ts.map +1 -0
- package/editor/ecs/component/editors/ecs/MinimapMarkerEditor.d.ts +14 -0
- package/editor/ecs/component/editors/ecs/MinimapMarkerEditor.d.ts.map +1 -0
- package/editor/ecs/component/editors/ecs/ParameterLookupTableEditor.d.ts +20 -0
- package/editor/ecs/component/editors/ecs/ParameterLookupTableEditor.d.ts.map +1 -0
- package/editor/ecs/component/editors/ecs/ParameterTrackEditor.d.ts +12 -0
- package/editor/ecs/component/editors/ecs/ParameterTrackEditor.d.ts.map +1 -0
- package/editor/ecs/component/editors/ecs/ParameterTrackSetEditor.d.ts +14 -0
- package/editor/ecs/component/editors/ecs/ParameterTrackSetEditor.d.ts.map +1 -0
- package/editor/ecs/component/editors/ecs/ParticleEmitterEditor.d.ts +52 -0
- package/editor/ecs/component/editors/ecs/ParticleEmitterEditor.d.ts.map +1 -0
- package/editor/ecs/component/editors/ecs/ParticleEmitterLayerEditor.d.ts +47 -0
- package/editor/ecs/component/editors/ecs/ParticleEmitterLayerEditor.d.ts.map +1 -0
- package/editor/ecs/component/editors/ecs/SGMeshEditor.d.ts +21 -0
- package/editor/ecs/component/editors/ecs/SGMeshEditor.d.ts.map +1 -0
- package/editor/ecs/component/editors/ecs/ShadedGeometryEditor.d.ts +26 -0
- package/editor/ecs/component/editors/ecs/ShadedGeometryEditor.d.ts.map +1 -0
- package/editor/ecs/component/editors/ecs/SimulationStepDefinitionEditor.d.ts +16 -0
- package/editor/ecs/component/editors/ecs/SimulationStepDefinitionEditor.d.ts.map +1 -0
- package/editor/ecs/component/editors/ecs/Trail2DEditor.d.ts +15 -0
- package/editor/ecs/component/editors/ecs/Trail2DEditor.d.ts.map +1 -0
- package/editor/ecs/component/editors/ecs/Trail3DEditor.d.ts +42 -0
- package/editor/ecs/component/editors/ecs/Trail3DEditor.d.ts.map +1 -0
- package/editor/ecs/component/editors/ecs/TransformEditor.d.ts +20 -0
- package/editor/ecs/component/editors/ecs/TransformEditor.d.ts.map +1 -0
- package/editor/ecs/component/editors/ecs/buildGridObstaclePreview.d.ts +8 -0
- package/editor/ecs/component/editors/ecs/buildGridObstaclePreview.d.ts.map +1 -0
- package/editor/ecs/component/editors/ecs/terrain/SplatMappingEditor.d.ts +19 -0
- package/editor/ecs/component/editors/ecs/terrain/SplatMappingEditor.d.ts.map +1 -0
- package/editor/ecs/component/editors/ecs/terrain/TerrainEditor.d.ts +27 -0
- package/editor/ecs/component/editors/ecs/terrain/TerrainEditor.d.ts.map +1 -0
- package/editor/ecs/component/editors/ecs/terrain/TerrainLayerEditor.d.ts +16 -0
- package/editor/ecs/component/editors/ecs/terrain/TerrainLayerEditor.d.ts.map +1 -0
- package/editor/ecs/component/editors/ecs/terrain/TerrainLayersEditor.d.ts +19 -0
- package/editor/ecs/component/editors/ecs/terrain/TerrainLayersEditor.d.ts.map +1 -0
- package/editor/ecs/component/editors/ecs/terrain/TerrainOverlayEditor.d.ts +18 -0
- package/editor/ecs/component/editors/ecs/terrain/TerrainOverlayEditor.d.ts.map +1 -0
- package/editor/ecs/component/editors/geom/QuaternionEditor.d.ts +6 -0
- package/editor/ecs/component/editors/geom/QuaternionEditor.d.ts.map +1 -0
- package/editor/ecs/component/editors/geom/Vector1Editor.d.ts +7 -0
- package/editor/ecs/component/editors/geom/Vector1Editor.d.ts.map +1 -0
- package/editor/ecs/component/editors/geom/Vector2Editor.d.ts +6 -0
- package/editor/ecs/component/editors/geom/Vector2Editor.d.ts.map +1 -0
- package/editor/ecs/component/editors/geom/Vector3Editor.d.ts +6 -0
- package/editor/ecs/component/editors/geom/Vector3Editor.d.ts.map +1 -0
- package/editor/ecs/component/editors/geom/Vector4Editor.d.ts +6 -0
- package/editor/ecs/component/editors/geom/Vector4Editor.d.ts.map +1 -0
- package/editor/ecs/component/editors/primitive/ArrayEditor.d.ts +8 -0
- package/editor/ecs/component/editors/primitive/ArrayEditor.d.ts.map +1 -0
- package/editor/ecs/component/editors/primitive/BooleanEditor.d.ts +7 -0
- package/editor/ecs/component/editors/primitive/BooleanEditor.d.ts.map +1 -0
- package/editor/ecs/component/editors/primitive/FunctionEditor.d.ts +7 -0
- package/editor/ecs/component/editors/primitive/FunctionEditor.d.ts.map +1 -0
- package/editor/ecs/component/editors/primitive/NumberEditor.d.ts +8 -0
- package/editor/ecs/component/editors/primitive/NumberEditor.d.ts.map +1 -0
- package/editor/ecs/component/editors/primitive/StringEditor.d.ts +7 -0
- package/editor/ecs/component/editors/primitive/StringEditor.d.ts.map +1 -0
- package/editor/ecs/component/editors/shade/MeshletGeometryEditor.d.ts +28 -0
- package/editor/ecs/component/editors/shade/MeshletGeometryEditor.d.ts.map +1 -0
- package/editor/ecs/component/editors/shade/ShadeImageEditor.d.ts +29 -0
- package/editor/ecs/component/editors/shade/ShadeImageEditor.d.ts.map +1 -0
- package/editor/ecs/component/editors/shade/ShadeMaterialEditor.d.ts +28 -0
- package/editor/ecs/component/editors/shade/ShadeMaterialEditor.d.ts.map +1 -0
- package/editor/ecs/component/editors/shade/ShadeTextureEditor.d.ts +41 -0
- package/editor/ecs/component/editors/shade/ShadeTextureEditor.d.ts.map +1 -0
- package/editor/ecs/component/editors/shade/StandardShadeMaterialEditor.d.ts +31 -0
- package/editor/ecs/component/editors/shade/StandardShadeMaterialEditor.d.ts.map +1 -0
- package/editor/ecs/component/prototypeObjectEditor.d.ts +2 -0
- package/editor/ecs/component/prototypeObjectEditor.d.ts.map +1 -0
- package/editor/ecs/component/registerBasicTypeEditors.d.ts +11 -0
- package/editor/ecs/component/registerBasicTypeEditors.d.ts.map +1 -0
- package/editor/ecs/component/registerEngineComponentEditors.d.ts +8 -0
- package/editor/ecs/component/registerEngineComponentEditors.d.ts.map +1 -0
- package/editor/enableEditor.d.ts +14 -0
- package/editor/enableEditor.d.ts.map +1 -0
- package/editor/entity_world_bounds.d.ts +17 -0
- package/editor/entity_world_bounds.d.ts.map +1 -0
- package/editor/library/MeshLibrary.d.ts +13 -0
- package/editor/library/MeshLibrary.d.ts.map +1 -0
- package/editor/particles/lut_ops.d.ts +34 -0
- package/editor/particles/lut_ops.d.ts.map +1 -0
- package/editor/particles/particleEditEvents.d.ts +11 -0
- package/editor/particles/particleEditEvents.d.ts.map +1 -0
- package/editor/particles/rebuildParticleEmitter.d.ts +11 -0
- package/editor/particles/rebuildParticleEmitter.d.ts.map +1 -0
- package/editor/persistence/EditorLayoutStore.d.ts +30 -0
- package/editor/persistence/EditorLayoutStore.d.ts.map +1 -0
- package/editor/persistence/SceneMetadata.d.ts +38 -0
- package/editor/persistence/SceneMetadata.d.ts.map +1 -0
- package/editor/persistence/SceneSlotManager.d.ts +40 -0
- package/editor/persistence/SceneSlotManager.d.ts.map +1 -0
- package/editor/persistence/buildNewSceneDataset.d.ts +10 -0
- package/editor/persistence/buildNewSceneDataset.d.ts.map +1 -0
- package/editor/persistence/files.d.ts +24 -0
- package/editor/persistence/files.d.ts.map +1 -0
- package/editor/persistence/scene_import.d.ts +45 -0
- package/editor/persistence/scene_import.d.ts.map +1 -0
- package/editor/persistence/scene_serialization.d.ts +36 -0
- package/editor/persistence/scene_serialization.d.ts.map +1 -0
- package/editor/persistence/string_buffer_codec.d.ts +20 -0
- package/editor/persistence/string_buffer_codec.d.ts.map +1 -0
- package/editor/process/DisableGameUIProcess.d.ts +8 -0
- package/editor/process/DisableGameUIProcess.d.ts.map +1 -0
- package/editor/process/EditorProcess.d.ts +19 -0
- package/editor/process/EditorProcess.d.ts.map +1 -0
- package/editor/process/GridDisplayProcess.d.ts +35 -0
- package/editor/process/GridDisplayProcess.d.ts.map +1 -0
- package/editor/process/ObstacleGridDisplayProcess.d.ts +13 -0
- package/editor/process/ObstacleGridDisplayProcess.d.ts.map +1 -0
- package/editor/process/ParticleEmitterRebuildProcess.d.ts +66 -0
- package/editor/process/ParticleEmitterRebuildProcess.d.ts.map +1 -0
- package/editor/process/ProcessEngine.d.ts +30 -0
- package/editor/process/ProcessEngine.d.ts.map +1 -0
- package/editor/process/SymbolicDisplayProcess.d.ts +23 -0
- package/editor/process/SymbolicDisplayProcess.d.ts.map +1 -0
- package/editor/process/symbolic/AudioEmitterSymbolicDisplay.d.ts +17 -0
- package/editor/process/symbolic/AudioEmitterSymbolicDisplay.d.ts.map +1 -0
- package/editor/process/symbolic/CameraSymbolicDisplay.d.ts +25 -0
- package/editor/process/symbolic/CameraSymbolicDisplay.d.ts.map +1 -0
- package/editor/process/symbolic/GridPositionSymbolicDisplay.d.ts +19 -0
- package/editor/process/symbolic/GridPositionSymbolicDisplay.d.ts.map +1 -0
- package/editor/process/symbolic/LightSymbolicDisplay.d.ts +19 -0
- package/editor/process/symbolic/LightSymbolicDisplay.d.ts.map +1 -0
- package/editor/process/symbolic/ParticleEmitterSymbolicDisplay.d.ts +18 -0
- package/editor/process/symbolic/ParticleEmitterSymbolicDisplay.d.ts.map +1 -0
- package/editor/process/symbolic/PathSymbolicDisplay.d.ts +20 -0
- package/editor/process/symbolic/PathSymbolicDisplay.d.ts.map +1 -0
- package/editor/process/symbolic/PositionedMarkerSymbolicDisplay.d.ts +25 -0
- package/editor/process/symbolic/PositionedMarkerSymbolicDisplay.d.ts.map +1 -0
- package/editor/process/symbolic/SymbolicDisplay.d.ts +48 -0
- package/editor/process/symbolic/SymbolicDisplay.d.ts.map +1 -0
- package/editor/process/symbolic/gizmo_draw_wire_box_oriented.d.ts +13 -0
- package/editor/process/symbolic/gizmo_draw_wire_box_oriented.d.ts.map +1 -0
- package/editor/process/symbolic/gizmo_draw_wire_circle.d.ts +18 -0
- package/editor/process/symbolic/gizmo_draw_wire_circle.d.ts.map +1 -0
- package/editor/prototypeEditorShell.d.ts +13 -0
- package/editor/prototypeEditorShell.d.ts.map +1 -0
- package/editor/selection/editor_pick.d.ts +43 -0
- package/editor/selection/editor_pick.d.ts.map +1 -0
- package/editor/selection/screen_rect_frustum.d.ts +32 -0
- package/editor/selection/screen_rect_frustum.d.ts.map +1 -0
- package/editor/templates/entity_templates.d.ts +19 -0
- package/editor/templates/entity_templates.d.ts.map +1 -0
- package/editor/tools/GridPaintTool.d.ts +18 -0
- package/editor/tools/GridPaintTool.d.ts.map +1 -0
- package/editor/tools/SelectionTool.d.ts +38 -0
- package/editor/tools/SelectionTool.d.ts.map +1 -0
- package/editor/tools/SelectionTool.js +2 -2
- package/editor/tools/TransformToolV2.d.ts +70 -0
- package/editor/tools/TransformToolV2.d.ts.map +1 -0
- package/editor/tools/engine/Tool.d.ts +88 -0
- package/editor/tools/engine/Tool.d.ts.map +1 -0
- package/editor/tools/engine/ToolEngine.d.ts +22 -0
- package/editor/tools/engine/ToolEngine.d.ts.map +1 -0
- package/editor/tools/engine/ToolState.d.ts +7 -0
- package/editor/tools/engine/ToolState.d.ts.map +1 -0
- package/editor/tools/paint/TerrainHeightPaintTool.d.ts +18 -0
- package/editor/tools/paint/TerrainHeightPaintTool.d.ts.map +1 -0
- package/editor/tools/paint/TerrainPaintTool.d.ts +82 -0
- package/editor/tools/paint/TerrainPaintTool.d.ts.map +1 -0
- package/editor/tools/paint/TerrainTexturePaintTool.d.ts +19 -0
- package/editor/tools/paint/TerrainTexturePaintTool.d.ts.map +1 -0
- package/editor/tools/v2/BlenderCameraOrientationGizmo.d.ts +139 -0
- package/editor/tools/v2/BlenderCameraOrientationGizmo.d.ts.map +1 -0
- package/editor/tools/v2/GizmoNode.d.ts +21 -0
- package/editor/tools/v2/GizmoNode.d.ts.map +1 -0
- package/editor/tools/v2/TransformControls.d.ts +219 -0
- package/editor/tools/v2/TransformControls.d.ts.map +1 -0
- package/editor/tools/v2/TransformMode.d.ts +7 -0
- package/editor/tools/v2/TransformMode.d.ts.map +1 -0
- package/editor/tools/v2/handle/gizmo_drag_plane.d.ts +37 -0
- package/editor/tools/v2/handle/gizmo_drag_plane.d.ts.map +1 -0
- package/editor/tools/v2/handle/gizmo_draw.d.ts +14 -0
- package/editor/tools/v2/handle/gizmo_draw.d.ts.map +1 -0
- package/editor/tools/v2/handle/gizmo_handles.d.ts +160 -0
- package/editor/tools/v2/handle/gizmo_handles.d.ts.map +1 -0
- package/editor/tools/v2/handle/gizmo_ray_shapes.d.ts +103 -0
- package/editor/tools/v2/handle/gizmo_ray_shapes.d.ts.map +1 -0
- package/editor/view/GridPickCoordinateView.d.ts +22 -0
- package/editor/view/GridPickCoordinateView.d.ts.map +1 -0
- package/editor/view/ecs/ComponentControlView.d.ts +24 -0
- package/editor/view/ecs/ComponentControlView.d.ts.map +1 -0
- package/editor/view/ecs/EntityEditor.d.ts +25 -0
- package/editor/view/ecs/EntityEditor.d.ts.map +1 -0
- package/editor/view/ecs/EntityList.d.ts +22 -0
- package/editor/view/ecs/EntityList.d.ts.map +1 -0
- package/editor/view/ecs/HierarchicalEntityListView.d.ts +25 -0
- package/editor/view/ecs/HierarchicalEntityListView.d.ts.map +1 -0
- package/editor/view/ecs/components/DatGuiController.d.ts +2 -0
- package/editor/view/ecs/components/DatGuiController.d.ts.map +1 -0
- package/editor/view/ecs/components/color/GaugeView.d.ts +9 -5
- package/editor/view/ecs/components/color/GaugeView.d.ts.map +1 -1
- package/editor/view/ecs/components/color/GaugeView.js +4 -4
- package/editor/view/ecs/components/common/NumberController.d.ts +9 -5
- package/editor/view/ecs/components/common/NumberController.d.ts.map +1 -1
- package/editor/view/ecs/components/common/NumberController.js +4 -4
- package/editor/view/ecs/components/common/NumericIntervalController.d.ts +10 -0
- package/editor/view/ecs/components/common/NumericIntervalController.d.ts.map +1 -0
- package/editor/view/ecs/components/common/TextController.d.ts.map +1 -1
- package/editor/view/library/MeshLibraryView.d.ts +16 -0
- package/editor/view/library/MeshLibraryView.d.ts.map +1 -0
- package/editor/view/library/mesh_library_drag.d.ts +21 -0
- package/editor/view/library/mesh_library_drag.d.ts.map +1 -0
- package/editor/view/library/model_thumbnail_source.d.ts +12 -0
- package/editor/view/library/model_thumbnail_source.d.ts.map +1 -0
- package/editor/view/makeEntityDecorators.d.ts +6 -0
- package/editor/view/makeEntityDecorators.d.ts.map +1 -0
- package/editor/view/node-graph/NodeGraphCamera.d.ts.map +1 -1
- package/editor/view/node-graph/NodeGraphEditorView.d.ts.map +1 -1
- package/editor/view/node-graph/NodeGraphSelection.d.ts.map +1 -1
- package/editor/view/node-graph/NodeGraphView.d.ts.map +1 -1
- package/editor/view/node-graph/NodeView.d.ts.map +1 -1
- package/editor/view/node-graph/PortView.d.ts.map +1 -1
- package/editor/view/node-graph/actions/ConnectionCreateAction.d.ts.map +1 -1
- package/editor/view/node-graph/actions/ConnectionDeleteAction.d.ts.map +1 -1
- package/editor/view/node-graph/actions/NodeDeleteAction.d.ts.map +1 -1
- package/editor/view/node-graph/actions/NodeParameterSetAction.d.ts.map +1 -1
- package/editor/view/node-graph/actions/NodesMoveAction.d.ts.map +1 -1
- package/editor/view/node-graph/actions/SelectionSetAction.d.ts.map +1 -1
- package/editor/view/node-graph/connection_wire_geometry.d.ts.map +1 -1
- package/editor/view/particles/ColorLutGradientView.d.ts +19 -0
- package/editor/view/particles/ColorLutGradientView.d.ts.map +1 -0
- package/editor/view/particles/ScalarLutCurveView.d.ts +19 -0
- package/editor/view/particles/ScalarLutCurveView.d.ts.map +1 -0
- package/editor/view/prepareMeshLibrary.d.ts +7 -0
- package/editor/view/prepareMeshLibrary.d.ts.map +1 -0
- package/editor/view/process/ProcessView.d.ts +14 -0
- package/editor/view/process/ProcessView.d.ts.map +1 -0
- package/editor/view/shell/EditorShellView.d.ts +18 -0
- package/editor/view/shell/EditorShellView.d.ts.map +1 -0
- package/editor/view/shell/SceneTreePanelView.d.ts +17 -0
- package/editor/view/shell/SceneTreePanelView.d.ts.map +1 -0
- package/editor/view/shell/ViewportPanelView.d.ts +18 -0
- package/editor/view/shell/ViewportPanelView.d.ts.map +1 -0
- package/editor/view/tools/ToolSettingsView.d.ts +22 -0
- package/editor/view/tools/ToolSettingsView.d.ts.map +1 -0
- package/editor/view/tools/ToolView.d.ts +13 -0
- package/editor/view/tools/ToolView.d.ts.map +1 -0
- package/editor/view/v2/SplitView.d.ts +2 -0
- package/editor/view/v2/SplitView.d.ts.map +1 -0
- package/package.json +9 -11
- package/samples/engine/README.md +113 -0
- package/samples/engine/first-scene/index.html +32 -0
- package/samples/engine/first-scene/main.js +152 -0
- package/src/core/assert.d.ts +2 -2
- package/src/core/binary/BitSet.d.ts +2 -2
- package/src/core/binary/BitSet.d.ts.map +1 -1
- package/src/core/binary/BitSet.js +1 -1
- package/src/core/bvh2/bvh3/BVH.d.ts +4 -0
- package/src/core/bvh2/bvh3/BVH.d.ts.map +1 -1
- package/src/core/bvh2/bvh3/BVH.js +4 -0
- package/src/core/bvh2/bvh3/BvhClient.d.ts +4 -0
- package/src/core/bvh2/bvh3/BvhClient.d.ts.map +1 -1
- package/src/core/bvh2/bvh3/BvhClient.js +4 -0
- package/src/core/collection/array/array_sort_quick.d.ts +1 -1
- package/src/core/collection/list/List.d.ts +7 -3
- package/src/core/collection/list/List.d.ts.map +1 -1
- package/src/core/collection/list/List.js +6 -2
- package/src/core/collection/table/RowFirstTableSpec.d.ts.map +1 -1
- package/src/core/collection/table/RowFirstTableSpec.js +0 -4
- package/src/core/color/Color.d.ts +1 -0
- package/src/core/color/Color.d.ts.map +1 -1
- package/src/core/color/Color.js +4 -0
- package/src/core/events/signal/SignalBinding.d.ts +4 -0
- package/src/core/events/signal/SignalBinding.d.ts.map +1 -1
- package/src/core/events/signal/SignalBinding.js +4 -0
- package/src/core/geom/2d/quad-tree/QuadTreeDatum.d.ts +5 -1
- package/src/core/geom/2d/quad-tree/QuadTreeDatum.d.ts.map +1 -1
- package/src/core/geom/2d/quad-tree/QuadTreeDatum.js +4 -0
- package/src/core/geom/3d/SurfacePoint3.d.ts +2 -2
- package/src/core/geom/3d/SurfacePoint3.d.ts.map +1 -1
- package/src/core/geom/3d/SurfacePoint3.js +1 -1
- package/src/core/geom/3d/aabb/AABB3.d.ts +63 -7
- package/src/core/geom/3d/aabb/AABB3.d.ts.map +1 -1
- package/src/core/geom/3d/aabb/AABB3.js +17 -3
- package/src/core/geom/3d/mat4/m4_rigidity_defect.d.ts +30 -0
- package/src/core/geom/3d/mat4/m4_rigidity_defect.d.ts.map +1 -0
- package/src/core/geom/3d/mat4/m4_rigidity_defect.js +71 -0
- package/src/core/geom/3d/plane/plane3_compute_intersection_objects.js +2 -2
- package/src/core/geom/3d/ray/Ray3.d.ts +4 -4
- package/src/core/geom/3d/shape/AbstractShape3D.d.ts +10 -3
- package/src/core/geom/3d/shape/AbstractShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/AbstractShape3D.js +9 -2
- package/src/core/geom/3d/shape/TransformedShape3D.d.ts +2 -2
- package/src/core/geom/3d/sphere/harmonics/sh3_rotate.d.ts +1 -1
- package/src/core/geom/Vector1.d.ts +4 -0
- package/src/core/geom/Vector1.d.ts.map +1 -1
- package/src/core/geom/Vector1.js +4 -0
- package/src/core/geom/Vector2.d.ts +4 -0
- package/src/core/geom/Vector2.d.ts.map +1 -1
- package/src/core/geom/Vector2.js +4 -0
- package/src/core/geom/Vector3.d.ts +4 -0
- package/src/core/geom/Vector3.d.ts.map +1 -1
- package/src/core/geom/Vector3.js +4 -0
- package/src/core/geom/Vector4.d.ts +4 -0
- package/src/core/geom/Vector4.d.ts.map +1 -1
- package/src/core/geom/Vector4.js +4 -0
- package/src/core/geom/packing/max-rect/MaxRectanglesPacker.d.ts +6 -2
- package/src/core/geom/packing/max-rect/MaxRectanglesPacker.d.ts.map +1 -1
- package/src/core/geom/packing/max-rect/MaxRectanglesPacker.js +4 -0
- package/src/core/geom/packing/miniball/Subspan.d.ts +4 -4
- package/src/core/geom/packing/miniball/Subspan.d.ts.map +1 -1
- package/src/core/geom/packing/miniball/Subspan.js +2 -2
- package/src/core/math/interval/NumericInterval.d.ts +4 -0
- package/src/core/math/interval/NumericInterval.d.ts.map +1 -1
- package/src/core/math/interval/NumericInterval.js +4 -0
- package/src/core/math/random/roundFair.d.ts +2 -2
- package/src/core/math/random/roundFair.d.ts.map +1 -1
- package/src/core/math/random/roundFair.js +1 -1
- package/src/core/model/BoundedValue.d.ts +4 -0
- package/src/core/model/BoundedValue.d.ts.map +1 -1
- package/src/core/model/BoundedValue.js +4 -0
- package/src/core/model/ObservedBoolean.d.ts +4 -0
- package/src/core/model/ObservedBoolean.d.ts.map +1 -1
- package/src/core/model/ObservedBoolean.js +4 -0
- package/src/core/model/ObservedInteger.d.ts +4 -0
- package/src/core/model/ObservedInteger.d.ts.map +1 -1
- package/src/core/model/ObservedInteger.js +4 -0
- package/src/core/model/ObservedString.d.ts +4 -0
- package/src/core/model/ObservedString.d.ts.map +1 -1
- package/src/core/model/ObservedString.js +4 -0
- package/src/core/model/stat/Stat.d.ts +7 -3
- package/src/core/model/stat/Stat.d.ts.map +1 -1
- package/src/core/model/stat/Stat.js +4 -0
- package/src/engine/Engine.d.ts.map +1 -1
- package/src/engine/Engine.js +65 -0
- package/src/engine/EngineHarness.d.ts +8 -1
- package/src/engine/EngineHarness.d.ts.map +1 -1
- package/src/engine/EngineHarness.js +10 -14
- package/src/engine/animation/clip/ecd_bind_animation_curve.d.ts +2 -2
- package/src/engine/animation/clip/ecd_bind_animation_curve.d.ts.map +1 -1
- package/src/engine/animation/clip/ecd_bind_animation_curve.js +4 -4
- package/src/engine/asset/loaders/async_traverse_three_object.d.ts +2 -2
- package/src/engine/asset/loaders/async_traverse_three_object.d.ts.map +1 -1
- package/src/engine/asset/loaders/async_traverse_three_object.js +1 -1
- package/src/engine/asset/loaders/image/codec/ThreadedImageDecoder.d.ts +7 -3
- package/src/engine/asset/loaders/image/codec/ThreadedImageDecoder.d.ts.map +1 -1
- package/src/engine/asset/loaders/image/codec/ThreadedImageDecoder.js +33 -3
- package/src/engine/control/first-person/DESIGN.md +20 -2
- package/src/engine/control/first-person/DESIGN_COLLISION.md +17 -0
- package/src/engine/control/first-person/collision/KinematicMover.d.ts +58 -11
- package/src/engine/control/first-person/collision/KinematicMover.d.ts.map +1 -1
- package/src/engine/control/first-person/collision/KinematicMover.js +97 -20
- package/src/engine/ecs/Entity.js +1 -1
- package/src/engine/ecs/EntityComponentDataset.d.ts +2 -2
- package/src/engine/ecs/EntityComponentDataset.d.ts.map +1 -1
- package/src/engine/ecs/EntityComponentDataset.js +1 -1
- package/src/engine/ecs/EntityManager.d.ts.map +1 -1
- package/src/engine/ecs/EntityManager.js +27 -3
- package/src/engine/ecs/animation/Animation.d.ts +17 -3
- package/src/engine/ecs/animation/Animation.d.ts.map +1 -1
- package/src/engine/ecs/animation/Animation.js +26 -6
- package/src/engine/ecs/terrain/TerrainPreview.d.ts +4 -0
- package/src/engine/ecs/terrain/TerrainPreview.d.ts.map +1 -1
- package/src/engine/ecs/terrain/TerrainPreview.js +4 -0
- package/src/engine/ecs/terrain/ecs/cling/ClingToTerrainSystem.d.ts +4 -4
- package/src/engine/ecs/terrain/ecs/cling/ClingToTerrainSystem.d.ts.map +1 -1
- package/src/engine/ecs/terrain/ecs/cling/ClingToTerrainSystem.js +2 -2
- package/src/engine/ecs/terrain/ecs/makeTerrainWorkerProxy.d.ts +3 -2
- package/src/engine/ecs/terrain/ecs/makeTerrainWorkerProxy.d.ts.map +1 -1
- package/src/engine/ecs/terrain/ecs/makeTerrainWorkerProxy.js +25 -2
- package/src/engine/ecs/transform/Transform64.d.ts +4 -4
- package/src/engine/ecs/transform/Transform64.d.ts.map +1 -1
- package/src/engine/ecs/transform/Transform64.js +2 -2
- package/src/engine/graphics/ecs/decal/v2/Decal.d.ts +26 -0
- package/src/engine/graphics/ecs/decal/v2/Decal.d.ts.map +1 -1
- package/src/engine/graphics/ecs/decal/v2/Decal.js +26 -0
- package/src/engine/graphics/ecs/light/Light.d.ts +38 -1
- package/src/engine/graphics/ecs/light/Light.d.ts.map +1 -1
- package/src/engine/graphics/ecs/light/Light.js +51 -1
- package/src/engine/graphics/ecs/mesh/copyToVector3.d.ts +3 -3
- package/src/engine/graphics/ecs/mesh/copyToVector3.d.ts.map +1 -1
- package/src/engine/graphics/ecs/mesh/copyToVector3.js +2 -2
- package/src/engine/graphics/ecs/mesh/setMesh.d.ts +2 -2
- package/src/engine/graphics/ecs/mesh/setMesh.d.ts.map +1 -1
- package/src/engine/graphics/ecs/mesh/setMesh.js +1 -1
- package/src/engine/graphics/geometry/buffered/computeBufferAttributeHash.d.ts +2 -2
- package/src/engine/graphics/geometry/buffered/computeBufferAttributeHash.d.ts.map +1 -1
- package/src/engine/graphics/geometry/buffered/computeBufferAttributeHash.js +1 -1
- package/src/engine/graphics/geometry/buffered/computeGeometryEquality.d.ts +3 -3
- package/src/engine/graphics/geometry/buffered/computeGeometryEquality.d.ts.map +1 -1
- package/src/engine/graphics/geometry/buffered/computeGeometryEquality.js +2 -2
- package/src/engine/graphics/geometry/buffered/computeGeometryHash.d.ts +2 -2
- package/src/engine/graphics/geometry/buffered/computeGeometryHash.d.ts.map +1 -1
- package/src/engine/graphics/geometry/buffered/computeGeometryHash.js +1 -1
- package/src/engine/graphics/geometry/buffered/compute_buffer_geometry_byte_size.d.ts +2 -2
- package/src/engine/graphics/geometry/buffered/compute_buffer_geometry_byte_size.d.ts.map +1 -1
- package/src/engine/graphics/geometry/buffered/compute_buffer_geometry_byte_size.js +1 -1
- package/src/engine/graphics/geometry/compute_geometry_polycount.d.ts +2 -2
- package/src/engine/graphics/geometry/compute_geometry_polycount.d.ts.map +1 -1
- package/src/engine/graphics/geometry/compute_geometry_polycount.js +1 -1
- package/src/engine/graphics/geometry/ribbon/copyAttributeV3.d.ts +3 -3
- package/src/engine/graphics/geometry/ribbon/copyAttributeV3.d.ts.map +1 -1
- package/src/engine/graphics/geometry/ribbon/copyAttributeV3.js +2 -2
- package/src/engine/graphics/geometry/ribbon/copyAttributeValue.d.ts +4 -4
- package/src/engine/graphics/geometry/ribbon/copyAttributeValue.d.ts.map +1 -1
- package/src/engine/graphics/geometry/ribbon/copyAttributeValue.js +3 -3
- package/src/engine/graphics/geometry/ribbon/equalAttributeV3.d.ts +3 -3
- package/src/engine/graphics/geometry/ribbon/equalAttributeV3.d.ts.map +1 -1
- package/src/engine/graphics/geometry/ribbon/equalAttributeV3.js +2 -2
- package/src/engine/graphics/geometry/ribbon/equalAttributeValue.d.ts +4 -4
- package/src/engine/graphics/geometry/ribbon/equalAttributeValue.d.ts.map +1 -1
- package/src/engine/graphics/geometry/ribbon/equalAttributeValue.js +3 -3
- package/src/engine/graphics/geometry/scaleGeometryToBox.d.ts +2 -2
- package/src/engine/graphics/geometry/scaleGeometryToBox.d.ts.map +1 -1
- package/src/engine/graphics/geometry/scaleGeometryToBox.js +1 -1
- package/src/engine/graphics/impostors/card_cluster/FacePlaneAssignment.d.ts +2 -2
- package/src/engine/graphics/impostors/card_cluster/FacePlaneAssignment.d.ts.map +1 -1
- package/src/engine/graphics/impostors/card_cluster/FacePlaneAssignment.js +1 -1
- package/src/engine/graphics/impostors/octahedral/ImpostorDescription.d.ts +2 -2
- package/src/engine/graphics/impostors/octahedral/ImpostorDescription.d.ts.map +1 -1
- package/src/engine/graphics/impostors/octahedral/ImpostorDescription.js +1 -1
- package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.d.ts +4 -12
- package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.d.ts.map +1 -1
- package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.js +2 -2
- package/src/engine/graphics/particles/particular/engine/emitter/ParticleLayer.d.ts +5 -20
- package/src/engine/graphics/particles/particular/engine/emitter/ParticleLayer.d.ts.map +1 -1
- package/src/engine/graphics/particles/particular/engine/emitter/ParticlePool.d.ts +24 -24
- package/src/engine/graphics/particles/particular/engine/emitter/ParticlePool.d.ts.map +1 -1
- package/src/engine/graphics/particles/particular/engine/emitter/ParticlePool.js +16 -16
- package/src/engine/graphics/render/layers/RenderLayer.d.ts +4 -4
- package/src/engine/graphics/render/layers/RenderLayer.d.ts.map +1 -1
- package/src/engine/graphics/render/layers/RenderLayer.js +2 -2
- package/src/engine/graphics/render/make_bvh_visibility_builder.js +1 -1
- package/src/engine/graphics/render/visibility/VisibilityComputer.d.ts +1 -1
- package/src/engine/graphics/render/visibility/VisibilityComputer.js +1 -1
- package/src/engine/graphics/texture/computeThreeTextureInternalFormatFromDataType.d.ts +2 -2
- package/src/engine/graphics/texture/computeThreeTextureInternalFormatFromDataType.d.ts.map +1 -1
- package/src/engine/graphics/texture/computeThreeTextureInternalFormatFromDataType.js +1 -1
- package/src/engine/graphics3/DecalSystem.d.ts +8 -0
- package/src/engine/graphics3/DecalSystem.d.ts.map +1 -1
- package/src/engine/graphics3/DecalSystem.js +8 -0
- package/src/engine/graphics3/GraphicsEngine.d.ts +19 -8
- package/src/engine/graphics3/GraphicsEngine.d.ts.map +1 -1
- package/src/engine/graphics3/GraphicsEngine.js +22 -11
- package/src/engine/graphics3/LightSystem.d.ts.map +1 -1
- package/src/engine/graphics3/LightSystem.js +11 -1
- package/src/engine/input/devices/gamepad/GamepadStickCalibration.d.ts +4 -0
- package/src/engine/input/devices/gamepad/GamepadStickCalibration.d.ts.map +1 -1
- package/src/engine/input/devices/gamepad/GamepadStickCalibration.js +4 -0
- package/src/engine/navigation/mesh/NavigationMesh.d.ts +90 -9
- package/src/engine/navigation/mesh/NavigationMesh.d.ts.map +1 -1
- package/src/engine/navigation/mesh/NavigationMesh.js +80 -8
- package/src/engine/network/NetworkSession.d.ts +60 -0
- package/src/engine/network/NetworkSession.d.ts.map +1 -1
- package/src/engine/network/NetworkSession.js +141 -1
- package/src/engine/network/orchestrator/NetworkPeer.d.ts +56 -8
- package/src/engine/network/orchestrator/NetworkPeer.d.ts.map +1 -1
- package/src/engine/network/orchestrator/NetworkPeer.js +263 -67
- package/src/engine/network/orchestrator/ServerAuthoritativeClient.d.ts +6 -1
- package/src/engine/network/orchestrator/ServerAuthoritativeClient.d.ts.map +1 -1
- package/src/engine/network/orchestrator/ServerAuthoritativeClient.js +6 -0
- package/src/engine/network/orchestrator/ServerAuthoritativeServer.d.ts +13 -7
- package/src/engine/network/orchestrator/ServerAuthoritativeServer.d.ts.map +1 -1
- package/src/engine/network/orchestrator/ServerAuthoritativeServer.js +103 -138
- package/src/engine/network/replication/Replicator.d.ts +47 -6
- package/src/engine/network/replication/Replicator.d.ts.map +1 -1
- package/src/engine/network/replication/Replicator.js +362 -107
- package/src/engine/network/sim/ActionLog.d.ts +2 -0
- package/src/engine/network/sim/ActionLog.d.ts.map +1 -1
- package/src/engine/network/sim/ActionLog.js +2 -0
- package/src/engine/network/sim/ActionRecordCursor.d.ts +82 -0
- package/src/engine/network/sim/ActionRecordCursor.d.ts.map +1 -0
- package/src/engine/network/sim/ActionRecordCursor.js +120 -0
- package/src/engine/network/sim/RewindEngine.d.ts.map +1 -1
- package/src/engine/network/sim/RewindEngine.js +13 -29
- package/src/engine/network/sim/SimActionExecutor.d.ts +2 -3
- package/src/engine/network/sim/SimActionExecutor.d.ts.map +1 -1
- package/src/engine/network/sim/SimActionExecutor.js +10 -11
- package/src/engine/physics/ecs/PhysicsSystem.d.ts +27 -0
- package/src/engine/physics/ecs/PhysicsSystem.d.ts.map +1 -1
- package/src/engine/physics/ecs/PhysicsSystem.js +27 -0
- package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
- package/src/engine/sound/SoundEngine.d.ts +24 -0
- package/src/engine/sound/SoundEngine.d.ts.map +1 -1
- package/src/engine/sound/SoundEngine.js +29 -11
- package/src/engine/sound/simulation/configureAcousticSimulation.d.ts +12 -4
- package/src/engine/sound/simulation/configureAcousticSimulation.d.ts.map +1 -1
- package/src/engine/sound/simulation/configureAcousticSimulation.js +10 -4
- package/src/engine/sound/simulation/ecs/AcousticProbeFieldSystem.d.ts +3 -1
- package/src/engine/sound/simulation/ecs/AcousticProbeFieldSystem.d.ts.map +1 -1
- package/src/engine/sound/simulation/ecs/AcousticProbeFieldSystem.js +27 -1
- package/src/engine/sound/simulation/render/ProbeReverbRenderer.d.ts +34 -0
- package/src/engine/sound/simulation/render/ProbeReverbRenderer.d.ts.map +1 -1
- package/src/engine/sound/simulation/render/ProbeReverbRenderer.js +61 -2
- package/src/engine/sound/simulation/render/reverbImpulseResponse.d.ts.map +1 -1
- package/src/engine/sound/simulation/render/reverbImpulseResponse.js +9 -0
- package/src/shade/playground/particle_system/README.md +14 -3
- package/src/shade/playground/particle_system/index.html +1 -0
- package/src/shade/playground/particle_system/main.js +15 -2
- package/src/shade/playground/particle_system/particle_scene.d.ts +11 -2
- package/src/shade/playground/particle_system/particle_scene.d.ts.map +1 -1
- package/src/shade/playground/particle_system/particle_scene.js +164 -46
- package/src/shade/playground/skinned_mesh_soup/README.md +39 -18
- package/src/shade/playground/skinned_mesh_soup/index.html +9 -6
- package/src/shade/playground/skinned_mesh_soup/main.d.ts.map +1 -1
- package/src/shade/playground/skinned_mesh_soup/main.js +16 -13
- package/src/shade/playground/skinned_mesh_soup/verify_clone_vertices.d.ts +8 -2
- package/src/shade/playground/skinned_mesh_soup/verify_clone_vertices.d.ts.map +1 -1
- package/src/shade/playground/skinned_mesh_soup/verify_clone_vertices.js +23 -4
- package/src/shade/renderer/GraphicsContext.d.ts +1 -0
- package/src/shade/renderer/GraphicsContext.d.ts.map +1 -1
- package/src/shade/renderer/GraphicsContext.js +4 -0
- package/src/shade/renderer/Renderer.d.ts +1 -1
- package/src/shade/renderer/animation/GPUAnimationManager.d.ts.map +1 -1
- package/src/shade/renderer/animation/GPUAnimationManager.js +1958 -1796
- package/src/shade/renderer/animation/SKINNING_FRAME_PLAN.md +357 -0
- package/src/shade/renderer/animation/skin_bind_transform.d.ts +25 -0
- package/src/shade/renderer/animation/skin_bind_transform.d.ts.map +1 -0
- package/src/shade/renderer/animation/skin_bind_transform.js +33 -0
- package/src/shade/renderer/animation/skin_clip_scale_conflicts.d.ts +67 -0
- package/src/shade/renderer/animation/skin_clip_scale_conflicts.d.ts.map +1 -0
- package/src/shade/renderer/animation/skin_clip_scale_conflicts.js +199 -0
- package/src/shade/renderer/animation/skin_frame_defect.d.ts +34 -0
- package/src/shade/renderer/animation/skin_frame_defect.d.ts.map +1 -0
- package/src/shade/renderer/animation/skin_frame_defect.js +132 -0
- package/src/shade/renderer/animation/skin_joint_matrix.d.ts +24 -0
- package/src/shade/renderer/animation/skin_joint_matrix.d.ts.map +1 -0
- package/src/shade/renderer/animation/skin_joint_matrix.js +46 -0
- package/src/shade/renderer/animation/skin_normalize_mesh_frame.d.ts +70 -0
- package/src/shade/renderer/animation/skin_normalize_mesh_frame.d.ts.map +1 -0
- package/src/shade/renderer/animation/skin_normalize_mesh_frame.js +216 -0
- package/src/shade/renderer/animation/skin_test_fixtures.d.ts +86 -0
- package/src/shade/renderer/animation/skin_test_fixtures.d.ts.map +1 -0
- package/src/shade/renderer/animation/skin_test_fixtures.js +250 -0
- package/src/shade/renderer/animation/skinning/chunk_skin_blend_mesh_local.d.ts +18 -4
- package/src/shade/renderer/animation/skinning/chunk_skin_blend_mesh_local.d.ts.map +1 -1
- package/src/shade/renderer/animation/skinning/chunk_skin_blend_mesh_local.js +18 -4
- package/src/shade/renderer/geometry/MeshletGeometrySerializationAdapter.d.ts +13 -0
- package/src/shade/renderer/geometry/MeshletGeometrySerializationAdapter.d.ts.map +1 -1
- package/src/shade/renderer/geometry/MeshletGeometrySerializationAdapter.js +13 -0
- package/src/shade/renderer/geometry/meshlet_geometry_build_from_geometry.d.ts +18 -0
- package/src/shade/renderer/geometry/meshlet_geometry_build_from_geometry.d.ts.map +1 -1
- package/src/shade/renderer/geometry/meshlet_geometry_build_from_geometry.js +18 -0
- package/src/shade/renderer/global_illumination/lpv/LightProbeVolume.d.ts +4 -0
- package/src/shade/renderer/global_illumination/lpv/LightProbeVolume.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/lpv/LightProbeVolume.js +4 -0
- package/src/shade/renderer/gpu_primitive/prefix_sum/v1/shader_prefix_scan_csdldf.d.ts +12 -0
- package/src/shade/renderer/gpu_primitive/prefix_sum/v1/shader_prefix_scan_csdldf.d.ts.map +1 -1
- package/src/shade/renderer/gpu_primitive/prefix_sum/v1/shader_prefix_scan_csdldf.js +13 -0
- package/src/shade/renderer/light/environment/rgbe/parse_rgbe.d.ts +1 -1
- package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts +1 -1
- package/src/shade/renderer/particles/DESIGN.md +71 -20
- package/src/shade/renderer/particles/GPUParticleSystem.d.ts +29 -5
- package/src/shade/renderer/particles/GPUParticleSystem.d.ts.map +1 -1
- package/src/shade/renderer/particles/GPUParticleSystem.js +61 -6
- package/src/shade/renderer/particles/ParticleConstants.d.ts +31 -0
- package/src/shade/renderer/particles/ParticleConstants.d.ts.map +1 -1
- package/src/shade/renderer/particles/ParticleConstants.js +33 -0
- package/src/shade/renderer/particles/coherence/graph_particle_bucket.d.ts +61 -0
- package/src/shade/renderer/particles/coherence/graph_particle_bucket.d.ts.map +1 -0
- package/src/shade/renderer/particles/coherence/graph_particle_bucket.js +179 -0
- package/src/shade/renderer/particles/coherence/particle_program_buckets.d.ts +63 -0
- package/src/shade/renderer/particles/coherence/particle_program_buckets.d.ts.map +1 -0
- package/src/shade/renderer/particles/coherence/particle_program_buckets.js +116 -0
- package/src/shade/renderer/particles/coherence/shader_particle_bucket.d.ts +59 -0
- package/src/shade/renderer/particles/coherence/shader_particle_bucket.d.ts.map +1 -0
- package/src/shade/renderer/particles/coherence/shader_particle_bucket.js +344 -0
- package/src/shade/renderer/particles/data/PARTICLE_COUNTERS.d.ts +27 -5
- package/src/shade/renderer/particles/data/PARTICLE_COUNTERS.d.ts.map +1 -1
- package/src/shade/renderer/particles/data/PARTICLE_COUNTERS.js +27 -5
- package/src/shade/renderer/particles/data/PARTICLE_EMITTER_LAYOUT.d.ts +13 -1
- package/src/shade/renderer/particles/data/PARTICLE_EMITTER_LAYOUT.d.ts.map +1 -1
- package/src/shade/renderer/particles/data/PARTICLE_EMITTER_LAYOUT.js +15 -1
- package/src/shade/renderer/particles/data/chunk_particle_emitter.d.ts.map +1 -1
- package/src/shade/renderer/particles/data/chunk_particle_emitter.js +3 -0
- package/src/shade/renderer/particles/graph/ParticleNodeDescription.d.ts +43 -0
- package/src/shade/renderer/particles/graph/ParticleNodeDescription.d.ts.map +1 -0
- package/src/shade/renderer/particles/graph/ParticleNodeDescription.js +44 -0
- package/src/shade/renderer/particles/graph/ParticleNodeRegistry.d.ts +33 -59
- package/src/shade/renderer/particles/graph/ParticleNodeRegistry.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/ParticleNodeRegistry.js +185 -118
- package/src/shade/renderer/particles/graph/compile_particle_graph.d.ts +15 -10
- package/src/shade/renderer/particles/graph/compile_particle_graph.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/compile_particle_graph.js +205 -170
- package/src/shade/renderer/particles/graph/particle_graph_authoring.d.ts +44 -0
- package/src/shade/renderer/particles/graph/particle_graph_authoring.d.ts.map +1 -0
- package/src/shade/renderer/particles/graph/particle_graph_authoring.js +108 -0
- package/src/shade/renderer/particles/graph_particles.d.ts +39 -11
- package/src/shade/renderer/particles/graph_particles.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph_particles.js +60 -20
- package/src/shade/renderer/particles/particle_prototype.d.ts.map +1 -1
- package/src/shade/renderer/particles/particle_prototype.js +181 -180
- package/src/shade/renderer/particles/runtime/EmitterRegistry.d.ts +8 -1
- package/src/shade/renderer/particles/runtime/EmitterRegistry.d.ts.map +1 -1
- package/src/shade/renderer/particles/runtime/EmitterRegistry.js +8 -1
- package/src/shade/renderer/particles/runtime/ProgramArena.d.ts +22 -2
- package/src/shade/renderer/particles/runtime/ProgramArena.d.ts.map +1 -1
- package/src/shade/renderer/particles/runtime/ProgramArena.js +54 -3
- package/src/shade/renderer/particles/runtime/create_particle_effect.d.ts +4 -4
- package/src/shade/renderer/particles/runtime/create_particle_effect.d.ts.map +1 -1
- package/src/shade/renderer/particles/runtime/create_particle_effect.js +19 -19
- package/src/shade/renderer/particles/shaders/shader_particle_finalize.d.ts.map +1 -1
- package/src/shade/renderer/particles/shaders/shader_particle_finalize.js +32 -14
- package/src/shade/renderer/particles/shaders/shader_particle_simulate.d.ts +2 -23
- package/src/shade/renderer/particles/shaders/shader_particle_simulate.d.ts.map +1 -1
- package/src/shade/renderer/particles/shaders/shader_particle_simulate.js +40 -11
- package/src/shade/renderer/particles/sort/shader_particle_sort.d.ts +6 -17
- package/src/shade/renderer/particles/sort/shader_particle_sort.d.ts.map +1 -1
- package/src/shade/renderer/particles/sort/shader_particle_sort.js +60 -9
- package/src/shade/renderer/particles/vm/chunk_particle_vm.js +1 -1
- package/src/shade/renderer/scene/SkinnedMesh.d.ts +11 -0
- package/src/shade/renderer/scene/SkinnedMesh.d.ts.map +1 -1
- package/src/shade/renderer/scene/SkinnedMesh.js +11 -0
- package/src/shade/renderer/shader/chunk/geometry/quaternion/dual/chunk_dual_quat_from_m4.d.ts +33 -3
- package/src/shade/renderer/shader/chunk/geometry/quaternion/dual/chunk_dual_quat_from_m4.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/geometry/quaternion/dual/chunk_dual_quat_from_m4.js +58 -37
- package/src/shade/wgsl/emulator/CPUBitmapData.d.ts +1 -1
- package/src/view/DOM.d.ts +69 -0
- package/src/view/DOM.d.ts.map +1 -0
- package/src/view/DOM.js +2 -1
- package/src/view/common/LocalizedLabelView.d.ts +50 -0
- package/src/view/common/LocalizedLabelView.d.ts.map +1 -0
- package/src/view/controller/controls/GuiControl.d.ts +19 -0
- package/src/view/controller/controls/GuiControl.d.ts.map +1 -0
- package/src/view/elements/FrameRateView.d.ts +45 -0
- package/src/view/elements/FrameRateView.d.ts.map +1 -0
- package/src/view/elements/FrameRateView.js +131 -0
- package/src/view/elements/SliderView.d.ts +37 -0
- package/src/view/elements/SliderView.d.ts.map +1 -0
- package/src/view/elements/SliderView.js +71 -0
- package/src/view/elements/navigation/ViewStack.d.ts +1 -1
- package/src/view/elements/navigation/ViewStack.js +1 -1
- package/src/view/elements/notify/NotificationView.d.ts +22 -0
- package/src/view/elements/notify/NotificationView.d.ts.map +1 -0
- package/src/view/tooltip/TooltipView.d.ts +5 -1
- package/src/view/tooltip/TooltipView.d.ts.map +1 -1
- package/src/view/tooltip/TooltipView.js +4 -0
- package/src/shade/renderer/particles/graph/ParticleGraph.d.ts +0 -54
- package/src/shade/renderer/particles/graph/ParticleGraph.d.ts.map +0 -1
- package/src/shade/renderer/particles/graph/ParticleGraph.js +0 -99
|
@@ -1,170 +1,205 @@
|
|
|
1
|
-
import { PARTICLE_VM_REGISTER_COUNT } from "../ParticleConstants.js";
|
|
2
|
-
import { ParticleAssembler } from "../isa/ParticleAssembler.js";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* The
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
const
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
for (let
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
const
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
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
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
const
|
|
119
|
-
if (
|
|
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
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
1
|
+
import { PARTICLE_VM_REGISTER_COUNT } from "../ParticleConstants.js";
|
|
2
|
+
import { ParticleAssembler } from "../isa/ParticleAssembler.js";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Lower a single-phase particle {@link ../../../../core/model/node-graph/NodeGraph.js NodeGraph}
|
|
6
|
+
* into a VM instruction stream.
|
|
7
|
+
*
|
|
8
|
+
* The graph describes one lifecycle phase (SPAWN or UPDATE) of a particle effect: nodes are
|
|
9
|
+
* {@link ParticleNodeDescription} instances, and every connection wires a producing node's `out`
|
|
10
|
+
* port to a consuming node's named input port.
|
|
11
|
+
*
|
|
12
|
+
* The pipeline:
|
|
13
|
+
* 1. Walk the graph from its sinks (attribute writes / kill), flattening it into an SSA-style value
|
|
14
|
+
* list in dependency order. Shared sub-expressions are evaluated once (DAG sharing via
|
|
15
|
+
* memoisation).
|
|
16
|
+
* 2. Compute each value's last use.
|
|
17
|
+
* 3. Linear-scan register allocation: registers are returned to the pool at a value's last use, so a
|
|
18
|
+
* result can reuse a just-consumed input register (VM ops read all sources before writing dst).
|
|
19
|
+
* 4. Emit each value's opcode via its node description.
|
|
20
|
+
*
|
|
21
|
+
* @param {NodeGraph} graph
|
|
22
|
+
* @param {import("../isa/ParticleAssembler.js").InstructionStream} stream target section
|
|
23
|
+
* @param {ParticleAssembler} asm assembler owning the shared constant pool
|
|
24
|
+
* @param {import("../layout/ParticleLayout.js").ParticleLayout} layout attribute schema
|
|
25
|
+
*/
|
|
26
|
+
export function compile_particle_graph(graph, stream, asm, layout) {
|
|
27
|
+
const values = flatten(graph);
|
|
28
|
+
const last_use = compute_last_use(values);
|
|
29
|
+
|
|
30
|
+
const register_of = new Array(values.length).fill(-1);
|
|
31
|
+
const free = [];
|
|
32
|
+
for (let r = PARTICLE_VM_REGISTER_COUNT - 1; r >= 0; r--) {
|
|
33
|
+
free.push(r);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
for (let i = 0; i < values.length; i++) {
|
|
37
|
+
const value = values[i];
|
|
38
|
+
const description = value.description;
|
|
39
|
+
|
|
40
|
+
// Capture the current registers of all inputs before we recycle any of them.
|
|
41
|
+
const input_registers = {};
|
|
42
|
+
for (const port of Object.keys(value.inputs)) {
|
|
43
|
+
input_registers[port] = register_of[value.inputs[port]];
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
// Return registers whose owning value dies at this instruction (its last consumer).
|
|
47
|
+
const freed = new Set();
|
|
48
|
+
for (const port of Object.keys(value.inputs)) {
|
|
49
|
+
const source = value.inputs[port];
|
|
50
|
+
if (last_use[source] === i && register_of[source] >= 0 && !freed.has(source)) {
|
|
51
|
+
free.push(register_of[source]);
|
|
52
|
+
register_of[source] = -1;
|
|
53
|
+
freed.add(source);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
let out;
|
|
58
|
+
if (!description.is_sink) {
|
|
59
|
+
if (free.length === 0) {
|
|
60
|
+
throw new Error(
|
|
61
|
+
`Particle graph exceeds the VM register file (${PARTICLE_VM_REGISTER_COUNT} registers). ` +
|
|
62
|
+
`Simplify the effect or split it.`
|
|
63
|
+
);
|
|
64
|
+
}
|
|
65
|
+
out = free.pop();
|
|
66
|
+
register_of[i] = out;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
description.emit(stream, {
|
|
70
|
+
in: (port) => input_registers[port],
|
|
71
|
+
out,
|
|
72
|
+
parameters: value.parameters,
|
|
73
|
+
layout,
|
|
74
|
+
asm,
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Compile a full effect (SPAWN + UPDATE) into a {@link ../isa/ParticleProgram.js}.
|
|
81
|
+
*
|
|
82
|
+
* @param {object} params
|
|
83
|
+
* @param {NodeGraph} [params.spawn]
|
|
84
|
+
* @param {NodeGraph} [params.update]
|
|
85
|
+
* @param {import("../layout/ParticleLayout.js").ParticleLayout} params.layout
|
|
86
|
+
* @returns {import("../isa/ParticleProgram.js").ParticleProgram}
|
|
87
|
+
*/
|
|
88
|
+
export function compile_particle_effect({ spawn, update, layout }) {
|
|
89
|
+
const asm = new ParticleAssembler();
|
|
90
|
+
if (spawn !== undefined) {
|
|
91
|
+
compile_particle_graph(spawn, asm.spawn, asm, layout);
|
|
92
|
+
}
|
|
93
|
+
if (update !== undefined) {
|
|
94
|
+
compile_particle_graph(update, asm.update, asm, layout);
|
|
95
|
+
}
|
|
96
|
+
const program = asm.build();
|
|
97
|
+
program.validate();
|
|
98
|
+
return program;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* Flatten a graph into a dependency-ordered value list. Each value is
|
|
103
|
+
* `{ description, parameters, inputs: { port_name -> value_index } }`. The array order is a valid
|
|
104
|
+
* topological order (every input has a lower index).
|
|
105
|
+
* @param {NodeGraph} graph
|
|
106
|
+
* @returns {Array<{description: ParticleNodeDescription, parameters: object, inputs: object}>}
|
|
107
|
+
*/
|
|
108
|
+
function flatten(graph) {
|
|
109
|
+
const values = [];
|
|
110
|
+
const node_to_value = new Map();
|
|
111
|
+
const visiting = new Set();
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* @param {NodeInstance} node
|
|
115
|
+
* @returns {number} index of the node's value
|
|
116
|
+
*/
|
|
117
|
+
function visit(node) {
|
|
118
|
+
const existing = node_to_value.get(node.id);
|
|
119
|
+
if (existing !== undefined) {
|
|
120
|
+
return existing;
|
|
121
|
+
}
|
|
122
|
+
if (visiting.has(node.id)) {
|
|
123
|
+
throw new Error(`Cycle detected in particle graph at node ${node.id}`);
|
|
124
|
+
}
|
|
125
|
+
visiting.add(node.id);
|
|
126
|
+
|
|
127
|
+
const description = require_particle_description(node);
|
|
128
|
+
|
|
129
|
+
const inputs = {};
|
|
130
|
+
for (const port of description.inPorts) {
|
|
131
|
+
inputs[port.name] = visit(resolve_input(node, port));
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
const vid = values.length;
|
|
135
|
+
values.push({ description, parameters: node.parameters, inputs });
|
|
136
|
+
node_to_value.set(node.id, vid);
|
|
137
|
+
visiting.delete(node.id);
|
|
138
|
+
return vid;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
for (const node of graph.getNodes()) {
|
|
142
|
+
if (require_particle_description(node).is_sink) {
|
|
143
|
+
visit(node);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
return values;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
/**
|
|
151
|
+
* @param {NodeInstance} node
|
|
152
|
+
* @returns {ParticleNodeDescription}
|
|
153
|
+
*/
|
|
154
|
+
function require_particle_description(node) {
|
|
155
|
+
const description = node.description;
|
|
156
|
+
|
|
157
|
+
if (description === null || description === undefined || description.isParticleNodeDescription !== true) {
|
|
158
|
+
throw new Error(`Node ${node.id} (${description}) is not a particle node, it cannot be compiled`);
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
return description;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
/**
|
|
165
|
+
* Find the node driving one input port of a node.
|
|
166
|
+
* @param {NodeInstance} node
|
|
167
|
+
* @param {Port} port an input port of the node's description
|
|
168
|
+
* @returns {NodeInstance}
|
|
169
|
+
* @throws if the port has no source, or more than one
|
|
170
|
+
*/
|
|
171
|
+
function resolve_input(node, port) {
|
|
172
|
+
const endpoint = node.getEndpoint(port.id);
|
|
173
|
+
|
|
174
|
+
const connections = endpoint.inConnections;
|
|
175
|
+
|
|
176
|
+
if (connections.length === 0) {
|
|
177
|
+
throw new Error(`Node ${node.id} (${node.description.name}) is missing a binding for input '${port.name}'`);
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
if (connections.length > 1) {
|
|
181
|
+
throw new Error(
|
|
182
|
+
`Node ${node.id} (${node.description.name}) has ${connections.length} connections into input '${port.name}', ` +
|
|
183
|
+
`an input may have at most one`
|
|
184
|
+
);
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
return connections[0].source.instance;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
/**
|
|
191
|
+
* @param {Array} values
|
|
192
|
+
* @returns {number[]} last_use[i] = highest index that consumes value i (or -1 if never consumed)
|
|
193
|
+
*/
|
|
194
|
+
function compute_last_use(values) {
|
|
195
|
+
const last_use = new Array(values.length).fill(-1);
|
|
196
|
+
for (let i = 0; i < values.length; i++) {
|
|
197
|
+
for (const port of Object.keys(values[i].inputs)) {
|
|
198
|
+
const source = values[i].inputs[port];
|
|
199
|
+
if (i > last_use[source]) {
|
|
200
|
+
last_use[source] = i;
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
return last_use;
|
|
205
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Authoring sugar for building particle effects on a plain
|
|
3
|
+
* {@link ../../../../core/model/node-graph/NodeGraph.js NodeGraph}.
|
|
4
|
+
*
|
|
5
|
+
* These are convenience wrappers only — the graph, its nodes and its connections are the standard
|
|
6
|
+
* node-graph model, so the editor, serializers and graph utilities all work on particle effects
|
|
7
|
+
* unchanged. Everything downstream (see {@link ./compile_particle_graph.js}) consumes `NodeGraph`
|
|
8
|
+
* directly and never sees these helpers.
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Add a node to a particle graph.
|
|
12
|
+
*
|
|
13
|
+
* @param {NodeGraph} graph
|
|
14
|
+
* @param {string} type a node type name registered in {@link ./ParticleNodeRegistry.js}
|
|
15
|
+
* @param {object} [parameters] static parameters (attribute name, builtin id, constant value, …)
|
|
16
|
+
* @returns {number} the new node instance id
|
|
17
|
+
*/
|
|
18
|
+
export function particle_node(graph: NodeGraph, type: string, parameters?: object): number;
|
|
19
|
+
/**
|
|
20
|
+
* Bind an input port of a node to a source, replacing whatever was bound to it before.
|
|
21
|
+
*
|
|
22
|
+
* The source may be:
|
|
23
|
+
* - a node id (number) → that node's `out` port,
|
|
24
|
+
* - `{ node, port }` → an explicit port,
|
|
25
|
+
* - a number array → a literal `vec4`, materialised as a `const` node (scalar broadcast is NOT
|
|
26
|
+
* applied; `[5]` means `[5,0,0,0]`).
|
|
27
|
+
*
|
|
28
|
+
* @param {NodeGraph} graph
|
|
29
|
+
* @param {number} node_id
|
|
30
|
+
* @param {string} port input port name
|
|
31
|
+
* @param {number|number[]|{node: number, port?: string}} source
|
|
32
|
+
* @returns {number} connection id
|
|
33
|
+
*/
|
|
34
|
+
export function particle_wire(graph: NodeGraph, node_id: number, port: string, source: number | number[] | {
|
|
35
|
+
node: number;
|
|
36
|
+
port?: string;
|
|
37
|
+
}): number;
|
|
38
|
+
/**
|
|
39
|
+
* Wrap a scalar or vector as a literal source (so it is unambiguous vs. a node id).
|
|
40
|
+
* @param {...number} components
|
|
41
|
+
* @returns {number[]}
|
|
42
|
+
*/
|
|
43
|
+
export function literal(...components: number[]): number[];
|
|
44
|
+
//# sourceMappingURL=particle_graph_authoring.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"particle_graph_authoring.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/particles/graph/particle_graph_authoring.js"],"names":[],"mappings":"AAGA;;;;;;;;GAQG;AAEH;;;;;;;GAOG;AACH,sDAJW,MAAM,eACN,MAAM,GACJ,MAAM,CAUlB;AAED;;;;;;;;;;;;;;GAcG;AACH,yDALW,MAAM,QACN,MAAM;UACiB,MAAM;WAAS,MAAM;IAC1C,MAAM,CA2BlB;AA6BD;;;;GAIG;AACH,uCAHc,MAAM,KACP,MAAM,EAAE,CAIpB"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { PortDirection } from "../../../../core/model/node-graph/node/PortDirection.js";
|
|
2
|
+
import { get_particle_node_description, PARTICLE_NODE_OUTPUT_PORT } from "./ParticleNodeRegistry.js";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Authoring sugar for building particle effects on a plain
|
|
6
|
+
* {@link ../../../../core/model/node-graph/NodeGraph.js NodeGraph}.
|
|
7
|
+
*
|
|
8
|
+
* These are convenience wrappers only — the graph, its nodes and its connections are the standard
|
|
9
|
+
* node-graph model, so the editor, serializers and graph utilities all work on particle effects
|
|
10
|
+
* unchanged. Everything downstream (see {@link ./compile_particle_graph.js}) consumes `NodeGraph`
|
|
11
|
+
* directly and never sees these helpers.
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Add a node to a particle graph.
|
|
16
|
+
*
|
|
17
|
+
* @param {NodeGraph} graph
|
|
18
|
+
* @param {string} type a node type name registered in {@link ./ParticleNodeRegistry.js}
|
|
19
|
+
* @param {object} [parameters] static parameters (attribute name, builtin id, constant value, …)
|
|
20
|
+
* @returns {number} the new node instance id
|
|
21
|
+
*/
|
|
22
|
+
export function particle_node(graph, type, parameters = {}) {
|
|
23
|
+
const description = get_particle_node_description(type);
|
|
24
|
+
|
|
25
|
+
const id = graph.createNode(description);
|
|
26
|
+
|
|
27
|
+
graph.getNodeSafe(id).setParameters(parameters);
|
|
28
|
+
|
|
29
|
+
return id;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Bind an input port of a node to a source, replacing whatever was bound to it before.
|
|
34
|
+
*
|
|
35
|
+
* The source may be:
|
|
36
|
+
* - a node id (number) → that node's `out` port,
|
|
37
|
+
* - `{ node, port }` → an explicit port,
|
|
38
|
+
* - a number array → a literal `vec4`, materialised as a `const` node (scalar broadcast is NOT
|
|
39
|
+
* applied; `[5]` means `[5,0,0,0]`).
|
|
40
|
+
*
|
|
41
|
+
* @param {NodeGraph} graph
|
|
42
|
+
* @param {number} node_id
|
|
43
|
+
* @param {string} port input port name
|
|
44
|
+
* @param {number|number[]|{node: number, port?: string}} source
|
|
45
|
+
* @returns {number} connection id
|
|
46
|
+
*/
|
|
47
|
+
export function particle_wire(graph, node_id, port, source) {
|
|
48
|
+
const node = graph.getNodeSafe(node_id);
|
|
49
|
+
|
|
50
|
+
const port_object = node.description.findPortByNameAndDirection(port, PortDirection.In);
|
|
51
|
+
|
|
52
|
+
if (port_object === undefined) {
|
|
53
|
+
throw new Error(`Node ${node_id} (${node.description.name}) has no input port '${port}'`);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
// snapshot before connecting, so the replacement is only committed once the new wiring holds
|
|
57
|
+
const previous = node.getEndpoint(port_object.id).inConnections;
|
|
58
|
+
|
|
59
|
+
const resolved = resolve_source(graph, source);
|
|
60
|
+
|
|
61
|
+
const connection_id = graph.createConnectionByPortName(
|
|
62
|
+
resolved.node, resolved.port,
|
|
63
|
+
node_id, port
|
|
64
|
+
);
|
|
65
|
+
|
|
66
|
+
// an input may have at most one source, so binding it again replaces rather than adds
|
|
67
|
+
for (const connection of previous) {
|
|
68
|
+
graph.deleteConnection(connection.id);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
return connection_id;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* @param {NodeGraph} graph
|
|
76
|
+
* @param {number|number[]|{node: number, port?: string}} source
|
|
77
|
+
* @returns {{node: number, port: string}}
|
|
78
|
+
*/
|
|
79
|
+
function resolve_source(graph, source) {
|
|
80
|
+
if (typeof source === "number") {
|
|
81
|
+
// Could be a node id or a scalar literal — ambiguous, so literals must use the array form.
|
|
82
|
+
return { node: source, port: PARTICLE_NODE_OUTPUT_PORT };
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
if (Array.isArray(source)) {
|
|
86
|
+
const value = [source[0] ?? 0, source[1] ?? 0, source[2] ?? 0, source[3] ?? 0];
|
|
87
|
+
|
|
88
|
+
return {
|
|
89
|
+
node: particle_node(graph, "const", { value }),
|
|
90
|
+
port: PARTICLE_NODE_OUTPUT_PORT
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
if (source !== null && typeof source === "object" && typeof source.node === "number") {
|
|
95
|
+
return { node: source.node, port: source.port ?? PARTICLE_NODE_OUTPUT_PORT };
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
throw new Error(`Invalid input source: ${JSON.stringify(source)}`);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* Wrap a scalar or vector as a literal source (so it is unambiguous vs. a node id).
|
|
103
|
+
* @param {...number} components
|
|
104
|
+
* @returns {number[]}
|
|
105
|
+
*/
|
|
106
|
+
export function literal(...components) {
|
|
107
|
+
return components;
|
|
108
|
+
}
|
|
@@ -5,20 +5,32 @@
|
|
|
5
5
|
*
|
|
6
6
|
* The passes run in dependency order:
|
|
7
7
|
*
|
|
8
|
-
* reset counters
|
|
8
|
+
* reset counters -> emit (spawn) -> simulate (advance + compact) -> bucket -> build indirect args
|
|
9
9
|
*
|
|
10
10
|
* with the depth sort + billboard render appended by the caller (the render pass needs the frame's
|
|
11
11
|
* colour + depth attachments, which live in the caller's graph). Alive lists ping-pong by frame
|
|
12
|
-
* parity: `
|
|
13
|
-
*
|
|
12
|
+
* parity: `alive_write` receives this frame's survivors + newborns.
|
|
13
|
+
*
|
|
14
|
+
* ## Two orderings, kept apart
|
|
15
|
+
*
|
|
16
|
+
* Simulate does NOT read the alive list. It reads `sim_list`, the program-coherent indirection list
|
|
17
|
+
* the bucketing pass (`coherence/`) built from last frame's alive list: the same pool slots
|
|
18
|
+
* regrouped so each wave runs one VM program, with every run padded out to a whole workgroup. That
|
|
19
|
+
* ordering is camera-independent and changes only when emitters or their programs change.
|
|
20
|
+
*
|
|
21
|
+
* The RENDER ordering — back-to-front by view depth, from `sort/` — is a different list in a
|
|
22
|
+
* different buffer, produced by different passes, and the billboard draw is what consumes it.
|
|
23
|
+
* Reordering the render list for coherence would break premultiplied transparency; depth-sorting the
|
|
24
|
+
* simulation list would destroy the coherence. They share no buffer and no counter slot.
|
|
14
25
|
*
|
|
15
26
|
* The simulate pass is fully GPU-driven: its workgroup count comes from `dispatch_args` (written by
|
|
16
27
|
* LAST frame's build-indirect pass) via `dispatchWorkgroupsIndirect`, and its element bound comes
|
|
17
|
-
* from the `ALIVE_IN` counter snapshot — never from a CPU count.
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
28
|
+
* from the `ALIVE_IN` counter snapshot — never from a CPU count. Both are derived from one value,
|
|
29
|
+
* the padded list length, so the thread count and the bound agree by construction. A CPU count is
|
|
30
|
+
* inevitably stale and corrupts the pool (orphaned slots when the population grows, double-freed
|
|
31
|
+
* slots when it shrinks). Only the spawn count is CPU-provided, because the CPU authored the
|
|
32
|
+
* spawn-request list and knows its exact length. The caller renders with `drawIndirect(draw_args)`,
|
|
33
|
+
* which build-indirect writes THIS frame, so the instance count is exact too.
|
|
22
34
|
*
|
|
23
35
|
* All persistent buffers are imported (owned by the feature, not the graph). Writing an imported
|
|
24
36
|
* buffer marks the pass a side-effect so it always executes, and returns a renamed handle downstream
|
|
@@ -34,21 +46,30 @@
|
|
|
34
46
|
* @param {GPUBuffer} params.gpu.program
|
|
35
47
|
* @param {GPUBuffer} params.gpu.constants
|
|
36
48
|
* @param {GPUBuffer} params.gpu.pool
|
|
37
|
-
* @param {GPUBuffer} params.gpu.alive_read
|
|
38
|
-
*
|
|
49
|
+
* @param {GPUBuffer} params.gpu.alive_read the other half of the ping-pong. These passes no longer
|
|
50
|
+
* read it — simulate's input is `sim_list` — but the caller keeps swapping the two so this frame's
|
|
51
|
+
* render is not read-after-written by next frame's emit, which would serialise them
|
|
52
|
+
* @param {GPUBuffer} params.gpu.alive_write this-frame alive list: survivors + newborns
|
|
39
53
|
* @param {GPUBuffer} params.gpu.dead free-list stack
|
|
40
54
|
* @param {GPUBuffer} params.gpu.counters atomic counters
|
|
41
55
|
* @param {GPUBuffer} params.gpu.spawn_requests
|
|
42
56
|
* @param {GPUBuffer} params.gpu.dispatch_args indirect simulate dispatch (usage must include INDIRECT)
|
|
43
57
|
* @param {GPUBuffer} params.gpu.draw_args indirect billboard draw (usage must include INDIRECT)
|
|
58
|
+
* @param {GPUBuffer} params.gpu.sim_list program-coherent simulate input, rebuilt here for next frame
|
|
59
|
+
* @param {GPUBuffer} params.gpu.sim_keys see {@link graph_particle_bucket}
|
|
60
|
+
* @param {GPUBuffer} params.gpu.sim_histogram see {@link graph_particle_bucket}
|
|
61
|
+
* @param {GPUBuffer} params.gpu.sim_bucket_counts see {@link graph_particle_bucket}
|
|
62
|
+
* @param {GPUBuffer} params.gpu.sim_cursor see {@link graph_particle_bucket}
|
|
63
|
+
* @param {GPUBuffer} params.gpu.sim_dispatch_args see {@link graph_particle_bucket} (usage must include INDIRECT)
|
|
44
64
|
* @param {number} params.capacity pool capacity in particles (bounds the emit pass's free-list pops)
|
|
65
|
+
* @param {number} params.bucket_count distinct compiled programs — `GPUParticleSystem#bucketCount()`
|
|
45
66
|
* @param {object} params.frame per-frame scalars
|
|
46
67
|
* @param {number} params.frame.dt
|
|
47
68
|
* @param {number} params.frame.time
|
|
48
69
|
* @param {number} params.frame.index
|
|
49
70
|
* @param {number} params.frame.spawn_count number of spawn requests this frame (CPU-authored, exact)
|
|
50
71
|
*/
|
|
51
|
-
export function graph_particles({ graph, gpu, capacity, frame }: {
|
|
72
|
+
export function graph_particles({ graph, gpu, capacity, bucket_count, frame }: {
|
|
52
73
|
graph: import("../../../engine/graphics/render/frame_graph/FrameGraph.js").FrameGraph;
|
|
53
74
|
gpu: {
|
|
54
75
|
emitters: GPUBuffer;
|
|
@@ -62,8 +83,15 @@ export function graph_particles({ graph, gpu, capacity, frame }: {
|
|
|
62
83
|
spawn_requests: GPUBuffer;
|
|
63
84
|
dispatch_args: GPUBuffer;
|
|
64
85
|
draw_args: GPUBuffer;
|
|
86
|
+
sim_list: GPUBuffer;
|
|
87
|
+
sim_keys: GPUBuffer;
|
|
88
|
+
sim_histogram: GPUBuffer;
|
|
89
|
+
sim_bucket_counts: GPUBuffer;
|
|
90
|
+
sim_cursor: GPUBuffer;
|
|
91
|
+
sim_dispatch_args: GPUBuffer;
|
|
65
92
|
};
|
|
66
93
|
capacity: number;
|
|
94
|
+
bucket_count: number;
|
|
67
95
|
frame: {
|
|
68
96
|
dt: number;
|
|
69
97
|
time: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph_particles.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/particles/graph_particles.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"graph_particles.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/particles/graph_particles.js"],"names":[],"mappings":"AAYA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsEG;AACH;IA7BkG,KAAK,EAA5F,OAAO,2DAA2D,EAAE,UAAU;IAC/D,GAAG;QACI,QAAQ;QACR,OAAO;QACP,SAAS;QACT,IAAI;QACJ,UAAU;QAGV,WAAW;QACX,IAAI;QACJ,QAAQ;QACR,cAAc;QACd,aAAa;QACb,SAAS;QACT,QAAQ;QACR,QAAQ;QACR,aAAa;QACb,iBAAiB;QACjB,UAAU;QACV,iBAAiB;;IACxB,QAAQ,EAAvB,MAAM;IACS,YAAY,EAA3B,MAAM;IACS,KAAK;QACC,EAAE,EAAvB,MAAM;QACe,IAAI,EAAzB,MAAM;QACe,KAAK,EAA1B,MAAM;QACe,WAAW,EAAhC,MAAM;;;;;;;;EAwGhB"}
|