@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.
Files changed (809) hide show
  1. package/build/bundle-worker-terrain.js +1 -1
  2. package/editor/Editor.d.ts.map +1 -1
  3. package/editor/enableEditor.d.ts.map +1 -1
  4. package/editor/particles/effect/ParticleEffectDocument.d.ts.map +1 -1
  5. package/editor/particles/effect/ParticleReferenceSimulation.d.ts.map +1 -1
  6. package/editor/templates/entity_templates.d.ts.map +1 -1
  7. package/editor/tools/v2/GizmoNode.d.ts +1 -1
  8. package/editor/tools/v2/GizmoNode.d.ts.map +1 -1
  9. package/editor/view/ecs/HierarchicalEntityListView.d.ts +3 -3
  10. package/editor/view/ecs/HierarchicalEntityListView.d.ts.map +1 -1
  11. package/editor/view/makeEntityDecorators.d.ts.map +1 -1
  12. package/editor/view/node-graph/NodeGraphClipboard.d.ts.map +1 -1
  13. package/editor/view/particles/effect/ParticleGraphEditorView.js +2 -2
  14. package/editor/view/particles/effect/ParticleNodeParametersView.d.ts.map +1 -1
  15. package/editor/view/particles/effect/ParticleNodeParametersView.js +7 -48
  16. package/editor/view/tools/ToolSettingsView.d.ts +1 -1
  17. package/editor/view/tools/ToolSettingsView.d.ts.map +1 -1
  18. package/package.json +12 -12
  19. package/src/core/IdPool.d.ts.map +1 -1
  20. package/src/core/binary/32BitEncoder.d.ts.map +1 -1
  21. package/src/core/binary/BinaryBuffer.d.ts +1 -1
  22. package/src/core/binary/BinaryBuffer.d.ts.map +1 -1
  23. package/src/core/bvh2/binary/2/BinaryUint32BVH.d.ts +1 -1
  24. package/src/core/bvh2/binary/2/BinaryUint32BVH.d.ts.map +1 -1
  25. package/src/core/bvh2/bvh3/BVH.d.ts +3 -3
  26. package/src/core/bvh2/bvh3/BVH.d.ts.map +1 -1
  27. package/src/core/bvh2/bvh3/BVH.js +1 -2
  28. package/src/core/bvh2/bvh3/query/bvh_query_user_data_nearest_to_point_filtered.d.ts.map +1 -1
  29. package/src/core/bvh2/traversal/aabb3_detailed_volume_intersection_callback_based.d.ts.map +1 -1
  30. package/src/core/cache/Cache.d.ts +1 -1
  31. package/src/core/cache/Cache.d.ts.map +1 -1
  32. package/src/core/cache/wtinylfu/CacheWTinylfu.d.ts.map +1 -1
  33. package/src/core/collection/array/array_group_by.d.ts.map +1 -1
  34. package/src/core/collection/array/array_group_by.js +2 -11
  35. package/src/core/collection/list/List.d.ts.map +1 -1
  36. package/src/core/collection/list/ListForwarder.d.ts +1 -1
  37. package/src/core/collection/list/ListForwarder.d.ts.map +1 -1
  38. package/src/core/collection/map/HashMap.d.ts.map +1 -1
  39. package/src/core/collection/set/ArraySet.d.ts.map +1 -1
  40. package/src/core/collection/table/RowFirstTable.d.ts +1 -1
  41. package/src/core/collection/table/RowFirstTable.d.ts.map +1 -1
  42. package/src/core/collection/table/bind/TableRecord.d.ts +1 -1
  43. package/src/core/collection/table/bind/TableRecord.d.ts.map +1 -1
  44. package/src/core/color/Color.d.ts +8 -8
  45. package/src/core/color/Color.d.ts.map +1 -1
  46. package/src/core/color/hsv/hsv_to_rgb_uint8.d.ts.map +1 -1
  47. package/src/core/color/hsv/rgb_to_hsv.d.ts.map +1 -1
  48. package/src/core/events/signal/Signal.d.ts +1 -1
  49. package/src/core/events/signal/Signal.d.ts.map +1 -1
  50. package/src/core/events/signal/signal_aggregate_by_time_window.d.ts.map +1 -1
  51. package/src/core/fsm/simple/SimpleStateMachineDescription.d.ts.map +1 -1
  52. package/src/core/geom/2d/aabb/AABB2.d.ts +4 -4
  53. package/src/core/geom/2d/aabb/AABB2.d.ts.map +1 -1
  54. package/src/core/geom/2d/bvh/BVH2D.d.ts +1 -1
  55. package/src/core/geom/2d/bvh/BVH2D.d.ts.map +1 -1
  56. package/src/core/geom/2d/triangle/tri2_rasterize_conservative.d.ts.map +1 -1
  57. package/src/core/geom/3d/aabb/AABB3.d.ts +6 -6
  58. package/src/core/geom/3d/aabb/AABB3.d.ts.map +1 -1
  59. package/src/core/geom/3d/atlas/atlas_bench_lib.d.ts.map +1 -1
  60. package/src/core/geom/3d/atlas/atlas_compute_charts.d.ts.map +1 -1
  61. package/src/core/geom/3d/atlas/atlas_generate.d.ts.map +1 -1
  62. package/src/core/geom/3d/atlas/pack/atlas_pack_charts.d.ts.map +1 -1
  63. package/src/core/geom/3d/atlas/param/atlas_chart_param_validity.d.ts.map +1 -1
  64. package/src/core/geom/3d/atlas/param/atlas_chart_parameterize_bff.d.ts.map +1 -1
  65. package/src/core/geom/3d/atlas/param/atlas_chart_parameterize_lscm.d.ts.map +1 -1
  66. package/src/core/geom/3d/atlas/segment/atlas_compute_planar_regions.d.ts.map +1 -1
  67. package/src/core/geom/3d/atlas/segment/atlas_segment_charts.d.ts.map +1 -1
  68. package/src/core/geom/3d/atlas/segment/atlas_segment_charts_atomic.d.ts.map +1 -1
  69. package/src/core/geom/3d/mat4/m4_decompose.d.ts +7 -1
  70. package/src/core/geom/3d/mat4/m4_decompose.d.ts.map +1 -1
  71. package/src/core/geom/3d/quadric/Quadric3.d.ts +11 -11
  72. package/src/core/geom/3d/quadric/Quadric3.d.ts.map +1 -1
  73. package/src/core/geom/3d/ray/Ray3.d.ts +3 -3
  74. package/src/core/geom/3d/ray/Ray3.d.ts.map +1 -1
  75. package/src/core/geom/3d/shape/HeightMapShape3D.d.ts.map +1 -1
  76. package/src/core/geom/3d/shape/HeightMapShape3D.js +4 -9
  77. package/src/core/geom/3d/shape/TransformedShape3D.d.ts +1 -1
  78. package/src/core/geom/3d/shape/TransformedShape3D.d.ts.map +1 -1
  79. package/src/core/geom/3d/tetrahedra/TetrahedralMesh.d.ts.map +1 -1
  80. package/src/core/geom/3d/tetrahedra/delaunay/debug/push_boundary_with_validation.d.ts.map +1 -1
  81. package/src/core/geom/3d/tetrahedra/delaunay/debug/validate_cavity_boundary.d.ts.map +1 -1
  82. package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_carve_outside_surface.d.ts.map +1 -1
  83. package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_improve_quality.d.ts.map +1 -1
  84. package/src/core/geom/3d/tetrahedra/validate_tetrahedral_mesh.d.ts.map +1 -1
  85. package/src/core/geom/3d/tetrahedra/validate_tetrahedron_neighbourhood.d.ts.map +1 -1
  86. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_to_indexed_geometry.d.ts.map +1 -1
  87. package/src/core/geom/3d/util/aabb3_emit_point_grid.d.ts.map +1 -1
  88. package/src/core/geom/Quaternion.d.ts +4 -4
  89. package/src/core/geom/Quaternion.d.ts.map +1 -1
  90. package/src/core/geom/Vector1.d.ts +1 -1
  91. package/src/core/geom/Vector1.d.ts.map +1 -1
  92. package/src/core/geom/Vector2.d.ts +2 -2
  93. package/src/core/geom/Vector2.d.ts.map +1 -1
  94. package/src/core/geom/Vector3.d.ts +3 -3
  95. package/src/core/geom/Vector3.d.ts.map +1 -1
  96. package/src/core/geom/Vector4.d.ts +4 -4
  97. package/src/core/geom/Vector4.d.ts.map +1 -1
  98. package/src/core/geom/packing/max-rect/find_best_container.d.ts.map +1 -1
  99. package/src/core/geom/vec3/v3_hash.d.ts +12 -0
  100. package/src/core/geom/vec3/v3_hash.d.ts.map +1 -0
  101. package/src/core/geom/vec3/v3_hash.js +19 -0
  102. package/src/core/geom/vec3/v3_lerp.d.ts +3 -1
  103. package/src/core/geom/vec3/v3_lerp.d.ts.map +1 -1
  104. package/src/core/geom/vec3/v3_set.d.ts +14 -0
  105. package/src/core/geom/vec3/v3_set.d.ts.map +1 -0
  106. package/src/core/geom/vec3/v3_set.js +17 -0
  107. package/src/core/geom/vec3/v3_slerp.d.ts +3 -1
  108. package/src/core/geom/vec3/v3_slerp.d.ts.map +1 -1
  109. package/src/core/geom/vec4/v4_equals_array.d.ts +11 -0
  110. package/src/core/geom/vec4/v4_equals_array.d.ts.map +1 -0
  111. package/src/core/geom/vec4/v4_equals_array.js +16 -0
  112. package/src/core/geom/vec4/v4_hash.d.ts +12 -0
  113. package/src/core/geom/vec4/v4_hash.d.ts.map +1 -0
  114. package/src/core/geom/vec4/v4_hash.js +18 -0
  115. package/src/core/geom/vec4/v4_set.d.ts +15 -0
  116. package/src/core/geom/vec4/v4_set.d.ts.map +1 -0
  117. package/src/core/geom/vec4/v4_set.js +19 -0
  118. package/src/core/graph/convert_graph_to_dot_string.d.ts +1 -1
  119. package/src/core/graph/convert_graph_to_dot_string.d.ts.map +1 -1
  120. package/src/core/graph/metis/native/bisection/split_graph_two_way.d.ts.map +1 -1
  121. package/src/core/graph/metis/native/metis_partition_kway.d.ts.map +1 -1
  122. package/src/core/graph/metis/native/refine/fm_kway.d.ts.map +1 -1
  123. package/src/core/json/abstractJSONSerializer.d.ts.map +1 -1
  124. package/src/core/lang/reactive/AbstractCachingParser.d.ts.map +1 -1
  125. package/src/core/localization/Localization.d.ts.map +1 -1
  126. package/src/core/math/linalg/cg/cg_solve.d.ts.map +1 -1
  127. package/src/core/math/noise/create_simplex_noise_2d.d.ts.map +1 -1
  128. package/src/core/math/physics/mie/compute_bhmie_optical_properties.d.ts.map +1 -1
  129. package/src/core/math/physics/mie/compute_mie_particle_properties_rgb.d.ts.map +1 -1
  130. package/src/core/math/random/seededRandom_Mulberry32.d.ts +1 -1
  131. package/src/core/math/random/seededRandom_Mulberry32.d.ts.map +1 -1
  132. package/src/core/model/ModuleRegistry.d.ts.map +1 -1
  133. package/src/core/model/node-graph/visual/layout/layout_assign_coordinates.d.ts.map +1 -1
  134. package/src/core/model/node-graph/visual/layout/layout_node_graph.d.ts.map +1 -1
  135. package/src/core/model/node-graph/visual/layout/layout_order_layers.d.ts.map +1 -1
  136. package/src/core/model/object/optional_clone.d.ts.map +1 -0
  137. package/src/{shade/descriptor/util → core/model/object}/optional_equality.d.ts +2 -2
  138. package/src/core/model/object/optional_equality.d.ts.map +1 -0
  139. package/src/{shade/descriptor/util → core/model/object}/optional_equality.js +2 -2
  140. package/src/{shade/descriptor/util → core/model/object}/optional_hash.d.ts +1 -1
  141. package/src/core/model/object/optional_hash.d.ts.map +1 -0
  142. package/src/{shade/descriptor/util → core/model/object}/optional_hash.js +3 -3
  143. package/src/core/model/reactive/model/ReactiveExpression.d.ts.map +1 -1
  144. package/src/core/model/validate_enum_schema.d.ts.map +1 -1
  145. package/src/core/process/Future.d.ts.map +1 -1
  146. package/src/core/process/task/Task.d.ts.map +1 -1
  147. package/src/core/process/task/util/countTask.d.ts.map +1 -1
  148. package/src/core/process/task/util/randomCountTask.d.ts.map +1 -1
  149. package/src/core/process/worker/WorkerBuilder.d.ts.map +1 -1
  150. package/src/engine/Clock.d.ts +1 -1
  151. package/src/engine/Clock.d.ts.map +1 -1
  152. package/src/engine/EngineHarness.d.ts.map +1 -1
  153. package/src/engine/animation/Animations.d.ts.map +1 -1
  154. package/src/engine/animation/EntityAnimation.d.ts.map +1 -1
  155. package/src/engine/animation/TransitionFunctions.d.ts.map +1 -1
  156. package/src/engine/animation/Tween.d.ts.map +1 -1
  157. package/src/engine/animation/curve/editor/uploadViaElement.d.ts.map +1 -1
  158. package/src/engine/animation/curve/view/AnimationCurveView.d.ts +1 -1
  159. package/src/engine/animation/curve/view/AnimationCurveView.d.ts.map +1 -1
  160. package/src/engine/asset/Asset.d.ts +1 -1
  161. package/src/engine/asset/Asset.d.ts.map +1 -1
  162. package/src/engine/asset/Asset.js +3 -1
  163. package/src/engine/asset/AssetManager.d.ts.map +1 -1
  164. package/src/engine/asset/AssetRequest.d.ts.map +1 -1
  165. package/src/engine/asset/loaders/AssetLoader.d.ts.map +1 -1
  166. package/src/engine/asset/loaders/image/avif/encode_image_source.d.ts.map +1 -1
  167. package/src/engine/asset/loaders/image/avif/threaded_image_encoder.d.ts.map +1 -1
  168. package/src/engine/browserInfo.d.ts.map +1 -1
  169. package/src/engine/control/first-person/FirstPersonPlayerControllerSystem.d.ts +1 -1
  170. package/src/engine/control/first-person/FirstPersonPlayerControllerSystem.d.ts.map +1 -1
  171. package/src/engine/control/first-person/abilities/LedgeGrab.js +9 -9
  172. package/src/engine/control/first-person/abilities/Mantle.js +8 -8
  173. package/src/engine/control/first-person/abilities/ScrambleUp.js +2 -2
  174. package/src/engine/control/first-person/abilities/WallJump.js +2 -2
  175. package/src/engine/control/first-person/abilities/WallRun.js +3 -3
  176. package/src/engine/control/first-person/collision/KinematicMover.d.ts +1 -1
  177. package/src/engine/control/first-person/collision/KinematicMover.d.ts.map +1 -1
  178. package/src/engine/control/first-person/collision/KinematicMover.js +19 -46
  179. package/src/engine/control/first-person/sensors/FirstPersonSensors.d.ts +17 -5
  180. package/src/engine/control/first-person/sensors/FirstPersonSensors.d.ts.map +1 -1
  181. package/src/engine/control/first-person/sensors/FirstPersonSensors.js +20 -7
  182. package/src/engine/control/first-person/sensors/FirstPersonSensorsSystem.d.ts.map +1 -1
  183. package/src/engine/control/first-person/sensors/FirstPersonSensorsSystem.js +9 -8
  184. package/src/engine/control/first-person/test/buildTestPlayer.d.ts.map +1 -1
  185. package/src/engine/ecs/EntityComponentDataset.d.ts.map +1 -1
  186. package/src/engine/ecs/EntityManager.d.ts.map +1 -1
  187. package/src/engine/ecs/EntityObserver.d.ts.map +1 -1
  188. package/src/engine/ecs/System.d.ts.map +1 -1
  189. package/src/engine/ecs/animation/Animation.d.ts +1 -1
  190. package/src/engine/ecs/animation/Animation.d.ts.map +1 -1
  191. package/src/engine/ecs/async/SystemWorkerLoopback.d.ts +3 -3
  192. package/src/engine/ecs/async/SystemWorkerLoopback.d.ts.map +1 -1
  193. package/src/engine/ecs/dynamic_actions/DynamicActorSystem.d.ts.map +1 -1
  194. package/src/engine/ecs/grid/pick.d.ts.map +1 -1
  195. package/src/engine/ecs/gui/hud/HeadsUpDisplaySystem.d.ts.map +1 -1
  196. package/src/engine/ecs/gui/hud/HeadsUpDisplaySystem.js +9 -10
  197. package/src/engine/ecs/guid/UUID.d.ts +1 -1
  198. package/src/engine/ecs/guid/UUID.d.ts.map +1 -1
  199. package/src/engine/ecs/ik/OneBoneSurfaceAlignmentSolver.d.ts.map +1 -1
  200. package/src/engine/ecs/ik/OneBoneSurfaceAlignmentSolver.js +26 -9
  201. package/src/engine/ecs/parent/EntityNode.d.ts +1 -1
  202. package/src/engine/ecs/parent/EntityNode.d.ts.map +1 -1
  203. package/src/engine/ecs/parent/FaceEditor.d.ts +7 -7
  204. package/src/engine/ecs/parent/FaceEditor.d.ts.map +1 -1
  205. package/src/engine/ecs/storage/binary/collection/BinaryCollectionDeSerializer.d.ts.map +1 -1
  206. package/src/engine/ecs/storage/binary/object/BinaryObjectSerializationAdapter2.d.ts +2 -2
  207. package/src/engine/ecs/storage/binary/object/BinaryObjectSerializationAdapter2.d.ts.map +1 -1
  208. package/src/engine/ecs/terrain/TerrainClouds.d.ts +1 -1
  209. package/src/engine/ecs/terrain/ecs/Terrain.d.ts +1 -1
  210. package/src/engine/ecs/terrain/ecs/Terrain.d.ts.map +1 -1
  211. package/src/engine/ecs/terrain/ecs/TerrainSystem.d.ts.map +1 -1
  212. package/src/engine/ecs/terrain/overlay/TerrainOverlay.d.ts +1 -1
  213. package/src/engine/ecs/terrain/overlay/TerrainOverlay.d.ts.map +1 -1
  214. package/src/engine/ecs/terrain/tiles/TerrainTile.d.ts +1 -1
  215. package/src/engine/ecs/terrain/tiles/TerrainTile.d.ts.map +1 -1
  216. package/src/engine/ecs/terrain/tiles/TerrainTileManager.d.ts +1 -1
  217. package/src/engine/ecs/terrain/tiles/TerrainTileManager.d.ts.map +1 -1
  218. package/src/engine/ecs/terrain/util/obtainTerrain.d.ts.map +1 -1
  219. package/src/engine/ecs/transform/Transform64.d.ts +6 -6
  220. package/src/engine/ecs/transform/Transform64.d.ts.map +1 -1
  221. package/src/engine/ecs/transform-attachment/TransformAttachment.d.ts +1 -1
  222. package/src/engine/ecs/transform-attachment/TransformAttachment.d.ts.map +1 -1
  223. package/src/engine/graphics/FrameRunner.d.ts.map +1 -1
  224. package/src/engine/graphics/ecs/camera/camera_traverse_active.d.ts.map +1 -1
  225. package/src/engine/graphics/ecs/camera/pp/PerfectPanner.d.ts +1 -1
  226. package/src/engine/graphics/ecs/camera/pp/PerfectPanner.d.ts.map +1 -1
  227. package/src/engine/graphics/ecs/highlight/HighlightDefinition.d.ts +1 -1
  228. package/src/engine/graphics/ecs/highlight/HighlightDefinition.d.ts.map +1 -1
  229. package/src/engine/graphics/ecs/make_bvh_depth_range_computer.d.ts.map +1 -1
  230. package/src/engine/graphics/ecs/mesh-v2/aggregate/SGMesh.d.ts +4 -4
  231. package/src/engine/graphics/ecs/mesh-v2/aggregate/SGMesh.d.ts.map +1 -1
  232. package/src/engine/graphics/ecs/particles/ParticleEffect.d.ts.map +1 -1
  233. package/src/engine/graphics/ecs/particles/ParticleEffect.js +6 -22
  234. package/src/engine/graphics/ecs/path/tube/TubePathStyle.d.ts +1 -1
  235. package/src/engine/graphics/ecs/path/tube/TubePathStyle.d.ts.map +1 -1
  236. package/src/engine/graphics/ecs/path/tube/build/computeFrenetFrames.d.ts.map +1 -1
  237. package/src/engine/graphics/ecs/trail3d/Trail3D.d.ts +3 -3
  238. package/src/engine/graphics/ecs/trail3d/Trail3D.d.ts.map +1 -1
  239. package/src/engine/graphics/geometry/buffered/build_height_field_geometry.d.ts +1 -1
  240. package/src/engine/graphics/geometry/buffered/build_height_field_geometry.d.ts.map +1 -1
  241. package/src/engine/graphics/geometry/buffered/query/GeometrySpatialQueryAccelerator.d.ts +1 -1
  242. package/src/engine/graphics/geometry/buffered/query/GeometrySpatialQueryAccelerator.d.ts.map +1 -1
  243. package/src/engine/graphics/make_ray_from_viewport_position.d.ts.map +1 -1
  244. package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.d.ts.map +1 -1
  245. package/src/engine/graphics/particles/particular/engine/emitter/computeEmissionFunction.d.ts.map +1 -1
  246. package/src/engine/graphics/particles/particular/engine/utils/distribute_points_on_indexed_triangles.d.ts.map +1 -1
  247. package/src/engine/graphics/particles/particular/engine/utils/distrubuteParticlesOnMesh.d.ts.map +1 -1
  248. package/src/engine/graphics/particles/particular/engine/utils/volume/AttributeValue.d.ts +3 -3
  249. package/src/engine/graphics/particles/particular/engine/utils/volume/AttributeValue.d.ts.map +1 -1
  250. package/src/engine/graphics/render/frame_graph/FrameGraph.d.ts.map +1 -1
  251. package/src/engine/graphics/render/gizmo/GizmoShapeRenderingInterface.d.ts +1 -1
  252. package/src/engine/graphics/render/gizmo/GizmoShapeRenderingInterface.d.ts.map +1 -1
  253. package/src/engine/graphics/render/layers/RenderLayer.d.ts +3 -3
  254. package/src/engine/graphics/render/layers/RenderLayer.d.ts.map +1 -1
  255. package/src/engine/graphics/render/visibility/IncrementalDeltaSet.d.ts +1 -1
  256. package/src/engine/graphics/render/visibility/IncrementalDeltaSet.d.ts.map +1 -1
  257. package/src/engine/graphics/render/visibility/VisibilityComputer.d.ts +2 -2
  258. package/src/engine/graphics/render/visibility/VisibilityComputer.d.ts.map +1 -1
  259. package/src/engine/graphics/sh3/path_tracer/PathTracedMesh.d.ts +1 -1
  260. package/src/engine/graphics/sh3/path_tracer/PathTracedMesh.d.ts.map +1 -1
  261. package/src/engine/graphics/sh3/path_tracer/populate_path_traced_scene_from_ecd.d.ts.map +1 -1
  262. package/src/engine/graphics/sh3/path_tracer/populate_path_traced_scene_from_ecd.js +5 -1
  263. package/src/engine/graphics/texture/3d/SingleChannelSampler3D.d.ts +1 -1
  264. package/src/engine/graphics/texture/3d/SingleChannelSampler3D.d.ts.map +1 -1
  265. package/src/engine/graphics/texture/sampler/Sampler2D.d.ts.map +1 -1
  266. package/src/engine/graphics/texture/sampler/filter/sampler2d_scale_down_generic.d.ts +1 -1
  267. package/src/engine/graphics/texture/sampler/filter/sampler2d_scale_down_generic.d.ts.map +1 -1
  268. package/src/engine/graphics/texture/sampler/sampler2d_channel_compute_max.d.ts +1 -1
  269. package/src/engine/graphics/texture/sampler/sampler2d_channel_compute_max.d.ts.map +1 -1
  270. package/src/engine/graphics/texture/sampler/sampler2d_channel_compute_min.d.ts +1 -1
  271. package/src/engine/graphics/texture/sampler/sampler2d_channel_compute_min.d.ts.map +1 -1
  272. package/src/engine/graphics/texture/sampler/sampler2d_combine.d.ts.map +1 -1
  273. package/src/engine/graphics/texture/sampler/sampler2d_compute_texel_value_conversion_scale_to_uint8.d.ts.map +1 -1
  274. package/src/engine/graphics/texture/sampler/search/make_edge_condition_channel_threshold.d.ts.map +1 -1
  275. package/src/engine/graphics/texture/sampler/search/sampler2d_find_pixels.d.ts.map +1 -1
  276. package/src/engine/graphics/texture/virtual/VirtualTextureTileLoader.d.ts +3 -3
  277. package/src/engine/graphics/texture/virtual/VirtualTextureTileLoader.d.ts.map +1 -1
  278. package/src/engine/graphics/texture/virtual/VirtualTextureUsage.d.ts +1 -1
  279. package/src/engine/graphics/texture/virtual/VirtualTextureUsage.d.ts.map +1 -1
  280. package/src/engine/graphics/texture/virtual/debug/UsageDebugView.d.ts +2 -2
  281. package/src/engine/graphics/texture/virtual/debug/UsageDebugView.d.ts.map +1 -1
  282. package/src/engine/graphics/texture/virtual/debug/UsagePyramidDebugView.d.ts +1 -1
  283. package/src/engine/graphics/texture/virtual/debug/UsagePyramidDebugView.d.ts.map +1 -1
  284. package/src/engine/graphics/texture/virtual/tile/decompose_finger_print.d.ts.map +1 -1
  285. package/src/engine/graphics3/HighlightOutlineSystem.d.ts.map +1 -1
  286. package/src/engine/graphics3/ParticipatingMedia.d.ts +1 -1
  287. package/src/engine/graphics3/ParticipatingMedia.d.ts.map +1 -1
  288. package/src/engine/graphics3/VolumetricLightMap.d.ts +1 -1
  289. package/src/engine/graphics3/VolumetricLightMap.d.ts.map +1 -1
  290. package/src/engine/graphics3/decal/graph_build_decal_clusters.d.ts.map +1 -1
  291. package/src/engine/graphics3/highlight/pack_highlight_table.d.ts.map +1 -1
  292. package/src/engine/graphics3/preview/make_model_preview_scene.d.ts.map +1 -1
  293. package/src/engine/graphics3/terrain/GPUTerrainSplatRenderer.d.ts.map +1 -1
  294. package/src/engine/graphics3/terrain/pack_terrain_row_table.d.ts.map +1 -1
  295. package/src/engine/grid/obstacle/GridObstacle.d.ts.map +1 -1
  296. package/src/engine/input/devices/GamepadDevice.d.ts +1 -1
  297. package/src/engine/input/devices/GamepadDevice.d.ts.map +1 -1
  298. package/src/engine/input/devices/PointerDevice.d.ts +1 -1
  299. package/src/engine/input/devices/PointerDevice.d.ts.map +1 -1
  300. package/src/engine/input/ecs/controllers/KeyboardCameraController.d.ts.map +1 -1
  301. package/src/engine/input/ecs/controllers/KeyboardCameraController.js +11 -2
  302. package/src/engine/intelligence/behavior/ecs/BehaviorComponent.d.ts +1 -1
  303. package/src/engine/intelligence/behavior/ecs/BehaviorComponent.d.ts.map +1 -1
  304. package/src/engine/intelligence/behavior/ecs/SendEventBehavior.d.ts.map +1 -1
  305. package/src/engine/intelligence/behavior/primitive/ActionBehavior.d.ts.map +1 -1
  306. package/src/engine/intelligence/behavior/util/RotationBehavior.d.ts.map +1 -1
  307. package/src/engine/intelligence/behavior/util/RotationBehavior.js +14 -2
  308. package/src/engine/intelligence/blackboard/Blackboard.d.ts.map +1 -1
  309. package/src/engine/intelligence/mcts/MonteCarlo.d.ts +1 -1
  310. package/src/engine/intelligence/mcts/MonteCarlo.d.ts.map +1 -1
  311. package/src/engine/intelligence/mcts/StateNode.d.ts.map +1 -1
  312. package/src/engine/intelligence/optimization/RandomOptimizer.d.ts +1 -1
  313. package/src/engine/intelligence/optimization/RandomOptimizer.d.ts.map +1 -1
  314. package/src/engine/knowledge/database/StaticKnowledgeDataTable.d.ts.map +1 -1
  315. package/src/engine/knowledge/database/StaticKnowledgeDatabase.d.ts +1 -1
  316. package/src/engine/knowledge/database/StaticKnowledgeDatabase.d.ts.map +1 -1
  317. package/src/engine/navigation/ecs/path_following/PathFollower.d.ts +2 -2
  318. package/src/engine/navigation/ecs/path_following/PathFollower.d.ts.map +1 -1
  319. package/src/engine/network/NetworkSession.d.ts.map +1 -1
  320. package/src/engine/network/PriorityFetch.d.ts +2 -2
  321. package/src/engine/network/PriorityFetch.d.ts.map +1 -1
  322. package/src/engine/network/diagnostics/BandwidthMeter.d.ts.map +1 -1
  323. package/src/engine/network/ecs/owner_authorization.d.ts.map +1 -1
  324. package/src/engine/network/orchestrator/NetworkPeer.d.ts.map +1 -1
  325. package/src/engine/network/orchestrator/ServerAuthoritativeServer.d.ts.map +1 -1
  326. package/src/engine/network/replication/Replicator.d.ts +1 -1
  327. package/src/engine/network/replication/Replicator.d.ts.map +1 -1
  328. package/src/engine/network/sim/SimActionExecutor.d.ts +1 -1
  329. package/src/engine/network/sim/SimActionExecutor.d.ts.map +1 -1
  330. package/src/engine/network/time/RenderPlayout.d.ts.map +1 -1
  331. package/src/engine/network/transport/Channel.d.ts.map +1 -1
  332. package/src/engine/network/transport/fragments/FragmentRetention.d.ts.map +1 -1
  333. package/src/engine/physics/body/SolverBodyState.d.ts +11 -11
  334. package/src/engine/physics/body/SolverBodyState.d.ts.map +1 -1
  335. package/src/engine/physics/body/SolverBodyState.js +13 -13
  336. package/src/engine/physics/broadphase/compute_fat_world_aabb.d.ts +4 -4
  337. package/src/engine/physics/broadphase/compute_fat_world_aabb.d.ts.map +1 -1
  338. package/src/engine/physics/broadphase/compute_fat_world_aabb.js +2 -2
  339. package/src/engine/physics/broadphase/generate_pairs.d.ts +3 -3
  340. package/src/engine/physics/broadphase/generate_pairs.d.ts.map +1 -1
  341. package/src/engine/physics/broadphase/generate_pairs.js +1 -1
  342. package/src/engine/physics/ccd/linear_sweep.d.ts +2 -3
  343. package/src/engine/physics/ccd/linear_sweep.d.ts.map +1 -1
  344. package/src/engine/physics/ccd/linear_sweep.js +4 -5
  345. package/src/engine/physics/constraint/solve_constraints.js +3 -3
  346. package/src/engine/physics/ecs/BodyKind.d.ts +1 -1
  347. package/src/engine/physics/ecs/BodyKind.js +1 -1
  348. package/src/engine/physics/ecs/Collider.d.ts +1 -1
  349. package/src/engine/physics/ecs/Collider.js +1 -1
  350. package/src/engine/physics/ecs/Joint.d.ts +15 -10
  351. package/src/engine/physics/ecs/Joint.d.ts.map +1 -1
  352. package/src/engine/physics/ecs/Joint.js +27 -18
  353. package/src/engine/physics/ecs/JointSerializationAdapter.d.ts.map +1 -1
  354. package/src/engine/physics/ecs/JointSerializationAdapter.js +8 -6
  355. package/src/engine/physics/ecs/PhysicsSystem.d.ts +40 -77
  356. package/src/engine/physics/ecs/PhysicsSystem.d.ts.map +1 -1
  357. package/src/engine/physics/ecs/PhysicsSystem.js +113 -75
  358. package/src/engine/physics/ecs/RigidBody.d.ts +17 -12
  359. package/src/engine/physics/ecs/RigidBody.d.ts.map +1 -1
  360. package/src/engine/physics/ecs/RigidBody.js +58 -24
  361. package/src/engine/physics/ecs/RigidBodySerializationAdapter.d.ts.map +1 -1
  362. package/src/engine/physics/ecs/RigidBodySerializationAdapter.js +13 -12
  363. package/src/engine/physics/ecs/find_non_finite_physics_state.d.ts +1 -1
  364. package/src/engine/physics/ecs/find_non_finite_physics_state.js +1 -1
  365. package/src/engine/physics/fluid/FluidField.d.ts.map +1 -1
  366. package/src/engine/physics/fluid/REVIEW_02_PLAN.md +4 -4
  367. package/src/engine/physics/fluid/SliceVisualiser.d.ts.map +1 -1
  368. package/src/engine/physics/fluid/ecs/FluidComponent.d.ts +10 -10
  369. package/src/engine/physics/fluid/ecs/FluidComponent.js +10 -10
  370. package/src/engine/physics/fluid/ecs/FluidEffectorsComponent.d.ts +2 -2
  371. package/src/engine/physics/fluid/ecs/FluidEffectorsComponent.js +2 -2
  372. package/src/engine/physics/fluid/ecs/FluidObstacle.d.ts +3 -3
  373. package/src/engine/physics/fluid/ecs/FluidObstacle.js +3 -3
  374. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +1 -1
  375. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.js +4 -4
  376. package/src/engine/physics/fluid/ecs/FluidSystem.d.ts +2 -2
  377. package/src/engine/physics/fluid/ecs/FluidSystem.js +3 -3
  378. package/src/engine/physics/fluid/ecs/WorkerFluidSystem.d.ts +1 -1
  379. package/src/engine/physics/fluid/ecs/WorkerFluidSystem.js +2 -2
  380. package/src/engine/physics/fluid/ecs/fluid_reanchor_field.d.ts +3 -3
  381. package/src/engine/physics/fluid/ecs/fluid_reanchor_field.d.ts.map +1 -1
  382. package/src/engine/physics/fluid/ecs/fluid_reanchor_field.js +3 -3
  383. package/src/engine/physics/fluid/ecs/fluid_sync_effectors_from_transform.d.ts +3 -3
  384. package/src/engine/physics/fluid/ecs/fluid_sync_effectors_from_transform.d.ts.map +1 -1
  385. package/src/engine/physics/fluid/ecs/fluid_sync_effectors_from_transform.js +2 -2
  386. package/src/engine/physics/fluid/effector/AbstractFluidEffector.d.ts +3 -3
  387. package/src/engine/physics/fluid/effector/AbstractFluidEffector.d.ts.map +1 -1
  388. package/src/engine/physics/fluid/effector/AbstractFluidEffector.js +2 -2
  389. package/src/engine/physics/fluid/effector/ImpulseFluidEffector.js +2 -2
  390. package/src/engine/physics/fluid/effector/WakeFluidEffector.d.ts +4 -4
  391. package/src/engine/physics/fluid/effector/WakeFluidEffector.js +8 -8
  392. package/src/engine/physics/inertia/world_inverse_inertia.d.ts +8 -17
  393. package/src/engine/physics/inertia/world_inverse_inertia.d.ts.map +1 -1
  394. package/src/engine/physics/inertia/world_inverse_inertia.js +11 -11
  395. package/src/engine/physics/integration/integrate_position.d.ts +6 -7
  396. package/src/engine/physics/integration/integrate_position.d.ts.map +1 -1
  397. package/src/engine/physics/integration/integrate_position.js +5 -6
  398. package/src/engine/physics/integration/integrate_velocity.d.ts +4 -4
  399. package/src/engine/physics/integration/integrate_velocity.d.ts.map +1 -1
  400. package/src/engine/physics/integration/integrate_velocity.js +7 -7
  401. package/src/engine/physics/inverse_kinematics/fabrik/fabrik_solve.d.ts +4 -4
  402. package/src/engine/physics/inverse_kinematics/fabrik/fabrik_solve.d.ts.map +1 -1
  403. package/src/engine/physics/inverse_kinematics/fabrik/fabrik_solve.js +3 -3
  404. package/src/engine/physics/narrowphase/convex_decomposition.d.ts.map +1 -1
  405. package/src/engine/physics/narrowphase/decomposition/triangle_buffer_layout.d.ts +1 -2
  406. package/src/engine/physics/narrowphase/decomposition/triangle_buffer_layout.d.ts.map +1 -1
  407. package/src/engine/physics/narrowphase/decomposition/triangle_buffer_layout.js +1 -2
  408. package/src/engine/physics/narrowphase/narrowphase_step.d.ts +7 -6
  409. package/src/engine/physics/narrowphase/narrowphase_step.d.ts.map +1 -1
  410. package/src/engine/physics/narrowphase/narrowphase_step.js +8 -8
  411. package/src/engine/physics/queries/PhysicsSurfacePoint.d.ts +10 -5
  412. package/src/engine/physics/queries/PhysicsSurfacePoint.d.ts.map +1 -1
  413. package/src/engine/physics/queries/PhysicsSurfacePoint.js +10 -6
  414. package/src/engine/physics/queries/overlap_shape.d.ts +5 -14
  415. package/src/engine/physics/queries/overlap_shape.d.ts.map +1 -1
  416. package/src/engine/physics/queries/overlap_shape.js +4 -4
  417. package/src/engine/physics/queries/raycast.d.ts.map +1 -1
  418. package/src/engine/physics/queries/shape_cast.d.ts +9 -1
  419. package/src/engine/physics/queries/shape_cast.d.ts.map +1 -1
  420. package/src/engine/physics/queries/shape_cast.js +2 -2
  421. package/src/engine/physics/solver/solve_contacts.d.ts +2 -2
  422. package/src/engine/physics/solver/solve_contacts.d.ts.map +1 -1
  423. package/src/engine/physics/solver/solve_contacts.js +2 -2
  424. package/src/engine/physics/vehicle/RaycastVehicle.d.ts +4 -8
  425. package/src/engine/physics/vehicle/RaycastVehicle.d.ts.map +1 -1
  426. package/src/engine/physics/vehicle/RaycastVehicle.js +16 -12
  427. package/src/engine/save/Storage.d.ts.map +1 -1
  428. package/src/engine/sound/SoundEngine.d.ts +1 -1
  429. package/src/engine/sound/SoundEngine.d.ts.map +1 -1
  430. package/src/engine/sound/ecs/audio/AudioEmitterSystem.d.ts.map +1 -1
  431. package/src/engine/sound/ecs/audio/AudioEmitterSystem.js +27 -2
  432. package/src/engine/sound/simulation/AcousticSimulator.d.ts +2 -2
  433. package/src/engine/sound/simulation/AcousticSimulator.d.ts.map +1 -1
  434. package/src/engine/sound/simulation/core/VolumeField.d.ts +1 -1
  435. package/src/engine/sound/simulation/core/VolumeField.d.ts.map +1 -1
  436. package/src/engine/sound/simulation/probe/AcousticProbeField.d.ts.map +1 -1
  437. package/src/engine/sound/simulation/probe/probe_delaunay_edges.d.ts.map +1 -1
  438. package/src/engine/sound/simulation/probe/probe_densify_portals.d.ts.map +1 -1
  439. package/src/engine/sound/simulation/probe/probe_detect_portals.d.ts.map +1 -1
  440. package/src/engine/sound/simulation/probe/probe_place_sdf_cover.d.ts.map +1 -1
  441. package/src/engine/sound/simulation/probe/probe_refine_connectivity.d.ts.map +1 -1
  442. package/src/engine/sound/simulation/render/ProbeReverbRenderer.d.ts +1 -1
  443. package/src/engine/sound/simulation/render/ProbeReverbRenderer.d.ts.map +1 -1
  444. package/src/engine/sound/simulation/render/foaReverbImpulseResponse.d.ts.map +1 -1
  445. package/src/engine/sound/sopra/SopraEngine.d.ts.map +1 -1
  446. package/src/engine/sound/sopra/legacy/SoundEmitter.d.ts +3 -3
  447. package/src/engine/sound/sopra/legacy/SoundEmitter.d.ts.map +1 -1
  448. package/src/engine/sound/sopra/legacy/SoundTrack.d.ts +3 -3
  449. package/src/engine/sound/sopra/legacy/SoundTrack.d.ts.map +1 -1
  450. package/src/engine/sound/sopra/util/buildAttenuationCurve.d.ts.map +1 -1
  451. package/src/engine/ui/notification/NotificationManager.d.ts.map +1 -1
  452. package/src/engine/ui/notification/ViewEmitter.d.ts +1 -1
  453. package/src/engine/ui/notification/ViewEmitter.d.ts.map +1 -1
  454. package/src/engine/ui/tiles2d/TileGrid.d.ts.map +1 -1
  455. package/src/extractName.d.ts.map +1 -1
  456. package/src/format/image/avif/api/convert_to_rgba.d.ts.map +1 -1
  457. package/src/format/image/avif/av1/encode/encode_av1_still.d.ts.map +1 -1
  458. package/src/format/image/avif/heif/write_avif_file.d.ts +2 -2
  459. package/src/format/image/avif/heif/write_avif_file.d.ts.map +1 -1
  460. package/src/format/image/jpeg/JpegImage.d.ts.map +1 -1
  461. package/src/format/image/png/PNG.d.ts.map +1 -1
  462. package/src/format/image/png/chunk/png_chunk_decode_iTXt.d.ts.map +1 -1
  463. package/src/format/image/png/chunk/png_chunk_decode_zTXt.d.ts.map +1 -1
  464. package/src/format/scene/gltf/ext/GltfBufferViewExtensionSet.d.ts.map +1 -1
  465. package/src/format/scene/gltf/gltf_node_world_matrices.d.ts.map +1 -1
  466. package/src/format/scene/usd/unpack_usdz.d.ts.map +1 -1
  467. package/src/format/scene/usd/usd_triangulate.d.ts.map +1 -1
  468. package/src/format/texture/basis/astc_integer_sequence.d.ts.map +1 -1
  469. package/src/generation/grid/actions/ContinuousGridCellActionWriteObstacle.d.ts.map +1 -1
  470. package/src/generation/markers/actions/placement/MarkerNodeEntityProcessorClingToTerrain.d.ts.map +1 -1
  471. package/src/generation/markers/actions/placement/MarkerNodeEntityProcessorClingToTerrain.js +22 -3
  472. package/src/generation/markers/transform/MarkerNodeTransformerRecordPropertyClosure.d.ts.map +1 -1
  473. package/src/generation/theme/ThemeEngine.d.ts +2 -2
  474. package/src/generation/theme/ThemeEngine.d.ts.map +1 -1
  475. package/src/shade/descriptor/ObjectDescriptorBase.d.ts +1 -1
  476. package/src/shade/descriptor/ObjectDescriptorBase.d.ts.map +1 -1
  477. package/src/shade/descriptor/binding/BindGroupLayoutDescriptor.js +1 -1
  478. package/src/shade/descriptor/binding/BindGroupLayoutEntry.js +3 -3
  479. package/src/shade/descriptor/pipeline/PipelineDescriptorBase.js +1 -1
  480. package/src/shade/descriptor/pipeline/PipelineLayoutDescriptor.js +1 -1
  481. package/src/shade/descriptor/pipeline/render/ColorTargetState.js +3 -3
  482. package/src/shade/descriptor/pipeline/render/FragmentState.js +1 -1
  483. package/src/shade/descriptor/pipeline/render/RenderPipelineDescriptor.js +3 -3
  484. package/src/shade/descriptor/texture/TextureDescriptor.d.ts +1 -1
  485. package/src/shade/device/ShadeGPUCommandContext.d.ts +1 -1
  486. package/src/shade/device/ShadeGPUCommandContext.d.ts.map +1 -1
  487. package/src/shade/device/pass/ShadeGPUComputePassEncoder.d.ts +1 -1
  488. package/src/shade/device/pass/ShadeGPUComputePassEncoder.d.ts.map +1 -1
  489. package/src/shade/device/pass/ShadeGPURenderPassEncoder.d.ts +1 -1
  490. package/src/shade/device/pass/ShadeGPURenderPassEncoder.d.ts.map +1 -1
  491. package/src/shade/device/timing/GPUTimerArray.d.ts.map +1 -1
  492. package/src/shade/device/timing/GPUTimerStats.d.ts +1 -1
  493. package/src/shade/device/timing/GPUTimerStats.d.ts.map +1 -1
  494. package/src/shade/device/timing/GPU_PROFILER_PROPOSAL_2026_08_28.md +894 -894
  495. package/src/shade/playground/basis_textures/texture_inventory.d.ts.map +1 -1
  496. package/src/shade/playground/bvh_repro/bvh_repro_device.d.ts.map +1 -1
  497. package/src/shade/playground/ground_seam/capture_scene_color.d.ts.map +1 -1
  498. package/src/shade/playground/ground_seam/measure_flicker.d.ts.map +1 -1
  499. package/src/shade/playground/particle_editor/README.md +1 -1
  500. package/src/shade/playground/particle_system/index.html +0 -1
  501. package/src/shade/playground/particle_system/main.js +1 -2
  502. package/src/shade/playground/particle_system/particle_prototype.d.ts +7 -9
  503. package/src/shade/playground/particle_system/particle_prototype.d.ts.map +1 -1
  504. package/src/shade/playground/particle_system/particle_prototype.js +7 -9
  505. package/src/shade/playground/particle_system/particle_scene.d.ts +5 -6
  506. package/src/shade/playground/particle_system/particle_scene.d.ts.map +1 -1
  507. package/src/shade/playground/particle_system/particle_scene.js +6 -7
  508. package/src/shade/playground/skinned_blas_refit/sweep_views.js +2 -2
  509. package/src/shade/playground/skinned_blas_refit/verify_traversal_reachability.js +1 -1
  510. package/src/shade/playground/ssr_motion/README.md +22 -0
  511. package/src/shade/playground/ssr_motion/index.html +18 -0
  512. package/src/shade/playground/ssr_motion/main.d.ts +2 -0
  513. package/src/shade/playground/ssr_motion/main.d.ts.map +1 -0
  514. package/src/shade/playground/ssr_motion/main.js +149 -0
  515. package/src/shade/playground/ssr_variance/index.html +1 -0
  516. package/src/shade/playground/vgeo_viewer/README.md +123 -0
  517. package/src/shade/playground/vgeo_viewer/cut_geometry.d.ts +61 -0
  518. package/src/shade/playground/vgeo_viewer/cut_geometry.d.ts.map +1 -0
  519. package/src/shade/playground/vgeo_viewer/cut_geometry.js +497 -0
  520. package/src/shade/playground/vgeo_viewer/index.html +77 -0
  521. package/src/shade/playground/vgeo_viewer/main.d.ts +2 -0
  522. package/src/shade/playground/vgeo_viewer/main.d.ts.map +1 -0
  523. package/src/shade/playground/vgeo_viewer/main.js +1288 -0
  524. package/src/shade/playground/vgeo_viewer/sample_asset.d.ts +18 -0
  525. package/src/shade/playground/vgeo_viewer/sample_asset.d.ts.map +1 -0
  526. package/src/shade/playground/vgeo_viewer/sample_asset.js +117 -0
  527. package/src/shade/playground/vgeo_viewer/select_cut.d.ts +154 -0
  528. package/src/shade/playground/vgeo_viewer/select_cut.d.ts.map +1 -0
  529. package/src/shade/playground/vgeo_viewer/select_cut.js +437 -0
  530. package/src/shade/renderer/DynamicResolutionScaling.d.ts +1 -1
  531. package/src/shade/renderer/DynamicResolutionScaling.d.ts.map +1 -1
  532. package/src/shade/renderer/Renderer.d.ts +5 -5
  533. package/src/shade/renderer/Renderer.d.ts.map +1 -1
  534. package/src/shade/renderer/animation/GPUAnimationManager.d.ts.map +1 -1
  535. package/src/shade/renderer/animation/skin_normalize_mesh_frame.d.ts.map +1 -1
  536. package/src/shade/renderer/camera/Camera.d.ts +3 -3
  537. package/src/shade/renderer/camera/Camera.d.ts.map +1 -1
  538. package/src/shade/renderer/camera/GPUCameraContext.d.ts +1 -1
  539. package/src/shade/renderer/camera/GPUCameraContext.d.ts.map +1 -1
  540. package/src/shade/renderer/camera/OrthographicCamera.d.ts +4 -4
  541. package/src/shade/renderer/camera/OrthographicCamera.d.ts.map +1 -1
  542. package/src/shade/renderer/camera/PerspectiveCamera.d.ts +2 -2
  543. package/src/shade/renderer/camera/PerspectiveCamera.d.ts.map +1 -1
  544. package/src/shade/renderer/camera/orbital/OrbitalCameraController.d.ts +11 -3
  545. package/src/shade/renderer/camera/orbital/OrbitalCameraController.d.ts.map +1 -1
  546. package/src/shade/renderer/camera/orbital/OrbitalCameraController.js +25 -5
  547. package/src/shade/renderer/extension/FrameContext.d.ts +1 -1
  548. package/src/shade/renderer/extension/FrameContext.d.ts.map +1 -1
  549. package/src/shade/renderer/extension/GBufferTextures.d.ts +4 -4
  550. package/src/shade/renderer/extension/GBufferTextures.d.ts.map +1 -1
  551. package/src/shade/renderer/extension/PresentTarget.d.ts +1 -1
  552. package/src/shade/renderer/extension/PresentTarget.d.ts.map +1 -1
  553. package/src/shade/renderer/extension/RENDER_EXTENSION_DESIGN.md +918 -918
  554. package/src/shade/renderer/extension/SceneColor.d.ts +1 -1
  555. package/src/shade/renderer/extension/SceneColor.d.ts.map +1 -1
  556. package/src/shade/renderer/extension/ViewTextures.d.ts +4 -4
  557. package/src/shade/renderer/extension/ViewTextures.d.ts.map +1 -1
  558. package/src/shade/renderer/geometry/Attribute.d.ts +1 -1
  559. package/src/shade/renderer/geometry/Attribute.d.ts.map +1 -1
  560. package/src/shade/renderer/geometry/Geometry.d.ts +1 -1
  561. package/src/shade/renderer/geometry/Geometry.d.ts.map +1 -1
  562. package/src/shade/renderer/geometry/Geometry.js +4 -7
  563. package/src/shade/renderer/geometry/bvh/bvh2_check_bounds.d.ts.map +1 -1
  564. package/src/shade/renderer/geometry/bvh/bvh2_derive_topology.d.ts.map +1 -1
  565. package/src/shade/renderer/geometry/meshlet/MeshletBatch.d.ts +3 -3
  566. package/src/shade/renderer/geometry/meshlet/MeshletBatch.d.ts.map +1 -1
  567. package/src/shade/renderer/geometry/virtual/build/gltf/gltf_collect_geometries.d.ts.map +1 -1
  568. package/src/shade/renderer/geometry/virtual/format/attribute/VGEO_ATTRIBUTES.d.ts.map +1 -1
  569. package/src/shade/renderer/geometry/virtual/format/frame/vgeo_read_frame_extent.d.ts +29 -0
  570. package/src/shade/renderer/geometry/virtual/format/frame/vgeo_read_frame_extent.d.ts.map +1 -0
  571. package/src/shade/renderer/geometry/virtual/format/frame/vgeo_read_frame_extent.js +59 -0
  572. package/src/shade/renderer/geometry/virtual/format/frame/vgeo_scan_frames.d.ts +0 -1
  573. package/src/shade/renderer/geometry/virtual/format/frame/vgeo_scan_frames.d.ts.map +1 -1
  574. package/src/shade/renderer/geometry/virtual/format/frame/vgeo_scan_frames.js +2 -23
  575. package/src/shade/renderer/geometry/virtual/format/read/VGeoByteSource.d.ts +94 -0
  576. package/src/shade/renderer/geometry/virtual/format/read/VGeoByteSource.d.ts.map +1 -0
  577. package/src/shade/renderer/geometry/virtual/format/read/VGeoByteSource.js +170 -0
  578. package/src/shade/renderer/geometry/virtual/format/read/VGeoContainerHeader.d.ts +122 -0
  579. package/src/shade/renderer/geometry/virtual/format/read/VGeoContainerHeader.d.ts.map +1 -0
  580. package/src/shade/renderer/geometry/virtual/format/read/VGeoContainerHeader.js +143 -0
  581. package/src/shade/renderer/geometry/virtual/format/read/VGeoContainerReader.d.ts +185 -0
  582. package/src/shade/renderer/geometry/virtual/format/read/VGeoContainerReader.d.ts.map +1 -0
  583. package/src/shade/renderer/geometry/virtual/format/read/VGeoContainerReader.js +572 -0
  584. package/src/shade/renderer/geometry/virtual/format/read/VGeoDirectory.d.ts +64 -0
  585. package/src/shade/renderer/geometry/virtual/format/read/VGeoDirectory.d.ts.map +1 -0
  586. package/src/shade/renderer/geometry/virtual/format/read/VGeoDirectory.js +80 -0
  587. package/src/shade/renderer/geometry/virtual/format/read/VGeoPage.d.ts +198 -0
  588. package/src/shade/renderer/geometry/virtual/format/read/VGeoPage.d.ts.map +1 -0
  589. package/src/shade/renderer/geometry/virtual/format/read/VGeoPage.js +232 -0
  590. package/src/shade/renderer/geometry/virtual/format/read/VGeoPageWant.d.ts +51 -0
  591. package/src/shade/renderer/geometry/virtual/format/read/VGeoPageWant.d.ts.map +1 -0
  592. package/src/shade/renderer/geometry/virtual/format/read/VGeoPageWant.js +55 -0
  593. package/src/shade/renderer/geometry/virtual/format/read/VGeoReadOptions.d.ts +68 -0
  594. package/src/shade/renderer/geometry/virtual/format/read/VGeoReadOptions.d.ts.map +1 -0
  595. package/src/shade/renderer/geometry/virtual/format/read/VGeoReadOptions.js +72 -0
  596. package/src/shade/renderer/geometry/virtual/format/read/vgeo_fetch_byte_source.d.ts +28 -0
  597. package/src/shade/renderer/geometry/virtual/format/read/vgeo_fetch_byte_source.d.ts.map +1 -0
  598. package/src/shade/renderer/geometry/virtual/format/read/vgeo_fetch_byte_source.js +108 -0
  599. package/src/shade/renderer/geometry/virtual/format/read/vgeo_read_directory.d.ts +23 -0
  600. package/src/shade/renderer/geometry/virtual/format/read/vgeo_read_directory.d.ts.map +1 -0
  601. package/src/shade/renderer/geometry/virtual/format/read/vgeo_read_directory.js +83 -0
  602. package/src/shade/renderer/geometry/virtual/format/read/vgeo_read_header.d.ts +53 -0
  603. package/src/shade/renderer/geometry/virtual/format/read/vgeo_read_header.d.ts.map +1 -0
  604. package/src/shade/renderer/geometry/virtual/format/read/vgeo_read_header.js +211 -0
  605. package/src/shade/renderer/geometry/virtual/format/read/vgeo_read_page.d.ts +26 -0
  606. package/src/shade/renderer/geometry/virtual/format/read/vgeo_read_page.d.ts.map +1 -0
  607. package/src/shade/renderer/geometry/virtual/format/read/vgeo_read_page.js +271 -0
  608. package/src/shade/renderer/global_illumination/brick4/cpu/brick4_bake_for_scene.d.ts.map +1 -1
  609. package/src/shade/renderer/global_illumination/clipmap/GPUClipMap3D.d.ts +2 -2
  610. package/src/shade/renderer/global_illumination/clipmap/GPUClipMap3D.d.ts.map +1 -1
  611. package/src/shade/renderer/global_illumination/lpv/LightProbeVolume.d.ts +1 -1
  612. package/src/shade/renderer/global_illumination/lpv/LightProbeVolume.d.ts.map +1 -1
  613. package/src/shade/renderer/global_illumination/lpv/bake/GPULightProbeVolumeRenderer.d.ts +1 -1
  614. package/src/shade/renderer/global_illumination/lpv/bake/GPULightProbeVolumeRenderer.d.ts.map +1 -1
  615. package/src/shade/renderer/global_illumination/sharc/SpatialHashRadianceCache.d.ts +1 -1
  616. package/src/shade/renderer/global_illumination/sharc/SpatialHashRadianceCache.d.ts.map +1 -1
  617. package/src/shade/renderer/gpu_primitive/bvh/check_bvh_structure.d.ts.map +1 -1
  618. package/src/shade/renderer/light/LightCollection.d.ts +2 -2
  619. package/src/shade/renderer/light/LightCollection.d.ts.map +1 -1
  620. package/src/shade/renderer/light/model/PointLight.d.ts +1 -1
  621. package/src/shade/renderer/light/model/PointLight.d.ts.map +1 -1
  622. package/src/shade/renderer/light/model/SpotLight.d.ts +1 -1
  623. package/src/shade/renderer/light/model/SpotLight.d.ts.map +1 -1
  624. package/src/shade/renderer/loader/gltf/fix_up_material_sides.d.ts.map +1 -1
  625. package/src/shade/renderer/loader/gltf/gltf_create_material.d.ts +1 -1
  626. package/src/shade/renderer/loader/gltf/gltf_create_material.d.ts.map +1 -1
  627. package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts +2 -2
  628. package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts.map +1 -1
  629. package/src/shade/renderer/loader/usd/usd_decode_image.d.ts +1 -1
  630. package/src/shade/renderer/loader/usd/usd_decode_image.d.ts.map +1 -1
  631. package/src/shade/renderer/material/StandardShadeMaterial.js +2 -2
  632. package/src/shade/renderer/material/util/material_convert_metallic_roughness_to_specular_glossiness.d.ts.map +1 -1
  633. package/src/shade/renderer/material/util/material_convert_specular_glossiness_to_metallic_roughness.d.ts.map +1 -1
  634. package/src/shade/renderer/particles/DESIGN.md +27 -18
  635. package/src/shade/renderer/particles/GPUParticleSystem.d.ts +24 -10
  636. package/src/shade/renderer/particles/GPUParticleSystem.d.ts.map +1 -1
  637. package/src/shade/renderer/particles/GPUParticleSystem.js +80 -73
  638. package/src/shade/renderer/particles/coherence/graph_particle_bucket.d.ts +17 -16
  639. package/src/shade/renderer/particles/coherence/graph_particle_bucket.d.ts.map +1 -1
  640. package/src/shade/renderer/particles/coherence/graph_particle_bucket.js +35 -22
  641. package/src/shade/renderer/particles/graph/ParticleGroupBuilder.d.ts +7 -7
  642. package/src/shade/renderer/particles/graph/ParticleGroupBuilder.d.ts.map +1 -1
  643. package/src/shade/renderer/particles/graph/ParticleGroupBuilder.js +1 -1
  644. package/src/shade/renderer/particles/graph/ParticleNodeGroup.d.ts.map +1 -1
  645. package/src/shade/renderer/particles/graph/ParticleNodeRegistry.d.ts.map +1 -1
  646. package/src/shade/renderer/particles/graph/ParticleNodeRegistry.js +9 -15
  647. package/src/shade/renderer/particles/graph/ParticleValueType.d.ts +1 -1
  648. package/src/shade/renderer/particles/graph/ParticleValueType.d.ts.map +1 -1
  649. package/src/shade/renderer/particles/graph/make_particle_group.d.ts.map +1 -1
  650. package/src/shade/renderer/particles/graph/particle_graph_authoring.d.ts.map +1 -1
  651. package/src/shade/renderer/particles/graph/particle_group_json.d.ts.map +1 -1
  652. package/src/shade/renderer/particles/graph/particle_group_library.d.ts.map +1 -1
  653. package/src/shade/renderer/particles/graph/particle_group_library.js +8 -3
  654. package/src/shade/renderer/particles/graph/particle_node_parameters.d.ts +0 -2
  655. package/src/shade/renderer/particles/graph/particle_node_parameters.d.ts.map +1 -1
  656. package/src/shade/renderer/particles/graph/particle_node_parameters.js +0 -9
  657. package/src/shade/renderer/particles/graph/particle_node_presentation.d.ts.map +1 -1
  658. package/src/shade/renderer/particles/graph/particle_node_presentation.js +0 -10
  659. package/src/shade/renderer/particles/graph/particle_ramp.d.ts +2 -8
  660. package/src/shade/renderer/particles/graph/particle_ramp.d.ts.map +1 -1
  661. package/src/shade/renderer/particles/graph/particle_ramp.js +2 -8
  662. package/src/shade/renderer/particles/graph/validate_particle_graph.js +0 -6
  663. package/src/shade/renderer/particles/graph_particles.d.ts +11 -0
  664. package/src/shade/renderer/particles/graph_particles.d.ts.map +1 -1
  665. package/src/shade/renderer/particles/graph_particles.js +55 -37
  666. package/src/shade/renderer/particles/graph_particles_avboit.d.ts.map +1 -1
  667. package/src/shade/renderer/particles/graph_particles_avboit.js +13 -4
  668. package/src/shade/renderer/particles/graph_particles_billboard.d.ts.map +1 -1
  669. package/src/shade/renderer/particles/isa/InstructionStream.d.ts +1 -12
  670. package/src/shade/renderer/particles/isa/InstructionStream.d.ts.map +1 -1
  671. package/src/shade/renderer/particles/isa/InstructionStream.js +1 -12
  672. package/src/shade/renderer/particles/isa/ParticleVMISA.d.ts +54 -60
  673. package/src/shade/renderer/particles/isa/ParticleVMISA.d.ts.map +1 -1
  674. package/src/shade/renderer/particles/isa/ParticleVMISA.js +9 -17
  675. package/src/shade/renderer/particles/isa/particle_assembly.d.ts +0 -1
  676. package/src/shade/renderer/particles/isa/particle_assembly.d.ts.map +1 -1
  677. package/src/shade/renderer/particles/isa/particle_assembly.js +2 -16
  678. package/src/shade/renderer/particles/layout/ParticleLayout.d.ts.map +1 -1
  679. package/src/shade/renderer/particles/optimizer/dag/particle_vector_graph.d.ts +1 -1
  680. package/src/shade/renderer/particles/optimizer/dag/particle_vector_graph.js +1 -1
  681. package/src/shade/renderer/particles/optimizer/dag/particle_vector_lift.d.ts.map +1 -1
  682. package/src/shade/renderer/particles/optimizer/dag/particle_vector_lift.js +0 -14
  683. package/src/shade/renderer/particles/optimizer/dag/particle_vector_pack.d.ts.map +1 -1
  684. package/src/shade/renderer/particles/optimizer/dag/particle_vector_pack.js +3 -17
  685. package/src/shade/renderer/particles/optimizer/optimize_particle_program.d.ts +1 -1
  686. package/src/shade/renderer/particles/optimizer/optimize_particle_program.d.ts.map +1 -1
  687. package/src/shade/renderer/particles/optimizer/particle_program_analysis.d.ts.map +1 -1
  688. package/src/shade/renderer/particles/optimizer/particle_program_analysis.js +15 -36
  689. package/src/shade/renderer/particles/optimizer/particle_program_equivalence.d.ts.map +1 -1
  690. package/src/shade/renderer/particles/optimizer/particle_program_equivalence.js +1 -5
  691. package/src/shade/renderer/particles/optimizer/particle_program_fuzz.d.ts.map +1 -1
  692. package/src/shade/renderer/particles/optimizer/particle_program_fuzz.js +1 -8
  693. package/src/shade/renderer/particles/optimizer/particle_vm_semantics.d.ts +2 -11
  694. package/src/shade/renderer/particles/optimizer/particle_vm_semantics.d.ts.map +1 -1
  695. package/src/shade/renderer/particles/optimizer/particle_vm_semantics.js +2 -11
  696. package/src/shade/renderer/particles/runtime/create_particle_effect.d.ts.map +1 -1
  697. package/src/shade/renderer/particles/shaders/chunk_particle_avboit_contribution.d.ts.map +1 -1
  698. package/src/shade/renderer/particles/shaders/chunk_particle_avboit_contribution.js +13 -0
  699. package/src/shade/renderer/particles/shaders/shader_particle_avboit_draw.d.ts +3 -6
  700. package/src/shade/renderer/particles/shaders/shader_particle_avboit_draw.d.ts.map +1 -1
  701. package/src/shade/renderer/particles/shaders/shader_particle_avboit_draw.js +49 -17
  702. package/src/shade/renderer/particles/shaders/shader_particle_emit.d.ts.map +1 -1
  703. package/src/shade/renderer/particles/shaders/shader_particle_emit.js +0 -2
  704. package/src/shade/renderer/particles/shaders/shader_particle_emit_wide.d.ts.map +1 -1
  705. package/src/shade/renderer/particles/shaders/shader_particle_emit_wide.js +0 -2
  706. package/src/shade/renderer/particles/shaders/shader_particle_simulate.d.ts.map +1 -1
  707. package/src/shade/renderer/particles/shaders/shader_particle_simulate.js +1 -5
  708. package/src/shade/renderer/particles/shaders/shader_particle_simulate_wide.d.ts.map +1 -1
  709. package/src/shade/renderer/particles/shaders/shader_particle_simulate_wide.js +0 -2
  710. package/src/shade/renderer/particles/sort/graph_particle_sort.d.ts +17 -13
  711. package/src/shade/renderer/particles/sort/graph_particle_sort.d.ts.map +1 -1
  712. package/src/shade/renderer/particles/sort/graph_particle_sort.js +43 -33
  713. package/src/shade/renderer/particles/vm/ParticleVMReference.d.ts +1 -3
  714. package/src/shade/renderer/particles/vm/ParticleVMReference.d.ts.map +1 -1
  715. package/src/shade/renderer/particles/vm/ParticleVMReference.js +4 -20
  716. package/src/shade/renderer/particles/vm/chunk_particle_vm.d.ts.map +1 -1
  717. package/src/shade/renderer/particles/vm/chunk_particle_vm.js +2 -5
  718. package/src/shade/renderer/particles/warmup/shader_particle_warmup_advance.d.ts.map +1 -1
  719. package/src/shade/renderer/particles/warmup/shader_particle_warmup_advance.js +0 -2
  720. package/src/shade/renderer/particles/warmup/shader_particle_warmup_advance_wide.d.ts.map +1 -1
  721. package/src/shade/renderer/particles/warmup/shader_particle_warmup_advance_wide.js +0 -2
  722. package/src/shade/renderer/postprocess/denoise/LigmaDenoiser.d.ts +1 -1
  723. package/src/shade/renderer/postprocess/denoise/LigmaDenoiser.d.ts.map +1 -1
  724. package/src/shade/renderer/postprocess/graph_pass_composit_red_as_rgba.d.ts.map +1 -1
  725. package/src/shade/renderer/postprocess/nss/NSS.d.ts +4 -4
  726. package/src/shade/renderer/postprocess/nss/NSS.d.ts.map +1 -1
  727. package/src/shade/renderer/postprocess/ssr/SSR.d.ts +3 -3
  728. package/src/shade/renderer/postprocess/ssr/SSR.d.ts.map +1 -1
  729. package/src/shade/renderer/postprocess/ssr/reproject/chunk_ssr_reprojection.d.ts.map +1 -1
  730. package/src/shade/renderer/postprocess/ssr/reproject/chunk_ssr_reprojection.js +21 -0
  731. package/src/shade/renderer/postprocess/ssr/reproject/chunk_ssr_temporal_accumulate.d.ts.map +1 -1
  732. package/src/shade/renderer/postprocess/ssr/reproject/chunk_ssr_temporal_accumulate.js +4 -0
  733. package/src/shade/renderer/postprocess/ssr/ssr_reproject_shader.d.ts.map +1 -1
  734. package/src/shade/renderer/postprocess/ssr/ssr_reproject_shader.js +2 -1
  735. package/src/shade/renderer/postprocess/taa/TAA.d.ts +2 -2
  736. package/src/shade/renderer/postprocess/taa/TAA.d.ts.map +1 -1
  737. package/src/shade/renderer/rasterize/bucket/prepare_meshlet_draw_commands_by_material.d.ts.map +1 -1
  738. package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.d.ts.map +1 -1
  739. package/src/shade/renderer/scene/InstanceBatch.d.ts +1 -1
  740. package/src/shade/renderer/scene/InstanceBatch.d.ts.map +1 -1
  741. package/src/shade/renderer/scene/Mesh.js +1 -1
  742. package/src/shade/renderer/scene/Node3D.d.ts +3 -3
  743. package/src/shade/renderer/scene/Node3D.d.ts.map +1 -1
  744. package/src/shade/renderer/scene/bvh/StaticSceneBVH.d.ts.map +1 -1
  745. package/src/shade/renderer/shader/compiler/CodeChunk.d.ts.map +1 -1
  746. package/src/shade/renderer/shader/graph/graph_prepare_pass_input_data.d.ts.map +1 -1
  747. package/src/shade/renderer/shader/graph/graph_prepare_pass_input_data.js +11 -0
  748. package/src/shade/renderer/shader/type/WebGPUStruct.d.ts +1 -1
  749. package/src/shade/renderer/shader/type/WebGPUStruct.d.ts.map +1 -1
  750. package/src/shade/renderer/texture/GPUTextureContext.d.ts +1 -1
  751. package/src/shade/renderer/texture/GPUTextureContext.d.ts.map +1 -1
  752. package/src/shade/renderer/texture/ShadeTexture.js +1 -1
  753. package/src/shade/renderer/texture/format/sampler_descriptor_unpack.d.ts.map +1 -1
  754. package/src/shade/renderer/texture/source/ShadeImage.d.ts +7 -7
  755. package/src/shade/renderer/texture/source/ShadeImage.d.ts.map +1 -1
  756. package/src/shade/renderer/texture/virtual/VTPageTable.d.ts.map +1 -1
  757. package/src/shade/renderer/view/GPUViewContext.d.ts +2 -2
  758. package/src/shade/renderer/view/GPUViewContext.d.ts.map +1 -1
  759. package/src/shade/renderer/view/GPUViewSkyContext.d.ts +1 -1
  760. package/src/shade/renderer/view/GPUViewSkyContext.d.ts.map +1 -1
  761. package/src/shade/renderer/volumetrics/GPUViewVolumetrics.d.ts +2 -2
  762. package/src/shade/renderer/volumetrics/GPUViewVolumetrics.d.ts.map +1 -1
  763. package/src/shade/renderer/volumetrics/ParticipatingMediaVolume.d.ts +1 -1
  764. package/src/shade/renderer/volumetrics/ParticipatingMediaVolume.d.ts.map +1 -1
  765. package/src/shade/wgsl/emulator/CPUBitmapData.d.ts.map +1 -1
  766. package/src/view/View.d.ts +1 -1
  767. package/src/view/View.d.ts.map +1 -1
  768. package/src/view/elements/button/ButtonView.d.ts +1 -1
  769. package/src/view/elements/button/ButtonView.d.ts.map +1 -1
  770. package/src/view/elements/progress/SmoothProgressBar.d.ts +2 -2
  771. package/src/view/elements/progress/SmoothProgressBar.d.ts.map +1 -1
  772. package/src/view/elements/radial/RadialMenuElement.d.ts +3 -3
  773. package/src/view/elements/radial/RadialMenuElement.d.ts.map +1 -1
  774. package/src/view/elements/windrose/WindRoseDiagram.d.ts.map +1 -1
  775. package/src/view/layout/DockLayoutView.d.ts.map +1 -1
  776. package/src/view/layout/DrawerView.d.ts +2 -2
  777. package/src/view/layout/DrawerView.d.ts.map +1 -1
  778. package/src/view/layout/SplitView.d.ts +9 -9
  779. package/src/view/layout/SplitView.d.ts.map +1 -1
  780. package/src/view/minimap/MinimapMarkerCollection.d.ts +3 -2
  781. package/src/view/minimap/MinimapMarkerCollection.d.ts.map +1 -1
  782. package/src/view/minimap/MinimapMarkerCollection.js +28 -5
  783. package/src/view/minimap/dom/MinimapMarkerView.js +65 -34
  784. package/src/view/minimap/gl/MarkerGL.d.ts +15 -3
  785. package/src/view/minimap/gl/MarkerGL.d.ts.map +1 -1
  786. package/src/view/minimap/gl/MarkerGL.js +31 -4
  787. package/src/engine/physics/BULLET_REVIEW.md +0 -945
  788. package/src/engine/physics/CANNON_REVIEW.md +0 -1300
  789. package/src/engine/physics/CONSTRAINT_SOLVER_BENCH_LOG.md +0 -208
  790. package/src/engine/physics/CONSTRAINT_SOLVER_IMPROVEMENTS_PLAN.md +0 -364
  791. package/src/engine/physics/INTEPOLATION_SYSTEM_PLAN.md +0 -287
  792. package/src/engine/physics/JOLT_REVIEW.md +0 -913
  793. package/src/engine/physics/PLAN.md +0 -1120
  794. package/src/engine/physics/RAPIER_REVIEW.md +0 -934
  795. package/src/engine/physics/REVIEW_001_ACTION_PLAN.md +0 -642
  796. package/src/engine/physics/REVIEW_002.md +0 -151
  797. package/src/engine/physics/REVIEW_003.md +0 -166
  798. package/src/shade/descriptor/util/optional_clone.d.ts.map +0 -1
  799. package/src/shade/descriptor/util/optional_equality.d.ts.map +0 -1
  800. package/src/shade/descriptor/util/optional_hash.d.ts.map +0 -1
  801. package/src/shade/renderer/geometry/virtual/format/prototypeVGEOFormatViewer.js +0 -2063
  802. package/src/shade/renderer/particles/shaders/chunk_particle_curve_animation.d.ts +0 -19
  803. package/src/shade/renderer/particles/shaders/chunk_particle_curve_animation.d.ts.map +0 -1
  804. package/src/shade/renderer/particles/shaders/chunk_particle_curve_animation.js +0 -30
  805. package/src/shade/renderer/particles/shaders/chunk_particle_curve_disabled.d.ts +0 -11
  806. package/src/shade/renderer/particles/shaders/chunk_particle_curve_disabled.d.ts.map +0 -1
  807. package/src/shade/renderer/particles/shaders/chunk_particle_curve_disabled.js +0 -13
  808. /package/src/{shade/descriptor/util → core/model/object}/optional_clone.d.ts +0 -0
  809. /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.CURVE, VM_OP.LOAD_CONST, VM_OP.LOAD_ATTR, VM_OP.LOAD_BUILTIN,
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 `CURVE` is both.
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`), and whether every lane of the result is the same value (`broadcasts`).
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":"AAoJA;;;;;;GAMG;AACH,oCAHW,MAAM,GACJ,mBAAmB,CAY/B;AAnKD;;;;;;;;;;;;;;;;;GAiBG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,+CAA+C;AAC/C,2BADW,IAAI,MAAM,EAAE,mBAAmB,CAAC,CACL;;;;;;;kBA7BxB,OAAO;;;;;cAGP,OAAO;;;;;;gBAEP,OAAO;;;;;;eAGP,OAAO;;;;;;gBAGP,OAAO;;;;;;;;cAGP,OAAO;;;;;;;;;;sBAKP,OAAO"}
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 `CURVE` is both.
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`), and whether every lane of the result is the same value (`broadcasts`).
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;;YACb,OAAO,6BAA6B,EAAE,cAAc;aAAW,OAAO,2BAA2B,EAAE,eAAe;EAKxI"}
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,CA0Dc;0BA1EP,oCAAoC"}
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
- * The draw pipeline: the four additive accumulators, reverse-Z depth test against the scene, no
3
- * depth write.
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":"AAkIA;;;;GAIG;AACH,4CAFU,wBAAwB,CAa/B;AAEH,mEAAmE;AACnE,yEAAwD;AAExD,mDAAmD;AACnD,2DAAsD;yCAxJb,iEAAiE;4CAW9D,sDAAsD;iCAFjE,kCAAkC"}
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 vs_main(@builtin(vertex_index) vi : u32, @builtin(instance_index) ii : u32) -> ParticleVertexOut {
82
- return particle_billboard_vertex(vi, ii);
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 draw pipeline: the four additive accumulators, reverse-Z depth test against the scene, no
133
- * depth write.
134
- * @type {RenderPipelineDescriptor}
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
- export const PARTICLE_AVBOIT_DRAW_PIPELINE = RenderPipelineDescriptor.from({
137
- label: "Particle AVBOIT Draw",
138
- layout: resources.generatePipelineLayout(GPUShaderStage.VERTEX | GPUShaderStage.FRAGMENT),
139
- vertex: { module: { code: descriptor.source }, entryPoint: "vs_main" },
140
- fragment: {
141
- module: { code: descriptor.source },
142
- entryPoint: "fs_main",
143
- targets: AVBOIT_DRAW_TARGETS,
144
- },
145
- depthStencil: DepthStencilState.from({ format: "depth32float", depthWriteEnabled: false, depthCompare: "greater" }),
146
- primitive: { topology: "triangle-list", cullMode: "none" },
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":"AAaA;;;;;;;;;;;;;;;;GAgBG;AAEH;;;GAGG;AACH,kDAA8E;AAE9E;;;;;;;;GAQG;AACH,4BAFU,YAAY,CAOK;AAqD3B,iDAIG;6BA1G0B,mCAAmC;8BAGlC,+BAA+B"}
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":"AAaA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH;;;;GAIG;AACH,iDAFU,MAAM,CAGiD;AAiEjE,sDAIG;8BA9G2B,+BAA+B"}
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":";AA0DA;;;;;GAKG;AACH,gCAFU,YAAY,CAMS;AAuD/B,qDAIG;iDAxH8C,yBAAyB;6BAJ7C,mCAAmC;8BAClC,+BAA+B"}
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. Curve sampling uses the
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":"AAaA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH;;;GAGG;AACH,qDAFU,MAAM,CAGqD;AA8DrE,0DAIG;8BAvH2B,+BAA+B"}
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, into `gpu.sorted`, for a draw whose blending is order-dependent.
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, gpu, camera, emitter_database, pool, alive, counters, dispatch_args, bucket_count, near, far, }: {
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":"AAcA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH;IAjBqG,KAAK,EAA/F,OAAO,8DAA8D,EAAE,UAAU;IAClE,GAAG;QACI,cAAc;QACd,WAAW;QACX,SAAS;QACT,MAAM;;IACb,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,YAAY,EAA3B,MAAM;IACS,IAAI,EAAnB,MAAM;IACS,GAAG,EAAlB,MAAM;IACJ,MAAM,CA2ElB"}
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, into `gpu.sorted`, for a draw whose blending is order-dependent.
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
- // The four buffers below are made on the first frame that sorts, not with the rest of the pool,
61
- // because a system drawn through AVBOIT never sorts. Naming the missing one is worth a line:
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
- let histogram = graph_import_buffer(graph, gpu.sort_histogram, "particles/sort_histogram");
68
- let cursor = graph_import_buffer(graph, gpu.sort_cursor, "particles/sort_cursor");
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: { histogram, cursor, settings: { u_bucket_count: bucket_count } },
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, keys, histogram,
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
- const out = graph_compute_indirect_pass({
111
- graph,
112
- shader: shader_particle_sort_scatter,
113
- bindings: { keys, alive, scanned, counters, cursor, sorted },
114
- command: dispatch_args,
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, sampleCurve, }: {
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;WACK,MAAM;WAAS,MAAM;EAW1C;AAED;;;;;GAKG;AACH,mCAHW,MAAM,GACJ,MAAM,CAIlB;AAqED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH;WATW,WAAW;eACX,YAAY;oBACZ,MAAM;YACN,WAAW;eACX,MAAM,EAAE,EAAE;gBACV,MAAM;2BACG,MAAM,KAAK,MAAM,KAAK,MAAM;;YACzB,OAAO;eAAa,MAAM;EA+RhD"}
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"}