@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
|
@@ -4,10 +4,27 @@ import { m4_look_at } from "../../../core/geom/3d/mat4/m4_look_at.js";
|
|
|
4
4
|
import { m4_multiply } from "../../../core/geom/3d/mat4/m4_multiply.js";
|
|
5
5
|
import { ShadeGPUCommandContext } from "../../device/ShadeGPUCommandContext.js";
|
|
6
6
|
import { CAMERA_UNIFORM_STRUCT } from "../../renderer/camera/CAMERA_UNIFORM_STRUCT.js";
|
|
7
|
-
import {
|
|
7
|
+
import {
|
|
8
|
+
PARTICLE_RECORD_WORD_COUNT,
|
|
9
|
+
PARTICLE_SIMULATE_WORKGROUP_SIZE,
|
|
10
|
+
} from "../../renderer/particles/ParticleConstants.js";
|
|
11
|
+
import {
|
|
12
|
+
PREFIX_SCAN_CSDLDF_HEADER_WORDS,
|
|
13
|
+
PREFIX_SCAN_CSDLDF_PARTITION_SIZE,
|
|
14
|
+
shader_prefix_scan_csdldf,
|
|
15
|
+
} from "../../renderer/gpu_primitive/prefix_sum/v1/shader_prefix_scan_csdldf.js";
|
|
16
|
+
import { build_indirect_compute_dispatch_command } from "../../renderer/gpu_primitive/indirect/IndirectComputeCommandBuildPass.js";
|
|
17
|
+
import {
|
|
18
|
+
shader_particle_bucket_fill,
|
|
19
|
+
shader_particle_bucket_histogram,
|
|
20
|
+
shader_particle_bucket_pad,
|
|
21
|
+
shader_particle_bucket_reset,
|
|
22
|
+
shader_particle_bucket_scatter,
|
|
23
|
+
} from "../../renderer/particles/coherence/shader_particle_bucket.js";
|
|
8
24
|
import { PARTICLE_COUNTER_COUNT } from "../../renderer/particles/data/PARTICLE_COUNTERS.js";
|
|
9
25
|
import { EMITTER_BLEND, EMITTER_PROJECTION } from "../../renderer/particles/data/PARTICLE_EMITTER_LAYOUT.js";
|
|
10
|
-
import {
|
|
26
|
+
import { NodeGraph } from "../../../core/model/node-graph/NodeGraph.js";
|
|
27
|
+
import { particle_node, particle_wire } from "../../renderer/particles/graph/particle_graph_authoring.js";
|
|
11
28
|
import { VM_BUILTIN, VM_RANDOM_MODE } from "../../renderer/particles/isa/ParticleVMISA.js";
|
|
12
29
|
import { ParticleLayout } from "../../renderer/particles/layout/ParticleLayout.js";
|
|
13
30
|
import { GPUParticleSystem } from "../../renderer/particles/GPUParticleSystem.js";
|
|
@@ -22,10 +39,7 @@ import {
|
|
|
22
39
|
shader_particle_build_indirect,
|
|
23
40
|
shader_particle_reset_counters,
|
|
24
41
|
} from "../../renderer/particles/shaders/shader_particle_finalize.js";
|
|
25
|
-
import {
|
|
26
|
-
PARTICLE_SIMULATE_WORKGROUP_SIZE,
|
|
27
|
-
shader_particle_simulate,
|
|
28
|
-
} from "../../renderer/particles/shaders/shader_particle_simulate.js";
|
|
42
|
+
import { shader_particle_simulate } from "../../renderer/particles/shaders/shader_particle_simulate.js";
|
|
29
43
|
|
|
30
44
|
/**
|
|
31
45
|
* The scene the particle playground draws, with every reference to the page removed: it takes a
|
|
@@ -49,6 +63,12 @@ import {
|
|
|
49
63
|
* billboard draw via `drawIndirect`, both from args the build-indirect pass writes on the GPU. No
|
|
50
64
|
* CPU readback participates in sizing anything — a stale CPU count would orphan alive-list entries
|
|
51
65
|
* when the population grows and double-free slots when it shrinks.
|
|
66
|
+
*
|
|
67
|
+
* The four emitters run four distinct compiled programs, so this is also where the simulation-order
|
|
68
|
+
* bucketing has something to do: without it a simulate wave holds fire, smoke, spark and dust
|
|
69
|
+
* particles side by side, each wanting different opcodes out of the interpreter's switch. The
|
|
70
|
+
* bucketing passes are encoded directly here rather than through `graph_particles`, which is the
|
|
71
|
+
* frame-graph wiring of the same sequence.
|
|
52
72
|
*/
|
|
53
73
|
|
|
54
74
|
/** Maximum simultaneous particles across every emitter — they share one pool. */
|
|
@@ -74,7 +94,10 @@ const STATS_OFFSET_DRAW_ARGS = 48;
|
|
|
74
94
|
* @typedef {object} ParticleSceneStats
|
|
75
95
|
* @property {number} alive particles alive at the end of the captured frame
|
|
76
96
|
* @property {number} dead free slots left in the pool
|
|
77
|
-
* @property {number} alive_in the snapshot next frame's simulate reads as its input length
|
|
97
|
+
* @property {number} alive_in the snapshot next frame's simulate reads as its input length — the
|
|
98
|
+
* PADDED length of the coherence list, so it is `sim_padded` from the captured frame, not `alive`
|
|
99
|
+
* @property {number} sim_padded length of the program-coherent list the coherence pass built this
|
|
100
|
+
* frame; the gap to `alive` is the lanes padding costs to keep each wave on one VM program
|
|
78
101
|
* @property {number[]} dispatch simulate's indirect dispatch args, `[x, y, z]` workgroups
|
|
79
102
|
* @property {number[]} draw the billboard draw's indirect args, `[vertices, instances]`
|
|
80
103
|
*/
|
|
@@ -147,6 +170,37 @@ export function create_particle_scene(graphics, { color_format, capacity = PARTI
|
|
|
147
170
|
const dispatch_args = device.createBuffer({ label: "particles/dispatch_args", size: 3 * 4, usage: args_usage });
|
|
148
171
|
const draw_args = device.createBuffer({ label: "particles/draw_args", size: 4 * 4, usage: args_usage });
|
|
149
172
|
|
|
173
|
+
// --- simulation-order (coherence) buffers -------------------------------------------------
|
|
174
|
+
//
|
|
175
|
+
// A separate set from the render-order sort's, on purpose: one list is grouped by VM program and
|
|
176
|
+
// camera-independent, the other is back-to-front by view depth. Sharing a buffer between them
|
|
177
|
+
// would couple a camera-driven ordering to a program-driven one.
|
|
178
|
+
const sizes = system.bufferSizes();
|
|
179
|
+
const buckets = system.bucketCount();
|
|
180
|
+
const sim_list = device.createBuffer({ label: "particles/sim_list", size: sizes.sim_list, usage: storage });
|
|
181
|
+
const sim_keys = device.createBuffer({ label: "particles/sim_keys", size: sizes.sim_keys, usage: storage });
|
|
182
|
+
const sim_histogram = device.createBuffer({ label: "particles/sim_histogram", size: sizes.sim_histogram, usage: storage });
|
|
183
|
+
const sim_bucket_counts = device.createBuffer({ label: "particles/sim_bucket_counts", size: sizes.sim_bucket_counts, usage: storage });
|
|
184
|
+
const sim_cursor = device.createBuffer({ label: "particles/sim_cursor", size: sizes.sim_cursor, usage: storage });
|
|
185
|
+
const sim_dispatch_args = device.createBuffer({ label: "particles/sim_dispatch_args", size: sizes.sim_dispatch_args, usage: args_usage });
|
|
186
|
+
|
|
187
|
+
// Scratch the reused CSDLDF scan needs: the indirect command it is dispatched with, and its
|
|
188
|
+
// decoupled-lookback spine. One partition covers every plausible bucket count.
|
|
189
|
+
const scan_command = device.createBuffer({
|
|
190
|
+
label: "particles/sim_scan_command",
|
|
191
|
+
size: 3 * 4,
|
|
192
|
+
usage: GPUBufferUsage.STORAGE | GPUBufferUsage.INDIRECT,
|
|
193
|
+
});
|
|
194
|
+
// Cleared at the top of every frame, not just on creation: the spine carries per-partition
|
|
195
|
+
// flags, and a stale FLAG_INCLUSIVE left over from last frame is read as this frame's answer.
|
|
196
|
+
// The frame-graph wiring gets this for free from `BufferResourceDescriptor.empty`; encoding by
|
|
197
|
+
// hand has to ask. Rounded to a 256-byte allocation rather than the 8 bytes one partition needs.
|
|
198
|
+
const scan_spine = device.createBuffer({
|
|
199
|
+
label: "particles/sim_scan_spine",
|
|
200
|
+
size: Math.max(256, Math.ceil(buckets / PREFIX_SCAN_CSDLDF_PARTITION_SIZE) * 2 * 4),
|
|
201
|
+
usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST,
|
|
202
|
+
});
|
|
203
|
+
|
|
150
204
|
const initial = system.initialFreeList();
|
|
151
205
|
device.queue.writeBuffer(dead, 0, initial.dead);
|
|
152
206
|
device.queue.writeBuffer(counters, 0, initial.counters);
|
|
@@ -204,7 +258,12 @@ export function create_particle_scene(graphics, { color_format, capacity = PARTI
|
|
|
204
258
|
capacity,
|
|
205
259
|
|
|
206
260
|
/** Buffers a harness may inspect. Not for the frame loop, which never reads them back. */
|
|
207
|
-
buffers: {
|
|
261
|
+
buffers: {
|
|
262
|
+
pool, alive_a, alive_b, dead, counters, spawn_requests, emitters, program, constants,
|
|
263
|
+
dispatch_args, draw_args,
|
|
264
|
+
sim_list, sim_keys, sim_histogram, sim_bucket_counts, sim_cursor, sim_dispatch_args,
|
|
265
|
+
sim_scan_command: scan_command, sim_scan_spine: scan_spine,
|
|
266
|
+
},
|
|
208
267
|
|
|
209
268
|
/**
|
|
210
269
|
* Encode one whole frame: geometry, then emit + simulate + build-indirect, then the
|
|
@@ -258,13 +317,59 @@ export function create_particle_scene(graphics, { color_format, capacity = PARTI
|
|
|
258
317
|
encoder: cmd,
|
|
259
318
|
bindings: {
|
|
260
319
|
emitters, program, vm_constants: constants, pool,
|
|
261
|
-
|
|
320
|
+
sim_list, alive_out: alive_write, dead, counters,
|
|
262
321
|
settings: { u_dt: dt, u_time: time, u_frame: system.frame },
|
|
263
322
|
},
|
|
264
323
|
command: dispatch_args,
|
|
265
324
|
});
|
|
266
325
|
|
|
267
|
-
//
|
|
326
|
+
// --- coherence: regroup the finished alive list by VM program for NEXT frame's simulate ---
|
|
327
|
+
//
|
|
328
|
+
// Reads the list emit and simulate have both finished appending to, and rewrites
|
|
329
|
+
// `sim_list` — the buffer simulate read a few lines above. Consecutive dispatches are
|
|
330
|
+
// ordered, so the read is complete before the write lands.
|
|
331
|
+
shader_particle_bucket_reset.dispatchThreads({
|
|
332
|
+
encoder: cmd,
|
|
333
|
+
bindings: { counters, histogram: sim_histogram, cursor: sim_cursor, sim_dispatch_args, u_bucket_count: buckets },
|
|
334
|
+
thread_count_x: bucket_reset_thread_count(buckets),
|
|
335
|
+
});
|
|
336
|
+
|
|
337
|
+
shader_particle_bucket_histogram.dispatchIndirect({
|
|
338
|
+
encoder: cmd,
|
|
339
|
+
bindings: { emitters, pool, alive: alive_write, keys: sim_keys, histogram: sim_histogram, counters },
|
|
340
|
+
command: sim_dispatch_args,
|
|
341
|
+
});
|
|
342
|
+
|
|
343
|
+
shader_particle_bucket_pad.dispatchThreads({
|
|
344
|
+
encoder: cmd,
|
|
345
|
+
bindings: { histogram: sim_histogram, bucket_counts: sim_bucket_counts, u_bucket_count: buckets },
|
|
346
|
+
thread_count_x: buckets,
|
|
347
|
+
});
|
|
348
|
+
|
|
349
|
+
// The same scan the radix sort runs its spine through, reused unmodified.
|
|
350
|
+
cmd.clearBuffer(scan_spine, 0, scan_spine.size);
|
|
351
|
+
build_indirect_compute_dispatch_command(
|
|
352
|
+
PREFIX_SCAN_CSDLDF_PARTITION_SIZE, cmd, sim_histogram, 0, scan_command, 0,
|
|
353
|
+
);
|
|
354
|
+
shader_prefix_scan_csdldf.dispatchIndirect({
|
|
355
|
+
encoder: cmd,
|
|
356
|
+
command: scan_command,
|
|
357
|
+
bindings: { scan_in: sim_histogram, spine: scan_spine },
|
|
358
|
+
});
|
|
359
|
+
|
|
360
|
+
shader_particle_bucket_scatter.dispatchIndirect({
|
|
361
|
+
encoder: cmd,
|
|
362
|
+
bindings: { keys: sim_keys, alive: alive_write, scanned: sim_histogram, cursor: sim_cursor, sim_list, counters },
|
|
363
|
+
command: sim_dispatch_args,
|
|
364
|
+
});
|
|
365
|
+
|
|
366
|
+
shader_particle_bucket_fill.dispatchThreads({
|
|
367
|
+
encoder: cmd,
|
|
368
|
+
bindings: { bucket_counts: sim_bucket_counts, scanned: sim_histogram, sim_list, counters, u_bucket_count: buckets },
|
|
369
|
+
thread_count_x: buckets * PARTICLE_SIMULATE_WORKGROUP_SIZE,
|
|
370
|
+
});
|
|
371
|
+
|
|
372
|
+
// Snapshot the padded list length (next frame's simulate input) + write this frame's draw args.
|
|
268
373
|
shader_particle_build_indirect.dispatch({
|
|
269
374
|
encoder: cmd,
|
|
270
375
|
bindings: { counters, dispatch_args, draw_args, u_workgroup_size: PARTICLE_SIMULATE_WORKGROUP_SIZE },
|
|
@@ -319,6 +424,7 @@ export function create_particle_scene(graphics, { color_format, capacity = PARTI
|
|
|
319
424
|
alive: words[0],
|
|
320
425
|
dead: words[1],
|
|
321
426
|
alive_in: words[4],
|
|
427
|
+
sim_padded: words[5],
|
|
322
428
|
dispatch: [words[dispatch_base], words[dispatch_base + 1], words[dispatch_base + 2]],
|
|
323
429
|
draw: [words[draw_base], words[draw_base + 1]],
|
|
324
430
|
};
|
|
@@ -342,49 +448,49 @@ function make_effect({ velocity, velocityJitter = 0, posJitter = 0, accel = 0, l
|
|
|
342
448
|
{ name: "size", components: 1 }, { name: "color", components: 4 },
|
|
343
449
|
]);
|
|
344
450
|
|
|
345
|
-
const spawn = new
|
|
346
|
-
let posN = spawn
|
|
451
|
+
const spawn = new NodeGraph();
|
|
452
|
+
let posN = particle_node(spawn, "builtin", { id: VM_BUILTIN.EMITTER_POSITION });
|
|
347
453
|
if (posJitter > 0) {
|
|
348
|
-
const d = spawn
|
|
349
|
-
const j = spawn
|
|
350
|
-
const p = spawn
|
|
454
|
+
const d = particle_node(spawn, "random", { mode: VM_RANDOM_MODE.UNIT_DISK });
|
|
455
|
+
const j = particle_node(spawn, "scale"); particle_wire(spawn, j, "v", d); particle_wire(spawn, j, "s", [posJitter]);
|
|
456
|
+
const p = particle_node(spawn, "add"); particle_wire(spawn, p, "a", posN); particle_wire(spawn, p, "b", j); posN = p;
|
|
351
457
|
}
|
|
352
|
-
spawn
|
|
458
|
+
particle_wire(spawn, particle_node(spawn, "setAttribute", { name: "position" }), "value", posN);
|
|
353
459
|
|
|
354
|
-
let velN = spawn
|
|
460
|
+
let velN = particle_node(spawn, "const", { value: [velocity[0], velocity[1], velocity[2], 0] });
|
|
355
461
|
if (velocityJitter > 0) {
|
|
356
|
-
const r = spawn
|
|
357
|
-
const rs = spawn
|
|
358
|
-
const vv = spawn
|
|
462
|
+
const r = particle_node(spawn, "random", { mode: VM_RANDOM_MODE.UNIFORM_SIGNED });
|
|
463
|
+
const rs = particle_node(spawn, "scale"); particle_wire(spawn, rs, "v", r); particle_wire(spawn, rs, "s", [velocityJitter]);
|
|
464
|
+
const vv = particle_node(spawn, "add"); particle_wire(spawn, vv, "a", velN); particle_wire(spawn, vv, "b", rs); velN = vv;
|
|
359
465
|
}
|
|
360
|
-
spawn
|
|
361
|
-
spawn
|
|
362
|
-
const lr = spawn
|
|
363
|
-
const lm = spawn
|
|
364
|
-
spawn
|
|
365
|
-
spawn
|
|
366
|
-
spawn
|
|
367
|
-
|
|
368
|
-
const update = new
|
|
369
|
-
const dt = update
|
|
370
|
-
const age = update
|
|
371
|
-
const nage = update
|
|
372
|
-
update
|
|
373
|
-
const lifeA = update
|
|
374
|
-
const na = update
|
|
375
|
-
const dead = update
|
|
376
|
-
update
|
|
377
|
-
let velN2 = update
|
|
466
|
+
particle_wire(spawn, particle_node(spawn, "setAttribute", { name: "velocity" }), "value", velN);
|
|
467
|
+
particle_wire(spawn, particle_node(spawn, "setAttribute", { name: "age" }), "value", [0]);
|
|
468
|
+
const lr = particle_node(spawn, "random", { mode: VM_RANDOM_MODE.UNIFORM });
|
|
469
|
+
const lm = particle_node(spawn, "mad"); particle_wire(spawn, lm, "a", lr); particle_wire(spawn, lm, "b", [life[1] - life[0]]); particle_wire(spawn, lm, "c", [life[0]]);
|
|
470
|
+
particle_wire(spawn, particle_node(spawn, "setAttribute", { name: "lifetime" }), "value", lm);
|
|
471
|
+
particle_wire(spawn, particle_node(spawn, "setAttribute", { name: "size" }), "value", [size]);
|
|
472
|
+
particle_wire(spawn, particle_node(spawn, "setAttribute", { name: "color" }), "value", color);
|
|
473
|
+
|
|
474
|
+
const update = new NodeGraph();
|
|
475
|
+
const dt = particle_node(update, "builtin", { id: VM_BUILTIN.DELTA_TIME });
|
|
476
|
+
const age = particle_node(update, "attribute", { name: "age" });
|
|
477
|
+
const nage = particle_node(update, "add"); particle_wire(update, nage, "a", age); particle_wire(update, nage, "b", dt);
|
|
478
|
+
particle_wire(update, particle_node(update, "setAttribute", { name: "age" }), "value", nage);
|
|
479
|
+
const lifeA = particle_node(update, "attribute", { name: "lifetime" });
|
|
480
|
+
const na = particle_node(update, "div"); particle_wire(update, na, "a", nage); particle_wire(update, na, "b", lifeA);
|
|
481
|
+
const dead = particle_node(update, "compare", { op: "ge" }); particle_wire(update, dead, "a", na); particle_wire(update, dead, "b", [1]);
|
|
482
|
+
particle_wire(update, particle_node(update, "kill"), "condition", dead);
|
|
483
|
+
let velN2 = particle_node(update, "attribute", { name: "velocity" });
|
|
378
484
|
if (accel !== 0) {
|
|
379
|
-
const g = update
|
|
380
|
-
const gd = update
|
|
381
|
-
const nv = update
|
|
382
|
-
update
|
|
485
|
+
const g = particle_node(update, "const", { value: [0, accel, 0, 0] });
|
|
486
|
+
const gd = particle_node(update, "scale"); particle_wire(update, gd, "v", g); particle_wire(update, gd, "s", dt);
|
|
487
|
+
const nv = particle_node(update, "add"); particle_wire(update, nv, "a", velN2); particle_wire(update, nv, "b", gd);
|
|
488
|
+
particle_wire(update, particle_node(update, "setAttribute", { name: "velocity" }), "value", nv); velN2 = nv;
|
|
383
489
|
}
|
|
384
|
-
const pos = update
|
|
385
|
-
const pd = update
|
|
386
|
-
const np = update
|
|
387
|
-
update
|
|
490
|
+
const pos = particle_node(update, "attribute", { name: "position" });
|
|
491
|
+
const pd = particle_node(update, "scale"); particle_wire(update, pd, "v", velN2); particle_wire(update, pd, "s", dt);
|
|
492
|
+
const np = particle_node(update, "add"); particle_wire(update, np, "a", pos); particle_wire(update, np, "b", pd);
|
|
493
|
+
particle_wire(update, particle_node(update, "setAttribute", { name: "position" }), "value", np);
|
|
388
494
|
|
|
389
495
|
return create_particle_effect({ layout, spawn, update });
|
|
390
496
|
}
|
|
@@ -528,6 +634,18 @@ function translation(x, y, z) {
|
|
|
528
634
|
return [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, x, y, z, 1];
|
|
529
635
|
}
|
|
530
636
|
|
|
637
|
+
/**
|
|
638
|
+
* Threads the bucket reset pass needs: enough to cover the scan's header plus its bins, rounded up
|
|
639
|
+
* to the whole `vec4` the last bin lands in (the scan reads whole `vec4`s, so the tail has to be
|
|
640
|
+
* cleared too or garbage joins the sums).
|
|
641
|
+
*
|
|
642
|
+
* @param {number} bucket_count
|
|
643
|
+
* @returns {number}
|
|
644
|
+
*/
|
|
645
|
+
function bucket_reset_thread_count(bucket_count) {
|
|
646
|
+
return PREFIX_SCAN_CSDLDF_HEADER_WORDS + ((bucket_count + 3) & ~3);
|
|
647
|
+
}
|
|
648
|
+
|
|
531
649
|
function data_buffer(device, label, data, usage) {
|
|
532
650
|
const buffer = device.createBuffer({ label, size: Math.max(data.byteLength, 4), usage });
|
|
533
651
|
device.queue.writeBuffer(buffer, 0, data);
|
|
@@ -41,12 +41,12 @@ zero** by the `max`. The rotation it extracts is not the matrix's rotation, and
|
|
|
41
41
|
depends on the matrix — so it is wrong differently for every joint. That is the soup: not one
|
|
42
42
|
transform applied badly, but sixty-five of them disagreeing.
|
|
43
43
|
|
|
44
|
-
The two modes
|
|
44
|
+
The two modes made the mechanism visible:
|
|
45
45
|
|
|
46
|
-
| `?skin=` | what
|
|
46
|
+
| `?skin=` | what it did | why |
|
|
47
47
|
| --- | --- | --- |
|
|
48
|
-
| `bind` | the right character, exactly 1/100 the size | every joint folds to the *same* matrix, `100·Rx(90°)`. Its `w` and `x` terms are both `1 + 100`, its `y` and `z` both clamp to zero, and the normalize recovers `Rx(90°)` — by luck. Only the scale is lost. Sampled output
|
|
49
|
-
| `animated` | soup | the joints' matrices differ, each loses a different amount, and the mesh comes apart. Mean error 121 in a mesh-local space where the body is 224 across; worst 165, on vertices bound to **a single joint at weight 1** — so the blend
|
|
48
|
+
| `bind` | the right character, exactly 1/100 the size | every joint folds to the *same* matrix, `100·Rx(90°)`. Its `w` and `x` terms are both `1 + 100`, its `y` and `z` both clamp to zero, and the normalize recovers `Rx(90°)` — by luck. Only the scale is lost. Sampled output was `expected / 100` to the digit. |
|
|
49
|
+
| `animated` | soup | the joints' matrices differ, each loses a different amount, and the mesh comes apart. Mean error 121 in a mesh-local space where the body is 224 across; worst 165, on vertices bound to **a single joint at weight 1** — so the blend was not even involved. |
|
|
50
50
|
|
|
51
51
|
`__soup_blend_probe.spec.js` is that measurement: the WGSL of `dual_quat_from_m4`,
|
|
52
52
|
`dual_quat_blend4` and `dual_quat_transform_point` ported to JS, run over the character's own
|
|
@@ -71,22 +71,42 @@ against the bounds chain's box, and **both are derived from the clone's vertex r
|
|
|
71
71
|
that are wrong in the same way agree with each other perfectly. A green `verify()` and a soup
|
|
72
72
|
picture are consistent.
|
|
73
73
|
|
|
74
|
-
##
|
|
74
|
+
## What was done about it
|
|
75
75
|
|
|
76
|
-
The
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
76
|
+
`renderer/animation/SKINNING_FRAME_PLAN.md`. The short version: glTF says a skinned mesh's node
|
|
77
|
+
transform is ignored, so the frame is not the asset's to choose — it is the engine's.
|
|
78
|
+
`register_skin` now sets it to the skin's own bind transform (`skin_normalize_mesh_frame`), which
|
|
79
|
+
makes the fold the identity at bind and a rigid displacement under a clip, for **both** shapes a
|
|
80
|
+
glTF file arrives in. One matrix per skin, once, at registration. No shader change and no
|
|
81
|
+
per-vertex cost, and a file that was already right is not touched.
|
|
81
82
|
|
|
82
|
-
|
|
83
|
-
`mesh.global` always agree about the scale, and the shader's precondition becomes true by
|
|
84
|
-
construction rather than by the exporter's habits. That is a bigger change and it touches every
|
|
85
|
-
asset, not just this one.
|
|
83
|
+
Same measurement, after:
|
|
86
84
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
85
|
+
| | folded scale | mean error | worst | worst on a single-joint vertex |
|
|
86
|
+
| --- | --- | --- | --- | --- |
|
|
87
|
+
| bind, mesh node as the file gave it | 100.0000 | 121.2470 | 165.4281 | 165.4281 |
|
|
88
|
+
| posed at 0.5 s, the same | 100.0000 | 121.6197 | 165.5332 | — |
|
|
89
|
+
| bind, on the skin frame | 1.0000 | 0.0002 | 0.0016 | 0.0014 |
|
|
90
|
+
| posed at 0.5 s, on the skin frame | 1.0000 | 0.0001 | 0.0062 | 0.000014 |
|
|
91
|
+
| bind, skin frame and §9 | 1.0000 | 0.0000 | 0.0000 | **0** |
|
|
92
|
+
| posed at 0.5 s, skin frame and §9 | 1.0000 | 0.0001 | 0.0062 | **0.000001** |
|
|
93
|
+
|
|
94
|
+
Neither residual was the frame. The blended ones are dual-quaternion skinning declining to be a
|
|
95
|
+
linear blend, which is what it is for. The `0.0014` at bind was `dual_quat_from_m4`'s square-root
|
|
96
|
+
conditioning near the identity — pre-existing, and maximally exposed by a fold that now lands every
|
|
97
|
+
joint *on* the identity. Plan §9 moved the conversion onto `quat_from_m3`'s branch-picking form,
|
|
98
|
+
which was already in the tree and used by nothing, and it went to zero.
|
|
99
|
+
|
|
100
|
+
Confirmed on an NVIDIA RTX 4090: the frame correction fires and logs, `?skin=bind` draws a full-size
|
|
101
|
+
character, `?skin=animated` dances, and §9's WGSL — which nothing offline type-checks — compiles.
|
|
102
|
+
|
|
103
|
+
So the modes now read the other way round:
|
|
104
|
+
|
|
105
|
+
| `?skin=` | what it should be |
|
|
106
|
+
| --- | --- |
|
|
107
|
+
| `off` | a 1.7 cm figure on her side — nothing deforms the clone, so the mesh node's own transform is all there is. Unchanged by the fix, and still the control for "is the geometry upload sound". |
|
|
108
|
+
| `bind` | a full-size character standing in bind pose, and `await diagnose()` clean |
|
|
109
|
+
| `animated` | dancing, with the traced and rasterized silhouettes the same silhouette |
|
|
90
110
|
|
|
91
111
|
## The switches
|
|
92
112
|
|
|
@@ -101,7 +121,8 @@ uniform scale, and the position it must still produce.
|
|
|
101
121
|
vertex-slot range says the workgroup stride loop, whole meshlets say addressing, and a uniform
|
|
102
122
|
factor says this bug. It checks the clone's meshlet records address a region of their own first —
|
|
103
123
|
a clone still pointing at the source's vertex data would be deforming the shared rest pose in
|
|
104
|
-
place.
|
|
124
|
+
place. Since the frame is now the skin's, `inverse(mesh.global)` is the identity here and the
|
|
125
|
+
clone should come back holding the source's own positions.
|
|
105
126
|
- **`?skin=animated`** — the file's dance, as `skinned_blas_refit` runs it.
|
|
106
127
|
- **Path tracer** — off by default. The rasterizer reads the deformed vertices directly, with no
|
|
107
128
|
tree in the way, so it is the reading to establish the answer on: soup in *both* is the vertices,
|
|
@@ -107,10 +107,11 @@
|
|
|
107
107
|
<p class="note">
|
|
108
108
|
<strong>The answer, for the record.</strong> <code>chunk_skin_blend_mesh_local</code> needs
|
|
109
109
|
<code>inverse(mesh.global) × joint.global × inverse_bind</code> to be rigid; for this file
|
|
110
|
-
it
|
|
111
|
-
<code>
|
|
112
|
-
|
|
113
|
-
|
|
110
|
+
it carried a uniform <strong>100×</strong>, and a dual quaternion cannot carry a scale.
|
|
111
|
+
<code>register_skin</code> now puts the mesh on the skin's own bind transform, so the fold
|
|
112
|
+
is the identity at bind and a rigid displacement under a clip. The README and
|
|
113
|
+
<code>SKINNING_FRAME_PLAN.md</code> have the measurement; this page is where it is confirmed
|
|
114
|
+
on a device.
|
|
114
115
|
</p>
|
|
115
116
|
|
|
116
117
|
<hr>
|
|
@@ -135,12 +136,14 @@
|
|
|
135
136
|
The skinning pass runs every frame over a pose that never moves — and that pose has an
|
|
136
137
|
answer the CPU knows exactly. <code>await diagnose()</code> reads the clone's vertices
|
|
137
138
|
back and says which are wrong, and whether the wrong ones are a vertex-slot range (the
|
|
138
|
-
workgroup stride loop) or whole meshlets (addressing).
|
|
139
|
+
workgroup stride loop) or whole meshlets (addressing). Should be a full-size character
|
|
140
|
+
standing still, and a clean report.
|
|
139
141
|
</dd>
|
|
140
142
|
<dt>animated</dt>
|
|
141
143
|
<dd>
|
|
142
144
|
Soup only in this mode is the pose: the joint matrices, their range, or the order the
|
|
143
|
-
skin's joints resolved in.
|
|
145
|
+
skin's joints resolved in. Should be dancing, with the traced and rasterized silhouettes
|
|
146
|
+
the same silhouette.
|
|
144
147
|
</dd>
|
|
145
148
|
</dl>
|
|
146
149
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../../../../src/shade/playground/skinned_mesh_soup/main.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../../../../src/shade/playground/skinned_mesh_soup/main.js"],"names":[],"mappings":"AAiQA;;;;GAIG;AACH,yBAFa,QAAQ,IAAI,CAAC,CAkTzB"}
|
|
@@ -50,22 +50,25 @@ import { load_default_environment } from "../load_default_environment.js";
|
|
|
50
50
|
* - **`?skin=animated`** — the dance, as `skinned_blas_refit` runs it. Soup only here is the pose:
|
|
51
51
|
* the joint matrices, their range, or the order the skin's joints were resolved in.
|
|
52
52
|
*
|
|
53
|
-
* ## What the bisect found
|
|
53
|
+
* ## What the bisect found, and what was done
|
|
54
54
|
*
|
|
55
55
|
* `chunk_skin_blend_mesh_local` folds `inverse(mesh.transform_global)` into each joint matrix and
|
|
56
|
-
* converts the product to a dual quaternion, which can only carry a rigid motion.
|
|
57
|
-
*
|
|
58
|
-
*
|
|
59
|
-
*
|
|
60
|
-
*
|
|
61
|
-
*
|
|
62
|
-
*
|
|
63
|
-
* extracts is wrong — and wrong differently per joint, which is what tears the mesh apart.
|
|
56
|
+
* converts the product to a dual quaternion, which can only carry a rigid motion. Michelle's
|
|
57
|
+
* positions and inverse-bind matrices are authored in the already-scaled space, so
|
|
58
|
+
* `joint.global × inverse_bind` is the *identity* and the fold was a bare 100×.
|
|
59
|
+
* `dual_quat_from_m4` reads `sqrt(max(0, 1 ± m00 ± m11 ± m22))` over terms of `1 + 100·(…)`, clamps
|
|
60
|
+
* whichever go negative and normalizes the rest, so the rotation it extracted was wrong — and wrong
|
|
61
|
+
* differently per joint, which is what tore the mesh apart. `?skin=bind` was the right character at
|
|
62
|
+
* 1/100 size (one shared matrix, one shared error) and `?skin=animated` was soup.
|
|
64
63
|
*
|
|
65
|
-
*
|
|
66
|
-
*
|
|
67
|
-
*
|
|
68
|
-
*
|
|
64
|
+
* The frame is now the engine's rather than the asset's: `register_skin` puts each skinned mesh on
|
|
65
|
+
* its skin's own bind transform, so the fold is the identity at bind and a rigid displacement under
|
|
66
|
+
* a clip, for every shape a glTF file arrives in. See `renderer/animation/SKINNING_FRAME_PLAN.md`.
|
|
67
|
+
*
|
|
68
|
+
* All of which was established without a device — `__soup_blend_probe.spec.js` runs the shader's own
|
|
69
|
+
* blend over this character's own matrices, and the emulator tier in
|
|
70
|
+
* `chunk_skin_blend_mesh_local.spec.js` runs the real WGSL over both shapes. This page is where that
|
|
71
|
+
* is confirmed against pixels, which by then is a formality.
|
|
69
72
|
*
|
|
70
73
|
* ## Why through the asset framework
|
|
71
74
|
*
|
|
@@ -10,8 +10,14 @@
|
|
|
10
10
|
* @param {Renderer} options.renderer
|
|
11
11
|
* @param {Scene} options.scene
|
|
12
12
|
* @param {SkinnedMesh} options.mesh
|
|
13
|
-
* @param {number} [options.tolerance] in mesh-local units
|
|
14
|
-
*
|
|
13
|
+
* @param {number} [options.tolerance] in mesh-local units. Since `register_skin` puts the mesh on
|
|
14
|
+
* the skin's bind transform, mesh-local *is* world scale — a metre is a metre here, and at
|
|
15
|
+
* bind the clone should hold the source's own positions. `1e-4` is f32 headroom over a
|
|
16
|
+
* chain — a matrix product, a quaternion conversion and a screw motion, all at single
|
|
17
|
+
* precision — against a smallest real violation of `1.6`, so there are four orders between
|
|
18
|
+
* the two. It was `5e-3` while `dual_quat_from_m4` amplified a near-identity matrix's error
|
|
19
|
+
* by its square root; `SKINNING_FRAME_PLAN.md` §9 took that out, and the same measurement on
|
|
20
|
+
* the CPU now reads zero at bind.
|
|
15
21
|
* @returns {Promise<object>}
|
|
16
22
|
*/
|
|
17
23
|
export function verify_clone_vertices({ renderer, scene, mesh, tolerance }: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify_clone_vertices.d.ts","sourceRoot":"","sources":["../../../../../src/shade/playground/skinned_mesh_soup/verify_clone_vertices.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"verify_clone_vertices.d.ts","sourceRoot":"","sources":["../../../../../src/shade/playground/skinned_mesh_soup/verify_clone_vertices.js"],"names":[],"mappings":"AAyJA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH;IAb6B,QAAQ;IACX,KAAK;IACC,IAAI;IACR,SAAS,GAA1B,MAAM;IAQJ,QAAQ,MAAM,CAAC,CA8P3B"}
|
|
@@ -33,6 +33,9 @@ import {
|
|
|
33
33
|
import {
|
|
34
34
|
GEOMETRY_METADATA_STRUCT
|
|
35
35
|
} from "../../renderer/geometry/GEOMETRY_METADATA_STRUCT.js";
|
|
36
|
+
import {
|
|
37
|
+
SKINNING_WORKGROUP_SIZE
|
|
38
|
+
} from "../../renderer/animation/skinning/shader_meshlet_apply_skinning.js";
|
|
36
39
|
|
|
37
40
|
/**
|
|
38
41
|
* Copy a slice of a GPU buffer back to the CPU.
|
|
@@ -160,11 +163,17 @@ function runs_of(values) {
|
|
|
160
163
|
* @param {Renderer} options.renderer
|
|
161
164
|
* @param {Scene} options.scene
|
|
162
165
|
* @param {SkinnedMesh} options.mesh
|
|
163
|
-
* @param {number} [options.tolerance] in mesh-local units
|
|
164
|
-
*
|
|
166
|
+
* @param {number} [options.tolerance] in mesh-local units. Since `register_skin` puts the mesh on
|
|
167
|
+
* the skin's bind transform, mesh-local *is* world scale — a metre is a metre here, and at
|
|
168
|
+
* bind the clone should hold the source's own positions. `1e-4` is f32 headroom over a
|
|
169
|
+
* chain — a matrix product, a quaternion conversion and a screw motion, all at single
|
|
170
|
+
* precision — against a smallest real violation of `1.6`, so there are four orders between
|
|
171
|
+
* the two. It was `5e-3` while `dual_quat_from_m4` amplified a near-identity matrix's error
|
|
172
|
+
* by its square root; `SKINNING_FRAME_PLAN.md` §9 took that out, and the same measurement on
|
|
173
|
+
* the CPU now reads zero at bind.
|
|
165
174
|
* @returns {Promise<object>}
|
|
166
175
|
*/
|
|
167
|
-
export async function verify_clone_vertices({ renderer, scene, mesh, tolerance = 1e-
|
|
176
|
+
export async function verify_clone_vertices({ renderer, scene, mesh, tolerance = 1e-4 }) {
|
|
168
177
|
assert.defined(mesh, 'mesh');
|
|
169
178
|
assert.equal(mesh.isSkinnedMesh, true, 'mesh.isSkinnedMesh !== true');
|
|
170
179
|
|
|
@@ -227,6 +236,14 @@ export async function verify_clone_vertices({ renderer, scene, mesh, tolerance =
|
|
|
227
236
|
*/
|
|
228
237
|
const source_record = geometries.get_metadata(mesh.geometry);
|
|
229
238
|
|
|
239
|
+
if (source_record === undefined) {
|
|
240
|
+
return {
|
|
241
|
+
geometry_index,
|
|
242
|
+
verdict: `FAIL — the mesh's source geometry is not registered, so there is nothing for `
|
|
243
|
+
+ `its clone to be a clone of. The scene has not been built with this mesh in it.`,
|
|
244
|
+
};
|
|
245
|
+
}
|
|
246
|
+
|
|
230
247
|
const source_metadata = new DataView(await read_back(
|
|
231
248
|
device,
|
|
232
249
|
geometries.meshlets.buffer_metadata,
|
|
@@ -404,6 +421,8 @@ export async function verify_clone_vertices({ renderer, scene, mesh, tolerance =
|
|
|
404
421
|
? `pass — all ${vertices} of the clone's vertices are the bind pose, worst error ${worst}`
|
|
405
422
|
: `FAIL — ${wrong} of ${vertices} vertices in ${wrong_meshlets.length} of `
|
|
406
423
|
+ `${meshlets_count} meshlets are not the bind pose (worst ${worst}); `
|
|
407
|
-
+ `lowest wrong vertex slot ${lowest_wrong_slot}
|
|
424
|
+
+ `lowest wrong vertex slot ${lowest_wrong_slot}. `
|
|
425
|
+
+ `A lowest slot of ${SKINNING_WORKGROUP_SIZE} is the stride loop; whole meshlets `
|
|
426
|
+
+ `wrong is addressing; a uniform factor is the frame.`,
|
|
408
427
|
};
|
|
409
428
|
}
|
|
@@ -118,6 +118,7 @@ export class GraphicsContext {
|
|
|
118
118
|
readonly isGraphicsContext: boolean;
|
|
119
119
|
#private;
|
|
120
120
|
}
|
|
121
|
+
export type BinaryBuffer = import("../../core/binary/BinaryBuffer.js").BinaryBuffer;
|
|
121
122
|
import { GPUGeometryManager } from "./geometry/GPUGeometryManager.js";
|
|
122
123
|
import { GPUMaterialManager } from "./material/GPUMaterialManager.js";
|
|
123
124
|
import { GPUSamplerManager } from "./GPUSamplerManager.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GraphicsContext.d.ts","sourceRoot":"","sources":["../../../../src/shade/renderer/GraphicsContext.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"GraphicsContext.d.ts","sourceRoot":"","sources":["../../../../src/shade/renderer/GraphicsContext.js"],"names":[],"mappings":"AA4BA;IAoJI,yBA8BC;IAjLD;;OAEG;IACH,YAFU,kBAAkB,CAEjB;IAEX;;OAEG;IACH,WAFU,kBAAkB,CAElB;IAOV;;OAEG;IACH,UAFU,iBAAiB,CAElB;IAET;;;OAGG;IACH,qDAOC;IAOD;;;OAGG;IACH,6CAEC;IAED;;OAEG;IACH,kBAFU,qBAAqB,CAEd;IAEjB;;OAEG;IACH,kBAFU,qBAAqB,CAEd;IAEjB;;OAEG;IACH,mBAFU,sBAAsB,CAEd;IAGlB;;OAEG;IACH,gBAFU,oBAAoB,CAEf;IAEf;;OAEG;IACH,UAFU,cAAc,CAEf;IAET;;;;OAIG;IACH,kBAFU,qBAAqB,CAEd;IAEjB;;OAEG;IACH,aAFU,gBAAgB,CAEd;IAQZ;;;OAGG;IACH,uBAFU,kBAAkB,CAEN;IAEtB;;;;OAIG;IACH,yBAFU,wBAAwB,CAEV;IAExB;;;OAGG;IACH,0BAFU,yBAAyB,CAEV;IAEzB;;;OAGG;IACH,oBAFU,mBAAmB,CAEV;IAUnB;;;OAGG;IACH,8BAEC;IAED,uBAMC;IAED;;;OAGG;IACH,wBAEC;IAkCD;;;;;;;;OAQG;IACH,gGALW,oBAAoB,EAAE,cACtB;QAAC,MAAM,EAAE,YAAY,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAC,QAmE9D;IAED;;;;OAIG;IACH,mDAFa,gBAAgB,CAI5B;IAED;;OAEG;IACH,+BAcC;IAED,4BAEC;IAED,eAmBC;IAED,gBAcC;IAGL;;;OAGG;IACH,4BAFU,OAAO,CAE0B;;CAN1C;2BAtUY,OAAO,mCAAmC,EAAE,YAAY;mCAZlC,kCAAkC;mCAGlC,kCAAkC;kCADnC,wBAAwB;2CAEf,mDAAmD;oCAH1D,2CAA2C;sCAXzC,6CAA6C;sCAC7C,6CAA6C;uCAF5C,8CAA8C;qCAIhD,0CAA0C;+BAchD,6BAA6B;sCACtB,4CAA4C;iCAbjD,+BAA+B;mCAC7B,gCAAgC;yCAC1B,sCAAsC;0CAErC,uCAAuC;oCAO7C,kCAAkC;iCARtB,8BAA8B"}
|
|
@@ -20,6 +20,10 @@ import { GPUTextureAllocator } from "./texture/GPUTextureAllocator.js";
|
|
|
20
20
|
import { TextureManager } from "./texture/TextureManager.js";
|
|
21
21
|
import { VirtualTextureManager } from "./texture/virtual/VirtualTextureManager.js";
|
|
22
22
|
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* @typedef {import("../../core/binary/BinaryBuffer.js").BinaryBuffer} BinaryBuffer
|
|
26
|
+
*/
|
|
23
27
|
const DEBUG_LOGGING = false;
|
|
24
28
|
|
|
25
29
|
export class GraphicsContext {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GPUAnimationManager.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/animation/GPUAnimationManager.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"GPUAnimationManager.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/animation/GPUAnimationManager.js"],"names":[],"mappings":"AAiIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH;IA6OI;;;;OAIG;IACH,sCAHW,MAAM,kCAgBhB;IAED;;OAEG;IACH,4BAEC;IAED;;;;;;;;;;;;OAYG;IACH,gCAEC;IAED;;;;;;;;;;OAUG;IACH,qCAEC;IAED;;;;;;OAMG;IACH,gCAEC;IAED;;;;;;;;;;OAUG;IACH,mCAEC;IAED;;;;;;;;;;;;OAYG;IACH,4CAFW,MAAM,QA6BhB;IAED;;;;;OAKG;IACH,kBAHW,MAAM,GACJ;QAAC,gBAAgB,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAC,CAK3D;IAED;;;;;;;;;;;;OAYG;IACH,gCAHW,MAAM,GACJ,MAAM,CAOlB;IAED;;;;;;;;;;;OAWG;IACH,kCAFa,MAAM,CA+BlB;IAED;;;;;;;;;;;;;;OAcG;IACH,oBAJW;QAAE,CAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,CAAC,EAAE,MAAM,CAAA;KAAE,GAEhD,MAAM,CA2BlB;IAED;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH;eAPc,MAAM;qBACA,MAAM;mBACR,MAAM;kBACP,MAAM;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAA;SAAE,CAAC;QAEhE,MAAM,CAkElB;IAgCD;;;;;;;;;;;;;;;;;OAiBG;IACH,kBAHW,MAAM,QACN,MAAM,QAKhB;IAED;;;;;;;;OAQG;IACH,2BAHW,MAAM,QACN,MAAM,QAKhB;IAED;;;;;;;;;;;;;;OAcG;IACH,6BAHW,MAAM,UACN,MAAM,QAKhB;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,mBAHW,MAAM,SACN,MAAM,QAShB;IAED;;;;;;;OAOG;IACH,qBAHW,MAAM,SACN,MAAM,QAShB;IAED;;;;;;;;;;;OAWG;IACH,eAFW,MAAM,QAShB;IAED;;;;;;;;;OASG;IACH,cAFW,MAAM,QAShB;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACH;gBAJe,MAAM;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,YAAY,EAAE,YAAY,GAAG,MAAM,EAAE,CAAA;SAAE,CAAC;QAEhE,MAAM,CAoElB;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,2BAFa,MAAM,CA0FlB;IAyLD;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,yCAFa,MAAM,CAsElB;IAwDD;;;;;;;;;;;;;;;OAeG;IACH,yBAFW,MAAM,QAoChB;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,yBAFW,MAAM,QA6ChB;IAqHD;;;;;;;;;;;;;;;;;;;OAmBG;IACH,8CAIC;IAoBD;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,iEA2CC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,kDAFW,MAAM,QAgChB;IA8FD,gBAYC;;CACJ;4BAn6D2B,gCAAgC"}
|