@woosh/meep-engine 2.169.1 → 2.169.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/editor/ecs/component/editors/NumericIntervalEditor.js +18 -35
- package/editor/ecs/component/editors/ObservedIntegerEditor.js +22 -43
- package/editor/ecs/component/editors/ObservedStringEditor.js +34 -51
- package/editor/ecs/component/editors/common/makeV3_editor.js +12 -30
- package/editor/ecs/component/editors/common/two_way_sync.js +50 -0
- package/editor/ecs/component/editors/geom/QuaternionEditor.js +20 -35
- package/editor/ecs/component/editors/geom/Vector1Editor.js +5 -28
- package/editor/ecs/component/editors/primitive/NumberEditor.js +15 -31
- package/editor/tools/paint/TerrainHeightPaintTool.js +22 -31
- package/editor/tools/paint/TerrainPaintTool.js +85 -13
- package/editor/tools/paint/TerrainTexturePaintTool.js +18 -29
- package/editor/view/ecs/components/TerrainController.js +1 -4
- package/package.json +1 -1
- package/src/DUPLICATION_AUDIT_2026_08_07/00_core_reuse_surface.md +738 -0
- package/src/DUPLICATION_AUDIT_2026_08_07/A_core_math_geom.md +79 -0
- package/src/DUPLICATION_AUDIT_2026_08_07/B_core_data.md +93 -0
- package/src/DUPLICATION_AUDIT_2026_08_07/C_gfx_render.md +80 -0
- package/src/DUPLICATION_AUDIT_2026_08_07/D_gfx_features.md +164 -0
- package/src/DUPLICATION_AUDIT_2026_08_07/E_physics.md +69 -0
- package/src/DUPLICATION_AUDIT_2026_08_07/F_sound.md +102 -0
- package/src/DUPLICATION_AUDIT_2026_08_07/G_net_save.md +129 -0
- package/src/DUPLICATION_AUDIT_2026_08_07/H_engine_misc.md +72 -0
- package/src/DUPLICATION_AUDIT_2026_08_07/I_generation_view.md +74 -0
- package/src/DUPLICATION_AUDIT_2026_08_07/K_crosscutting.md +169 -0
- package/src/DUPLICATION_AUDIT_2026_08_07.md +254 -0
- package/src/DUPLICATION_AUDIT_REMEDIATION.md +250 -0
- package/src/core/bvh2/bvh3/query/bvh_collect_user_data.js +2 -2
- package/src/core/bvh2/bvh3/query/bvh_query_leaves_generic.js +77 -77
- package/src/core/bvh2/bvh3/query/bvh_query_leaves_ray.js +90 -90
- package/src/core/bvh2/bvh3/query/bvh_query_leaves_ray_segment.js +94 -94
- package/src/core/bvh2/bvh3/query/bvh_query_user_data_generic.js +86 -86
- package/src/core/bvh2/bvh3/query/bvh_query_user_data_intersects_aabb.js +2 -2
- package/src/core/bvh2/bvh3/query/bvh_query_user_data_intersects_capsule.js +2 -2
- package/src/core/bvh2/bvh3/query/bvh_query_user_data_intersects_frustum.js +2 -2
- package/src/core/bvh2/bvh3/query/bvh_query_user_data_intersects_sphere.js +2 -2
- package/src/core/bvh2/bvh3/query/bvh_query_user_data_ray.js +96 -96
- package/src/core/bvh2/bvh3/query/bvh_query_user_data_ray_segment.js +100 -100
- package/src/core/bvh2/bvh3/query/compute_tight_near_far_clipping_planes.js +2 -2
- package/src/core/bvh8/aabb3_round_to_float32.d.ts +16 -0
- package/src/core/bvh8/aabb3_round_to_float32.d.ts.map +1 -0
- package/src/core/bvh8/aabb3_round_to_float32.js +22 -0
- package/src/core/bvh8/bvh8_geometry_validate.d.ts.map +1 -1
- package/src/core/bvh8/bvh8_geometry_validate.js +1 -12
- package/src/core/bvh8/bvh8_geometry_validate_indirect.d.ts.map +1 -1
- package/src/core/bvh8/bvh8_geometry_validate_indirect.js +1 -12
- package/src/core/cache/Cache.d.ts +13 -0
- package/src/core/cache/Cache.d.ts.map +1 -1
- package/src/core/cache/Cache.js +13 -0
- package/src/core/color/operations/color_darken.d.ts +5 -2
- package/src/core/color/operations/color_darken.d.ts.map +1 -1
- package/src/core/color/operations/color_darken.js +24 -33
- package/src/core/color/operations/color_desaturate.d.ts +5 -2
- package/src/core/color/operations/color_desaturate.d.ts.map +1 -1
- package/src/core/color/operations/color_desaturate.js +24 -33
- package/src/core/color/operations/color_lighten.d.ts +5 -2
- package/src/core/color/operations/color_lighten.d.ts.map +1 -1
- package/src/core/color/operations/color_lighten.js +24 -33
- package/src/core/color/operations/color_saturate.d.ts +5 -2
- package/src/core/color/operations/color_saturate.d.ts.map +1 -1
- package/src/core/color/operations/color_saturate.js +24 -33
- package/src/core/color/operations/color_scale_okhsv_channel.d.ts +28 -0
- package/src/core/color/operations/color_scale_okhsv_channel.d.ts.map +1 -0
- package/src/core/color/operations/color_scale_okhsv_channel.js +45 -0
- package/src/core/geom/2d/hash-grid/SpatialHashGrid.d.ts.map +1 -1
- package/src/core/geom/2d/hash-grid/SpatialHashGrid.js +12 -0
- package/src/core/geom/2d/line/segment2_intersects_segment2_2d.d.ts.map +1 -1
- package/src/core/geom/2d/line/segment2_intersects_segment2_2d.js +25 -29
- package/src/core/geom/2d/line/segment2_segment_compute_intersection_array_2d.d.ts.map +1 -1
- package/src/core/geom/2d/line/segment2_segment_compute_intersection_array_2d.js +46 -51
- package/src/core/geom/2d/line/segment2_segment_intersection_fractions.d.ts +31 -0
- package/src/core/geom/2d/line/segment2_segment_intersection_fractions.d.ts.map +1 -0
- package/src/core/geom/2d/line/segment2_segment_intersection_fractions.js +52 -0
- package/src/core/geom/2d/quad-tree/qt_collect_by_circle.d.ts +6 -1
- package/src/core/geom/2d/quad-tree/qt_collect_by_circle.d.ts.map +1 -1
- package/src/core/geom/2d/quad-tree/qt_collect_by_circle.js +39 -65
- package/src/core/geom/2d/quad-tree/qt_match_data_by_circle.d.ts +15 -5
- package/src/core/geom/2d/quad-tree/qt_match_data_by_circle.d.ts.map +1 -1
- package/src/core/geom/2d/quad-tree/qt_match_data_by_circle.js +101 -70
- package/src/core/geom/2d/r-tree/StaticR2Tree.d.ts.map +1 -1
- package/src/core/geom/2d/r-tree/StaticR2Tree.js +7 -3
- package/src/core/geom/3d/aabb/aabb3_intersects_ray_segment.d.ts +7 -8
- package/src/core/geom/3d/aabb/aabb3_intersects_ray_segment.d.ts.map +1 -1
- package/src/core/geom/3d/aabb/aabb3_intersects_ray_segment.js +15 -51
- package/src/core/geom/3d/atlas/param/atlas_chart_parameterize_bff.d.ts.map +1 -1
- package/src/core/geom/3d/atlas/param/atlas_chart_parameterize_bff.js +13 -14
- package/src/core/geom/3d/atlas/param/atlas_chart_parameterize_lscm.d.ts.map +1 -1
- package/src/core/geom/3d/atlas/param/atlas_chart_parameterize_lscm.js +2 -17
- package/src/core/geom/3d/atlas/segment/atlas_chart_roundness_delta.d.ts +22 -0
- package/src/core/geom/3d/atlas/segment/atlas_chart_roundness_delta.d.ts.map +1 -0
- package/src/core/geom/3d/atlas/segment/atlas_chart_roundness_delta.js +30 -0
- package/src/core/geom/3d/atlas/segment/atlas_segment_charts.d.ts +19 -0
- package/src/core/geom/3d/atlas/segment/atlas_segment_charts.d.ts.map +1 -1
- package/src/core/geom/3d/atlas/segment/atlas_segment_charts.js +5 -9
- package/src/core/geom/3d/atlas/segment/atlas_segment_charts_atomic.d.ts.map +1 -1
- package/src/core/geom/3d/atlas/segment/atlas_segment_charts_atomic.js +4 -12
- package/src/core/geom/3d/frustum/read_frustum_corner.d.ts +5 -0
- package/src/core/geom/3d/frustum/read_frustum_corner.d.ts.map +1 -1
- package/src/core/geom/3d/frustum/read_frustum_corner.js +8 -5
- package/src/core/geom/3d/line/line3_segment_segment_closest_point_pair.d.ts +33 -0
- package/src/core/geom/3d/line/line3_segment_segment_closest_point_pair.d.ts.map +1 -0
- package/src/core/geom/3d/line/line3_segment_segment_closest_point_pair.js +71 -0
- package/src/core/geom/3d/mat4/m4_compose.d.ts +5 -0
- package/src/core/geom/3d/mat4/m4_compose.d.ts.map +1 -1
- package/src/core/geom/3d/mat4/m4_compose.js +22 -53
- package/src/core/geom/3d/mat4/m4_decompose.d.ts +8 -0
- package/src/core/geom/3d/mat4/m4_decompose.d.ts.map +1 -1
- package/src/core/geom/3d/mat4/m4_decompose.js +84 -76
- package/src/core/geom/3d/mat4/m4_from_rotation_translation_scale.d.ts +2 -0
- package/src/core/geom/3d/mat4/m4_from_rotation_translation_scale.d.ts.map +1 -1
- package/src/core/geom/3d/mat4/m4_from_rotation_translation_scale.js +10 -44
- package/src/core/geom/3d/mat4/m4_from_rotation_translation_scale_scalar.d.ts +27 -0
- package/src/core/geom/3d/mat4/m4_from_rotation_translation_scale_scalar.d.ts.map +1 -0
- package/src/core/geom/3d/mat4/m4_from_rotation_translation_scale_scalar.js +67 -0
- package/src/core/geom/3d/plane/orient3d_fast.d.ts.map +1 -1
- package/src/core/geom/3d/plane/orient3d_fast.js +2 -22
- package/src/core/geom/3d/plane/orient3d_fast_point.d.ts +28 -0
- package/src/core/geom/3d/plane/orient3d_fast_point.d.ts.map +1 -0
- package/src/core/geom/3d/plane/orient3d_fast_point.js +47 -0
- package/src/core/geom/3d/quaternion/quat3_nlerp.d.ts +48 -0
- package/src/core/geom/3d/quaternion/quat3_nlerp.d.ts.map +1 -0
- package/src/core/geom/3d/quaternion/quat3_nlerp.js +72 -0
- package/src/core/geom/3d/shape/AbstractShape3D.d.ts +9 -0
- package/src/core/geom/3d/shape/AbstractShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/AbstractShape3D.js +44 -1
- package/src/core/geom/3d/shape/BoxShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/BoxShape3D.js +2 -1
- package/src/core/geom/3d/shape/CapsuleShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/CapsuleShape3D.js +2 -1
- package/src/core/geom/3d/shape/ConvexHullShape3D.d.ts +0 -1
- package/src/core/geom/3d/shape/ConvexHullShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/ConvexHullShape3D.js +25 -56
- package/src/core/geom/3d/shape/CylinderShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/CylinderShape3D.js +2 -1
- package/src/core/geom/3d/shape/HeightMapShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/HeightMapShape3D.js +3 -5
- package/src/core/geom/3d/shape/MeshShape3D.d.ts +0 -11
- package/src/core/geom/3d/shape/MeshShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/MeshShape3D.js +27 -106
- package/src/core/geom/3d/shape/Triangle3D.d.ts +1 -1
- package/src/core/geom/3d/shape/Triangle3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/Triangle3D.js +10 -31
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_carve_outside_surface.d.ts.map +1 -1
- package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_carve_outside_surface.js +8 -57
- package/src/core/geom/3d/topology/simplify/decimate_edge_collapse_snap.d.ts +8 -1
- package/src/core/geom/3d/topology/simplify/decimate_edge_collapse_snap.d.ts.map +1 -1
- package/src/core/geom/3d/topology/simplify/decimate_edge_collapse_snap.js +281 -272
- package/src/core/geom/3d/topology/simplify/quadratic/build_vertex_quadrics.d.ts.map +1 -1
- package/src/core/geom/3d/topology/simplify/quadratic/build_vertex_quadrics.js +3 -4
- package/src/core/geom/3d/topology/simplify/quadratic/quadric3_set_from_plane_through_point.d.ts +22 -0
- package/src/core/geom/3d/topology/simplify/quadratic/quadric3_set_from_plane_through_point.d.ts.map +1 -0
- package/src/core/geom/3d/topology/simplify/quadratic/quadric3_set_from_plane_through_point.js +27 -0
- package/src/core/geom/3d/topology/struct/binary/io/bt_boundary_loop.d.ts +24 -0
- package/src/core/geom/3d/topology/struct/binary/io/bt_boundary_loop.d.ts.map +1 -0
- package/src/core/geom/3d/topology/struct/binary/io/bt_boundary_loop.js +73 -0
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_close_boundary_holes.d.ts.map +1 -1
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_close_boundary_holes.js +2 -53
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_compute_vertex_quadrics.d.ts.map +1 -1
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_compute_vertex_quadrics.js +3 -4
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_fill_small_holes.d.ts.map +1 -1
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_fill_small_holes.js +3 -33
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_from_indexed_geometry.d.ts.map +1 -1
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_from_indexed_geometry.js +4 -37
- package/src/core/geom/3d/topology/struct/binary/io/face/bt_face_poke.d.ts.map +1 -1
- package/src/core/geom/3d/topology/struct/binary/io/face/bt_face_poke.js +3 -32
- package/src/core/geom/3d/topology/struct/binary/query/bt_face_read_triangle.d.ts +32 -0
- package/src/core/geom/3d/topology/struct/binary/query/bt_face_read_triangle.d.ts.map +1 -0
- package/src/core/geom/3d/topology/struct/binary/query/bt_face_read_triangle.js +66 -0
- package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_face_find_path.d.ts.map +1 -1
- package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_face_find_path.js +703 -728
- package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_face_find_path_polyanya.d.ts.map +1 -1
- package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_face_find_path_polyanya.js +13 -24
- package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_sample_interior_grid_points.d.ts.map +1 -1
- package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_sample_interior_grid_points.js +8 -54
- package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_surface_ray_parity.d.ts +35 -0
- package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_surface_ray_parity.d.ts.map +1 -0
- package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_surface_ray_parity.js +82 -0
- package/src/core/geom/3d/triangle/tri3_closest_point.d.ts +29 -0
- package/src/core/geom/3d/triangle/tri3_closest_point.d.ts.map +1 -0
- package/src/core/geom/3d/triangle/tri3_closest_point.js +65 -0
- package/src/core/geom/3d/triangle/tri3_flatten_isometric.d.ts +42 -0
- package/src/core/geom/3d/triangle/tri3_flatten_isometric.d.ts.map +1 -0
- package/src/core/geom/3d/triangle/tri3_flatten_isometric.js +79 -0
- package/src/core/geom/Vector2.d.ts.map +1 -1
- package/src/core/geom/Vector2.js +2 -1
- package/src/core/geom/random/random_orthonormal_basis.d.ts +21 -0
- package/src/core/geom/random/random_orthonormal_basis.d.ts.map +1 -0
- package/src/core/geom/random/random_orthonormal_basis.js +31 -0
- package/src/core/geom/vec2/v2_rotate.d.ts +18 -0
- package/src/core/geom/vec2/v2_rotate.d.ts.map +1 -0
- package/src/core/geom/vec2/v2_rotate.js +21 -0
- package/src/core/geom/vec2/v2_rotate_cos_sin.d.ts +19 -0
- package/src/core/geom/vec2/v2_rotate_cos_sin.d.ts.map +1 -0
- package/src/core/geom/vec2/v2_rotate_cos_sin.js +21 -0
- package/src/core/graph/csr/csr_graph_from_undirected_edge_list.d.ts +30 -0
- package/src/core/graph/csr/csr_graph_from_undirected_edge_list.d.ts.map +1 -0
- package/src/core/graph/csr/csr_graph_from_undirected_edge_list.js +94 -0
- package/src/core/graph/layout/CircleLayout.d.ts.map +1 -1
- package/src/core/graph/layout/CircleLayout.js +6 -29
- package/src/core/graph/layout/box/BoxLayouter.d.ts.map +1 -1
- package/src/core/graph/layout/box/BoxLayouter.js +2 -26
- package/src/core/graph/layout/box/position_box_next_to_box.d.ts.map +1 -1
- package/src/core/graph/layout/box/position_box_next_to_box.js +2 -1
- package/src/core/graph/layout/computeDisconnectedSubGraphs.d.ts.map +1 -1
- package/src/core/graph/layout/computeDisconnectedSubGraphs.js +14 -3
- package/src/core/graph/layout/graph_peel_topological_layer.d.ts +25 -0
- package/src/core/graph/layout/graph_peel_topological_layer.d.ts.map +1 -0
- package/src/core/graph/layout/graph_peel_topological_layer.js +45 -0
- package/src/core/math/hash/hash_mix2.d.ts +21 -0
- package/src/core/math/hash/hash_mix2.d.ts.map +1 -0
- package/src/core/math/hash/hash_mix2.js +22 -0
- package/src/core/math/hash/hash_mix3.d.ts +16 -0
- package/src/core/math/hash/hash_mix3.d.ts.map +1 -0
- package/src/core/math/hash/hash_mix3.js +19 -0
- package/src/core/math/lookup/LUT_HEATMAP.d.ts +17 -0
- package/src/core/math/lookup/LUT_HEATMAP.d.ts.map +1 -0
- package/src/core/math/lookup/LUT_HEATMAP.js +30 -0
- package/src/core/math/noise/curl_noise_3d.d.ts +6 -0
- package/src/core/math/noise/curl_noise_3d.d.ts.map +1 -1
- package/src/core/math/noise/curl_noise_3d.js +18 -27
- package/src/core/math/statistics/hammersley_sequence.d.ts +28 -16
- package/src/core/math/statistics/hammersley_sequence.d.ts.map +1 -1
- package/src/core/math/statistics/hammersley_sequence.js +53 -34
- package/src/core/science/units/MEASUREMENT_UNITS_SI.d.ts +3 -0
- package/src/core/science/units/MEASUREMENT_UNITS_SI.d.ts.map +1 -1
- package/src/core/science/units/MEASUREMENT_UNITS_SI.js +5 -16
- package/src/engine/animation/TransitionFunctions.d.ts +31 -0
- package/src/engine/animation/TransitionFunctions.d.ts.map +1 -1
- package/src/engine/animation/TransitionFunctions.js +44 -0
- package/src/engine/animation/curve/animation_curve_binary_codec.d.ts +29 -0
- package/src/engine/animation/curve/animation_curve_binary_codec.d.ts.map +1 -0
- package/src/engine/animation/curve/animation_curve_binary_codec.js +60 -0
- package/src/engine/animation/curve/draw/canvas_point_to_curve.d.ts +16 -0
- package/src/engine/animation/curve/draw/canvas_point_to_curve.d.ts.map +1 -0
- package/src/engine/animation/curve/draw/canvas_point_to_curve.js +22 -0
- package/src/engine/animation/curve/draw/curve_point_to_canvas.d.ts +27 -0
- package/src/engine/animation/curve/draw/curve_point_to_canvas.d.ts.map +1 -0
- package/src/engine/animation/curve/draw/curve_point_to_canvas.js +38 -0
- package/src/engine/animation/curve/draw/position_canvas_to_curve.d.ts +2 -0
- package/src/engine/animation/curve/draw/position_canvas_to_curve.d.ts.map +1 -1
- package/src/engine/animation/curve/draw/position_canvas_to_curve.js +22 -24
- package/src/engine/animation/curve/draw/position_curve_to_canvas.d.ts +2 -0
- package/src/engine/animation/curve/draw/position_curve_to_canvas.d.ts.map +1 -1
- package/src/engine/animation/curve/draw/position_curve_to_canvas.js +22 -25
- package/src/engine/animation/curve/editor/canvas2dDrawWorldAxisLabels.d.ts.map +1 -1
- package/src/engine/animation/curve/editor/canvas2dDrawWorldAxisLabels.js +3 -2
- package/src/engine/animation/curve/editor/canvas2dPlotCurvePoints.d.ts.map +1 -1
- package/src/engine/animation/curve/editor/canvas2dPlotCurvePoints.js +14 -14
- package/src/engine/animation/removeEntityWithMeshParticlesEffect.d.ts.map +1 -1
- package/src/engine/animation/removeEntityWithMeshParticlesEffect.js +5 -0
- package/src/engine/asset/loaders/GLTFAssetLoader.d.ts.map +1 -1
- package/src/engine/asset/loaders/GLTFAssetLoader.js +25 -51
- package/src/engine/asset/loaders/material/StaticMaterialCache.d.ts +3 -2
- package/src/engine/asset/loaders/material/StaticMaterialCache.d.ts.map +1 -1
- package/src/engine/asset/loaders/material/StaticMaterialCache.js +16 -55
- package/src/engine/asset/loaders/material/TextureCoalescer.d.ts +32 -0
- package/src/engine/asset/loaders/material/TextureCoalescer.d.ts.map +1 -0
- package/src/engine/asset/loaders/material/TextureCoalescer.js +68 -0
- package/src/engine/asset/loaders/material/traverseMaterialTextures.d.ts +10 -2
- package/src/engine/asset/loaders/material/traverseMaterialTextures.d.ts.map +1 -1
- package/src/engine/asset/loaders/material/traverseMaterialTextures.js +10 -2
- package/src/engine/control/first-person/abilities/Mantle.d.ts.map +1 -1
- package/src/engine/control/first-person/abilities/Mantle.js +10 -26
- package/src/engine/ecs/dynamic_actions/actions/definition/WeightedRandomActionDescription.d.ts.map +1 -1
- package/src/engine/ecs/dynamic_actions/actions/definition/WeightedRandomActionDescription.js +5 -0
- package/src/engine/ecs/evaluation/complex/PointFitnessGaussianBlur.d.ts +22 -2
- package/src/engine/ecs/evaluation/complex/PointFitnessGaussianBlur.d.ts.map +1 -1
- package/src/engine/ecs/evaluation/complex/PointFitnessGaussianBlur.js +92 -41
- package/src/engine/ecs/gui/hud/HeadsUpDisplaySystem.d.ts +3 -1
- package/src/engine/ecs/gui/hud/HeadsUpDisplaySystem.d.ts.map +1 -1
- package/src/engine/ecs/gui/hud/HeadsUpDisplaySystem.js +14 -16
- package/src/engine/ecs/gui/parallax/GuiElementParallaxSystem.d.ts.map +1 -1
- package/src/engine/ecs/gui/parallax/GuiElementParallaxSystem.js +16 -29
- package/src/engine/ecs/ik/OneBoneSurfaceAlignmentSolver.d.ts.map +1 -1
- package/src/engine/ecs/ik/OneBoneSurfaceAlignmentSolver.js +12 -74
- package/src/engine/ecs/ik/TwoBoneInverseKinematicsSolver.d.ts.map +1 -1
- package/src/engine/ecs/ik/TwoBoneInverseKinematicsSolver.js +10 -73
- package/src/engine/ecs/ik/ik_probe_terrain_contact.d.ts +38 -0
- package/src/engine/ecs/ik/ik_probe_terrain_contact.d.ts.map +1 -0
- package/src/engine/ecs/ik/ik_probe_terrain_contact.js +119 -0
- package/src/engine/ecs/terrain/util/paintTerrainOverlayViaLookupTable.d.ts +0 -1
- package/src/engine/ecs/terrain/util/paintTerrainOverlayViaLookupTable.d.ts.map +1 -1
- package/src/engine/ecs/terrain/util/paintTerrainOverlayViaLookupTable.js +2 -14
- package/src/engine/graphics/FULL_SCREEN_QUAD_VERTEX_SHADER.d.ts +12 -1
- package/src/engine/graphics/FULL_SCREEN_QUAD_VERTEX_SHADER.d.ts.map +1 -1
- package/src/engine/graphics/FULL_SCREEN_QUAD_VERTEX_SHADER.js +14 -10
- package/src/engine/graphics/ecs/camera/auto_set_camera_clipping_planes.d.ts.map +1 -1
- package/src/engine/graphics/ecs/camera/auto_set_camera_clipping_planes.js +7 -28
- package/src/engine/graphics/ecs/highlight/renderer/HighlightDecodeShader.d.ts +1 -2
- package/src/engine/graphics/ecs/highlight/renderer/HighlightDecodeShader.d.ts.map +1 -1
- package/src/engine/graphics/ecs/highlight/renderer/HighlightDecodeShader.js +4 -12
- package/src/engine/graphics/ecs/highlight/renderer/OutlineRenderer.d.ts.map +1 -1
- package/src/engine/graphics/ecs/highlight/renderer/OutlineRenderer.js +2 -11
- package/src/engine/graphics/ecs/highlight/renderer/makeBlurShader_9.d.ts +1 -2
- package/src/engine/graphics/ecs/highlight/renderer/makeBlurShader_9.d.ts.map +1 -1
- package/src/engine/graphics/ecs/highlight/renderer/makeBlurShader_9.js +3 -11
- package/src/engine/graphics/ecs/highlight/renderer/makeDilationShader.d.ts +1 -2
- package/src/engine/graphics/ecs/highlight/renderer/makeDilationShader.d.ts.map +1 -1
- package/src/engine/graphics/ecs/highlight/renderer/makeDilationShader.js +3 -11
- package/src/engine/graphics/ecs/highlight/renderer/make_screen_space_quad_material.d.ts +33 -0
- package/src/engine/graphics/ecs/highlight/renderer/make_screen_space_quad_material.d.ts.map +1 -0
- package/src/engine/graphics/ecs/highlight/renderer/make_screen_space_quad_material.js +44 -0
- package/src/engine/graphics/ecs/highlight/system/HighlightSystemBase.d.ts +55 -0
- package/src/engine/graphics/ecs/highlight/system/HighlightSystemBase.d.ts.map +1 -0
- package/src/engine/graphics/ecs/highlight/system/HighlightSystemBase.js +205 -0
- package/src/engine/graphics/ecs/highlight/system/MeshHighlightSystem.d.ts +4 -45
- package/src/engine/graphics/ecs/highlight/system/MeshHighlightSystem.d.ts.map +1 -1
- package/src/engine/graphics/ecs/highlight/system/MeshHighlightSystem.js +39 -162
- package/src/engine/graphics/ecs/highlight/system/RenderableHighlightSystem.d.ts +4 -51
- package/src/engine/graphics/ecs/highlight/system/RenderableHighlightSystem.d.ts.map +1 -1
- package/src/engine/graphics/ecs/highlight/system/RenderableHighlightSystem.js +34 -164
- package/src/engine/graphics/ecs/highlight/system/ShadedGeometryHighlightSystem.d.ts +5 -57
- package/src/engine/graphics/ecs/highlight/system/ShadedGeometryHighlightSystem.d.ts.map +1 -1
- package/src/engine/graphics/ecs/highlight/system/ShadedGeometryHighlightSystem.js +48 -175
- package/src/engine/graphics/ecs/light/shadow/extend_shadow_camera_near_for_casters.d.ts.map +1 -1
- package/src/engine/graphics/ecs/light/shadow/extend_shadow_camera_near_for_casters.js +7 -25
- package/src/engine/graphics/ecs/make_bvh_depth_range_computer.d.ts +26 -0
- package/src/engine/graphics/ecs/make_bvh_depth_range_computer.d.ts.map +1 -0
- package/src/engine/graphics/ecs/make_bvh_depth_range_computer.js +33 -0
- package/src/engine/graphics/ecs/mesh/MeshSystem.d.ts.map +1 -1
- package/src/engine/graphics/ecs/mesh/MeshSystem.js +2 -5
- package/src/engine/graphics/ecs/mesh-v2/ShadedGeometrySystem.d.ts.map +1 -1
- package/src/engine/graphics/ecs/mesh-v2/ShadedGeometrySystem.js +2 -5
- package/src/engine/graphics/ecs/render_layers_compute_depth_range.d.ts +35 -0
- package/src/engine/graphics/ecs/render_layers_compute_depth_range.d.ts.map +1 -0
- package/src/engine/graphics/ecs/render_layers_compute_depth_range.js +64 -0
- package/src/engine/graphics/ecs/trail2d/Trail2DSystem.d.ts.map +1 -1
- package/src/engine/graphics/ecs/trail2d/Trail2DSystem.js +2 -5
- package/src/engine/graphics/ecs/trail3d/Trail3DSystem.d.ts.map +1 -1
- package/src/engine/graphics/ecs/trail3d/Trail3DSystem.js +2 -5
- package/src/engine/graphics/ecs/water/WaterSystem.d.ts.map +1 -1
- package/src/engine/graphics/ecs/water/WaterSystem.js +2 -5
- package/src/engine/graphics/geometry/buffered/query/bvh32_geometry_nearest.d.ts.map +1 -1
- package/src/engine/graphics/geometry/buffered/query/bvh32_geometry_nearest.js +22 -94
- package/src/engine/graphics/geometry/buffered/query/bvh32_geometry_overlap_clipping_volume.d.ts.map +1 -1
- package/src/engine/graphics/geometry/buffered/query/bvh32_geometry_overlap_clipping_volume.js +17 -57
- package/src/engine/graphics/geometry/buffered/query/bvh32_geometry_raycast.d.ts.map +1 -1
- package/src/engine/graphics/geometry/buffered/query/bvh32_geometry_raycast.js +17 -57
- package/src/engine/graphics/geometry/buffered/query/nearest_point_on_triangle_record.d.ts +30 -0
- package/src/engine/graphics/geometry/buffered/query/nearest_point_on_triangle_record.d.ts.map +1 -0
- package/src/engine/graphics/geometry/buffered/query/nearest_point_on_triangle_record.js +87 -0
- package/src/engine/graphics/geometry/buffered/query/query_bvh_geometry_nearest.d.ts.map +1 -1
- package/src/engine/graphics/geometry/buffered/query/query_bvh_geometry_nearest.js +11 -55
- package/src/engine/graphics/geometry/buffered/read_triangle_vertices.d.ts +29 -0
- package/src/engine/graphics/geometry/buffered/read_triangle_vertices.d.ts.map +1 -0
- package/src/engine/graphics/geometry/buffered/read_triangle_vertices.js +102 -0
- package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderDepthV0.d.ts.map +1 -1
- package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderDepthV0.js +17 -122
- package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderLitV0.d.ts.map +1 -1
- package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderLitV0.js +15 -194
- package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderNormalsV0.d.ts.map +1 -1
- package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderNormalsV0.js +12 -108
- package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderPerPixelV0.d.ts.map +1 -1
- package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderPerPixelV0.js +14 -183
- package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderV0.d.ts.map +1 -1
- package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderV0.js +12 -154
- package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderViewportDepthV0.d.ts.map +1 -1
- package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderViewportDepthV0.js +10 -94
- package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderWireframeV0.d.ts.map +1 -1
- package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderWireframeV0.js +8 -72
- package/src/engine/graphics/impostors/octahedral/shader/glsl/common.glsl +10 -0
- package/src/engine/graphics/impostors/voxel/bake/read_atlas_to_samples.d.ts.map +1 -1
- package/src/engine/graphics/impostors/voxel/bake/read_atlas_to_samples.js +79 -58
- package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderDepthV0.d.ts.map +1 -1
- package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderDepthV0.js +11 -22
- package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderLitV0.d.ts.map +1 -1
- package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderLitV0.js +7 -16
- package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderNormalsV0.d.ts.map +1 -1
- package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderNormalsV0.js +5 -9
- package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderV0.d.ts.map +1 -1
- package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderV0.js +4 -19
- package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderViewportDepthV0.d.ts.map +1 -1
- package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderViewportDepthV0.js +5 -9
- package/src/engine/graphics/material/SplatMaterial.d.ts.map +1 -1
- package/src/engine/graphics/material/SplatMaterial.js +2 -17
- package/src/engine/graphics/material/WaterMaterial.d.ts.map +1 -1
- package/src/engine/graphics/material/WaterMaterial.js +3 -18
- package/src/engine/graphics/material/manager/compilers/CoalesceTextures.d.ts +4 -4
- package/src/engine/graphics/material/manager/compilers/CoalesceTextures.d.ts.map +1 -1
- package/src/engine/graphics/material/manager/compilers/CoalesceTextures.js +25 -70
- package/src/engine/graphics/particles/ecs/ParticleEmitterSystem.d.ts.map +1 -1
- package/src/engine/graphics/particles/ecs/ParticleEmitterSystem.js +2 -5
- package/src/engine/graphics/particles/node-based/codegen/glsl/getTypeByteSize.d.ts +8 -11
- package/src/engine/graphics/particles/node-based/codegen/glsl/getTypeByteSize.d.ts.map +1 -1
- package/src/engine/graphics/particles/node-based/codegen/glsl/getTypeByteSize.js +20 -21
- package/src/engine/graphics/particles/node-based/nodes/particle_data_type_component_count.d.ts +39 -0
- package/src/engine/graphics/particles/node-based/nodes/particle_data_type_component_count.d.ts.map +1 -0
- package/src/engine/graphics/particles/node-based/nodes/particle_data_type_component_count.js +45 -0
- package/src/engine/graphics/particles/node-based/particle/ParticleAttributeSpecification.d.ts +6 -8
- package/src/engine/graphics/particles/node-based/particle/ParticleAttributeSpecification.d.ts.map +1 -1
- package/src/engine/graphics/particles/node-based/particle/ParticleAttributeSpecification.js +2 -13
- package/src/engine/graphics/particles/particular/engine/utils/distributeParticlesOnObject3D.d.ts.map +1 -1
- package/src/engine/graphics/particles/particular/engine/utils/distributeParticlesOnObject3D.js +16 -78
- package/src/engine/graphics/particles/particular/engine/utils/distribute_points_on_indexed_triangles.d.ts +45 -0
- package/src/engine/graphics/particles/particular/engine/utils/distribute_points_on_indexed_triangles.d.ts.map +1 -0
- package/src/engine/graphics/particles/particular/engine/utils/distribute_points_on_indexed_triangles.js +168 -0
- package/src/engine/graphics/particles/particular/engine/utils/distrubuteParticlesOnMesh.d.ts.map +1 -1
- package/src/engine/graphics/particles/particular/engine/utils/distrubuteParticlesOnMesh.js +11 -115
- package/src/engine/graphics/postprocess/threejs/shaders/CopyShader.d.ts +24 -16
- package/src/engine/graphics/postprocess/threejs/shaders/CopyShader.d.ts.map +1 -1
- package/src/engine/graphics/postprocess/threejs/shaders/CopyShader.js +15 -47
- package/src/engine/graphics/render/buffer/simple-fx/ao/AmbientOcclusionPostProcessEffect.d.ts +4 -0
- package/src/engine/graphics/render/buffer/simple-fx/ao/AmbientOcclusionPostProcessEffect.d.ts.map +1 -1
- package/src/engine/graphics/render/buffer/simple-fx/ao/AmbientOcclusionPostProcessEffect.js +4 -0
- package/src/engine/graphics/sh3/build_injected_shader.d.ts +51 -0
- package/src/engine/graphics/sh3/build_injected_shader.d.ts.map +1 -0
- package/src/engine/graphics/sh3/build_injected_shader.js +56 -0
- package/src/engine/graphics/sh3/gi/material/MaterialTransformer.d.ts.map +1 -1
- package/src/engine/graphics/sh3/gi/material/MaterialTransformer.js +10 -1
- package/src/engine/graphics/sh3/gi/material/chunk_lpv_get_irradiance_at.d.ts.map +1 -1
- package/src/engine/graphics/sh3/gi/material/chunk_lpv_get_irradiance_at.js +17 -0
- package/src/engine/graphics/sh3/gi/material/common.d.ts +1 -1
- package/src/engine/graphics/sh3/gi/material/common.js +6 -222
- package/src/engine/graphics/sh3/gi/material/space_fragment/build_fragment_shader.d.ts.map +1 -1
- package/src/engine/graphics/sh3/gi/material/space_fragment/build_fragment_shader.js +7 -11
- package/src/engine/graphics/sh3/gi/material/space_fragment/build_vertex_shader.d.ts.map +1 -1
- package/src/engine/graphics/sh3/gi/material/space_fragment/build_vertex_shader.js +27 -29
- package/src/engine/graphics/sh3/gi/material/space_vertex/build_fragment_shader.d.ts.map +1 -1
- package/src/engine/graphics/sh3/gi/material/space_vertex/build_fragment_shader.js +7 -11
- package/src/engine/graphics/sh3/gi/material/space_vertex/build_vertex_shader.d.ts.map +1 -1
- package/src/engine/graphics/sh3/gi/material/space_vertex/build_vertex_shader.js +7 -12
- package/src/engine/graphics/sh3/grid_dilate_average.d.ts +38 -0
- package/src/engine/graphics/sh3/grid_dilate_average.d.ts.map +1 -0
- package/src/engine/graphics/sh3/grid_dilate_average.js +175 -0
- package/src/engine/graphics/sh3/lightmap/lightmap_dilate.d.ts +4 -0
- package/src/engine/graphics/sh3/lightmap/lightmap_dilate.d.ts.map +1 -1
- package/src/engine/graphics/sh3/lightmap/lightmap_dilate.js +7 -70
- package/src/engine/graphics/sh3/lpg/light_probe_grid_dilate.d.ts +6 -0
- package/src/engine/graphics/sh3/lpg/light_probe_grid_dilate.d.ts.map +1 -1
- package/src/engine/graphics/sh3/lpg/light_probe_grid_dilate.js +14 -113
- package/src/engine/graphics/sh3/lpg/material/chunk_lpg_get_irradiance_at.d.ts.map +1 -1
- package/src/engine/graphics/sh3/lpg/material/chunk_lpg_get_irradiance_at.js +7 -0
- package/src/engine/graphics/sh3/lpg/material/space_fragment/build_fragment_shader.d.ts.map +1 -1
- package/src/engine/graphics/sh3/lpg/material/space_fragment/build_fragment_shader.js +5 -8
- package/src/engine/graphics/sh3/lpg/material/space_fragment/build_vertex_shader.d.ts.map +1 -1
- package/src/engine/graphics/sh3/lpg/material/space_fragment/build_vertex_shader.js +5 -8
- package/src/engine/graphics/sh3/lpg/material/space_vertex/build_fragment_shader.d.ts.map +1 -1
- package/src/engine/graphics/sh3/lpg/material/space_vertex/build_fragment_shader.js +5 -8
- package/src/engine/graphics/sh3/lpg/material/space_vertex/build_vertex_shader.d.ts.map +1 -1
- package/src/engine/graphics/sh3/lpg/material/space_vertex/build_vertex_shader.js +5 -8
- package/src/engine/graphics/sh3/lpv/depth/chunk_probe_depth_sampling.d.ts +38 -0
- package/src/engine/graphics/sh3/lpv/depth/chunk_probe_depth_sampling.d.ts.map +1 -0
- package/src/engine/graphics/sh3/lpv/depth/chunk_probe_depth_sampling.js +265 -0
- package/src/engine/graphics/sh3/lpv/depth/octahedral/shader/visualize.frag.glsl +11 -0
- package/src/engine/graphics/sh3/lpv/depth/octahedral/v2/VLPDepthMapVisualisation.d.ts.map +1 -1
- package/src/engine/graphics/sh3/lpv/depth/octahedral/v2/VLPDepthMapVisualisation.js +5 -1
- package/src/engine/graphics/sh3/lpv/depth/octahedral/v2/visualise.frag.glsl +189 -419
- package/src/engine/graphics/sh3/shader/visualize.frag.d.ts +1 -1
- package/src/engine/graphics/sh3/shader/visualize.frag.js +7 -0
- package/src/engine/graphics/shaders/chunks/glsl_octahedral_impostor.d.ts +102 -0
- package/src/engine/graphics/shaders/chunks/glsl_octahedral_impostor.d.ts.map +1 -0
- package/src/engine/graphics/shaders/chunks/glsl_octahedral_impostor.js +277 -0
- package/src/engine/graphics/shaders/chunks/glsl_packing.d.ts +29 -0
- package/src/engine/graphics/shaders/chunks/glsl_packing.d.ts.map +1 -0
- package/src/engine/graphics/shaders/chunks/glsl_packing.js +30 -0
- package/src/engine/graphics/shaders/chunks/glsl_voxel_impostor_splat.d.ts +40 -0
- package/src/engine/graphics/shaders/chunks/glsl_voxel_impostor_splat.d.ts.map +1 -0
- package/src/engine/graphics/shaders/chunks/glsl_voxel_impostor_splat.js +57 -0
- package/src/engine/graphics/shaders/lib/make_clouds_uniforms.d.ts +22 -0
- package/src/engine/graphics/shaders/lib/make_clouds_uniforms.d.ts.map +1 -0
- package/src/engine/graphics/shaders/lib/make_clouds_uniforms.js +39 -0
- package/src/engine/graphics/texture/attribute_spec_to_three_format.d.ts +6 -0
- package/src/engine/graphics/texture/attribute_spec_to_three_format.d.ts.map +1 -1
- package/src/engine/graphics/texture/attribute_spec_to_three_format.js +9 -9
- package/src/engine/graphics/texture/channel_count_to_format_prefix.d.ts +14 -0
- package/src/engine/graphics/texture/channel_count_to_format_prefix.d.ts.map +1 -0
- package/src/engine/graphics/texture/channel_count_to_format_prefix.js +26 -0
- package/src/engine/graphics/texture/computeThreeTextureInternalFormatFromDataType.d.ts.map +1 -1
- package/src/engine/graphics/texture/computeThreeTextureInternalFormatFromDataType.js +2 -20
- package/src/engine/graphics/texture/normalized_internal_format.d.ts.map +1 -1
- package/src/engine/graphics/texture/normalized_internal_format.js +2 -20
- package/src/engine/graphics/texture/sampler/convertTexture2Sampler2D.d.ts.map +1 -1
- package/src/engine/graphics/texture/sampler/convertTexture2Sampler2D.js +9 -3
- package/src/engine/input/devices/gamepad/GamepadDeviceLayout.d.ts +54 -0
- package/src/engine/input/devices/gamepad/GamepadDeviceLayout.d.ts.map +1 -0
- package/src/engine/input/devices/gamepad/GamepadDeviceLayout.js +323 -0
- package/src/engine/input/devices/gamepad/GamepadHandle.d.ts +21 -2
- package/src/engine/input/devices/gamepad/GamepadHandle.d.ts.map +1 -1
- package/src/engine/input/devices/gamepad/GamepadHandle.js +39 -11
- package/src/engine/input/devices/gamepad/GamepadLayout.d.ts +128 -0
- package/src/engine/input/devices/gamepad/GamepadLayout.d.ts.map +1 -0
- package/src/engine/input/devices/gamepad/GamepadLayout.js +160 -0
- package/src/engine/input/devices/gamepad/GamepadStandardMapping.d.ts +10 -0
- package/src/engine/input/devices/gamepad/GamepadStandardMapping.d.ts.map +1 -1
- package/src/engine/input/devices/gamepad/GamepadStandardMapping.js +11 -0
- package/src/engine/input/devices/gamepad/GamepadStick.d.ts +5 -1
- package/src/engine/input/devices/gamepad/GamepadStick.d.ts.map +1 -1
- package/src/engine/input/devices/gamepad/GamepadStick.js +5 -1
- package/src/engine/input/devices/gamepad/gamepad_layout_database.d.ts +27 -0
- package/src/engine/input/devices/gamepad/gamepad_layout_database.d.ts.map +1 -0
- package/src/engine/input/devices/gamepad/gamepad_layout_database.js +144 -0
- package/src/engine/input/devices/gamepad/gamepad_read_hat_axis.d.ts +25 -0
- package/src/engine/input/devices/gamepad/gamepad_read_hat_axis.d.ts.map +1 -0
- package/src/engine/input/devices/gamepad/gamepad_read_hat_axis.js +61 -0
- package/src/engine/input/devices/gamepad/prototypeGamepadTester.d.ts +2 -0
- package/src/engine/input/devices/gamepad/prototypeGamepadTester.d.ts.map +1 -0
- package/src/engine/input/devices/gamepad/prototypeGamepadTester.js +2124 -0
- package/src/engine/input/ecs/util/TopDownCameraControllerHelper.d.ts.map +1 -1
- package/src/engine/input/ecs/util/TopDownCameraControllerHelper.js +3 -33
- package/src/engine/intelligence/behavior/util/RandomDelayBehavior.d.ts.map +1 -1
- package/src/engine/intelligence/behavior/util/RandomDelayBehavior.js +5 -0
- package/src/engine/network/adapters/QuaternionInterpolationAdapter.d.ts.map +1 -1
- package/src/engine/network/adapters/QuaternionInterpolationAdapter.js +18 -19
- package/src/engine/network/adapters/TransformInterpolationAdapter.d.ts.map +1 -1
- package/src/engine/network/adapters/TransformInterpolationAdapter.js +18 -13
- package/src/engine/network/orchestrator/NetworkPeer.d.ts.map +1 -1
- package/src/engine/network/orchestrator/NetworkPeer.js +2 -1
- package/src/engine/network/sim/ActionLog.d.ts +9 -6
- package/src/engine/network/sim/ActionLog.d.ts.map +1 -1
- package/src/engine/network/sim/ActionLog.js +43 -80
- package/src/engine/network/sim/SmoothingState.d.ts.map +1 -1
- package/src/engine/network/sim/SmoothingState.js +27 -28
- package/src/engine/network/state/FrameBufferRing.d.ts +84 -0
- package/src/engine/network/state/FrameBufferRing.d.ts.map +1 -0
- package/src/engine/network/state/FrameBufferRing.js +168 -0
- package/src/engine/network/state/InputRing.d.ts +14 -12
- package/src/engine/network/state/InputRing.d.ts.map +1 -1
- package/src/engine/network/state/InputRing.js +37 -76
- package/src/engine/network/transport/LoopbackTransport.d.ts.map +1 -1
- package/src/engine/network/transport/LoopbackTransport.js +10 -31
- package/src/engine/network/transport/Transport.d.ts +42 -2
- package/src/engine/network/transport/Transport.d.ts.map +1 -1
- package/src/engine/network/transport/Transport.js +87 -3
- package/src/engine/network/transport/adapters/NodeUDPTransport.d.ts.map +1 -1
- package/src/engine/network/transport/adapters/NodeUDPTransport.js +7 -33
- package/src/engine/network/transport/adapters/SimulatedTransport.d.ts.map +1 -1
- package/src/engine/network/transport/adapters/SimulatedTransport.js +17 -28
- package/src/engine/network/transport/adapters/WebRTCDataChannelTransport.d.ts.map +1 -1
- package/src/engine/network/transport/adapters/WebRTCDataChannelTransport.js +6 -32
- package/src/engine/network/transport/adapters/WebSocketTransport.d.ts.map +1 -1
- package/src/engine/network/transport/adapters/WebSocketTransport.js +6 -32
- package/src/engine/network/transport/adapters/WebTransportTransport.d.ts.map +1 -1
- package/src/engine/network/transport/adapters/WebTransportTransport.js +11 -22
- package/src/engine/physics/constraint/solve_constraints.d.ts.map +1 -1
- package/src/engine/physics/constraint/solve_constraints.js +18 -48
- package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
- package/src/engine/physics/fluid/ecs/FluidSystem.d.ts +3 -3
- package/src/engine/physics/fluid/solver/v3_grid_advect_maccormack_scalar.d.ts.map +1 -1
- package/src/engine/physics/fluid/solver/v3_grid_advect_maccormack_scalar.js +7 -0
- package/src/engine/physics/fluid/solver/v3_grid_advect_maccormack_velocity.d.ts.map +1 -1
- package/src/engine/physics/fluid/solver/v3_grid_advect_maccormack_velocity.js +11 -18
- package/src/engine/physics/fluid/solver/v3_grid_advect_sl_velocity.d.ts.map +1 -1
- package/src/engine/physics/fluid/solver/v3_grid_advect_sl_velocity.js +7 -0
- package/src/engine/physics/fluid/solver/v3_grid_apply_advection_forward.d.ts.map +1 -1
- package/src/engine/physics/fluid/solver/v3_grid_apply_advection_forward.js +15 -57
- package/src/engine/physics/fluid/solver/v3_grid_apply_scalar_advection.d.ts.map +1 -1
- package/src/engine/physics/fluid/solver/v3_grid_apply_scalar_advection.js +7 -0
- package/src/engine/physics/fluid/solver/v3_grid_limit8_at_indices.d.ts +28 -0
- package/src/engine/physics/fluid/solver/v3_grid_limit8_at_indices.d.ts.map +1 -0
- package/src/engine/physics/fluid/solver/v3_grid_limit8_at_indices.js +38 -0
- package/src/engine/physics/fluid/solver/v3_mac_advect_maccormack_velocity.d.ts.map +1 -1
- package/src/engine/physics/fluid/solver/v3_mac_advect_maccormack_velocity.js +12 -14
- package/src/engine/physics/fluid/solver/v3_mac_apply_vorticity_confinement.d.ts.map +1 -1
- package/src/engine/physics/fluid/solver/v3_mac_apply_vorticity_confinement.js +9 -0
- package/src/engine/physics/mls-mpm/MLS_MPM.d.ts +13 -1
- package/src/engine/physics/mls-mpm/MLS_MPM.d.ts.map +1 -1
- package/src/engine/physics/mls-mpm/MLS_MPM.js +15 -4
- package/src/engine/physics/narrowphase/box_triangle_contact.d.ts.map +1 -1
- package/src/engine/physics/narrowphase/box_triangle_contact.js +9 -0
- package/src/engine/physics/narrowphase/capsule_contacts.d.ts.map +1 -1
- package/src/engine/physics/narrowphase/capsule_contacts.js +10 -11
- package/src/engine/physics/narrowphase/sphere_triangle_contact.d.ts.map +1 -1
- package/src/engine/physics/narrowphase/sphere_triangle_contact.js +7 -12
- package/src/engine/physics/solver/apply_impulse_to_body.d.ts +36 -0
- package/src/engine/physics/solver/apply_impulse_to_body.d.ts.map +1 -0
- package/src/engine/physics/solver/apply_impulse_to_body.js +86 -0
- package/src/engine/physics/solver/solve_contacts.d.ts.map +1 -1
- package/src/engine/physics/solver/solve_contacts.js +1 -53
- package/src/engine/plugin/EnginePlugin.d.ts +3 -0
- package/src/engine/plugin/EnginePlugin.d.ts.map +1 -1
- package/src/engine/plugin/EnginePlugin.js +3 -0
- package/src/engine/save/storage/IndexedDBStorage.d.ts +1 -0
- package/src/engine/save/storage/IndexedDBStorage.d.ts.map +1 -1
- package/src/engine/save/storage/IndexedDBStorage.js +50 -50
- package/src/engine/sound/ecs/SoundControllerSystem.d.ts.map +1 -1
- package/src/engine/sound/ecs/SoundControllerSystem.js +2 -10
- package/src/engine/sound/simulation/AcousticSimulator.d.ts.map +1 -1
- package/src/engine/sound/simulation/AcousticSimulator.js +2 -1
- package/src/engine/sound/simulation/core/AcousticOccluderIndex.d.ts.map +1 -1
- package/src/engine/sound/simulation/core/AcousticOccluderIndex.js +4 -6
- package/src/engine/sound/simulation/core/OcclusionSolver.d.ts.map +1 -1
- package/src/engine/sound/simulation/core/OcclusionSolver.js +2 -9
- package/src/engine/sound/simulation/probe/ProbeVisibilityRecheck.d.ts.map +1 -1
- package/src/engine/sound/simulation/probe/ProbeVisibilityRecheck.js +9 -14
- package/src/engine/sound/simulation/probe/bakeReverbBands.d.ts.map +1 -1
- package/src/engine/sound/simulation/probe/bakeReverbBands.js +2 -6
- package/src/engine/sound/simulation/probe/bakeVisibility.d.ts.map +1 -1
- package/src/engine/sound/simulation/probe/bakeVisibility.js +4 -34
- package/src/engine/sound/simulation/probe/probe_densify_portals.d.ts.map +1 -1
- package/src/engine/sound/simulation/probe/probe_densify_portals.js +3 -6
- package/src/engine/sound/simulation/probe/probe_edge_key.d.ts +31 -0
- package/src/engine/sound/simulation/probe/probe_edge_key.d.ts.map +1 -0
- package/src/engine/sound/simulation/probe/probe_edge_key.js +38 -0
- package/src/engine/sound/simulation/probe/probe_sdf_grid.d.ts +10 -3
- package/src/engine/sound/simulation/probe/probe_sdf_grid.d.ts.map +1 -1
- package/src/engine/sound/simulation/probe/probe_sdf_grid.js +10 -22
- package/src/engine/sound/simulation/probe/probe_visibility_augment.d.ts.map +1 -1
- package/src/engine/sound/simulation/probe/probe_visibility_augment.js +12 -48
- package/src/engine/sound/simulation/probe/probe_visibility_bridge_components.d.ts.map +1 -1
- package/src/engine/sound/simulation/probe/probe_visibility_bridge_components.js +4 -3
- package/src/engine/sound/simulation/render/foaReverbImpulseResponse.d.ts +5 -4
- package/src/engine/sound/simulation/render/foaReverbImpulseResponse.d.ts.map +1 -1
- package/src/engine/sound/simulation/render/foaReverbImpulseResponse.js +23 -31
- package/src/engine/sound/simulation/render/reverbImpulseResponse.d.ts +1 -8
- package/src/engine/sound/simulation/render/reverbImpulseResponse.d.ts.map +1 -1
- package/src/engine/sound/simulation/render/reverbImpulseResponse.js +21 -31
- package/src/engine/sound/simulation/render/reverb_band_tails.d.ts +55 -0
- package/src/engine/sound/simulation/render/reverb_band_tails.d.ts.map +1 -0
- package/src/engine/sound/simulation/render/reverb_band_tails.js +93 -0
- package/src/engine/sound/sopra/definition/EventDescriptionSerializationAdapter.d.ts.map +1 -1
- package/src/engine/sound/sopra/definition/EventDescriptionSerializationAdapter.js +6 -22
- package/src/engine/sound/sopra/definition/clip/BlendContainerAudioClip.d.ts.map +1 -1
- package/src/engine/sound/sopra/definition/clip/BlendContainerAudioClip.js +7 -3
- package/src/engine/sound/sopra/definition/clip/BlendContainerAudioClipSerializationAdapter.d.ts.map +1 -1
- package/src/engine/sound/sopra/definition/clip/BlendContainerAudioClipSerializationAdapter.js +7 -22
- package/src/engine/sound/sopra/definition/clip/ContainerAudioClip.d.ts.map +1 -1
- package/src/engine/sound/sopra/definition/clip/ContainerAudioClip.js +28 -0
- package/src/engine/sound/sopra/definition/clip/RandomContainerAudioClip.d.ts.map +1 -1
- package/src/engine/sound/sopra/definition/clip/RandomContainerAudioClip.js +1 -5
- package/src/engine/sound/sopra/definition/clip/SequenceContainerAudioClip.d.ts.map +1 -1
- package/src/engine/sound/sopra/definition/clip/SequenceContainerAudioClip.js +1 -13
- package/src/engine/sound/sopra/definition/clip/SwitchContainerAudioClip.d.ts.map +1 -1
- package/src/engine/sound/sopra/definition/clip/SwitchContainerAudioClip.js +2 -8
- package/src/engine/sound/sopra/definition/effect/ReverbEffect.d.ts +3 -0
- package/src/engine/sound/sopra/definition/effect/ReverbEffect.d.ts.map +1 -1
- package/src/engine/sound/sopra/definition/effect/ReverbEffect.js +26 -14
- package/src/engine/sound/sopra/runtime/BusGraph.d.ts.map +1 -1
- package/src/engine/sound/sopra/runtime/BusGraph.js +21 -33
- package/src/engine/sound/sopra/runtime/EventInstance.js +1 -1
- package/src/engine/ui/apply_pointer_tilt_3d.d.ts +25 -0
- package/src/engine/ui/apply_pointer_tilt_3d.d.ts.map +1 -0
- package/src/engine/ui/apply_pointer_tilt_3d.js +50 -0
- package/src/engine/ui/bindings/processors/DomElementProcessorTilt3D.d.ts.map +1 -1
- package/src/engine/ui/bindings/processors/DomElementProcessorTilt3D.js +9 -26
- package/src/generation/filtering/numeric/CellFilterCache.d.ts.map +1 -1
- package/src/generation/filtering/numeric/CellFilterCache.js +4 -21
- package/src/generation/filtering/numeric/complex/CellFilterSobel.d.ts.map +1 -1
- package/src/generation/filtering/numeric/complex/CellFilterSobel.js +11 -20
- package/src/generation/filtering/numeric/math/CellFilterPower.d.ts +1 -1
- package/src/generation/filtering/numeric/math/CellFilterPower.d.ts.map +1 -1
- package/src/generation/filtering/numeric/math/CellFilterPower.js +1 -5
- package/src/generation/filtering/numeric/process/computeCellFilterGradient.d.ts.map +1 -1
- package/src/generation/filtering/numeric/process/computeCellFilterGradient.js +13 -15
- package/src/generation/filtering/numeric/process/computeCellFilterSobel.d.ts +20 -0
- package/src/generation/filtering/numeric/process/computeCellFilterSobel.d.ts.map +1 -0
- package/src/generation/filtering/numeric/process/computeCellFilterSobel.js +36 -0
- package/src/generation/filtering/numeric/util/CellFilterDisplaced.d.ts.map +1 -1
- package/src/generation/filtering/numeric/util/CellFilterDisplaced.js +11 -6
- package/src/generation/filtering/numeric/util/populateSampler2DFromCellFilter.d.ts.map +1 -1
- package/src/generation/filtering/numeric/util/populateSampler2DFromCellFilter.js +18 -36
- package/src/generation/filtering/numeric/util/write_cell_filter_to_sampler2d.d.ts +21 -0
- package/src/generation/filtering/numeric/util/write_cell_filter_to_sampler2d.d.ts.map +1 -0
- package/src/generation/filtering/numeric/util/write_cell_filter_to_sampler2d.js +47 -0
- package/src/generation/filtering/util/cell_filter_weights_pick.d.ts +25 -0
- package/src/generation/filtering/util/cell_filter_weights_pick.d.ts.map +1 -0
- package/src/generation/filtering/util/cell_filter_weights_pick.js +54 -0
- package/src/generation/grid/generation/discrete/GridTaskConnectRooms.d.ts.map +1 -1
- package/src/generation/grid/generation/discrete/GridTaskConnectRooms.js +14 -1
- package/src/generation/markers/GridActionRuleSet.d.ts.map +1 -1
- package/src/generation/markers/GridActionRuleSet.js +10 -7
- package/src/generation/markers/GridCellActionPlaceMarker.d.ts.map +1 -1
- package/src/generation/markers/GridCellActionPlaceMarker.js +10 -12
- package/src/generation/markers/actions/probability/MarkerNodeActionSelectWeighted.d.ts.map +1 -1
- package/src/generation/markers/actions/probability/MarkerNodeActionSelectWeighted.js +7 -42
- package/src/generation/markers/transform/MarkerNodeTransformerOffsetPosition.d.ts.map +1 -1
- package/src/generation/markers/transform/MarkerNodeTransformerOffsetPosition.js +11 -6
- package/src/generation/placement/GridCellPlacementRule.d.ts.map +1 -1
- package/src/generation/placement/GridCellPlacementRule.js +10 -7
- package/src/generation/placement/action/GridCellActionPlaceTags.d.ts.map +1 -1
- package/src/generation/placement/action/GridCellActionPlaceTags.js +10 -4
- package/src/generation/placement/action/random/weighted/CellActionSelectWeightedRandom.d.ts.map +1 -1
- package/src/generation/placement/action/random/weighted/CellActionSelectWeightedRandom.js +2 -38
- package/src/generation/placement/action/util/GridCellDisplacedAction.d.ts.map +1 -1
- package/src/generation/placement/action/util/GridCellDisplacedAction.js +11 -6
- package/src/generation/rules/cell/CellMatcherGridPattern.d.ts.map +1 -1
- package/src/generation/rules/cell/CellMatcherGridPattern.js +11 -4
- package/src/generation/theme/ThemeEngine.d.ts.map +1 -1
- package/src/generation/theme/ThemeEngine.js +7 -12
- package/src/view/elements/Group.d.ts +24 -3
- package/src/view/elements/Group.d.ts.map +1 -1
- package/src/view/elements/Group.js +56 -34
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Ray3 } from "../../../../core/geom/3d/ray/Ray3.js";
|
|
2
2
|
import { sphere_fibonacci_point } from "../../../../core/geom/3d/sphere/sphere_fibonacci_point.js";
|
|
3
|
+
import { random_orthonormal_basis } from "../../../../core/geom/random/random_orthonormal_basis.js";
|
|
3
4
|
import { v3_matrix3_rotate } from "../../../../core/geom/vec3/v3_matrix3_rotate.js";
|
|
4
|
-
import { v3_orthonormal_matrix_from_normal } from "../../../../core/geom/vec3/v3_orthonormal_matrix_from_normal.js";
|
|
5
5
|
import { acoustic_trace_energy, SPEED_OF_SOUND_MPS } from "./acoustic_trace_energy.js";
|
|
6
6
|
import { echogram_band_rt60 } from "./echogram_band_rt60.js";
|
|
7
7
|
|
|
@@ -67,11 +67,7 @@ export function bakeReverbBands(
|
|
|
67
67
|
DIRECTION_ACCUM.fill(0);
|
|
68
68
|
|
|
69
69
|
// randomly orient the Fibonacci set so accumulation isn't biased by the fixed lattice
|
|
70
|
-
|
|
71
|
-
const ra = 2 * Math.PI * random();
|
|
72
|
-
const rr = Math.sqrt(Math.max(0, 1 - rz * rz));
|
|
73
|
-
|
|
74
|
-
v3_orthonormal_matrix_from_normal(ROTATION, 0, rr * Math.cos(ra), rr * Math.sin(ra), rz);
|
|
70
|
+
random_orthonormal_basis(ROTATION, 0, random);
|
|
75
71
|
|
|
76
72
|
for (let i = 0; i < rayCount; i++) {
|
|
77
73
|
sphere_fibonacci_point(FIBONACCI, 0, i, rayCount);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bakeVisibility.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/sound/simulation/probe/bakeVisibility.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bakeVisibility.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/sound/simulation/probe/bakeVisibility.js"],"names":[],"mappings":"AAWA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,uGAJW,UAAU,MAAM,CAAC,eACjB,MAAM,sBAiFhB;AAED;;;;;;;;;;;;;;GAcG;AACH,qEARW,MAAM,WACN,MAAM,WACN,MAAM,aACN,MAAM,aACN,MAAM,aACN,MAAM,GACJ;IAAC,CAAC,EAAC,MAAM,CAAC;IAAA,CAAC,EAAC,MAAM,CAAC;IAAA,CAAC,EAAC,MAAM,CAAA;CAAC,EAAE,GAAC,IAAI,CAiB/C"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
csr_graph_from_undirected_edge_list
|
|
3
|
+
} from "../../../../core/graph/csr/csr_graph_from_undirected_edge_list.js";
|
|
2
4
|
import { probe_delaunay_edges } from "./probe_delaunay_edges.js";
|
|
3
5
|
import { probe_densify_portals } from "./probe_densify_portals.js";
|
|
4
6
|
import { probe_edge_visible } from "./probe_edge_visible.js";
|
|
@@ -106,39 +108,7 @@ export function bakeVisibility(probeField, index, portals = NO_PORTALS, minSpaci
|
|
|
106
108
|
edgeW[e] = Math.sqrt(dx * dx + dy * dy + dz * dz);
|
|
107
109
|
}
|
|
108
110
|
|
|
109
|
-
|
|
110
|
-
const adjacency_length = edgeCount * 2;
|
|
111
|
-
|
|
112
|
-
const degree = new Uint32Array(n);
|
|
113
|
-
for (let e = 0; e < edgeCount; e++) {
|
|
114
|
-
degree[edgeA[e]]++;
|
|
115
|
-
degree[edgeB[e]]++;
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
const edge_addresses = new Uint32Array(n + 1);
|
|
119
|
-
for (let v = 0; v < n; v++) {
|
|
120
|
-
edge_addresses[v + 1] = edge_addresses[v] + degree[v];
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
const adjacency = new Uint32Array(adjacency_length);
|
|
124
|
-
const edge_weights = new Float32Array(adjacency_length);
|
|
125
|
-
const cursor = edge_addresses.slice(0, n); // per-vertex write cursor, starting at each row's offset
|
|
126
|
-
|
|
127
|
-
for (let e = 0; e < edgeCount; e++) {
|
|
128
|
-
const a = edgeA[e];
|
|
129
|
-
const b = edgeB[e];
|
|
130
|
-
const w = edgeW[e];
|
|
131
|
-
|
|
132
|
-
adjacency[cursor[a]] = b;
|
|
133
|
-
edge_weights[cursor[a]] = w;
|
|
134
|
-
cursor[a]++;
|
|
135
|
-
|
|
136
|
-
adjacency[cursor[b]] = a;
|
|
137
|
-
edge_weights[cursor[b]] = w;
|
|
138
|
-
cursor[b]++;
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
const graph = CSRGraph.fromArrays(n, edge_addresses, adjacency, edge_weights);
|
|
111
|
+
const graph = csr_graph_from_undirected_edge_list(n, edgeA, edgeB, edgeW);
|
|
142
112
|
|
|
143
113
|
probeField.setVisibilityGraph(graph);
|
|
144
114
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"probe_densify_portals.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/sound/simulation/probe/probe_densify_portals.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"probe_densify_portals.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/sound/simulation/probe/probe_densify_portals.js"],"names":[],"mappings":"AAgBA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,6CARW,OAAO,yBAAyB,EAAE,kBAAkB,SACpD,OAAO,kCAAkC,EAAE,qBAAqB,WAChE,UAAU,MAAM,CAAC,SACjB;IAAC,CAAC,EAAE,UAAU,MAAM,CAAC,CAAC;IAAC,CAAC,EAAE,UAAU,MAAM,CAAC,CAAA;CAAC,cAC5C,MAAM;2BACkB,MAAM;mBAAiB,MAAM;iBAAe,MAAM;IACxE;IAAC,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,CAAC,EAAE,MAAM,EAAE,CAAA;CAAC,CAyEtC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { line3_compute_segment_point_distance_sqr } from "../../../../core/geom/3d/line/line3_compute_segment_point_distance_sqr.js";
|
|
2
|
+
import { probe_edge_key } from "./probe_edge_key.js";
|
|
2
3
|
import { probe_edge_visible } from "./probe_edge_visible.js";
|
|
3
4
|
|
|
4
5
|
// Gather neighbours of a portal within this × minSpacing — far enough to reach probes on BOTH sides of a wall
|
|
@@ -55,7 +56,7 @@ export function probe_densify_portals(field, index, portals, edges, minSpacing,
|
|
|
55
56
|
// existing + newly-added edges, keyed undirected, so a chord the base graph already has is not duplicated
|
|
56
57
|
const seen = new Set();
|
|
57
58
|
for (let i = 0; i < edges.a.length; i++) {
|
|
58
|
-
seen.add(
|
|
59
|
+
seen.add(probe_edge_key(edges.a[i], edges.b[i], n));
|
|
59
60
|
}
|
|
60
61
|
|
|
61
62
|
const hits = []; // probesWithinRadius scratch (auto-grows; valid length is the returned count)
|
|
@@ -82,7 +83,7 @@ export function probe_densify_portals(field, index, portals, edges, minSpacing,
|
|
|
82
83
|
for (let b = a + 1; b < neighbours.length; b++) {
|
|
83
84
|
const j = neighbours[b];
|
|
84
85
|
|
|
85
|
-
const key =
|
|
86
|
+
const key = probe_edge_key(i, j, n);
|
|
86
87
|
if (seen.has(key)) {
|
|
87
88
|
continue;
|
|
88
89
|
}
|
|
@@ -137,7 +138,3 @@ function nearestVisible(field, index, p, px, py, pz, hits, count, max) {
|
|
|
137
138
|
return found.map((o) => o.j);
|
|
138
139
|
}
|
|
139
140
|
|
|
140
|
-
/** Undirected edge key (order-independent). */
|
|
141
|
-
function edgeKey(a, b, n) {
|
|
142
|
-
return a < b ? a * n + b : b * n + a;
|
|
143
|
-
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canonical (order-independent) integer key for an undirected pair of probe indices: `min·probe_count + max`.
|
|
3
|
+
*
|
|
4
|
+
* WHY this exists: the probe bake keys undirected pairs in four different modules (visibility augmentation's
|
|
5
|
+
* dedup set, portal densification's dedup set, component bridging's per-component-pair best-candidate map, and
|
|
6
|
+
* the runtime {@link ProbeVisibilityRecheck} dirty queue). The packing carries TWO invariants that are easy to
|
|
7
|
+
* break independently — the pair must be canonicalised (so `(a,b)` and `(b,a)` collide deliberately) and the
|
|
8
|
+
* radix must be the PROBE COUNT (so distinct pairs never collide). Re-deriving it per module meant a change of
|
|
9
|
+
* packing — say to bit-shifts once a field exceeds 2^26 probes and the product loses exact integer precision —
|
|
10
|
+
* would have to be found in four places. Encode and decode live together here so they cannot drift apart.
|
|
11
|
+
*
|
|
12
|
+
* PRECONDITION: `a` and `b` are in `[0, probe_count)` and `probe_count² ≤ Number.MAX_SAFE_INTEGER`.
|
|
13
|
+
*
|
|
14
|
+
* @param {number} a probe index
|
|
15
|
+
* @param {number} b probe index
|
|
16
|
+
* @param {number} probe_count number of probes in the field — the packing radix
|
|
17
|
+
* @returns {number} canonical key, equal for `(a,b)` and `(b,a)`
|
|
18
|
+
*/
|
|
19
|
+
export function probe_edge_key(a: number, b: number, probe_count: number): number;
|
|
20
|
+
/**
|
|
21
|
+
* Unpack a {@link probe_edge_key} back into its two probe indices, written into `result` as
|
|
22
|
+
* `[low, high]`. The inverse of {@link probe_edge_key} — kept beside it so the radix convention has a
|
|
23
|
+
* single owner.
|
|
24
|
+
*
|
|
25
|
+
* @param {number[]|Uint32Array} result receives 2 elements: the lower then the higher probe index
|
|
26
|
+
* @param {number} result_offset
|
|
27
|
+
* @param {number} key a key produced by {@link probe_edge_key} with the same `probe_count`
|
|
28
|
+
* @param {number} probe_count the packing radix the key was built with
|
|
29
|
+
*/
|
|
30
|
+
export function probe_edge_key_decode(result: number[] | Uint32Array, result_offset: number, key: number, probe_count: number): void;
|
|
31
|
+
//# sourceMappingURL=probe_edge_key.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"probe_edge_key.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/sound/simulation/probe/probe_edge_key.js"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,kCALW,MAAM,KACN,MAAM,eACN,MAAM,GACJ,MAAM,CAMlB;AAED;;;;;;;;;GASG;AACH,8CALW,MAAM,EAAE,GAAC,WAAW,iBACpB,MAAM,OACN,MAAM,eACN,MAAM,QAKhB"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canonical (order-independent) integer key for an undirected pair of probe indices: `min·probe_count + max`.
|
|
3
|
+
*
|
|
4
|
+
* WHY this exists: the probe bake keys undirected pairs in four different modules (visibility augmentation's
|
|
5
|
+
* dedup set, portal densification's dedup set, component bridging's per-component-pair best-candidate map, and
|
|
6
|
+
* the runtime {@link ProbeVisibilityRecheck} dirty queue). The packing carries TWO invariants that are easy to
|
|
7
|
+
* break independently — the pair must be canonicalised (so `(a,b)` and `(b,a)` collide deliberately) and the
|
|
8
|
+
* radix must be the PROBE COUNT (so distinct pairs never collide). Re-deriving it per module meant a change of
|
|
9
|
+
* packing — say to bit-shifts once a field exceeds 2^26 probes and the product loses exact integer precision —
|
|
10
|
+
* would have to be found in four places. Encode and decode live together here so they cannot drift apart.
|
|
11
|
+
*
|
|
12
|
+
* PRECONDITION: `a` and `b` are in `[0, probe_count)` and `probe_count² ≤ Number.MAX_SAFE_INTEGER`.
|
|
13
|
+
*
|
|
14
|
+
* @param {number} a probe index
|
|
15
|
+
* @param {number} b probe index
|
|
16
|
+
* @param {number} probe_count number of probes in the field — the packing radix
|
|
17
|
+
* @returns {number} canonical key, equal for `(a,b)` and `(b,a)`
|
|
18
|
+
*/
|
|
19
|
+
export function probe_edge_key(a, b, probe_count) {
|
|
20
|
+
return a < b
|
|
21
|
+
? a * probe_count + b
|
|
22
|
+
: b * probe_count + a;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Unpack a {@link probe_edge_key} back into its two probe indices, written into `result` as
|
|
27
|
+
* `[low, high]`. The inverse of {@link probe_edge_key} — kept beside it so the radix convention has a
|
|
28
|
+
* single owner.
|
|
29
|
+
*
|
|
30
|
+
* @param {number[]|Uint32Array} result receives 2 elements: the lower then the higher probe index
|
|
31
|
+
* @param {number} result_offset
|
|
32
|
+
* @param {number} key a key produced by {@link probe_edge_key} with the same `probe_count`
|
|
33
|
+
* @param {number} probe_count the packing radix the key was built with
|
|
34
|
+
*/
|
|
35
|
+
export function probe_edge_key_decode(result, result_offset, key, probe_count) {
|
|
36
|
+
result[result_offset] = (key / probe_count) | 0;
|
|
37
|
+
result[result_offset + 1] = key % probe_count;
|
|
38
|
+
}
|
|
@@ -28,9 +28,16 @@ export function build_sdf_grid(index: AcousticOccluderIndex, bounds: number[], m
|
|
|
28
28
|
/** World position of the (fractional) voxel coordinate `(fx,fy,fz)`, written into `out`. */
|
|
29
29
|
export function grid_voxel_to_world(grid: any, out: any, fx: any, fy: any, fz: any): void;
|
|
30
30
|
/** SDF at a WORLD position via trilinear interpolation of the grid (edge-clamped). */
|
|
31
|
-
export function grid_sample_world(grid: any, x: any, y: any, z: any):
|
|
32
|
-
/**
|
|
33
|
-
|
|
31
|
+
export function grid_sample_world(grid: any, x: any, y: any, z: any): number;
|
|
32
|
+
/**
|
|
33
|
+
* Trilinear sample of the SDF grid at fractional voxel coordinates (edge-clamped).
|
|
34
|
+
*
|
|
35
|
+
* The grid is a plain `z·(rx·ry) + y·rx + x` single-channel Float32 volume — exactly the layout
|
|
36
|
+
* {@link scs3d_sample_linear} samples — so the interpolation is delegated rather than re-derived here.
|
|
37
|
+
* (Same clamp semantics: clamping the COORDINATE into `[0, res-1]` and clamping the two sample INDICES
|
|
38
|
+
* agree on every input, including out-of-range coordinates, where both collapse to the edge voxel.)
|
|
39
|
+
*/
|
|
40
|
+
export function grid_sample_trilinear(grid: any, x: any, y: any, z: any): number;
|
|
34
41
|
/**
|
|
35
42
|
* Gradient-ascend a voxel to the local SDF maximum (the most-open sub-voxel point), written into `out` as a
|
|
36
43
|
* fractional voxel coordinate clamped to within ½ voxel of the start. Central-difference gradient on the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"probe_sdf_grid.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/sound/simulation/probe/probe_sdf_grid.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"probe_sdf_grid.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/sound/simulation/probe/probe_sdf_grid.js"],"names":[],"mappings":"AAeA;;;;;;;;;;;;;;GAcG;AAEH;;;;;;;;;;GAUG;AACH,qEALW,MAAM,EAAE,cACR,MAAM,oBACN,MAAM,GACJ,OAAO,CA8CnB;AAED,4FAA4F;AAC5F,0FAIC;AAED,sFAAsF;AACtF,6EAKC;AAED;;;;;;;GAOG;AACH,iFAEC;AAED;;;;GAIG;AACH,yFAqBC;AAED;;;GAGG;AACH,yGAuBC;AArKD,2BAA4B;AAE5B,mCAAoC;AAGpC,yCAA0C;;;;;;;;;;SAW5B,YAAY;QACZ,MAAM;QAAgB,MAAM;;;;QAAgB,MAAM;;;;aAClD,MAAM;;;;WAA6B,MAAM;QACzC,MAAM;QAAgB,MAAM;;;;QAAgB,MAAM;QAClD,MAAM;QAAgB,MAAM;;;;QAAgB,MAAM;SAClD,MAAM;SAAiB,MAAM;;;;SAAiB,MAAM;gBACpD,MAAM;;;;gBAAwB,MAAM;;;;oBACpC,MAAM"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { clamp } from "../../../../core/math/clamp.js";
|
|
2
2
|
import { lerp } from "../../../../core/math/lerp.js";
|
|
3
|
+
import { scs3d_sample_linear } from "../../../graphics/texture/3d/scs3d_sample_linear.js";
|
|
3
4
|
|
|
4
5
|
// Voxel grid is finer than the spacing hint so it resolves sub-`minSpacing` features (thin corridors).
|
|
5
6
|
export const OVERSAMPLE = 2;
|
|
@@ -100,25 +101,16 @@ export function grid_sample_world(grid, x, y, z) {
|
|
|
100
101
|
return grid_sample_trilinear(grid, fx, fy, fz);
|
|
101
102
|
}
|
|
102
103
|
|
|
103
|
-
/**
|
|
104
|
+
/**
|
|
105
|
+
* Trilinear sample of the SDF grid at fractional voxel coordinates (edge-clamped).
|
|
106
|
+
*
|
|
107
|
+
* The grid is a plain `z·(rx·ry) + y·rx + x` single-channel Float32 volume — exactly the layout
|
|
108
|
+
* {@link scs3d_sample_linear} samples — so the interpolation is delegated rather than re-derived here.
|
|
109
|
+
* (Same clamp semantics: clamping the COORDINATE into `[0, res-1]` and clamping the two sample INDICES
|
|
110
|
+
* agree on every input, including out-of-range coordinates, where both collapse to the edge voxel.)
|
|
111
|
+
*/
|
|
104
112
|
export function grid_sample_trilinear(grid, x, y, z) {
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
const x0 = Math.floor(x), y0 = Math.floor(y), z0 = Math.floor(z);
|
|
108
|
-
const u = x - x0, v = y - y0, w = z - z0;
|
|
109
|
-
|
|
110
|
-
const sx0 = clampInt(x0, rx), sy0 = clampInt(y0, ry), sz0 = clampInt(z0, rz);
|
|
111
|
-
const sx1 = clampInt(x0 + 1, rx), sy1 = clampInt(y0 + 1, ry), sz1 = clampInt(z0 + 1, rz);
|
|
112
|
-
|
|
113
|
-
const c000 = sdf[sz0 * strideZ + sy0 * rx + sx0], c100 = sdf[sz0 * strideZ + sy0 * rx + sx1];
|
|
114
|
-
const c010 = sdf[sz0 * strideZ + sy1 * rx + sx0], c110 = sdf[sz0 * strideZ + sy1 * rx + sx1];
|
|
115
|
-
const c001 = sdf[sz1 * strideZ + sy0 * rx + sx0], c101 = sdf[sz1 * strideZ + sy0 * rx + sx1];
|
|
116
|
-
const c011 = sdf[sz1 * strideZ + sy1 * rx + sx0], c111 = sdf[sz1 * strideZ + sy1 * rx + sx1];
|
|
117
|
-
|
|
118
|
-
const c00 = c000 + (c100 - c000) * u, c01 = c001 + (c101 - c001) * u;
|
|
119
|
-
const c10 = c010 + (c110 - c010) * u, c11 = c011 + (c111 - c011) * u;
|
|
120
|
-
const c0 = c00 + (c10 - c00) * v, c1 = c01 + (c11 - c01) * v;
|
|
121
|
-
return c0 + (c1 - c0) * w;
|
|
113
|
+
return scs3d_sample_linear(grid.sdf, grid.rx, grid.ry, grid.rz, x, y, z);
|
|
122
114
|
}
|
|
123
115
|
|
|
124
116
|
/**
|
|
@@ -177,7 +169,3 @@ export function grid_claim_sphere(claimed, grid, px, py, pz, radius) {
|
|
|
177
169
|
}
|
|
178
170
|
}
|
|
179
171
|
}
|
|
180
|
-
|
|
181
|
-
function clampInt(i, res) {
|
|
182
|
-
return i < 0 ? 0 : (i > res - 1 ? res - 1 : i);
|
|
183
|
-
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"probe_visibility_augment.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/sound/simulation/probe/probe_visibility_augment.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"probe_visibility_augment.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/sound/simulation/probe/probe_visibility_augment.js"],"names":[],"mappings":"AAiBA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,yGANW;IAAC,CAAC,EAAE,UAAU,MAAM,CAAC,CAAC;IAAC,CAAC,EAAE,UAAU,MAAM,CAAC,CAAA;CAAC,kBAC5C,MAAM,kBACN,MAAM,mBACN,MAAM,GACJ;IAAC,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,CAAC,EAAE,MAAM,EAAE,CAAA;CAAC,CA4GtC"}
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
import { csr_graph_find_edge } from "../../../../core/graph/csr/csr_graph_find_edge.js";
|
|
2
|
+
import {
|
|
3
|
+
csr_graph_from_undirected_edge_list
|
|
4
|
+
} from "../../../../core/graph/csr/csr_graph_from_undirected_edge_list.js";
|
|
5
|
+
import { probe_edge_key } from "./probe_edge_key.js";
|
|
1
6
|
import { probe_edge_visible } from "./probe_edge_visible.js";
|
|
2
7
|
|
|
3
8
|
// A chord is worth adding when the straight line beats the existing 2-hop route through their shared
|
|
@@ -47,27 +52,11 @@ export function probe_visibility_augment(
|
|
|
47
52
|
return { a: [], b: [] };
|
|
48
53
|
}
|
|
49
54
|
|
|
50
|
-
//
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
}
|
|
56
|
-
const addr = new Uint32Array(n + 1);
|
|
57
|
-
for (let v = 0; v < n; v++) {
|
|
58
|
-
addr[v + 1] = addr[v] + degree[v];
|
|
59
|
-
}
|
|
60
|
-
const adj = new Uint32Array(2 * m);
|
|
61
|
-
const cursor = addr.slice(0, n);
|
|
62
|
-
for (let i = 0; i < m; i++) {
|
|
63
|
-
const a = edges.a[i];
|
|
64
|
-
const b = edges.b[i];
|
|
65
|
-
adj[cursor[a]++] = b;
|
|
66
|
-
adj[cursor[b]++] = a;
|
|
67
|
-
}
|
|
68
|
-
for (let v = 0; v < n; v++) {
|
|
69
|
-
adj.subarray(addr[v], addr[v + 1]).sort();
|
|
70
|
-
}
|
|
55
|
+
// CSR adjacency over the current edges (for 2-ring walks + "already adjacent?" tests). Topology only —
|
|
56
|
+
// the walk never reads weights, so every edge is given the same (zero) weight.
|
|
57
|
+
const graph = csr_graph_from_undirected_edge_list(n, edges.a, edges.b, new Float32Array(m));
|
|
58
|
+
const addr = graph.edge_addresses;
|
|
59
|
+
const adj = graph.adjacency;
|
|
71
60
|
|
|
72
61
|
// eligible chords (allowing duplicates from multiple shared neighbours; deduped at add-time)
|
|
73
62
|
const candU = [];
|
|
@@ -96,7 +85,7 @@ export function probe_visibility_augment(
|
|
|
96
85
|
if (v <= u) {
|
|
97
86
|
continue; // canonical u<v (and skips v===u: u is a neighbour of w)
|
|
98
87
|
}
|
|
99
|
-
if (
|
|
88
|
+
if (csr_graph_find_edge(graph, u, v) !== -1) {
|
|
100
89
|
continue; // already connected — a triangle, no shortcut needed
|
|
101
90
|
}
|
|
102
91
|
|
|
@@ -144,7 +133,7 @@ export function probe_visibility_augment(
|
|
|
144
133
|
const idx = order[i];
|
|
145
134
|
const u = candU[idx];
|
|
146
135
|
const v = candV[idx];
|
|
147
|
-
const key = u
|
|
136
|
+
const key = probe_edge_key(u, v, n);
|
|
148
137
|
if (added.has(key)) {
|
|
149
138
|
continue;
|
|
150
139
|
}
|
|
@@ -155,28 +144,3 @@ export function probe_visibility_augment(
|
|
|
155
144
|
|
|
156
145
|
return { a: outA, b: outB };
|
|
157
146
|
}
|
|
158
|
-
|
|
159
|
-
/**
|
|
160
|
-
* Whether `v` is in `u`'s (sorted) adjacency slice — binary search.
|
|
161
|
-
* @param {Uint32Array} adj
|
|
162
|
-
* @param {Uint32Array} addr
|
|
163
|
-
* @param {number} u
|
|
164
|
-
* @param {number} v
|
|
165
|
-
* @returns {boolean}
|
|
166
|
-
*/
|
|
167
|
-
function isNeighbour(adj, addr, u, v) {
|
|
168
|
-
let lo = addr[u];
|
|
169
|
-
let hi = addr[u + 1] - 1;
|
|
170
|
-
while (lo <= hi) {
|
|
171
|
-
const mid = (lo + hi) >> 1;
|
|
172
|
-
const x = adj[mid];
|
|
173
|
-
if (x === v) {
|
|
174
|
-
return true;
|
|
175
|
-
} else if (x < v) {
|
|
176
|
-
lo = mid + 1;
|
|
177
|
-
} else {
|
|
178
|
-
hi = mid - 1;
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
return false;
|
|
182
|
-
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"probe_visibility_bridge_components.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/sound/simulation/probe/probe_visibility_bridge_components.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"probe_visibility_bridge_components.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/sound/simulation/probe/probe_visibility_bridge_components.js"],"names":[],"mappings":"AASA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,mHALW;IAAC,CAAC,EAAE,UAAU,MAAM,CAAC,CAAC;IAAC,CAAC,EAAE,UAAU,MAAM,CAAC,CAAA;CAAC,WAC5C,UAAU,MAAM,CAAC,iBACjB,MAAM,GACJ;IAAC,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,CAAC,EAAE,MAAM,EAAE,CAAA;CAAC,CA8EtC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { uf_find, uf_init, uf_union } from "../../../../core/collection/union-find/union_find.js";
|
|
2
|
+
import { probe_edge_key } from "./probe_edge_key.js";
|
|
2
3
|
import { probe_edge_visible } from "./probe_edge_visible.js";
|
|
3
4
|
|
|
4
5
|
// Search radius for a bridge, as a multiple of the median base-edge length (the probe spacing). A door/wall
|
|
@@ -81,9 +82,9 @@ export function probe_visibility_bridge_components(field, index, edges, sources,
|
|
|
81
82
|
const dz = field.probeZ(j) - iz;
|
|
82
83
|
const d = Math.sqrt(dx * dx + dy * dy + dz * dz);
|
|
83
84
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
const key =
|
|
85
|
+
// canonical per-component-PAIR key (component roots are probe indices, so the probe count is
|
|
86
|
+
// the right radix)
|
|
87
|
+
const key = probe_edge_key(ri, rj, n);
|
|
87
88
|
|
|
88
89
|
const prev = best.get(key);
|
|
89
90
|
if (prev === undefined || d < prev.d) {
|
|
@@ -4,10 +4,11 @@
|
|
|
4
4
|
* (`directions`, band-major xyz, the 0…1 anisotropy vectors {@link bakeReverbBands} produces). Driven by a
|
|
5
5
|
* SEEDED rng (reproducible).
|
|
6
6
|
*
|
|
7
|
-
* The synthesis
|
|
8
|
-
* (one-pole filters) and each band is given its own exponential
|
|
9
|
-
* `w` is the omni sum of the enveloped bands — identical to the
|
|
10
|
-
* are the SAME enveloped bands weighted by each band's
|
|
7
|
+
* The synthesis SHARES the tail kernel with {@link reverbImpulseResponse} ({@link reverb_band_tails}): one
|
|
8
|
+
* white-noise stream is split into three bands (one-pole filters) and each band is given its own exponential
|
|
9
|
+
* decay envelope (a band rings for its RT60). `w` is the omni sum of the enveloped bands — identical to the
|
|
10
|
+
* scalar mono tail. The directional channels are the SAME enveloped bands weighted by each band's
|
|
11
|
+
* arrival-direction component:
|
|
11
12
|
*
|
|
12
13
|
* `x[i] = Σ_band bandTail[band][i] · directionX[band]` (likewise `y`, `z`)
|
|
13
14
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"foaReverbImpulseResponse.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/sound/simulation/render/foaReverbImpulseResponse.js"],"names":[],"mappings":"AAEA
|
|
1
|
+
{"version":3,"file":"foaReverbImpulseResponse.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/sound/simulation/render/foaReverbImpulseResponse.js"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,8CAPW,gBAAgB,cAChB,YAAY,GAAC,MAAM,EAAE,cACrB,YAAY,GAAC,MAAM,EAAE,cACrB,MAAM,gBACK,MAAM;OACZ,WAAW;OAAI,WAAW;OAAI,WAAW;OAAI,WAAW;EAyEvE"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { reverb_band_length, reverb_band_tails } from "./reverb_band_tails.js";
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* Build a first-order ambisonic (FOA / B-format) reverb impulse response — four MONO `AudioBuffer`s
|
|
@@ -6,10 +6,11 @@ import { LOW_MID_HZ, MID_HIGH_HZ } from "./reverbImpulseResponse.js";
|
|
|
6
6
|
* (`directions`, band-major xyz, the 0…1 anisotropy vectors {@link bakeReverbBands} produces). Driven by a
|
|
7
7
|
* SEEDED rng (reproducible).
|
|
8
8
|
*
|
|
9
|
-
* The synthesis
|
|
10
|
-
* (one-pole filters) and each band is given its own exponential
|
|
11
|
-
* `w` is the omni sum of the enveloped bands — identical to the
|
|
12
|
-
* are the SAME enveloped bands weighted by each band's
|
|
9
|
+
* The synthesis SHARES the tail kernel with {@link reverbImpulseResponse} ({@link reverb_band_tails}): one
|
|
10
|
+
* white-noise stream is split into three bands (one-pole filters) and each band is given its own exponential
|
|
11
|
+
* decay envelope (a band rings for its RT60). `w` is the omni sum of the enveloped bands — identical to the
|
|
12
|
+
* scalar mono tail. The directional channels are the SAME enveloped bands weighted by each band's
|
|
13
|
+
* arrival-direction component:
|
|
13
14
|
*
|
|
14
15
|
* `x[i] = Σ_band bandTail[band][i] · directionX[band]` (likewise `y`, `z`)
|
|
15
16
|
*
|
|
@@ -40,9 +41,9 @@ export function foaReverbImpulseResponse(
|
|
|
40
41
|
|
|
41
42
|
const sampleRate = ctx.sampleRate;
|
|
42
43
|
|
|
43
|
-
const lenLow =
|
|
44
|
-
const lenMid =
|
|
45
|
-
const lenHigh =
|
|
44
|
+
const lenLow = reverb_band_length(decayBands[0], sampleRate);
|
|
45
|
+
const lenMid = reverb_band_length(decayBands[1], sampleRate);
|
|
46
|
+
const lenHigh = reverb_band_length(decayBands[2], sampleRate);
|
|
46
47
|
const length = Math.max(lenLow, lenMid, lenHigh);
|
|
47
48
|
|
|
48
49
|
const w = ctx.createBuffer(1, length, sampleRate);
|
|
@@ -60,34 +61,25 @@ export function foaReverbImpulseResponse(
|
|
|
60
61
|
const dxMid = directions[3], dyMid = directions[4], dzMid = directions[5];
|
|
61
62
|
const dxHigh = directions[6], dyHigh = directions[7], dzHigh = directions[8];
|
|
62
63
|
|
|
63
|
-
//
|
|
64
|
-
const
|
|
65
|
-
const
|
|
64
|
+
// each band's enveloped samples, shared by the omni and directional channels
|
|
65
|
+
const bandLow = new Float64Array(length);
|
|
66
|
+
const bandMid = new Float64Array(length);
|
|
67
|
+
const bandHigh = new Float64Array(length);
|
|
68
|
+
|
|
69
|
+
reverb_band_tails(
|
|
70
|
+
bandLow, bandMid, bandHigh,
|
|
71
|
+
length,
|
|
72
|
+
lenLow, lenMid, lenHigh,
|
|
73
|
+
decayPower, sampleRate, random
|
|
74
|
+
);
|
|
66
75
|
|
|
67
|
-
let lpLow = 0;
|
|
68
|
-
let lpHigh = 0;
|
|
69
76
|
let sumSqW = 0;
|
|
70
77
|
|
|
71
78
|
for (let i = 0; i < length; i++) {
|
|
72
79
|
|
|
73
|
-
const
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
lpHigh += aHigh * (noise - lpHigh);
|
|
77
|
-
|
|
78
|
-
// energy-preserving 3-way split: low + mid + high == noise
|
|
79
|
-
const low = lpLow;
|
|
80
|
-
const mid = lpHigh - lpLow;
|
|
81
|
-
const high = noise - lpHigh;
|
|
82
|
-
|
|
83
|
-
const envLow = i < lenLow ? Math.pow(1 - i / lenLow, decayPower) : 0;
|
|
84
|
-
const envMid = i < lenMid ? Math.pow(1 - i / lenMid, decayPower) : 0;
|
|
85
|
-
const envHigh = i < lenHigh ? Math.pow(1 - i / lenHigh, decayPower) : 0;
|
|
86
|
-
|
|
87
|
-
// each band's enveloped sample, shared by the omni and directional channels
|
|
88
|
-
const bLow = low * envLow;
|
|
89
|
-
const bMid = mid * envMid;
|
|
90
|
-
const bHigh = high * envHigh;
|
|
80
|
+
const bLow = bandLow[i];
|
|
81
|
+
const bMid = bandMid[i];
|
|
82
|
+
const bHigh = bandHigh[i];
|
|
91
83
|
|
|
92
84
|
const wSample = bLow + bMid + bHigh;
|
|
93
85
|
wData[i] = wSample;
|
|
@@ -15,12 +15,5 @@
|
|
|
15
15
|
* @returns {AudioBuffer}
|
|
16
16
|
*/
|
|
17
17
|
export function reverbImpulseResponse(ctx: BaseAudioContext, decayBands: Float32Array | number[], decayPower: number, random: () => number): AudioBuffer;
|
|
18
|
-
|
|
19
|
-
* Band split frequencies (Hz): low | mid below this, mid | high below the second. Crude one-pole splits —
|
|
20
|
-
* enough to give the reverb tail per-band timbre (a bright vs. dead room), it is decaying noise, not a
|
|
21
|
-
* precise crossover. Exported so the directional ({@link foaReverbImpulseResponse}) path splits identically.
|
|
22
|
-
* @type {number}
|
|
23
|
-
*/
|
|
24
|
-
export const LOW_MID_HZ: number;
|
|
25
|
-
export const MID_HIGH_HZ: 2500;
|
|
18
|
+
export { LOW_MID_HZ, MID_HIGH_HZ } from "./reverb_band_tails.js";
|
|
26
19
|
//# sourceMappingURL=reverbImpulseResponse.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reverbImpulseResponse.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/sound/simulation/render/reverbImpulseResponse.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"reverbImpulseResponse.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/sound/simulation/render/reverbImpulseResponse.js"],"names":[],"mappings":"AAQA;;;;;;;;;;;;;;;GAeG;AACH,2CANW,gBAAgB,cAChB,YAAY,GAAC,MAAM,EAAE,cACrB,MAAM,gBACK,MAAM,GACf,WAAW,CA2CvB"}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
+
import { reverb_band_length, reverb_band_tails } from "./reverb_band_tails.js";
|
|
2
|
+
|
|
1
3
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
* precise crossover. Exported so the directional ({@link foaReverbImpulseResponse}) path splits identically.
|
|
5
|
-
* @type {number}
|
|
4
|
+
* The band split frequencies now live with the kernel that applies them ({@link reverb_band_tails}); they
|
|
5
|
+
* stay re-exported here because this module is where consumers have always imported them from.
|
|
6
6
|
*/
|
|
7
|
-
export
|
|
8
|
-
export const MID_HIGH_HZ = 2500;
|
|
7
|
+
export { LOW_MID_HZ, MID_HIGH_HZ } from "./reverb_band_tails.js";
|
|
9
8
|
|
|
10
9
|
/**
|
|
11
10
|
* Generate a stereo reverb impulse response from a PER-BAND decay time `[low, mid, high]` (the probe-baked
|
|
@@ -32,43 +31,34 @@ export function reverbImpulseResponse(
|
|
|
32
31
|
|
|
33
32
|
const sampleRate = ctx.sampleRate;
|
|
34
33
|
|
|
35
|
-
const lenLow =
|
|
36
|
-
const lenMid =
|
|
37
|
-
const lenHigh =
|
|
34
|
+
const lenLow = reverb_band_length(decayBands[0], sampleRate);
|
|
35
|
+
const lenMid = reverb_band_length(decayBands[1], sampleRate);
|
|
36
|
+
const lenHigh = reverb_band_length(decayBands[2], sampleRate);
|
|
38
37
|
const length = Math.max(lenLow, lenMid, lenHigh);
|
|
39
38
|
|
|
40
39
|
const ir = ctx.createBuffer(2, length, sampleRate);
|
|
41
40
|
|
|
42
|
-
//
|
|
43
|
-
const
|
|
44
|
-
const
|
|
41
|
+
// band scratch, allocated once and reused for BOTH channels (they differ only in their noise stream)
|
|
42
|
+
const bandLow = new Float64Array(length);
|
|
43
|
+
const bandMid = new Float64Array(length);
|
|
44
|
+
const bandHigh = new Float64Array(length);
|
|
45
45
|
|
|
46
46
|
const channel_count = ir.numberOfChannels;
|
|
47
47
|
|
|
48
48
|
for (let channel = 0; channel < channel_count; channel++) {
|
|
49
49
|
const data = ir.getChannelData(channel);
|
|
50
50
|
|
|
51
|
-
|
|
52
|
-
|
|
51
|
+
// each channel draws its OWN noise stream, so the stereo pair is decorrelated
|
|
52
|
+
reverb_band_tails(
|
|
53
|
+
bandLow, bandMid, bandHigh,
|
|
54
|
+
length,
|
|
55
|
+
lenLow, lenMid, lenHigh,
|
|
56
|
+
decayPower, sampleRate, random
|
|
57
|
+
);
|
|
53
58
|
|
|
59
|
+
// omni: the three enveloped bands summed back together
|
|
54
60
|
for (let i = 0; i < length; i++) {
|
|
55
|
-
|
|
56
|
-
const noise = random() * 2 - 1;
|
|
57
|
-
|
|
58
|
-
lpLow += aLow * (noise - lpLow);
|
|
59
|
-
lpHigh += aHigh * (noise - lpHigh);
|
|
60
|
-
|
|
61
|
-
// energy-preserving 3-way split: low + mid + high == noise
|
|
62
|
-
const low = lpLow;
|
|
63
|
-
const mid = lpHigh - lpLow;
|
|
64
|
-
const high = noise - lpHigh;
|
|
65
|
-
|
|
66
|
-
const envLow = i < lenLow ? Math.pow(1 - i / lenLow, decayPower) : 0;
|
|
67
|
-
const envMid = i < lenMid ? Math.pow(1 - i / lenMid, decayPower) : 0;
|
|
68
|
-
const envHigh = i < lenHigh ? Math.pow(1 - i / lenHigh, decayPower) : 0;
|
|
69
|
-
|
|
70
|
-
data[i] = low * envLow + mid * envMid + high * envHigh;
|
|
71
|
-
|
|
61
|
+
data[i] = bandLow[i] + bandMid[i] + bandHigh[i];
|
|
72
62
|
}
|
|
73
63
|
}
|
|
74
64
|
|