@woosh/meep-engine 3.19.0 → 3.21.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/bundle-worker-terrain.js +1 -1
- package/editor/Editor.d.ts.map +1 -1
- package/editor/enableEditor.d.ts.map +1 -1
- package/editor/particles/effect/ParticleEffectDocument.d.ts.map +1 -1
- package/editor/particles/effect/ParticleReferenceSimulation.d.ts.map +1 -1
- package/editor/templates/entity_templates.d.ts.map +1 -1
- package/editor/tools/v2/GizmoNode.d.ts +1 -1
- package/editor/tools/v2/GizmoNode.d.ts.map +1 -1
- package/editor/view/ecs/HierarchicalEntityListView.d.ts +3 -3
- package/editor/view/ecs/HierarchicalEntityListView.d.ts.map +1 -1
- package/editor/view/makeEntityDecorators.d.ts.map +1 -1
- package/editor/view/node-graph/NodeGraphClipboard.d.ts.map +1 -1
- package/editor/view/particles/effect/ParticleGraphEditorView.js +2 -2
- package/editor/view/particles/effect/ParticleNodeParametersView.d.ts.map +1 -1
- package/editor/view/particles/effect/ParticleNodeParametersView.js +7 -48
- package/editor/view/tools/ToolSettingsView.d.ts +1 -1
- package/editor/view/tools/ToolSettingsView.d.ts.map +1 -1
- package/package.json +12 -12
- package/src/core/IdPool.d.ts.map +1 -1
- package/src/core/binary/32BitEncoder.d.ts.map +1 -1
- package/src/core/binary/BinaryBuffer.d.ts +1 -1
- package/src/core/binary/BinaryBuffer.d.ts.map +1 -1
- package/src/core/bvh2/binary/2/BinaryUint32BVH.d.ts +1 -1
- package/src/core/bvh2/binary/2/BinaryUint32BVH.d.ts.map +1 -1
- package/src/core/bvh2/bvh3/BVH.d.ts +3 -3
- package/src/core/bvh2/bvh3/BVH.d.ts.map +1 -1
- package/src/core/bvh2/bvh3/BVH.js +1 -2
- package/src/core/bvh2/bvh3/query/bvh_query_user_data_nearest_to_point_filtered.d.ts.map +1 -1
- package/src/core/bvh2/traversal/aabb3_detailed_volume_intersection_callback_based.d.ts.map +1 -1
- package/src/core/cache/Cache.d.ts +1 -1
- package/src/core/cache/Cache.d.ts.map +1 -1
- package/src/core/cache/wtinylfu/CacheWTinylfu.d.ts.map +1 -1
- package/src/core/collection/array/array_group_by.d.ts.map +1 -1
- package/src/core/collection/array/array_group_by.js +2 -11
- package/src/core/collection/list/List.d.ts.map +1 -1
- package/src/core/collection/list/ListForwarder.d.ts +1 -1
- package/src/core/collection/list/ListForwarder.d.ts.map +1 -1
- package/src/core/collection/map/HashMap.d.ts.map +1 -1
- package/src/core/collection/set/ArraySet.d.ts.map +1 -1
- package/src/core/collection/table/RowFirstTable.d.ts +1 -1
- package/src/core/collection/table/RowFirstTable.d.ts.map +1 -1
- package/src/core/collection/table/bind/TableRecord.d.ts +1 -1
- package/src/core/collection/table/bind/TableRecord.d.ts.map +1 -1
- package/src/core/color/Color.d.ts +8 -8
- package/src/core/color/Color.d.ts.map +1 -1
- package/src/core/color/hsv/hsv_to_rgb_uint8.d.ts.map +1 -1
- package/src/core/color/hsv/rgb_to_hsv.d.ts.map +1 -1
- package/src/core/events/signal/Signal.d.ts +1 -1
- package/src/core/events/signal/Signal.d.ts.map +1 -1
- package/src/core/events/signal/signal_aggregate_by_time_window.d.ts.map +1 -1
- package/src/core/fsm/simple/SimpleStateMachineDescription.d.ts.map +1 -1
- package/src/core/geom/2d/aabb/AABB2.d.ts +4 -4
- package/src/core/geom/2d/aabb/AABB2.d.ts.map +1 -1
- package/src/core/geom/2d/bvh/BVH2D.d.ts +1 -1
- package/src/core/geom/2d/bvh/BVH2D.d.ts.map +1 -1
- package/src/core/geom/2d/triangle/tri2_rasterize_conservative.d.ts.map +1 -1
- package/src/core/geom/3d/aabb/AABB3.d.ts +6 -6
- package/src/core/geom/3d/aabb/AABB3.d.ts.map +1 -1
- package/src/core/geom/3d/atlas/atlas_bench_lib.d.ts.map +1 -1
- package/src/core/geom/3d/atlas/atlas_compute_charts.d.ts.map +1 -1
- package/src/core/geom/3d/atlas/atlas_generate.d.ts.map +1 -1
- package/src/core/geom/3d/atlas/pack/atlas_pack_charts.d.ts.map +1 -1
- package/src/core/geom/3d/atlas/param/atlas_chart_param_validity.d.ts.map +1 -1
- package/src/core/geom/3d/atlas/param/atlas_chart_parameterize_bff.d.ts.map +1 -1
- package/src/core/geom/3d/atlas/param/atlas_chart_parameterize_lscm.d.ts.map +1 -1
- package/src/core/geom/3d/atlas/segment/atlas_compute_planar_regions.d.ts.map +1 -1
- package/src/core/geom/3d/atlas/segment/atlas_segment_charts.d.ts.map +1 -1
- package/src/core/geom/3d/atlas/segment/atlas_segment_charts_atomic.d.ts.map +1 -1
- package/src/core/geom/3d/mat4/m4_decompose.d.ts +7 -1
- package/src/core/geom/3d/mat4/m4_decompose.d.ts.map +1 -1
- package/src/core/geom/3d/quadric/Quadric3.d.ts +11 -11
- package/src/core/geom/3d/quadric/Quadric3.d.ts.map +1 -1
- package/src/core/geom/3d/ray/Ray3.d.ts +3 -3
- package/src/core/geom/3d/ray/Ray3.d.ts.map +1 -1
- package/src/core/geom/3d/shape/HeightMapShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/HeightMapShape3D.js +4 -9
- package/src/core/geom/3d/shape/TransformedShape3D.d.ts +1 -1
- package/src/core/geom/3d/shape/TransformedShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/tetrahedra/TetrahedralMesh.d.ts.map +1 -1
- package/src/core/geom/3d/tetrahedra/delaunay/debug/push_boundary_with_validation.d.ts.map +1 -1
- package/src/core/geom/3d/tetrahedra/delaunay/debug/validate_cavity_boundary.d.ts.map +1 -1
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_carve_outside_surface.d.ts.map +1 -1
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_improve_quality.d.ts.map +1 -1
- package/src/core/geom/3d/tetrahedra/validate_tetrahedral_mesh.d.ts.map +1 -1
- package/src/core/geom/3d/tetrahedra/validate_tetrahedron_neighbourhood.d.ts.map +1 -1
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_to_indexed_geometry.d.ts.map +1 -1
- package/src/core/geom/3d/util/aabb3_emit_point_grid.d.ts.map +1 -1
- package/src/core/geom/Quaternion.d.ts +4 -4
- package/src/core/geom/Quaternion.d.ts.map +1 -1
- package/src/core/geom/Vector1.d.ts +1 -1
- package/src/core/geom/Vector1.d.ts.map +1 -1
- package/src/core/geom/Vector2.d.ts +2 -2
- package/src/core/geom/Vector2.d.ts.map +1 -1
- package/src/core/geom/Vector3.d.ts +3 -3
- package/src/core/geom/Vector3.d.ts.map +1 -1
- package/src/core/geom/Vector4.d.ts +4 -4
- package/src/core/geom/Vector4.d.ts.map +1 -1
- package/src/core/geom/packing/max-rect/find_best_container.d.ts.map +1 -1
- package/src/core/geom/vec3/v3_hash.d.ts +12 -0
- package/src/core/geom/vec3/v3_hash.d.ts.map +1 -0
- package/src/core/geom/vec3/v3_hash.js +19 -0
- package/src/core/geom/vec3/v3_lerp.d.ts +3 -1
- package/src/core/geom/vec3/v3_lerp.d.ts.map +1 -1
- package/src/core/geom/vec3/v3_set.d.ts +14 -0
- package/src/core/geom/vec3/v3_set.d.ts.map +1 -0
- package/src/core/geom/vec3/v3_set.js +17 -0
- package/src/core/geom/vec3/v3_slerp.d.ts +3 -1
- package/src/core/geom/vec3/v3_slerp.d.ts.map +1 -1
- package/src/core/geom/vec4/v4_equals_array.d.ts +11 -0
- package/src/core/geom/vec4/v4_equals_array.d.ts.map +1 -0
- package/src/core/geom/vec4/v4_equals_array.js +16 -0
- package/src/core/geom/vec4/v4_hash.d.ts +12 -0
- package/src/core/geom/vec4/v4_hash.d.ts.map +1 -0
- package/src/core/geom/vec4/v4_hash.js +18 -0
- package/src/core/geom/vec4/v4_set.d.ts +15 -0
- package/src/core/geom/vec4/v4_set.d.ts.map +1 -0
- package/src/core/geom/vec4/v4_set.js +19 -0
- package/src/core/graph/convert_graph_to_dot_string.d.ts +1 -1
- package/src/core/graph/convert_graph_to_dot_string.d.ts.map +1 -1
- package/src/core/graph/metis/native/bisection/split_graph_two_way.d.ts.map +1 -1
- package/src/core/graph/metis/native/metis_partition_kway.d.ts.map +1 -1
- package/src/core/graph/metis/native/refine/fm_kway.d.ts.map +1 -1
- package/src/core/json/abstractJSONSerializer.d.ts.map +1 -1
- package/src/core/lang/reactive/AbstractCachingParser.d.ts.map +1 -1
- package/src/core/localization/Localization.d.ts.map +1 -1
- package/src/core/math/linalg/cg/cg_solve.d.ts.map +1 -1
- package/src/core/math/noise/create_simplex_noise_2d.d.ts.map +1 -1
- package/src/core/math/physics/mie/compute_bhmie_optical_properties.d.ts.map +1 -1
- package/src/core/math/physics/mie/compute_mie_particle_properties_rgb.d.ts.map +1 -1
- package/src/core/math/random/seededRandom_Mulberry32.d.ts +1 -1
- package/src/core/math/random/seededRandom_Mulberry32.d.ts.map +1 -1
- package/src/core/model/ModuleRegistry.d.ts.map +1 -1
- package/src/core/model/node-graph/visual/layout/layout_assign_coordinates.d.ts.map +1 -1
- package/src/core/model/node-graph/visual/layout/layout_node_graph.d.ts.map +1 -1
- package/src/core/model/node-graph/visual/layout/layout_order_layers.d.ts.map +1 -1
- package/src/core/model/object/optional_clone.d.ts.map +1 -0
- package/src/{shade/descriptor/util → core/model/object}/optional_equality.d.ts +2 -2
- package/src/core/model/object/optional_equality.d.ts.map +1 -0
- package/src/{shade/descriptor/util → core/model/object}/optional_equality.js +2 -2
- package/src/{shade/descriptor/util → core/model/object}/optional_hash.d.ts +1 -1
- package/src/core/model/object/optional_hash.d.ts.map +1 -0
- package/src/{shade/descriptor/util → core/model/object}/optional_hash.js +3 -3
- package/src/core/model/reactive/model/ReactiveExpression.d.ts.map +1 -1
- package/src/core/model/validate_enum_schema.d.ts.map +1 -1
- package/src/core/process/Future.d.ts.map +1 -1
- package/src/core/process/task/Task.d.ts.map +1 -1
- package/src/core/process/task/util/countTask.d.ts.map +1 -1
- package/src/core/process/task/util/randomCountTask.d.ts.map +1 -1
- package/src/core/process/worker/WorkerBuilder.d.ts.map +1 -1
- package/src/engine/Clock.d.ts +1 -1
- package/src/engine/Clock.d.ts.map +1 -1
- package/src/engine/EngineHarness.d.ts.map +1 -1
- package/src/engine/animation/Animations.d.ts.map +1 -1
- package/src/engine/animation/EntityAnimation.d.ts.map +1 -1
- package/src/engine/animation/TransitionFunctions.d.ts.map +1 -1
- package/src/engine/animation/Tween.d.ts.map +1 -1
- package/src/engine/animation/curve/editor/uploadViaElement.d.ts.map +1 -1
- package/src/engine/animation/curve/view/AnimationCurveView.d.ts +1 -1
- package/src/engine/animation/curve/view/AnimationCurveView.d.ts.map +1 -1
- package/src/engine/asset/Asset.d.ts +1 -1
- package/src/engine/asset/Asset.d.ts.map +1 -1
- package/src/engine/asset/Asset.js +3 -1
- package/src/engine/asset/AssetManager.d.ts.map +1 -1
- package/src/engine/asset/AssetRequest.d.ts.map +1 -1
- package/src/engine/asset/loaders/AssetLoader.d.ts.map +1 -1
- package/src/engine/asset/loaders/image/avif/encode_image_source.d.ts.map +1 -1
- package/src/engine/asset/loaders/image/avif/threaded_image_encoder.d.ts.map +1 -1
- package/src/engine/browserInfo.d.ts.map +1 -1
- package/src/engine/control/first-person/FirstPersonPlayerControllerSystem.d.ts +1 -1
- package/src/engine/control/first-person/FirstPersonPlayerControllerSystem.d.ts.map +1 -1
- package/src/engine/control/first-person/abilities/LedgeGrab.js +9 -9
- package/src/engine/control/first-person/abilities/Mantle.js +8 -8
- package/src/engine/control/first-person/abilities/ScrambleUp.js +2 -2
- package/src/engine/control/first-person/abilities/WallJump.js +2 -2
- package/src/engine/control/first-person/abilities/WallRun.js +3 -3
- package/src/engine/control/first-person/collision/KinematicMover.d.ts +1 -1
- package/src/engine/control/first-person/collision/KinematicMover.d.ts.map +1 -1
- package/src/engine/control/first-person/collision/KinematicMover.js +19 -46
- package/src/engine/control/first-person/sensors/FirstPersonSensors.d.ts +17 -5
- package/src/engine/control/first-person/sensors/FirstPersonSensors.d.ts.map +1 -1
- package/src/engine/control/first-person/sensors/FirstPersonSensors.js +20 -7
- package/src/engine/control/first-person/sensors/FirstPersonSensorsSystem.d.ts.map +1 -1
- package/src/engine/control/first-person/sensors/FirstPersonSensorsSystem.js +9 -8
- package/src/engine/control/first-person/test/buildTestPlayer.d.ts.map +1 -1
- package/src/engine/ecs/EntityComponentDataset.d.ts.map +1 -1
- package/src/engine/ecs/EntityManager.d.ts.map +1 -1
- package/src/engine/ecs/EntityObserver.d.ts.map +1 -1
- package/src/engine/ecs/System.d.ts.map +1 -1
- package/src/engine/ecs/animation/Animation.d.ts +1 -1
- package/src/engine/ecs/animation/Animation.d.ts.map +1 -1
- package/src/engine/ecs/async/SystemWorkerLoopback.d.ts +3 -3
- package/src/engine/ecs/async/SystemWorkerLoopback.d.ts.map +1 -1
- package/src/engine/ecs/dynamic_actions/DynamicActorSystem.d.ts.map +1 -1
- package/src/engine/ecs/grid/pick.d.ts.map +1 -1
- package/src/engine/ecs/gui/hud/HeadsUpDisplaySystem.d.ts.map +1 -1
- package/src/engine/ecs/gui/hud/HeadsUpDisplaySystem.js +9 -10
- package/src/engine/ecs/guid/UUID.d.ts +1 -1
- package/src/engine/ecs/guid/UUID.d.ts.map +1 -1
- package/src/engine/ecs/ik/OneBoneSurfaceAlignmentSolver.d.ts.map +1 -1
- package/src/engine/ecs/ik/OneBoneSurfaceAlignmentSolver.js +26 -9
- package/src/engine/ecs/parent/EntityNode.d.ts +1 -1
- package/src/engine/ecs/parent/EntityNode.d.ts.map +1 -1
- package/src/engine/ecs/parent/FaceEditor.d.ts +7 -7
- package/src/engine/ecs/parent/FaceEditor.d.ts.map +1 -1
- package/src/engine/ecs/storage/binary/collection/BinaryCollectionDeSerializer.d.ts.map +1 -1
- package/src/engine/ecs/storage/binary/object/BinaryObjectSerializationAdapter2.d.ts +2 -2
- package/src/engine/ecs/storage/binary/object/BinaryObjectSerializationAdapter2.d.ts.map +1 -1
- package/src/engine/ecs/terrain/TerrainClouds.d.ts +1 -1
- package/src/engine/ecs/terrain/ecs/Terrain.d.ts +1 -1
- package/src/engine/ecs/terrain/ecs/Terrain.d.ts.map +1 -1
- package/src/engine/ecs/terrain/ecs/TerrainSystem.d.ts.map +1 -1
- package/src/engine/ecs/terrain/overlay/TerrainOverlay.d.ts +1 -1
- package/src/engine/ecs/terrain/overlay/TerrainOverlay.d.ts.map +1 -1
- package/src/engine/ecs/terrain/tiles/TerrainTile.d.ts +1 -1
- package/src/engine/ecs/terrain/tiles/TerrainTile.d.ts.map +1 -1
- package/src/engine/ecs/terrain/tiles/TerrainTileManager.d.ts +1 -1
- package/src/engine/ecs/terrain/tiles/TerrainTileManager.d.ts.map +1 -1
- package/src/engine/ecs/terrain/util/obtainTerrain.d.ts.map +1 -1
- package/src/engine/ecs/transform/Transform64.d.ts +6 -6
- package/src/engine/ecs/transform/Transform64.d.ts.map +1 -1
- package/src/engine/ecs/transform-attachment/TransformAttachment.d.ts +1 -1
- package/src/engine/ecs/transform-attachment/TransformAttachment.d.ts.map +1 -1
- package/src/engine/graphics/FrameRunner.d.ts.map +1 -1
- package/src/engine/graphics/ecs/camera/camera_traverse_active.d.ts.map +1 -1
- package/src/engine/graphics/ecs/camera/pp/PerfectPanner.d.ts +1 -1
- package/src/engine/graphics/ecs/camera/pp/PerfectPanner.d.ts.map +1 -1
- package/src/engine/graphics/ecs/highlight/HighlightDefinition.d.ts +1 -1
- package/src/engine/graphics/ecs/highlight/HighlightDefinition.d.ts.map +1 -1
- package/src/engine/graphics/ecs/make_bvh_depth_range_computer.d.ts.map +1 -1
- package/src/engine/graphics/ecs/mesh-v2/aggregate/SGMesh.d.ts +4 -4
- package/src/engine/graphics/ecs/mesh-v2/aggregate/SGMesh.d.ts.map +1 -1
- package/src/engine/graphics/ecs/particles/ParticleEffect.d.ts.map +1 -1
- package/src/engine/graphics/ecs/particles/ParticleEffect.js +6 -22
- package/src/engine/graphics/ecs/path/tube/TubePathStyle.d.ts +1 -1
- package/src/engine/graphics/ecs/path/tube/TubePathStyle.d.ts.map +1 -1
- package/src/engine/graphics/ecs/path/tube/build/computeFrenetFrames.d.ts.map +1 -1
- package/src/engine/graphics/ecs/trail3d/Trail3D.d.ts +3 -3
- package/src/engine/graphics/ecs/trail3d/Trail3D.d.ts.map +1 -1
- package/src/engine/graphics/geometry/buffered/build_height_field_geometry.d.ts +1 -1
- package/src/engine/graphics/geometry/buffered/build_height_field_geometry.d.ts.map +1 -1
- package/src/engine/graphics/geometry/buffered/query/GeometrySpatialQueryAccelerator.d.ts +1 -1
- package/src/engine/graphics/geometry/buffered/query/GeometrySpatialQueryAccelerator.d.ts.map +1 -1
- package/src/engine/graphics/make_ray_from_viewport_position.d.ts.map +1 -1
- package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.d.ts.map +1 -1
- package/src/engine/graphics/particles/particular/engine/emitter/computeEmissionFunction.d.ts.map +1 -1
- package/src/engine/graphics/particles/particular/engine/utils/distribute_points_on_indexed_triangles.d.ts.map +1 -1
- package/src/engine/graphics/particles/particular/engine/utils/distrubuteParticlesOnMesh.d.ts.map +1 -1
- package/src/engine/graphics/particles/particular/engine/utils/volume/AttributeValue.d.ts +3 -3
- package/src/engine/graphics/particles/particular/engine/utils/volume/AttributeValue.d.ts.map +1 -1
- package/src/engine/graphics/render/frame_graph/FrameGraph.d.ts.map +1 -1
- package/src/engine/graphics/render/gizmo/GizmoShapeRenderingInterface.d.ts +1 -1
- package/src/engine/graphics/render/gizmo/GizmoShapeRenderingInterface.d.ts.map +1 -1
- package/src/engine/graphics/render/layers/RenderLayer.d.ts +3 -3
- package/src/engine/graphics/render/layers/RenderLayer.d.ts.map +1 -1
- package/src/engine/graphics/render/visibility/IncrementalDeltaSet.d.ts +1 -1
- package/src/engine/graphics/render/visibility/IncrementalDeltaSet.d.ts.map +1 -1
- package/src/engine/graphics/render/visibility/VisibilityComputer.d.ts +2 -2
- package/src/engine/graphics/render/visibility/VisibilityComputer.d.ts.map +1 -1
- package/src/engine/graphics/sh3/path_tracer/PathTracedMesh.d.ts +1 -1
- package/src/engine/graphics/sh3/path_tracer/PathTracedMesh.d.ts.map +1 -1
- package/src/engine/graphics/sh3/path_tracer/populate_path_traced_scene_from_ecd.d.ts.map +1 -1
- package/src/engine/graphics/sh3/path_tracer/populate_path_traced_scene_from_ecd.js +5 -1
- package/src/engine/graphics/texture/3d/SingleChannelSampler3D.d.ts +1 -1
- package/src/engine/graphics/texture/3d/SingleChannelSampler3D.d.ts.map +1 -1
- package/src/engine/graphics/texture/sampler/Sampler2D.d.ts.map +1 -1
- package/src/engine/graphics/texture/sampler/filter/sampler2d_scale_down_generic.d.ts +1 -1
- package/src/engine/graphics/texture/sampler/filter/sampler2d_scale_down_generic.d.ts.map +1 -1
- package/src/engine/graphics/texture/sampler/sampler2d_channel_compute_max.d.ts +1 -1
- package/src/engine/graphics/texture/sampler/sampler2d_channel_compute_max.d.ts.map +1 -1
- package/src/engine/graphics/texture/sampler/sampler2d_channel_compute_min.d.ts +1 -1
- package/src/engine/graphics/texture/sampler/sampler2d_channel_compute_min.d.ts.map +1 -1
- package/src/engine/graphics/texture/sampler/sampler2d_combine.d.ts.map +1 -1
- package/src/engine/graphics/texture/sampler/sampler2d_compute_texel_value_conversion_scale_to_uint8.d.ts.map +1 -1
- package/src/engine/graphics/texture/sampler/search/make_edge_condition_channel_threshold.d.ts.map +1 -1
- package/src/engine/graphics/texture/sampler/search/sampler2d_find_pixels.d.ts.map +1 -1
- package/src/engine/graphics/texture/virtual/VirtualTextureTileLoader.d.ts +3 -3
- package/src/engine/graphics/texture/virtual/VirtualTextureTileLoader.d.ts.map +1 -1
- package/src/engine/graphics/texture/virtual/VirtualTextureUsage.d.ts +1 -1
- package/src/engine/graphics/texture/virtual/VirtualTextureUsage.d.ts.map +1 -1
- package/src/engine/graphics/texture/virtual/debug/UsageDebugView.d.ts +2 -2
- package/src/engine/graphics/texture/virtual/debug/UsageDebugView.d.ts.map +1 -1
- package/src/engine/graphics/texture/virtual/debug/UsagePyramidDebugView.d.ts +1 -1
- package/src/engine/graphics/texture/virtual/debug/UsagePyramidDebugView.d.ts.map +1 -1
- package/src/engine/graphics/texture/virtual/tile/decompose_finger_print.d.ts.map +1 -1
- package/src/engine/graphics3/HighlightOutlineSystem.d.ts.map +1 -1
- package/src/engine/graphics3/ParticipatingMedia.d.ts +1 -1
- package/src/engine/graphics3/ParticipatingMedia.d.ts.map +1 -1
- package/src/engine/graphics3/VolumetricLightMap.d.ts +1 -1
- package/src/engine/graphics3/VolumetricLightMap.d.ts.map +1 -1
- package/src/engine/graphics3/decal/graph_build_decal_clusters.d.ts.map +1 -1
- package/src/engine/graphics3/highlight/pack_highlight_table.d.ts.map +1 -1
- package/src/engine/graphics3/preview/make_model_preview_scene.d.ts.map +1 -1
- package/src/engine/graphics3/terrain/GPUTerrainSplatRenderer.d.ts.map +1 -1
- package/src/engine/graphics3/terrain/pack_terrain_row_table.d.ts.map +1 -1
- package/src/engine/grid/obstacle/GridObstacle.d.ts.map +1 -1
- package/src/engine/input/devices/GamepadDevice.d.ts +1 -1
- package/src/engine/input/devices/GamepadDevice.d.ts.map +1 -1
- package/src/engine/input/devices/PointerDevice.d.ts +1 -1
- package/src/engine/input/devices/PointerDevice.d.ts.map +1 -1
- package/src/engine/input/ecs/controllers/KeyboardCameraController.d.ts.map +1 -1
- package/src/engine/input/ecs/controllers/KeyboardCameraController.js +11 -2
- package/src/engine/intelligence/behavior/ecs/BehaviorComponent.d.ts +1 -1
- package/src/engine/intelligence/behavior/ecs/BehaviorComponent.d.ts.map +1 -1
- package/src/engine/intelligence/behavior/ecs/SendEventBehavior.d.ts.map +1 -1
- package/src/engine/intelligence/behavior/primitive/ActionBehavior.d.ts.map +1 -1
- package/src/engine/intelligence/behavior/util/RotationBehavior.d.ts.map +1 -1
- package/src/engine/intelligence/behavior/util/RotationBehavior.js +14 -2
- package/src/engine/intelligence/blackboard/Blackboard.d.ts.map +1 -1
- package/src/engine/intelligence/mcts/MonteCarlo.d.ts +1 -1
- package/src/engine/intelligence/mcts/MonteCarlo.d.ts.map +1 -1
- package/src/engine/intelligence/mcts/StateNode.d.ts.map +1 -1
- package/src/engine/intelligence/optimization/RandomOptimizer.d.ts +1 -1
- package/src/engine/intelligence/optimization/RandomOptimizer.d.ts.map +1 -1
- package/src/engine/knowledge/database/StaticKnowledgeDataTable.d.ts.map +1 -1
- package/src/engine/knowledge/database/StaticKnowledgeDatabase.d.ts +1 -1
- package/src/engine/knowledge/database/StaticKnowledgeDatabase.d.ts.map +1 -1
- package/src/engine/navigation/ecs/path_following/PathFollower.d.ts +2 -2
- package/src/engine/navigation/ecs/path_following/PathFollower.d.ts.map +1 -1
- package/src/engine/network/NetworkSession.d.ts.map +1 -1
- package/src/engine/network/PriorityFetch.d.ts +2 -2
- package/src/engine/network/PriorityFetch.d.ts.map +1 -1
- package/src/engine/network/diagnostics/BandwidthMeter.d.ts.map +1 -1
- package/src/engine/network/ecs/owner_authorization.d.ts.map +1 -1
- package/src/engine/network/orchestrator/NetworkPeer.d.ts.map +1 -1
- package/src/engine/network/orchestrator/ServerAuthoritativeServer.d.ts.map +1 -1
- package/src/engine/network/replication/Replicator.d.ts +1 -1
- package/src/engine/network/replication/Replicator.d.ts.map +1 -1
- package/src/engine/network/sim/SimActionExecutor.d.ts +1 -1
- package/src/engine/network/sim/SimActionExecutor.d.ts.map +1 -1
- package/src/engine/network/time/RenderPlayout.d.ts.map +1 -1
- package/src/engine/network/transport/Channel.d.ts.map +1 -1
- package/src/engine/network/transport/fragments/FragmentRetention.d.ts.map +1 -1
- package/src/engine/physics/body/SolverBodyState.d.ts +11 -11
- package/src/engine/physics/body/SolverBodyState.d.ts.map +1 -1
- package/src/engine/physics/body/SolverBodyState.js +13 -13
- package/src/engine/physics/broadphase/compute_fat_world_aabb.d.ts +4 -4
- package/src/engine/physics/broadphase/compute_fat_world_aabb.d.ts.map +1 -1
- package/src/engine/physics/broadphase/compute_fat_world_aabb.js +2 -2
- package/src/engine/physics/broadphase/generate_pairs.d.ts +3 -3
- package/src/engine/physics/broadphase/generate_pairs.d.ts.map +1 -1
- package/src/engine/physics/broadphase/generate_pairs.js +1 -1
- package/src/engine/physics/ccd/linear_sweep.d.ts +2 -3
- package/src/engine/physics/ccd/linear_sweep.d.ts.map +1 -1
- package/src/engine/physics/ccd/linear_sweep.js +4 -5
- package/src/engine/physics/constraint/solve_constraints.js +3 -3
- package/src/engine/physics/ecs/BodyKind.d.ts +1 -1
- package/src/engine/physics/ecs/BodyKind.js +1 -1
- package/src/engine/physics/ecs/Collider.d.ts +1 -1
- package/src/engine/physics/ecs/Collider.js +1 -1
- package/src/engine/physics/ecs/Joint.d.ts +15 -10
- package/src/engine/physics/ecs/Joint.d.ts.map +1 -1
- package/src/engine/physics/ecs/Joint.js +27 -18
- package/src/engine/physics/ecs/JointSerializationAdapter.d.ts.map +1 -1
- package/src/engine/physics/ecs/JointSerializationAdapter.js +8 -6
- package/src/engine/physics/ecs/PhysicsSystem.d.ts +40 -77
- package/src/engine/physics/ecs/PhysicsSystem.d.ts.map +1 -1
- package/src/engine/physics/ecs/PhysicsSystem.js +113 -75
- package/src/engine/physics/ecs/RigidBody.d.ts +17 -12
- package/src/engine/physics/ecs/RigidBody.d.ts.map +1 -1
- package/src/engine/physics/ecs/RigidBody.js +58 -24
- package/src/engine/physics/ecs/RigidBodySerializationAdapter.d.ts.map +1 -1
- package/src/engine/physics/ecs/RigidBodySerializationAdapter.js +13 -12
- package/src/engine/physics/ecs/find_non_finite_physics_state.d.ts +1 -1
- package/src/engine/physics/ecs/find_non_finite_physics_state.js +1 -1
- package/src/engine/physics/fluid/FluidField.d.ts.map +1 -1
- package/src/engine/physics/fluid/REVIEW_02_PLAN.md +4 -4
- package/src/engine/physics/fluid/SliceVisualiser.d.ts.map +1 -1
- package/src/engine/physics/fluid/ecs/FluidComponent.d.ts +10 -10
- package/src/engine/physics/fluid/ecs/FluidComponent.js +10 -10
- package/src/engine/physics/fluid/ecs/FluidEffectorsComponent.d.ts +2 -2
- package/src/engine/physics/fluid/ecs/FluidEffectorsComponent.js +2 -2
- package/src/engine/physics/fluid/ecs/FluidObstacle.d.ts +3 -3
- package/src/engine/physics/fluid/ecs/FluidObstacle.js +3 -3
- package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +1 -1
- package/src/engine/physics/fluid/ecs/FluidObstacleSystem.js +4 -4
- package/src/engine/physics/fluid/ecs/FluidSystem.d.ts +2 -2
- package/src/engine/physics/fluid/ecs/FluidSystem.js +3 -3
- package/src/engine/physics/fluid/ecs/WorkerFluidSystem.d.ts +1 -1
- package/src/engine/physics/fluid/ecs/WorkerFluidSystem.js +2 -2
- package/src/engine/physics/fluid/ecs/fluid_reanchor_field.d.ts +3 -3
- package/src/engine/physics/fluid/ecs/fluid_reanchor_field.d.ts.map +1 -1
- package/src/engine/physics/fluid/ecs/fluid_reanchor_field.js +3 -3
- package/src/engine/physics/fluid/ecs/fluid_sync_effectors_from_transform.d.ts +3 -3
- package/src/engine/physics/fluid/ecs/fluid_sync_effectors_from_transform.d.ts.map +1 -1
- package/src/engine/physics/fluid/ecs/fluid_sync_effectors_from_transform.js +2 -2
- package/src/engine/physics/fluid/effector/AbstractFluidEffector.d.ts +3 -3
- package/src/engine/physics/fluid/effector/AbstractFluidEffector.d.ts.map +1 -1
- package/src/engine/physics/fluid/effector/AbstractFluidEffector.js +2 -2
- package/src/engine/physics/fluid/effector/ImpulseFluidEffector.js +2 -2
- package/src/engine/physics/fluid/effector/WakeFluidEffector.d.ts +4 -4
- package/src/engine/physics/fluid/effector/WakeFluidEffector.js +8 -8
- package/src/engine/physics/inertia/world_inverse_inertia.d.ts +8 -17
- package/src/engine/physics/inertia/world_inverse_inertia.d.ts.map +1 -1
- package/src/engine/physics/inertia/world_inverse_inertia.js +11 -11
- package/src/engine/physics/integration/integrate_position.d.ts +6 -7
- package/src/engine/physics/integration/integrate_position.d.ts.map +1 -1
- package/src/engine/physics/integration/integrate_position.js +5 -6
- package/src/engine/physics/integration/integrate_velocity.d.ts +4 -4
- package/src/engine/physics/integration/integrate_velocity.d.ts.map +1 -1
- package/src/engine/physics/integration/integrate_velocity.js +7 -7
- package/src/engine/physics/inverse_kinematics/fabrik/fabrik_solve.d.ts +4 -4
- package/src/engine/physics/inverse_kinematics/fabrik/fabrik_solve.d.ts.map +1 -1
- package/src/engine/physics/inverse_kinematics/fabrik/fabrik_solve.js +3 -3
- package/src/engine/physics/narrowphase/convex_decomposition.d.ts.map +1 -1
- package/src/engine/physics/narrowphase/decomposition/triangle_buffer_layout.d.ts +1 -2
- package/src/engine/physics/narrowphase/decomposition/triangle_buffer_layout.d.ts.map +1 -1
- package/src/engine/physics/narrowphase/decomposition/triangle_buffer_layout.js +1 -2
- package/src/engine/physics/narrowphase/narrowphase_step.d.ts +7 -6
- package/src/engine/physics/narrowphase/narrowphase_step.d.ts.map +1 -1
- package/src/engine/physics/narrowphase/narrowphase_step.js +8 -8
- package/src/engine/physics/queries/PhysicsSurfacePoint.d.ts +10 -5
- package/src/engine/physics/queries/PhysicsSurfacePoint.d.ts.map +1 -1
- package/src/engine/physics/queries/PhysicsSurfacePoint.js +10 -6
- package/src/engine/physics/queries/overlap_shape.d.ts +5 -14
- package/src/engine/physics/queries/overlap_shape.d.ts.map +1 -1
- package/src/engine/physics/queries/overlap_shape.js +4 -4
- package/src/engine/physics/queries/raycast.d.ts.map +1 -1
- package/src/engine/physics/queries/shape_cast.d.ts +9 -1
- package/src/engine/physics/queries/shape_cast.d.ts.map +1 -1
- package/src/engine/physics/queries/shape_cast.js +2 -2
- package/src/engine/physics/solver/solve_contacts.d.ts +2 -2
- package/src/engine/physics/solver/solve_contacts.d.ts.map +1 -1
- package/src/engine/physics/solver/solve_contacts.js +2 -2
- package/src/engine/physics/vehicle/RaycastVehicle.d.ts +4 -8
- package/src/engine/physics/vehicle/RaycastVehicle.d.ts.map +1 -1
- package/src/engine/physics/vehicle/RaycastVehicle.js +16 -12
- package/src/engine/save/Storage.d.ts.map +1 -1
- package/src/engine/sound/SoundEngine.d.ts +1 -1
- package/src/engine/sound/SoundEngine.d.ts.map +1 -1
- package/src/engine/sound/ecs/audio/AudioEmitterSystem.d.ts.map +1 -1
- package/src/engine/sound/ecs/audio/AudioEmitterSystem.js +27 -2
- package/src/engine/sound/simulation/AcousticSimulator.d.ts +2 -2
- package/src/engine/sound/simulation/AcousticSimulator.d.ts.map +1 -1
- package/src/engine/sound/simulation/core/VolumeField.d.ts +1 -1
- package/src/engine/sound/simulation/core/VolumeField.d.ts.map +1 -1
- package/src/engine/sound/simulation/probe/AcousticProbeField.d.ts.map +1 -1
- package/src/engine/sound/simulation/probe/probe_delaunay_edges.d.ts.map +1 -1
- package/src/engine/sound/simulation/probe/probe_densify_portals.d.ts.map +1 -1
- package/src/engine/sound/simulation/probe/probe_detect_portals.d.ts.map +1 -1
- package/src/engine/sound/simulation/probe/probe_place_sdf_cover.d.ts.map +1 -1
- package/src/engine/sound/simulation/probe/probe_refine_connectivity.d.ts.map +1 -1
- package/src/engine/sound/simulation/render/ProbeReverbRenderer.d.ts +1 -1
- package/src/engine/sound/simulation/render/ProbeReverbRenderer.d.ts.map +1 -1
- package/src/engine/sound/simulation/render/foaReverbImpulseResponse.d.ts.map +1 -1
- package/src/engine/sound/sopra/SopraEngine.d.ts.map +1 -1
- package/src/engine/sound/sopra/legacy/SoundEmitter.d.ts +3 -3
- package/src/engine/sound/sopra/legacy/SoundEmitter.d.ts.map +1 -1
- package/src/engine/sound/sopra/legacy/SoundTrack.d.ts +3 -3
- package/src/engine/sound/sopra/legacy/SoundTrack.d.ts.map +1 -1
- package/src/engine/sound/sopra/util/buildAttenuationCurve.d.ts.map +1 -1
- package/src/engine/ui/notification/NotificationManager.d.ts.map +1 -1
- package/src/engine/ui/notification/ViewEmitter.d.ts +1 -1
- package/src/engine/ui/notification/ViewEmitter.d.ts.map +1 -1
- package/src/engine/ui/tiles2d/TileGrid.d.ts.map +1 -1
- package/src/extractName.d.ts.map +1 -1
- package/src/format/image/avif/api/convert_to_rgba.d.ts.map +1 -1
- package/src/format/image/avif/av1/encode/encode_av1_still.d.ts.map +1 -1
- package/src/format/image/avif/heif/write_avif_file.d.ts +2 -2
- package/src/format/image/avif/heif/write_avif_file.d.ts.map +1 -1
- package/src/format/image/jpeg/JpegImage.d.ts.map +1 -1
- package/src/format/image/png/PNG.d.ts.map +1 -1
- package/src/format/image/png/chunk/png_chunk_decode_iTXt.d.ts.map +1 -1
- package/src/format/image/png/chunk/png_chunk_decode_zTXt.d.ts.map +1 -1
- package/src/format/scene/gltf/ext/GltfBufferViewExtensionSet.d.ts.map +1 -1
- package/src/format/scene/gltf/gltf_node_world_matrices.d.ts.map +1 -1
- package/src/format/scene/usd/unpack_usdz.d.ts.map +1 -1
- package/src/format/scene/usd/usd_triangulate.d.ts.map +1 -1
- package/src/format/texture/basis/astc_integer_sequence.d.ts.map +1 -1
- package/src/generation/grid/actions/ContinuousGridCellActionWriteObstacle.d.ts.map +1 -1
- package/src/generation/markers/actions/placement/MarkerNodeEntityProcessorClingToTerrain.d.ts.map +1 -1
- package/src/generation/markers/actions/placement/MarkerNodeEntityProcessorClingToTerrain.js +22 -3
- package/src/generation/markers/transform/MarkerNodeTransformerRecordPropertyClosure.d.ts.map +1 -1
- package/src/generation/theme/ThemeEngine.d.ts +2 -2
- package/src/generation/theme/ThemeEngine.d.ts.map +1 -1
- package/src/shade/descriptor/ObjectDescriptorBase.d.ts +1 -1
- package/src/shade/descriptor/ObjectDescriptorBase.d.ts.map +1 -1
- package/src/shade/descriptor/binding/BindGroupLayoutDescriptor.js +1 -1
- package/src/shade/descriptor/binding/BindGroupLayoutEntry.js +3 -3
- package/src/shade/descriptor/pipeline/PipelineDescriptorBase.js +1 -1
- package/src/shade/descriptor/pipeline/PipelineLayoutDescriptor.js +1 -1
- package/src/shade/descriptor/pipeline/render/ColorTargetState.js +3 -3
- package/src/shade/descriptor/pipeline/render/FragmentState.js +1 -1
- package/src/shade/descriptor/pipeline/render/RenderPipelineDescriptor.js +3 -3
- package/src/shade/descriptor/texture/TextureDescriptor.d.ts +1 -1
- package/src/shade/device/ShadeGPUCommandContext.d.ts +1 -1
- package/src/shade/device/ShadeGPUCommandContext.d.ts.map +1 -1
- package/src/shade/device/pass/ShadeGPUComputePassEncoder.d.ts +1 -1
- package/src/shade/device/pass/ShadeGPUComputePassEncoder.d.ts.map +1 -1
- package/src/shade/device/pass/ShadeGPURenderPassEncoder.d.ts +1 -1
- package/src/shade/device/pass/ShadeGPURenderPassEncoder.d.ts.map +1 -1
- package/src/shade/device/timing/GPUTimerArray.d.ts.map +1 -1
- package/src/shade/device/timing/GPUTimerStats.d.ts +1 -1
- package/src/shade/device/timing/GPUTimerStats.d.ts.map +1 -1
- package/src/shade/device/timing/GPU_PROFILER_PROPOSAL_2026_08_28.md +894 -894
- package/src/shade/playground/basis_textures/texture_inventory.d.ts.map +1 -1
- package/src/shade/playground/bvh_repro/bvh_repro_device.d.ts.map +1 -1
- package/src/shade/playground/ground_seam/capture_scene_color.d.ts.map +1 -1
- package/src/shade/playground/ground_seam/measure_flicker.d.ts.map +1 -1
- package/src/shade/playground/particle_editor/README.md +1 -1
- package/src/shade/playground/particle_system/index.html +0 -1
- package/src/shade/playground/particle_system/main.js +1 -2
- package/src/shade/playground/particle_system/particle_prototype.d.ts +7 -9
- package/src/shade/playground/particle_system/particle_prototype.d.ts.map +1 -1
- package/src/shade/playground/particle_system/particle_prototype.js +7 -9
- package/src/shade/playground/particle_system/particle_scene.d.ts +5 -6
- package/src/shade/playground/particle_system/particle_scene.d.ts.map +1 -1
- package/src/shade/playground/particle_system/particle_scene.js +6 -7
- package/src/shade/playground/skinned_blas_refit/sweep_views.js +2 -2
- package/src/shade/playground/skinned_blas_refit/verify_traversal_reachability.js +1 -1
- package/src/shade/playground/ssr_motion/README.md +22 -0
- package/src/shade/playground/ssr_motion/index.html +18 -0
- package/src/shade/playground/ssr_motion/main.d.ts +2 -0
- package/src/shade/playground/ssr_motion/main.d.ts.map +1 -0
- package/src/shade/playground/ssr_motion/main.js +149 -0
- package/src/shade/playground/ssr_variance/index.html +1 -0
- package/src/shade/playground/vgeo_viewer/README.md +123 -0
- package/src/shade/playground/vgeo_viewer/cut_geometry.d.ts +61 -0
- package/src/shade/playground/vgeo_viewer/cut_geometry.d.ts.map +1 -0
- package/src/shade/playground/vgeo_viewer/cut_geometry.js +497 -0
- package/src/shade/playground/vgeo_viewer/index.html +77 -0
- package/src/shade/playground/vgeo_viewer/main.d.ts +2 -0
- package/src/shade/playground/vgeo_viewer/main.d.ts.map +1 -0
- package/src/shade/playground/vgeo_viewer/main.js +1288 -0
- package/src/shade/playground/vgeo_viewer/sample_asset.d.ts +18 -0
- package/src/shade/playground/vgeo_viewer/sample_asset.d.ts.map +1 -0
- package/src/shade/playground/vgeo_viewer/sample_asset.js +117 -0
- package/src/shade/playground/vgeo_viewer/select_cut.d.ts +154 -0
- package/src/shade/playground/vgeo_viewer/select_cut.d.ts.map +1 -0
- package/src/shade/playground/vgeo_viewer/select_cut.js +437 -0
- package/src/shade/renderer/DynamicResolutionScaling.d.ts +1 -1
- package/src/shade/renderer/DynamicResolutionScaling.d.ts.map +1 -1
- package/src/shade/renderer/Renderer.d.ts +5 -5
- package/src/shade/renderer/Renderer.d.ts.map +1 -1
- package/src/shade/renderer/animation/GPUAnimationManager.d.ts.map +1 -1
- package/src/shade/renderer/animation/skin_normalize_mesh_frame.d.ts.map +1 -1
- package/src/shade/renderer/camera/Camera.d.ts +3 -3
- package/src/shade/renderer/camera/Camera.d.ts.map +1 -1
- package/src/shade/renderer/camera/GPUCameraContext.d.ts +1 -1
- package/src/shade/renderer/camera/GPUCameraContext.d.ts.map +1 -1
- package/src/shade/renderer/camera/OrthographicCamera.d.ts +4 -4
- package/src/shade/renderer/camera/OrthographicCamera.d.ts.map +1 -1
- package/src/shade/renderer/camera/PerspectiveCamera.d.ts +2 -2
- package/src/shade/renderer/camera/PerspectiveCamera.d.ts.map +1 -1
- package/src/shade/renderer/camera/orbital/OrbitalCameraController.d.ts +11 -3
- package/src/shade/renderer/camera/orbital/OrbitalCameraController.d.ts.map +1 -1
- package/src/shade/renderer/camera/orbital/OrbitalCameraController.js +25 -5
- package/src/shade/renderer/extension/FrameContext.d.ts +1 -1
- package/src/shade/renderer/extension/FrameContext.d.ts.map +1 -1
- package/src/shade/renderer/extension/GBufferTextures.d.ts +4 -4
- package/src/shade/renderer/extension/GBufferTextures.d.ts.map +1 -1
- package/src/shade/renderer/extension/PresentTarget.d.ts +1 -1
- package/src/shade/renderer/extension/PresentTarget.d.ts.map +1 -1
- package/src/shade/renderer/extension/RENDER_EXTENSION_DESIGN.md +918 -918
- package/src/shade/renderer/extension/SceneColor.d.ts +1 -1
- package/src/shade/renderer/extension/SceneColor.d.ts.map +1 -1
- package/src/shade/renderer/extension/ViewTextures.d.ts +4 -4
- package/src/shade/renderer/extension/ViewTextures.d.ts.map +1 -1
- package/src/shade/renderer/geometry/Attribute.d.ts +1 -1
- package/src/shade/renderer/geometry/Attribute.d.ts.map +1 -1
- package/src/shade/renderer/geometry/Geometry.d.ts +1 -1
- package/src/shade/renderer/geometry/Geometry.d.ts.map +1 -1
- package/src/shade/renderer/geometry/Geometry.js +4 -7
- package/src/shade/renderer/geometry/bvh/bvh2_check_bounds.d.ts.map +1 -1
- package/src/shade/renderer/geometry/bvh/bvh2_derive_topology.d.ts.map +1 -1
- package/src/shade/renderer/geometry/meshlet/MeshletBatch.d.ts +3 -3
- package/src/shade/renderer/geometry/meshlet/MeshletBatch.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/build/gltf/gltf_collect_geometries.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/format/attribute/VGEO_ATTRIBUTES.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/format/frame/vgeo_read_frame_extent.d.ts +29 -0
- package/src/shade/renderer/geometry/virtual/format/frame/vgeo_read_frame_extent.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/format/frame/vgeo_read_frame_extent.js +59 -0
- package/src/shade/renderer/geometry/virtual/format/frame/vgeo_scan_frames.d.ts +0 -1
- package/src/shade/renderer/geometry/virtual/format/frame/vgeo_scan_frames.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/format/frame/vgeo_scan_frames.js +2 -23
- package/src/shade/renderer/geometry/virtual/format/read/VGeoByteSource.d.ts +94 -0
- package/src/shade/renderer/geometry/virtual/format/read/VGeoByteSource.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/format/read/VGeoByteSource.js +170 -0
- package/src/shade/renderer/geometry/virtual/format/read/VGeoContainerHeader.d.ts +122 -0
- package/src/shade/renderer/geometry/virtual/format/read/VGeoContainerHeader.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/format/read/VGeoContainerHeader.js +143 -0
- package/src/shade/renderer/geometry/virtual/format/read/VGeoContainerReader.d.ts +185 -0
- package/src/shade/renderer/geometry/virtual/format/read/VGeoContainerReader.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/format/read/VGeoContainerReader.js +572 -0
- package/src/shade/renderer/geometry/virtual/format/read/VGeoDirectory.d.ts +64 -0
- package/src/shade/renderer/geometry/virtual/format/read/VGeoDirectory.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/format/read/VGeoDirectory.js +80 -0
- package/src/shade/renderer/geometry/virtual/format/read/VGeoPage.d.ts +198 -0
- package/src/shade/renderer/geometry/virtual/format/read/VGeoPage.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/format/read/VGeoPage.js +232 -0
- package/src/shade/renderer/geometry/virtual/format/read/VGeoPageWant.d.ts +51 -0
- package/src/shade/renderer/geometry/virtual/format/read/VGeoPageWant.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/format/read/VGeoPageWant.js +55 -0
- package/src/shade/renderer/geometry/virtual/format/read/VGeoReadOptions.d.ts +68 -0
- package/src/shade/renderer/geometry/virtual/format/read/VGeoReadOptions.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/format/read/VGeoReadOptions.js +72 -0
- package/src/shade/renderer/geometry/virtual/format/read/vgeo_fetch_byte_source.d.ts +28 -0
- package/src/shade/renderer/geometry/virtual/format/read/vgeo_fetch_byte_source.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/format/read/vgeo_fetch_byte_source.js +108 -0
- package/src/shade/renderer/geometry/virtual/format/read/vgeo_read_directory.d.ts +23 -0
- package/src/shade/renderer/geometry/virtual/format/read/vgeo_read_directory.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/format/read/vgeo_read_directory.js +83 -0
- package/src/shade/renderer/geometry/virtual/format/read/vgeo_read_header.d.ts +53 -0
- package/src/shade/renderer/geometry/virtual/format/read/vgeo_read_header.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/format/read/vgeo_read_header.js +211 -0
- package/src/shade/renderer/geometry/virtual/format/read/vgeo_read_page.d.ts +26 -0
- package/src/shade/renderer/geometry/virtual/format/read/vgeo_read_page.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/format/read/vgeo_read_page.js +271 -0
- package/src/shade/renderer/global_illumination/brick4/cpu/brick4_bake_for_scene.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/clipmap/GPUClipMap3D.d.ts +2 -2
- package/src/shade/renderer/global_illumination/clipmap/GPUClipMap3D.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/lpv/LightProbeVolume.d.ts +1 -1
- package/src/shade/renderer/global_illumination/lpv/LightProbeVolume.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/lpv/bake/GPULightProbeVolumeRenderer.d.ts +1 -1
- package/src/shade/renderer/global_illumination/lpv/bake/GPULightProbeVolumeRenderer.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/sharc/SpatialHashRadianceCache.d.ts +1 -1
- package/src/shade/renderer/global_illumination/sharc/SpatialHashRadianceCache.d.ts.map +1 -1
- package/src/shade/renderer/gpu_primitive/bvh/check_bvh_structure.d.ts.map +1 -1
- package/src/shade/renderer/light/LightCollection.d.ts +2 -2
- package/src/shade/renderer/light/LightCollection.d.ts.map +1 -1
- package/src/shade/renderer/light/model/PointLight.d.ts +1 -1
- package/src/shade/renderer/light/model/PointLight.d.ts.map +1 -1
- package/src/shade/renderer/light/model/SpotLight.d.ts +1 -1
- package/src/shade/renderer/light/model/SpotLight.d.ts.map +1 -1
- package/src/shade/renderer/loader/gltf/fix_up_material_sides.d.ts.map +1 -1
- package/src/shade/renderer/loader/gltf/gltf_create_material.d.ts +1 -1
- package/src/shade/renderer/loader/gltf/gltf_create_material.d.ts.map +1 -1
- package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts +2 -2
- package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts.map +1 -1
- package/src/shade/renderer/loader/usd/usd_decode_image.d.ts +1 -1
- package/src/shade/renderer/loader/usd/usd_decode_image.d.ts.map +1 -1
- package/src/shade/renderer/material/StandardShadeMaterial.js +2 -2
- package/src/shade/renderer/material/util/material_convert_metallic_roughness_to_specular_glossiness.d.ts.map +1 -1
- package/src/shade/renderer/material/util/material_convert_specular_glossiness_to_metallic_roughness.d.ts.map +1 -1
- package/src/shade/renderer/particles/DESIGN.md +27 -18
- package/src/shade/renderer/particles/GPUParticleSystem.d.ts +24 -10
- package/src/shade/renderer/particles/GPUParticleSystem.d.ts.map +1 -1
- package/src/shade/renderer/particles/GPUParticleSystem.js +80 -73
- package/src/shade/renderer/particles/coherence/graph_particle_bucket.d.ts +17 -16
- package/src/shade/renderer/particles/coherence/graph_particle_bucket.d.ts.map +1 -1
- package/src/shade/renderer/particles/coherence/graph_particle_bucket.js +35 -22
- package/src/shade/renderer/particles/graph/ParticleGroupBuilder.d.ts +7 -7
- package/src/shade/renderer/particles/graph/ParticleGroupBuilder.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/ParticleGroupBuilder.js +1 -1
- package/src/shade/renderer/particles/graph/ParticleNodeGroup.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/ParticleNodeRegistry.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/ParticleNodeRegistry.js +9 -15
- package/src/shade/renderer/particles/graph/ParticleValueType.d.ts +1 -1
- package/src/shade/renderer/particles/graph/ParticleValueType.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/make_particle_group.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/particle_graph_authoring.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/particle_group_json.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/particle_group_library.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/particle_group_library.js +8 -3
- package/src/shade/renderer/particles/graph/particle_node_parameters.d.ts +0 -2
- package/src/shade/renderer/particles/graph/particle_node_parameters.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/particle_node_parameters.js +0 -9
- package/src/shade/renderer/particles/graph/particle_node_presentation.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/particle_node_presentation.js +0 -10
- package/src/shade/renderer/particles/graph/particle_ramp.d.ts +2 -8
- package/src/shade/renderer/particles/graph/particle_ramp.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/particle_ramp.js +2 -8
- package/src/shade/renderer/particles/graph/validate_particle_graph.js +0 -6
- package/src/shade/renderer/particles/graph_particles.d.ts +11 -0
- package/src/shade/renderer/particles/graph_particles.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph_particles.js +55 -37
- package/src/shade/renderer/particles/graph_particles_avboit.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph_particles_avboit.js +13 -4
- package/src/shade/renderer/particles/graph_particles_billboard.d.ts.map +1 -1
- package/src/shade/renderer/particles/isa/InstructionStream.d.ts +1 -12
- package/src/shade/renderer/particles/isa/InstructionStream.d.ts.map +1 -1
- package/src/shade/renderer/particles/isa/InstructionStream.js +1 -12
- package/src/shade/renderer/particles/isa/ParticleVMISA.d.ts +54 -60
- package/src/shade/renderer/particles/isa/ParticleVMISA.d.ts.map +1 -1
- package/src/shade/renderer/particles/isa/ParticleVMISA.js +9 -17
- package/src/shade/renderer/particles/isa/particle_assembly.d.ts +0 -1
- package/src/shade/renderer/particles/isa/particle_assembly.d.ts.map +1 -1
- package/src/shade/renderer/particles/isa/particle_assembly.js +2 -16
- package/src/shade/renderer/particles/layout/ParticleLayout.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_graph.d.ts +1 -1
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_graph.js +1 -1
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_lift.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_lift.js +0 -14
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_pack.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_pack.js +3 -17
- package/src/shade/renderer/particles/optimizer/optimize_particle_program.d.ts +1 -1
- package/src/shade/renderer/particles/optimizer/optimize_particle_program.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/particle_program_analysis.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/particle_program_analysis.js +15 -36
- package/src/shade/renderer/particles/optimizer/particle_program_equivalence.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/particle_program_equivalence.js +1 -5
- package/src/shade/renderer/particles/optimizer/particle_program_fuzz.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/particle_program_fuzz.js +1 -8
- package/src/shade/renderer/particles/optimizer/particle_vm_semantics.d.ts +2 -11
- package/src/shade/renderer/particles/optimizer/particle_vm_semantics.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/particle_vm_semantics.js +2 -11
- package/src/shade/renderer/particles/runtime/create_particle_effect.d.ts.map +1 -1
- package/src/shade/renderer/particles/shaders/chunk_particle_avboit_contribution.d.ts.map +1 -1
- package/src/shade/renderer/particles/shaders/chunk_particle_avboit_contribution.js +13 -0
- package/src/shade/renderer/particles/shaders/shader_particle_avboit_draw.d.ts +3 -6
- package/src/shade/renderer/particles/shaders/shader_particle_avboit_draw.d.ts.map +1 -1
- package/src/shade/renderer/particles/shaders/shader_particle_avboit_draw.js +49 -17
- package/src/shade/renderer/particles/shaders/shader_particle_emit.d.ts.map +1 -1
- package/src/shade/renderer/particles/shaders/shader_particle_emit.js +0 -2
- package/src/shade/renderer/particles/shaders/shader_particle_emit_wide.d.ts.map +1 -1
- package/src/shade/renderer/particles/shaders/shader_particle_emit_wide.js +0 -2
- package/src/shade/renderer/particles/shaders/shader_particle_simulate.d.ts.map +1 -1
- package/src/shade/renderer/particles/shaders/shader_particle_simulate.js +1 -5
- package/src/shade/renderer/particles/shaders/shader_particle_simulate_wide.d.ts.map +1 -1
- package/src/shade/renderer/particles/shaders/shader_particle_simulate_wide.js +0 -2
- package/src/shade/renderer/particles/sort/graph_particle_sort.d.ts +17 -13
- package/src/shade/renderer/particles/sort/graph_particle_sort.d.ts.map +1 -1
- package/src/shade/renderer/particles/sort/graph_particle_sort.js +43 -33
- package/src/shade/renderer/particles/vm/ParticleVMReference.d.ts +1 -3
- package/src/shade/renderer/particles/vm/ParticleVMReference.d.ts.map +1 -1
- package/src/shade/renderer/particles/vm/ParticleVMReference.js +4 -20
- package/src/shade/renderer/particles/vm/chunk_particle_vm.d.ts.map +1 -1
- package/src/shade/renderer/particles/vm/chunk_particle_vm.js +2 -5
- package/src/shade/renderer/particles/warmup/shader_particle_warmup_advance.d.ts.map +1 -1
- package/src/shade/renderer/particles/warmup/shader_particle_warmup_advance.js +0 -2
- package/src/shade/renderer/particles/warmup/shader_particle_warmup_advance_wide.d.ts.map +1 -1
- package/src/shade/renderer/particles/warmup/shader_particle_warmup_advance_wide.js +0 -2
- package/src/shade/renderer/postprocess/denoise/LigmaDenoiser.d.ts +1 -1
- package/src/shade/renderer/postprocess/denoise/LigmaDenoiser.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/graph_pass_composit_red_as_rgba.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/nss/NSS.d.ts +4 -4
- package/src/shade/renderer/postprocess/nss/NSS.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/ssr/SSR.d.ts +3 -3
- package/src/shade/renderer/postprocess/ssr/SSR.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/ssr/reproject/chunk_ssr_reprojection.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/ssr/reproject/chunk_ssr_reprojection.js +21 -0
- package/src/shade/renderer/postprocess/ssr/reproject/chunk_ssr_temporal_accumulate.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/ssr/reproject/chunk_ssr_temporal_accumulate.js +4 -0
- package/src/shade/renderer/postprocess/ssr/ssr_reproject_shader.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/ssr/ssr_reproject_shader.js +2 -1
- package/src/shade/renderer/postprocess/taa/TAA.d.ts +2 -2
- package/src/shade/renderer/postprocess/taa/TAA.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/bucket/prepare_meshlet_draw_commands_by_material.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.d.ts.map +1 -1
- package/src/shade/renderer/scene/InstanceBatch.d.ts +1 -1
- package/src/shade/renderer/scene/InstanceBatch.d.ts.map +1 -1
- package/src/shade/renderer/scene/Mesh.js +1 -1
- package/src/shade/renderer/scene/Node3D.d.ts +3 -3
- package/src/shade/renderer/scene/Node3D.d.ts.map +1 -1
- package/src/shade/renderer/scene/bvh/StaticSceneBVH.d.ts.map +1 -1
- package/src/shade/renderer/shader/compiler/CodeChunk.d.ts.map +1 -1
- package/src/shade/renderer/shader/graph/graph_prepare_pass_input_data.d.ts.map +1 -1
- package/src/shade/renderer/shader/graph/graph_prepare_pass_input_data.js +11 -0
- package/src/shade/renderer/shader/type/WebGPUStruct.d.ts +1 -1
- package/src/shade/renderer/shader/type/WebGPUStruct.d.ts.map +1 -1
- package/src/shade/renderer/texture/GPUTextureContext.d.ts +1 -1
- package/src/shade/renderer/texture/GPUTextureContext.d.ts.map +1 -1
- package/src/shade/renderer/texture/ShadeTexture.js +1 -1
- package/src/shade/renderer/texture/format/sampler_descriptor_unpack.d.ts.map +1 -1
- package/src/shade/renderer/texture/source/ShadeImage.d.ts +7 -7
- package/src/shade/renderer/texture/source/ShadeImage.d.ts.map +1 -1
- package/src/shade/renderer/texture/virtual/VTPageTable.d.ts.map +1 -1
- package/src/shade/renderer/view/GPUViewContext.d.ts +2 -2
- package/src/shade/renderer/view/GPUViewContext.d.ts.map +1 -1
- package/src/shade/renderer/view/GPUViewSkyContext.d.ts +1 -1
- package/src/shade/renderer/view/GPUViewSkyContext.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/GPUViewVolumetrics.d.ts +2 -2
- package/src/shade/renderer/volumetrics/GPUViewVolumetrics.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/ParticipatingMediaVolume.d.ts +1 -1
- package/src/shade/renderer/volumetrics/ParticipatingMediaVolume.d.ts.map +1 -1
- package/src/shade/wgsl/emulator/CPUBitmapData.d.ts.map +1 -1
- package/src/view/View.d.ts +1 -1
- package/src/view/View.d.ts.map +1 -1
- package/src/view/elements/button/ButtonView.d.ts +1 -1
- package/src/view/elements/button/ButtonView.d.ts.map +1 -1
- package/src/view/elements/progress/SmoothProgressBar.d.ts +2 -2
- package/src/view/elements/progress/SmoothProgressBar.d.ts.map +1 -1
- package/src/view/elements/radial/RadialMenuElement.d.ts +3 -3
- package/src/view/elements/radial/RadialMenuElement.d.ts.map +1 -1
- package/src/view/elements/windrose/WindRoseDiagram.d.ts.map +1 -1
- package/src/view/layout/DockLayoutView.d.ts.map +1 -1
- package/src/view/layout/DrawerView.d.ts +2 -2
- package/src/view/layout/DrawerView.d.ts.map +1 -1
- package/src/view/layout/SplitView.d.ts +9 -9
- package/src/view/layout/SplitView.d.ts.map +1 -1
- package/src/view/minimap/MinimapMarkerCollection.d.ts +3 -2
- package/src/view/minimap/MinimapMarkerCollection.d.ts.map +1 -1
- package/src/view/minimap/MinimapMarkerCollection.js +28 -5
- package/src/view/minimap/dom/MinimapMarkerView.js +65 -34
- package/src/view/minimap/gl/MarkerGL.d.ts +15 -3
- package/src/view/minimap/gl/MarkerGL.d.ts.map +1 -1
- package/src/view/minimap/gl/MarkerGL.js +31 -4
- package/src/engine/physics/BULLET_REVIEW.md +0 -945
- package/src/engine/physics/CANNON_REVIEW.md +0 -1300
- package/src/engine/physics/CONSTRAINT_SOLVER_BENCH_LOG.md +0 -208
- package/src/engine/physics/CONSTRAINT_SOLVER_IMPROVEMENTS_PLAN.md +0 -364
- package/src/engine/physics/INTEPOLATION_SYSTEM_PLAN.md +0 -287
- package/src/engine/physics/JOLT_REVIEW.md +0 -913
- package/src/engine/physics/PLAN.md +0 -1120
- package/src/engine/physics/RAPIER_REVIEW.md +0 -934
- package/src/engine/physics/REVIEW_001_ACTION_PLAN.md +0 -642
- package/src/engine/physics/REVIEW_002.md +0 -151
- package/src/engine/physics/REVIEW_003.md +0 -166
- package/src/shade/descriptor/util/optional_clone.d.ts.map +0 -1
- package/src/shade/descriptor/util/optional_equality.d.ts.map +0 -1
- package/src/shade/descriptor/util/optional_hash.d.ts.map +0 -1
- package/src/shade/renderer/geometry/virtual/format/prototypeVGEOFormatViewer.js +0 -2063
- package/src/shade/renderer/particles/shaders/chunk_particle_curve_animation.d.ts +0 -19
- package/src/shade/renderer/particles/shaders/chunk_particle_curve_animation.d.ts.map +0 -1
- package/src/shade/renderer/particles/shaders/chunk_particle_curve_animation.js +0 -30
- package/src/shade/renderer/particles/shaders/chunk_particle_curve_disabled.d.ts +0 -11
- package/src/shade/renderer/particles/shaders/chunk_particle_curve_disabled.d.ts.map +0 -1
- package/src/shade/renderer/particles/shaders/chunk_particle_curve_disabled.js +0 -13
- /package/src/{shade/descriptor/util → core/model/object}/optional_clone.d.ts +0 -0
- /package/src/{shade/descriptor/util → core/model/object}/optional_clone.js +0 -0
|
@@ -41,7 +41,7 @@ const FUZZ_OPS = [
|
|
|
41
41
|
VM_OP.SMOOTHSTEP, VM_OP.RSQRT, VM_OP.TAN, VM_OP.ASIN, VM_OP.ACOS, VM_OP.ATAN2,
|
|
42
42
|
VM_OP.DOT, VM_OP.CROSS, VM_OP.LENGTH, VM_OP.NORMALIZE, VM_OP.DISTANCE,
|
|
43
43
|
VM_OP.CMP_LT, VM_OP.CMP_LE, VM_OP.CMP_GT, VM_OP.CMP_GE, VM_OP.CMP_EQ,
|
|
44
|
-
VM_OP.SELECT, VM_OP.RANDOM, VM_OP.
|
|
44
|
+
VM_OP.SELECT, VM_OP.RANDOM, VM_OP.LOAD_CONST, VM_OP.LOAD_ATTR, VM_OP.LOAD_BUILTIN,
|
|
45
45
|
VM_OP.NOP,
|
|
46
46
|
];
|
|
47
47
|
|
|
@@ -222,13 +222,6 @@ function emit_random_instruction(stream, assembler, rand, pool) {
|
|
|
222
222
|
return;
|
|
223
223
|
}
|
|
224
224
|
|
|
225
|
-
case VM_OP.CURVE: {
|
|
226
|
-
const handle = Math.floor(rand() * 4);
|
|
227
|
-
|
|
228
|
-
stream.curve(dst, handle, source(group), width);
|
|
229
|
-
return;
|
|
230
|
-
}
|
|
231
|
-
|
|
232
225
|
default: {
|
|
233
226
|
// A `SELECT` whose condition is a constant is the shape the folding pass exists for, and
|
|
234
227
|
// random registers hold one about never — so it is worth steering into deliberately.
|
|
@@ -13,7 +13,7 @@ export function vm_semantics_of(op: number): ParticleOpSemantics;
|
|
|
13
13
|
* it — whether it can be deleted when its result is unread, narrowed when its high lanes are dead,
|
|
14
14
|
* evaluated at compile time, or recognised as a recomputation of something already in a register.
|
|
15
15
|
* Those are four different questions and an opcode can answer them differently: `LOAD_ATTR` is
|
|
16
|
-
* removable but not shareable across a store, `RANDOM` is neither, and `
|
|
16
|
+
* removable but not shareable across a store, `RANDOM` is neither, and `LOAD_BUILTIN` is both.
|
|
17
17
|
*
|
|
18
18
|
* Every opcode has to appear in {@link VM_SEMANTICS} — the spec asserts it — because the safe
|
|
19
19
|
* default for a new one is "assume nothing", and a table that silently omitted it would instead have
|
|
@@ -22,7 +22,7 @@ export function vm_semantics_of(op: number): ParticleOpSemantics;
|
|
|
22
22
|
* Which lane of a source feeds which lane of the result is not a property of the opcode any more:
|
|
23
23
|
* every register operand carries a swizzle, and `vm_operand_slot` in the ISA answers it per operand.
|
|
24
24
|
* What is left here is per-opcode: whether lane `i` of the result depends on lane `i` of the
|
|
25
|
-
* sources alone (`lanewise`)
|
|
25
|
+
* sources alone (`lanewise`).
|
|
26
26
|
*/
|
|
27
27
|
/**
|
|
28
28
|
* @typedef {object} ParticleOpSemantics
|
|
@@ -37,9 +37,6 @@ export function vm_semantics_of(op: number): ParticleOpSemantics;
|
|
|
37
37
|
* @property {boolean} shareable two executions with equal operand values produce equal results, so a
|
|
38
38
|
* second one can read the first one's register instead. False for anything reading the record or
|
|
39
39
|
* the RNG.
|
|
40
|
-
* @property {boolean} broadcasts every lane of the destination holds the same value, by construction
|
|
41
|
-
* rather than by what the operands happen to be. Lane `i` is then a copy of lane 0 and may be read
|
|
42
|
-
* as one.
|
|
43
40
|
* @property {boolean} foldable the JS reference and the WGSL interpreter are both obliged to produce
|
|
44
41
|
* the *same bits* for this operation, so evaluating it here and baking a constant changes nothing
|
|
45
42
|
* on either. Correctly-rounded IEEE arithmetic qualifies; a transcendental does not — JS
|
|
@@ -79,12 +76,6 @@ export type ParticleOpSemantics = {
|
|
|
79
76
|
* the RNG.
|
|
80
77
|
*/
|
|
81
78
|
shareable: boolean;
|
|
82
|
-
/**
|
|
83
|
-
* every lane of the destination holds the same value, by construction
|
|
84
|
-
* rather than by what the operands happen to be. Lane `i` is then a copy of lane 0 and may be read
|
|
85
|
-
* as one.
|
|
86
|
-
*/
|
|
87
|
-
broadcasts: boolean;
|
|
88
79
|
/**
|
|
89
80
|
* the JS reference and the WGSL interpreter are both obliged to produce
|
|
90
81
|
* the *same bits* for this operation, so evaluating it here and baking a constant changes nothing
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"particle_vm_semantics.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/particles/optimizer/particle_vm_semantics.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"particle_vm_semantics.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/particles/optimizer/particle_vm_semantics.js"],"names":[],"mappings":"AA4IA;;;;;;GAMG;AACH,oCAHW,MAAM,GACJ,mBAAmB,CAW/B;AA1JD;;;;;;;;;;;;;;;;;GAiBG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,+CAA+C;AAC/C,2BADW,IAAI,MAAM,EAAE,mBAAmB,CAAC,CACL;;;;;;;kBA1BxB,OAAO;;;;;cAGP,OAAO;;;;;;gBAEP,OAAO;;;;;;eAGP,OAAO;;;;;;;;cAGP,OAAO;;;;;;;;;;sBAKP,OAAO"}
|
|
@@ -7,7 +7,7 @@ import { VM_OP } from "../isa/ParticleVMISA.js";
|
|
|
7
7
|
* it — whether it can be deleted when its result is unread, narrowed when its high lanes are dead,
|
|
8
8
|
* evaluated at compile time, or recognised as a recomputation of something already in a register.
|
|
9
9
|
* Those are four different questions and an opcode can answer them differently: `LOAD_ATTR` is
|
|
10
|
-
* removable but not shareable across a store, `RANDOM` is neither, and `
|
|
10
|
+
* removable but not shareable across a store, `RANDOM` is neither, and `LOAD_BUILTIN` is both.
|
|
11
11
|
*
|
|
12
12
|
* Every opcode has to appear in {@link VM_SEMANTICS} — the spec asserts it — because the safe
|
|
13
13
|
* default for a new one is "assume nothing", and a table that silently omitted it would instead have
|
|
@@ -16,7 +16,7 @@ import { VM_OP } from "../isa/ParticleVMISA.js";
|
|
|
16
16
|
* Which lane of a source feeds which lane of the result is not a property of the opcode any more:
|
|
17
17
|
* every register operand carries a swizzle, and `vm_operand_slot` in the ISA answers it per operand.
|
|
18
18
|
* What is left here is per-opcode: whether lane `i` of the result depends on lane `i` of the
|
|
19
|
-
* sources alone (`lanewise`)
|
|
19
|
+
* sources alone (`lanewise`).
|
|
20
20
|
*/
|
|
21
21
|
|
|
22
22
|
/**
|
|
@@ -32,9 +32,6 @@ import { VM_OP } from "../isa/ParticleVMISA.js";
|
|
|
32
32
|
* @property {boolean} shareable two executions with equal operand values produce equal results, so a
|
|
33
33
|
* second one can read the first one's register instead. False for anything reading the record or
|
|
34
34
|
* the RNG.
|
|
35
|
-
* @property {boolean} broadcasts every lane of the destination holds the same value, by construction
|
|
36
|
-
* rather than by what the operands happen to be. Lane `i` is then a copy of lane 0 and may be read
|
|
37
|
-
* as one.
|
|
38
35
|
* @property {boolean} foldable the JS reference and the WGSL interpreter are both obliged to produce
|
|
39
36
|
* the *same bits* for this operation, so evaluating it here and baking a constant changes nothing
|
|
40
37
|
* on either. Correctly-rounded IEEE arithmetic qualifies; a transcendental does not — JS
|
|
@@ -62,7 +59,6 @@ function semantics(op, flags) {
|
|
|
62
59
|
lanewise: false,
|
|
63
60
|
narrowable: false,
|
|
64
61
|
shareable: false,
|
|
65
|
-
broadcasts: false,
|
|
66
62
|
foldable: false,
|
|
67
63
|
foldable_inexact: false,
|
|
68
64
|
...flags,
|
|
@@ -141,10 +137,6 @@ semantics(VM_OP.SELECT, EXACT);
|
|
|
141
137
|
// Ordered and side-effecting: it advances the shared RNG, and its width IS the number of draws it
|
|
142
138
|
// takes. Removing, duplicating, reordering or narrowing one moves every value drawn after it.
|
|
143
139
|
semantics(VM_OP.RANDOM, { side_effects: true });
|
|
144
|
-
// An external WGSL symbol, but a pure function of (handle, t) — so a dead one goes and a repeated
|
|
145
|
-
// one is shared. Every lane of the result is the same sample, which is what makes it narrowable —
|
|
146
|
-
// and what makes it a broadcast, so a consumer reading it wide is a consumer that wants `.xxxx`.
|
|
147
|
-
semantics(VM_OP.CURVE, { lanewise: true, narrowable: true, shareable: true, broadcasts: true });
|
|
148
140
|
|
|
149
141
|
/**
|
|
150
142
|
* What may be assumed about an opcode. An unknown one is assumed to do everything, so a new opcode
|
|
@@ -159,7 +151,6 @@ export function vm_semantics_of(op) {
|
|
|
159
151
|
lanewise: false,
|
|
160
152
|
narrowable: false,
|
|
161
153
|
shareable: false,
|
|
162
|
-
broadcasts: false,
|
|
163
154
|
foldable: false,
|
|
164
155
|
foldable_inexact: false,
|
|
165
156
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create_particle_effect.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/particles/runtime/create_particle_effect.js"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;GAeG;AACH;IALwE,MAAM,EAAnE,OAAO,6BAA6B,EAAE,cAAc;IACjC,IAAI;IACJ,MAAM
|
|
1
|
+
{"version":3,"file":"create_particle_effect.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/particles/runtime/create_particle_effect.js"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;GAeG;AACH;IALwE,MAAM,EAAnE,OAAO,6BAA6B,EAAE,cAAc;IACjC,IAAI;IACJ,MAAM;IACvB;IAAE,MAAM,EAAE,OAAO,6BAA6B,EAAE,cAAc,CAAC;IAAC,OAAO,EAAE,OAAO,2BAA2B,EAAE,eAAe,CAAA;CAAE,CAK1I"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chunk_particle_avboit_contribution.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/particles/shaders/chunk_particle_avboit_contribution.js"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;GAaG;AACH,iDAFU,SAAS,
|
|
1
|
+
{"version":3,"file":"chunk_particle_avboit_contribution.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/particles/shaders/chunk_particle_avboit_contribution.js"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;GAaG;AACH,iDAFU,SAAS,CAuEc;0BAvFP,oCAAoC"}
|
|
@@ -24,6 +24,19 @@ struct ParticleAVBOITContribution {
|
|
|
24
24
|
emission : vec4<f32>,
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
+
// Black covering fragments still contribute extinction; zero-alpha premultiplied RGB still emits.
|
|
28
|
+
fn particle_avboit_is_empty(color : vec4<f32>, blend : u32) -> bool {
|
|
29
|
+
return all(particle_premultiply(color, blend) == vec4<f32>(0.0));
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
// The atlas is unorm, so non-negative straight alpha cannot produce emission. Signed alpha and
|
|
33
|
+
// premultiplied sprites keep all four outputs: either can emit without positive coverage.
|
|
34
|
+
fn particle_avboit_draw_blend(color : vec4<f32>, blend : u32) -> u32 {
|
|
35
|
+
if (blend == PARTICLE_BLEND_ADDITIVE) { return PARTICLE_BLEND_ADDITIVE; }
|
|
36
|
+
if (blend == PARTICLE_BLEND_ALPHA && color.a >= 0.0) { return PARTICLE_BLEND_ALPHA; }
|
|
37
|
+
return PARTICLE_BLEND_PREMULTIPLIED;
|
|
38
|
+
}
|
|
39
|
+
|
|
27
40
|
fn particle_avboit_contribution(
|
|
28
41
|
shaded : vec4<f32>,
|
|
29
42
|
blend : u32,
|
|
@@ -1,9 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
* @type {RenderPipelineDescriptor}
|
|
5
|
-
*/
|
|
6
|
-
export const PARTICLE_AVBOIT_DRAW_PIPELINE: RenderPipelineDescriptor;
|
|
1
|
+
export const PARTICLE_AVBOIT_DRAW_ALPHA_PIPELINE: RenderPipelineDescriptor;
|
|
2
|
+
export const PARTICLE_AVBOIT_DRAW_ADDITIVE_PIPELINE: RenderPipelineDescriptor;
|
|
3
|
+
export const PARTICLE_AVBOIT_DRAW_GENERAL_PIPELINE: RenderPipelineDescriptor;
|
|
7
4
|
/** The draw shader's resource set, for building its bind group. */
|
|
8
5
|
export const PARTICLE_AVBOIT_DRAW_RESOURCES: ShaderResourceSetDescriptor;
|
|
9
6
|
/** The assembled shader, for the validity tier. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shader_particle_avboit_draw.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/particles/shaders/shader_particle_avboit_draw.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"shader_particle_avboit_draw.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/particles/shaders/shader_particle_avboit_draw.js"],"names":[],"mappings":"AAgLA,2EAAsI;AACtI,8EAA2I;AAC3I,6EAA8I;AAE9I,mEAAmE;AACnE,yEAAwD;AAExD,mDAAmD;AACnD,2DAAsD;yCAxLb,iEAAiE;4CAW9D,sDAAsD;iCAFjE,kCAAkC"}
|
|
@@ -77,9 +77,28 @@ struct ParticleAVBOITDrawOutput {
|
|
|
77
77
|
@location(3) emission : vec4<f32>,
|
|
78
78
|
}
|
|
79
79
|
|
|
80
|
+
// Each draw uses the same GPU-owned alive list. Clip the other modes before rasterization.
|
|
81
|
+
fn particle_avboit_vertex(vi : u32, ii : u32, blend : u32) -> ParticleVertexOut {
|
|
82
|
+
var out = particle_billboard_vertex(vi, ii);
|
|
83
|
+
if (particle_avboit_draw_blend(out.color, out.blend) != blend) {
|
|
84
|
+
out.clip = vec4<f32>(2.0, 2.0, 2.0, 1.0);
|
|
85
|
+
}
|
|
86
|
+
return out;
|
|
87
|
+
}
|
|
88
|
+
|
|
80
89
|
@vertex
|
|
81
|
-
fn
|
|
82
|
-
return
|
|
90
|
+
fn vs_alpha(@builtin(vertex_index) vi : u32, @builtin(instance_index) ii : u32) -> ParticleVertexOut {
|
|
91
|
+
return particle_avboit_vertex(vi, ii, PARTICLE_BLEND_ALPHA);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
@vertex
|
|
95
|
+
fn vs_additive(@builtin(vertex_index) vi : u32, @builtin(instance_index) ii : u32) -> ParticleVertexOut {
|
|
96
|
+
return particle_avboit_vertex(vi, ii, PARTICLE_BLEND_ADDITIVE);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
@vertex
|
|
100
|
+
fn vs_general(@builtin(vertex_index) vi : u32, @builtin(instance_index) ii : u32) -> ParticleVertexOut {
|
|
101
|
+
return particle_avboit_vertex(vi, ii, PARTICLE_BLEND_PREMULTIPLIED);
|
|
83
102
|
}
|
|
84
103
|
|
|
85
104
|
@fragment
|
|
@@ -104,6 +123,10 @@ fn fs_main(in : ParticleVertexOut) -> ParticleAVBOITDrawOutput {
|
|
|
104
123
|
color = particle_apply_lighting(color, in.world_position, normalize(in.normal));
|
|
105
124
|
}
|
|
106
125
|
|
|
126
|
+
if (particle_avboit_is_empty(color, in.blend)) {
|
|
127
|
+
discard;
|
|
128
|
+
}
|
|
129
|
+
|
|
107
130
|
let volumetrics = sample_volumetrics(in.view_depth, screen_uv, in.clip.xy);
|
|
108
131
|
|
|
109
132
|
let contribution = particle_avboit_contribution(color, in.blend, transmittance, volumetrics);
|
|
@@ -129,22 +152,31 @@ fn fs_main(in : ParticleVertexOut) -> ParticleAVBOITDrawOutput {
|
|
|
129
152
|
const descriptor = ShaderDescriptor.from({ label: "Particle AVBOIT Draw", body, resources });
|
|
130
153
|
|
|
131
154
|
/**
|
|
132
|
-
* The
|
|
133
|
-
*
|
|
134
|
-
* @
|
|
155
|
+
* The variants share WGSL, bindings and attachments; only the vertex entry point and target writes
|
|
156
|
+
* differ. Disabling unused targets avoids blending zeros over every billboard pixel.
|
|
157
|
+
* @param {string} label
|
|
158
|
+
* @param {string} entryPoint
|
|
159
|
+
* @param {number[]} writeMasks
|
|
160
|
+
* @returns {RenderPipelineDescriptor}
|
|
135
161
|
*/
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
}
|
|
162
|
+
function create_draw_pipeline(label, entryPoint, writeMasks) {
|
|
163
|
+
return RenderPipelineDescriptor.from({
|
|
164
|
+
label,
|
|
165
|
+
layout: resources.generatePipelineLayout(GPUShaderStage.VERTEX | GPUShaderStage.FRAGMENT),
|
|
166
|
+
vertex: { module: { code: descriptor.source }, entryPoint },
|
|
167
|
+
fragment: {
|
|
168
|
+
module: { code: descriptor.source },
|
|
169
|
+
entryPoint: "fs_main",
|
|
170
|
+
targets: AVBOIT_DRAW_TARGETS.map((target, i) => ({ ...target, writeMask: writeMasks[i] })),
|
|
171
|
+
},
|
|
172
|
+
depthStencil: DepthStencilState.from({ format: "depth32float", depthWriteEnabled: false, depthCompare: "greater" }),
|
|
173
|
+
primitive: { topology: "triangle-list", cullMode: "none" },
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
export const PARTICLE_AVBOIT_DRAW_ALPHA_PIPELINE = create_draw_pipeline("Particle AVBOIT Draw Alpha", "vs_alpha", [0xF, 0xF, 0xF, 0]);
|
|
178
|
+
export const PARTICLE_AVBOIT_DRAW_ADDITIVE_PIPELINE = create_draw_pipeline("Particle AVBOIT Draw Additive", "vs_additive", [0, 0, 0, 0xF]);
|
|
179
|
+
export const PARTICLE_AVBOIT_DRAW_GENERAL_PIPELINE = create_draw_pipeline("Particle AVBOIT Draw General", "vs_general", [0xF, 0xF, 0xF, 0xF]);
|
|
148
180
|
|
|
149
181
|
/** The draw shader's resource set, for building its bind group. */
|
|
150
182
|
export const PARTICLE_AVBOIT_DRAW_RESOURCES = resources;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shader_particle_emit.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/particles/shaders/shader_particle_emit.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"shader_particle_emit.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/particles/shaders/shader_particle_emit.js"],"names":[],"mappings":"AAYA;;;;;;;;;;;;;;;;GAgBG;AAEH;;;GAGG;AACH,kDAA8E;AAE9E;;;;;;;;GAQG;AACH,4BAFU,YAAY,CAOK;AAoD3B,iDAIG;6BAxG0B,mCAAmC;8BAGlC,+BAA+B"}
|
|
@@ -8,7 +8,6 @@ import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
|
|
|
8
8
|
import { ShaderResourceSetDescriptor } from "../../shader/resource/ShaderResourceSetDescriptor.js";
|
|
9
9
|
import { PARTICLE_COUNTER } from "../data/PARTICLE_COUNTERS.js";
|
|
10
10
|
import { chunk_particle_vm_registers_fast } from "../vm/chunk_particle_vm_registers_fast.js";
|
|
11
|
-
import { chunk_particle_curve_disabled } from "./chunk_particle_curve_disabled.js";
|
|
12
11
|
import { chunk_particle_emit_step } from "./chunk_particle_emit_step.js";
|
|
13
12
|
|
|
14
13
|
/**
|
|
@@ -99,7 +98,6 @@ fn main(@builtin(global_invocation_id) gid : vec3<u32>) {
|
|
|
99
98
|
`, [
|
|
100
99
|
chunk_particle_emit_step,
|
|
101
100
|
chunk_particle_vm_registers_fast,
|
|
102
|
-
chunk_particle_curve_disabled,
|
|
103
101
|
]);
|
|
104
102
|
|
|
105
103
|
export const shader_particle_emit = ComputeShader.from({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shader_particle_emit_wide.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/particles/shaders/shader_particle_emit_wide.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"shader_particle_emit_wide.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/particles/shaders/shader_particle_emit_wide.js"],"names":[],"mappings":"AAYA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH;;;;GAIG;AACH,iDAFU,MAAM,CAGiD;AAgEjE,sDAIG;8BA5G2B,+BAA+B"}
|
|
@@ -7,7 +7,6 @@ import { ShaderResourceSetDescriptor } from "../../shader/resource/ShaderResourc
|
|
|
7
7
|
import { PARTICLE_VM_WIDE_LAUNCH_LANES } from "../ParticleConstants.js";
|
|
8
8
|
import { PARTICLE_COUNTER } from "../data/PARTICLE_COUNTERS.js";
|
|
9
9
|
import { chunk_particle_vm_registers_wide } from "../vm/chunk_particle_vm_registers_wide.js";
|
|
10
|
-
import { chunk_particle_curve_disabled } from "./chunk_particle_curve_disabled.js";
|
|
11
10
|
import { chunk_particle_emit_step } from "./chunk_particle_emit_step.js";
|
|
12
11
|
import { EMIT_SETTINGS, PARTICLE_EMIT_WORKGROUP_SIZE } from "./shader_particle_emit.js";
|
|
13
12
|
|
|
@@ -104,7 +103,6 @@ fn main(@builtin(global_invocation_id) gid : vec3<u32>) {
|
|
|
104
103
|
`, [
|
|
105
104
|
chunk_particle_emit_step,
|
|
106
105
|
chunk_particle_vm_registers_wide,
|
|
107
|
-
chunk_particle_curve_disabled,
|
|
108
106
|
]);
|
|
109
107
|
|
|
110
108
|
export const shader_particle_emit_wide = ComputeShader.from({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shader_particle_simulate.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/particles/shaders/shader_particle_simulate.js"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"shader_particle_simulate.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/particles/shaders/shader_particle_simulate.js"],"names":[],"mappings":";AAuDA;;;;;GAKG;AACH,gCAFU,YAAY,CAMS;AAsD/B,qDAIG;iDApH8C,yBAAyB;6BAJ7C,mCAAmC;8BAClC,+BAA+B"}
|
|
@@ -8,7 +8,6 @@ import { ShaderResourceSetDescriptor } from "../../shader/resource/ShaderResourc
|
|
|
8
8
|
import { PARTICLE_SIMULATE_WORKGROUP_SIZE } from "../ParticleConstants.js";
|
|
9
9
|
import { PARTICLE_COUNTER } from "../data/PARTICLE_COUNTERS.js";
|
|
10
10
|
import { chunk_particle_vm_registers_fast } from "../vm/chunk_particle_vm_registers_fast.js";
|
|
11
|
-
import { chunk_particle_curve_disabled } from "./chunk_particle_curve_disabled.js";
|
|
12
11
|
import { chunk_particle_simulate_step } from "./chunk_particle_simulate_step.js";
|
|
13
12
|
|
|
14
13
|
/**
|
|
@@ -47,9 +46,7 @@ import { chunk_particle_simulate_step } from "./chunk_particle_simulate_step.js"
|
|
|
47
46
|
* frame from that same value, so thread count and bound agree by construction — and, because the
|
|
48
47
|
* padded length is a whole number of workgroups, agree exactly.
|
|
49
48
|
*
|
|
50
|
-
* All structured reads go through `array<u32>` for emulator-testability.
|
|
51
|
-
* pluggable `particle_vm_sample_curve` — here the no-op provider; the feature swaps in the
|
|
52
|
-
* animation-database-backed one.
|
|
49
|
+
* All structured reads go through `array<u32>` for emulator-testability.
|
|
53
50
|
*
|
|
54
51
|
* @type {ComputeShader}
|
|
55
52
|
*/
|
|
@@ -116,7 +113,6 @@ fn main(@builtin(global_invocation_id) gid : vec3<u32>) {
|
|
|
116
113
|
`, [
|
|
117
114
|
chunk_particle_simulate_step,
|
|
118
115
|
chunk_particle_vm_registers_fast,
|
|
119
|
-
chunk_particle_curve_disabled,
|
|
120
116
|
]);
|
|
121
117
|
|
|
122
118
|
body.addExtension(WebGPUExtensionType.Subgroups);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shader_particle_simulate_wide.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/particles/shaders/shader_particle_simulate_wide.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"shader_particle_simulate_wide.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/particles/shaders/shader_particle_simulate_wide.js"],"names":[],"mappings":"AAYA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH;;;GAGG;AACH,qDAFU,MAAM,CAGqD;AA6DrE,0DAIG;8BArH2B,+BAA+B"}
|
|
@@ -7,7 +7,6 @@ import { ShaderResourceSetDescriptor } from "../../shader/resource/ShaderResourc
|
|
|
7
7
|
import { PARTICLE_SIMULATE_WORKGROUP_SIZE, PARTICLE_VM_WIDE_LAUNCH_LANES } from "../ParticleConstants.js";
|
|
8
8
|
import { PARTICLE_COUNTER } from "../data/PARTICLE_COUNTERS.js";
|
|
9
9
|
import { chunk_particle_vm_registers_wide } from "../vm/chunk_particle_vm_registers_wide.js";
|
|
10
|
-
import { chunk_particle_curve_disabled } from "./chunk_particle_curve_disabled.js";
|
|
11
10
|
import { chunk_particle_simulate_step } from "./chunk_particle_simulate_step.js";
|
|
12
11
|
import { SIMULATE_SETTINGS } from "./shader_particle_simulate.js";
|
|
13
12
|
|
|
@@ -111,7 +110,6 @@ fn main(@builtin(global_invocation_id) gid : vec3<u32>) {
|
|
|
111
110
|
`, [
|
|
112
111
|
chunk_particle_simulate_step,
|
|
113
112
|
chunk_particle_vm_registers_wide,
|
|
114
|
-
chunk_particle_curve_disabled,
|
|
115
113
|
]);
|
|
116
114
|
|
|
117
115
|
body.addExtension(WebGPUExtensionType.Subgroups);
|
|
@@ -1,11 +1,24 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Frame-graph wiring for the RENDER order: the frame's alive list quantised by view depth and
|
|
3
|
-
* scattered back-to-front,
|
|
3
|
+
* scattered back-to-front, for a draw whose blending is order-dependent.
|
|
4
4
|
*
|
|
5
5
|
* reset -> histogram -> csdldf scan -> scatter. The two per-particle passes are indirect, sized by
|
|
6
6
|
* the same `sim_dispatch_args` the coherence reset wrote from the GPU's own alive count, so nothing
|
|
7
7
|
* here is sized by a host-side particle count.
|
|
8
8
|
*
|
|
9
|
+
* ## Every buffer here is the graph's
|
|
10
|
+
*
|
|
11
|
+
* Nothing the sort touches outlives the frame — the reset zeroes the bins and cursors, and the two
|
|
12
|
+
* per-particle lists are written for every entry the scatter goes on to read. So the pass that
|
|
13
|
+
* first writes each one declares it (a {@link BufferResourceDescriptor} in place of a handle) and
|
|
14
|
+
* the graph allocates it at that pass and releases it at its last reader, into the pool every other
|
|
15
|
+
* feature draws from. Two of them are a word per particle: at the renderer's default capacity that
|
|
16
|
+
* is 4 MiB the system would otherwise reserve for a mode it may never be drawn in.
|
|
17
|
+
*
|
|
18
|
+
* None of them asks for a clear. The reset pass covers the histogram (header, padding and the bins
|
|
19
|
+
* up to the whole `vec4` the last one lands in) and the cursor; `keys` and `sorted` are written by
|
|
20
|
+
* the same indirect dispatch that later reads them, entry for entry.
|
|
21
|
+
*
|
|
9
22
|
* This is the ONLY producer of a depth ordering, and only {@link ParticleRenderMode.BILLBOARD} runs
|
|
10
23
|
* it. It must never be confused with the simulation order the coherence passes build (`coherence/`):
|
|
11
24
|
* that one groups by VM program so a wave runs one program, is camera-independent, and lives in a
|
|
@@ -14,36 +27,27 @@
|
|
|
14
27
|
*
|
|
15
28
|
* @param {object} params
|
|
16
29
|
* @param {import("../../../../engine/graphics/render/frame_graph/FrameGraph.js").FrameGraph} params.graph
|
|
17
|
-
* @param {object} params.gpu the persistent buffers owned by {@link GPUParticleSystem}
|
|
18
|
-
* @param {GPUBuffer} params.gpu.sort_histogram `{count, elements}` bins for the CSDLDF scan
|
|
19
|
-
* @param {GPUBuffer} params.gpu.sort_cursor per-bin scatter cursor
|
|
20
|
-
* @param {GPUBuffer} params.gpu.sort_keys per-alive-entry depth bin
|
|
21
|
-
* @param {GPUBuffer} params.gpu.sorted the back-to-front slot list this produces
|
|
22
30
|
* @param {number} params.camera graph handle of the camera uniform buffer
|
|
23
31
|
* @param {number} params.emitter_database graph handle
|
|
24
32
|
* @param {number} params.pool graph handle of the particle pool
|
|
25
33
|
* @param {number} params.alive graph handle of this frame's compacted alive list
|
|
26
34
|
* @param {number} params.counters graph handle of the atomic counters
|
|
27
35
|
* @param {number} params.dispatch_args graph handle of one workgroup per live particle
|
|
36
|
+
* @param {number} params.capacity pool capacity in particles — the length of the two lists below
|
|
28
37
|
* @param {number} params.bucket_count depth bins the sort quantises into
|
|
29
38
|
* @param {number} params.near view depth the first bin starts at
|
|
30
39
|
* @param {number} params.far view depth the last bin ends at
|
|
31
40
|
* @returns {number} graph handle of the sorted slot list
|
|
32
41
|
*/
|
|
33
|
-
export function graph_particle_sort({ graph,
|
|
42
|
+
export function graph_particle_sort({ graph, camera, emitter_database, pool, alive, counters, dispatch_args, capacity, bucket_count, near, far, }: {
|
|
34
43
|
graph: import("../../../../engine/graphics/render/frame_graph/FrameGraph.js").FrameGraph;
|
|
35
|
-
gpu: {
|
|
36
|
-
sort_histogram: GPUBuffer;
|
|
37
|
-
sort_cursor: GPUBuffer;
|
|
38
|
-
sort_keys: GPUBuffer;
|
|
39
|
-
sorted: GPUBuffer;
|
|
40
|
-
};
|
|
41
44
|
camera: number;
|
|
42
45
|
emitter_database: number;
|
|
43
46
|
pool: number;
|
|
44
47
|
alive: number;
|
|
45
48
|
counters: number;
|
|
46
49
|
dispatch_args: number;
|
|
50
|
+
capacity: number;
|
|
47
51
|
bucket_count: number;
|
|
48
52
|
near: number;
|
|
49
53
|
far: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph_particle_sort.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/particles/sort/graph_particle_sort.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"graph_particle_sort.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/particles/sort/graph_particle_sort.js"],"names":[],"mappings":"AAgBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH;IAbqG,KAAK,EAA/F,OAAO,8DAA8D,EAAE,UAAU;IAClE,MAAM,EAArB,MAAM;IACS,gBAAgB,EAA/B,MAAM;IACS,IAAI,EAAnB,MAAM;IACS,KAAK,EAApB,MAAM;IACS,QAAQ,EAAvB,MAAM;IACS,aAAa,EAA5B,MAAM;IACS,QAAQ,EAAvB,MAAM;IACS,YAAY,EAA3B,MAAM;IACS,IAAI,EAAnB,MAAM;IACS,GAAG,EAAlB,MAAM;IACJ,MAAM,CA0ElB"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { assert } from "../../../../core/assert.js";
|
|
2
2
|
import { align_4 } from "../../../../core/binary/align_4.js";
|
|
3
|
+
import { BufferResourceDescriptor } from "../../../device/graph/BufferResourceDescriptor.js";
|
|
3
4
|
import { graph_prefix_scan_csdldf } from "../../gpu_primitive/prefix_sum/v1/graph_prefix_scan_csdldf.js";
|
|
4
5
|
import { PREFIX_SCAN_CSDLDF_HEADER_WORDS } from "../../gpu_primitive/prefix_sum/v1/shader_prefix_scan_csdldf.js";
|
|
5
6
|
import { graph_compute_indirect_pass } from "../../shader/graph/compute/graph_compute_indirect_pass.js";
|
|
6
7
|
import { graph_compute_pass } from "../../shader/graph/compute/graph_compute_pass.js";
|
|
7
|
-
import { graph_import_buffer } from "../../shader/graph/graph_import_buffer.js";
|
|
8
8
|
import {
|
|
9
9
|
PARTICLE_SORT_WORKGROUP_SIZE,
|
|
10
10
|
shader_particle_sort_histogram,
|
|
@@ -12,14 +12,29 @@ import {
|
|
|
12
12
|
shader_particle_sort_scatter,
|
|
13
13
|
} from "./shader_particle_sort.js";
|
|
14
14
|
|
|
15
|
+
const WORD = Uint32Array.BYTES_PER_ELEMENT;
|
|
16
|
+
|
|
15
17
|
/**
|
|
16
18
|
* Frame-graph wiring for the RENDER order: the frame's alive list quantised by view depth and
|
|
17
|
-
* scattered back-to-front,
|
|
19
|
+
* scattered back-to-front, for a draw whose blending is order-dependent.
|
|
18
20
|
*
|
|
19
21
|
* reset -> histogram -> csdldf scan -> scatter. The two per-particle passes are indirect, sized by
|
|
20
22
|
* the same `sim_dispatch_args` the coherence reset wrote from the GPU's own alive count, so nothing
|
|
21
23
|
* here is sized by a host-side particle count.
|
|
22
24
|
*
|
|
25
|
+
* ## Every buffer here is the graph's
|
|
26
|
+
*
|
|
27
|
+
* Nothing the sort touches outlives the frame — the reset zeroes the bins and cursors, and the two
|
|
28
|
+
* per-particle lists are written for every entry the scatter goes on to read. So the pass that
|
|
29
|
+
* first writes each one declares it (a {@link BufferResourceDescriptor} in place of a handle) and
|
|
30
|
+
* the graph allocates it at that pass and releases it at its last reader, into the pool every other
|
|
31
|
+
* feature draws from. Two of them are a word per particle: at the renderer's default capacity that
|
|
32
|
+
* is 4 MiB the system would otherwise reserve for a mode it may never be drawn in.
|
|
33
|
+
*
|
|
34
|
+
* None of them asks for a clear. The reset pass covers the histogram (header, padding and the bins
|
|
35
|
+
* up to the whole `vec4` the last one lands in) and the cursor; `keys` and `sorted` are written by
|
|
36
|
+
* the same indirect dispatch that later reads them, entry for entry.
|
|
37
|
+
*
|
|
23
38
|
* This is the ONLY producer of a depth ordering, and only {@link ParticleRenderMode.BILLBOARD} runs
|
|
24
39
|
* it. It must never be confused with the simulation order the coherence passes build (`coherence/`):
|
|
25
40
|
* that one groups by VM program so a wave runs one program, is camera-independent, and lives in a
|
|
@@ -28,17 +43,13 @@ import {
|
|
|
28
43
|
*
|
|
29
44
|
* @param {object} params
|
|
30
45
|
* @param {import("../../../../engine/graphics/render/frame_graph/FrameGraph.js").FrameGraph} params.graph
|
|
31
|
-
* @param {object} params.gpu the persistent buffers owned by {@link GPUParticleSystem}
|
|
32
|
-
* @param {GPUBuffer} params.gpu.sort_histogram `{count, elements}` bins for the CSDLDF scan
|
|
33
|
-
* @param {GPUBuffer} params.gpu.sort_cursor per-bin scatter cursor
|
|
34
|
-
* @param {GPUBuffer} params.gpu.sort_keys per-alive-entry depth bin
|
|
35
|
-
* @param {GPUBuffer} params.gpu.sorted the back-to-front slot list this produces
|
|
36
46
|
* @param {number} params.camera graph handle of the camera uniform buffer
|
|
37
47
|
* @param {number} params.emitter_database graph handle
|
|
38
48
|
* @param {number} params.pool graph handle of the particle pool
|
|
39
49
|
* @param {number} params.alive graph handle of this frame's compacted alive list
|
|
40
50
|
* @param {number} params.counters graph handle of the atomic counters
|
|
41
51
|
* @param {number} params.dispatch_args graph handle of one workgroup per live particle
|
|
52
|
+
* @param {number} params.capacity pool capacity in particles — the length of the two lists below
|
|
42
53
|
* @param {number} params.bucket_count depth bins the sort quantises into
|
|
43
54
|
* @param {number} params.near view depth the first bin starts at
|
|
44
55
|
* @param {number} params.far view depth the last bin ends at
|
|
@@ -46,37 +57,39 @@ import {
|
|
|
46
57
|
*/
|
|
47
58
|
export function graph_particle_sort({
|
|
48
59
|
graph,
|
|
49
|
-
gpu,
|
|
50
60
|
camera,
|
|
51
61
|
emitter_database,
|
|
52
62
|
pool,
|
|
53
63
|
alive,
|
|
54
64
|
counters,
|
|
55
65
|
dispatch_args,
|
|
66
|
+
capacity,
|
|
56
67
|
bucket_count,
|
|
57
68
|
near,
|
|
58
69
|
far,
|
|
59
70
|
}) {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
// `graph_import_buffer` of an undefined buffer fails a long way from the cause.
|
|
63
|
-
for (const name of ["sort_histogram", "sort_cursor", "sort_keys", "sorted"]) {
|
|
64
|
-
assert.defined(gpu[name], `gpu.${name} — the render-order scratch was not allocated before the sort`);
|
|
65
|
-
}
|
|
71
|
+
assert.isPositiveInteger(capacity, "capacity");
|
|
72
|
+
assert.isPositiveInteger(bucket_count, "bucket_count");
|
|
66
73
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
let keys = graph_import_buffer(graph, gpu.sort_keys, "particles/sort_keys");
|
|
70
|
-
let sorted = graph_import_buffer(graph, gpu.sorted, "particles/sorted");
|
|
71
|
-
|
|
72
|
-
// The reset's widest loop is the scan header plus the bins rounded up to a whole vec4.
|
|
74
|
+
// The reset's widest loop is the scan header plus the bins rounded up to a whole vec4, and so
|
|
75
|
+
// is the buffer it clears.
|
|
73
76
|
const reset_words = PREFIX_SCAN_CSDLDF_HEADER_WORDS + align_4(bucket_count);
|
|
74
77
|
|
|
78
|
+
const LIST_DESCRIPTOR = BufferResourceDescriptor.from(capacity * WORD, GPUBufferUsage.STORAGE);
|
|
79
|
+
|
|
80
|
+
// Each pass below is handed a descriptor for the buffers it is the first to write, and a handle
|
|
81
|
+
// for everything else; `graph_compute_pass` creates the one and threads the other.
|
|
82
|
+
let histogram;
|
|
83
|
+
let cursor;
|
|
75
84
|
{
|
|
76
85
|
const out = graph_compute_pass({
|
|
77
86
|
graph,
|
|
78
87
|
shader: shader_particle_sort_reset,
|
|
79
|
-
bindings: {
|
|
88
|
+
bindings: {
|
|
89
|
+
histogram: BufferResourceDescriptor.from(reset_words * WORD, GPUBufferUsage.STORAGE),
|
|
90
|
+
cursor: BufferResourceDescriptor.from(bucket_count * WORD, GPUBufferUsage.STORAGE),
|
|
91
|
+
settings: { u_bucket_count: bucket_count },
|
|
92
|
+
},
|
|
80
93
|
group_count: [Math.ceil(reset_words / PARTICLE_SORT_WORKGROUP_SIZE), 1, 1],
|
|
81
94
|
});
|
|
82
95
|
histogram = out.histogram;
|
|
@@ -85,12 +98,14 @@ export function graph_particle_sort({
|
|
|
85
98
|
|
|
86
99
|
// The counters are only read here, but an atomic read needs a read_write binding, and the
|
|
87
100
|
// graph sees a write — so the handle is threaded through like any other.
|
|
101
|
+
let keys;
|
|
88
102
|
{
|
|
89
103
|
const out = graph_compute_indirect_pass({
|
|
90
104
|
graph,
|
|
91
105
|
shader: shader_particle_sort_histogram,
|
|
92
106
|
bindings: {
|
|
93
|
-
camera, emitter_database, pool, alive, counters,
|
|
107
|
+
camera, emitter_database, pool, alive, counters, histogram,
|
|
108
|
+
keys: LIST_DESCRIPTOR,
|
|
94
109
|
settings: { u_near: near, u_far: far, u_bucket_count: bucket_count },
|
|
95
110
|
},
|
|
96
111
|
command: dispatch_args,
|
|
@@ -106,15 +121,10 @@ export function graph_particle_sort({
|
|
|
106
121
|
element_max_count: bucket_count,
|
|
107
122
|
});
|
|
108
123
|
|
|
109
|
-
{
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
});
|
|
116
|
-
sorted = out.sorted;
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
return sorted;
|
|
124
|
+
return graph_compute_indirect_pass({
|
|
125
|
+
graph,
|
|
126
|
+
shader: shader_particle_sort_scatter,
|
|
127
|
+
bindings: { keys, alive, scanned, counters, cursor, sorted: LIST_DESCRIPTOR },
|
|
128
|
+
command: dispatch_args,
|
|
129
|
+
}).sorted;
|
|
120
130
|
}
|
|
@@ -36,17 +36,15 @@ export function u32_to_unit_f32(u: number): number;
|
|
|
36
36
|
* @param {Uint32Array} params.record particle record words (mutated in place); attributes are f32 bits
|
|
37
37
|
* @param {number[][]} [params.builtins] builtin values indexed by {@link VM_BUILTIN} id, each a 4-array
|
|
38
38
|
* @param {number} [params.rng_state] initial RNG state (u32)
|
|
39
|
-
* @param {(handle: number, t: number) => number} [params.sampleCurve] curve evaluator for the CURVE op
|
|
40
39
|
* @returns {{ killed: boolean, rng_state: number }}
|
|
41
40
|
*/
|
|
42
|
-
export function execute_particle_vm({ words, constants, register_count, record, builtins, rng_state,
|
|
41
|
+
export function execute_particle_vm({ words, constants, register_count, record, builtins, rng_state, }: {
|
|
43
42
|
words: Uint32Array;
|
|
44
43
|
constants: Float32Array;
|
|
45
44
|
register_count: number;
|
|
46
45
|
record: Uint32Array;
|
|
47
46
|
builtins?: number[][];
|
|
48
47
|
rng_state?: number;
|
|
49
|
-
sampleCurve?: (handle: number, t: number) => number;
|
|
50
48
|
}): {
|
|
51
49
|
killed: boolean;
|
|
52
50
|
rng_state: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ParticleVMReference.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/particles/vm/ParticleVMReference.js"],"names":[],"mappings":"AA0BA;;;;;;;GAOG;AACH,gCAHW,MAAM;
|
|
1
|
+
{"version":3,"file":"ParticleVMReference.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/particles/vm/ParticleVMReference.js"],"names":[],"mappings":"AA0BA;;;;;;;GAOG;AACH,gCAHW,MAAM,GACJ;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAW5C;AAED;;;;;GAKG;AACH,mCAHW,MAAM,GACJ,MAAM,CAIlB;AA8DD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH;IAR+B,KAAK,EAAzB,WAAW;IACU,SAAS,EAA9B,YAAY;IACG,cAAc,EAA7B,MAAM;IACc,MAAM,EAA1B,WAAW;IACS,QAAQ,GAA5B,MAAM,EAAE,EAAE;IACM,SAAS,GAAzB,MAAM;IACJ;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAuRlD"}
|