@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
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared GLSL source fragments for the octahedral-impostor family.
|
|
3
|
+
*
|
|
4
|
+
* WHY THIS EXISTS
|
|
5
|
+
*
|
|
6
|
+
* The octahedral atlas mapping is a single invariant shared by the bake side
|
|
7
|
+
* (`impostors/octahedral/grid/OctahedralUvEncoder.js`) and every sampling
|
|
8
|
+
* shader. Before this module the whole ~90-line library was transcribed nine
|
|
9
|
+
* times — once per stage of `ImpostorShaderV0`, `...DepthV0`, `...NormalsV0`,
|
|
10
|
+
* `...ViewportDepthV0`, `...WireframeV0`, `...PerPixelV0` (vertex AND fragment)
|
|
11
|
+
* and `...LitV0` (vertex AND fragment). Nine transcriptions of one invariant is
|
|
12
|
+
* nine chances for the sample side to stop agreeing with the bake side, and the
|
|
13
|
+
* failure mode (subtly wrong atlas frame) is invisible in code review.
|
|
14
|
+
*
|
|
15
|
+
* These are plain named string exports rather than a keyed chunk registry: a
|
|
16
|
+
* shader interpolates exactly the fragments it needs, by name, and an unused
|
|
17
|
+
* import is a static error rather than a silent miss.
|
|
18
|
+
*
|
|
19
|
+
* HOST REQUIREMENTS
|
|
20
|
+
*
|
|
21
|
+
* `GLSL_OCTAHEDRAL_GRID` reads `uniform bool uIsFullSphere;` and
|
|
22
|
+
* `GLSL_IMPOSTOR_BLEND_4_FRAMES` reads `uniform float uFrames;` — the including
|
|
23
|
+
* shader must declare both. GLSL requires declaration-before-use, so each
|
|
24
|
+
* fragment must be interpolated above the function that calls it.
|
|
25
|
+
*
|
|
26
|
+
* KNOWN DIVERGENCE FROM THE CPU REFERENCE — DO NOT "FIX" IN PASSING
|
|
27
|
+
*
|
|
28
|
+
* `VecToSphereOct` below uses the GLSL builtin `sign()`, while the CPU
|
|
29
|
+
* reference `core/geom/3d/octahedra/octahedral_direction_to_uv.js:24` uses
|
|
30
|
+
* `sign_not_zero()`. `sign(0.0)` is `0.0` in GLSL, so for a direction with an
|
|
31
|
+
* exactly-zero component the two disagree: the GPU path shrinks the L1 norm
|
|
32
|
+
* (`sum`) and folds an axis-aligned direction differently. This module
|
|
33
|
+
* preserves the GPU behaviour verbatim — reconciling the two conventions
|
|
34
|
+
* changes rendered output for axis-aligned view directions and must be done as
|
|
35
|
+
* a deliberate, separately-verified change, not as a side effect of
|
|
36
|
+
* deduplication.
|
|
37
|
+
*/
|
|
38
|
+
/**
|
|
39
|
+
* Direction <-> octahedral grid coordinate, both sphere and hemisphere folds.
|
|
40
|
+
*
|
|
41
|
+
* `VectorToGrid` returns the grid coordinate in the range -1..+1; callers remap
|
|
42
|
+
* with `* 0.5 + 0.5`. `GridToVector` is its inverse over the 0..1 range, and
|
|
43
|
+
* `FrameToRay` turns an integer atlas frame index into the bake-camera
|
|
44
|
+
* direction that captured it.
|
|
45
|
+
*
|
|
46
|
+
* Requires: `uniform bool uIsFullSphere;`
|
|
47
|
+
*
|
|
48
|
+
* @type {string}
|
|
49
|
+
*/
|
|
50
|
+
export const GLSL_OCTAHEDRAL_GRID: string;
|
|
51
|
+
/**
|
|
52
|
+
* Bilinear weights over the four corners of the current atlas cell.
|
|
53
|
+
*
|
|
54
|
+
* The impostor family blends a full 2x2 cell rather than interpolating over
|
|
55
|
+
* three corners: triangle interpolation has a C1-discontinuous "diagonal
|
|
56
|
+
* switch" whose weight derivative jumps inside the cell, which reads as a snap.
|
|
57
|
+
*
|
|
58
|
+
* @type {string}
|
|
59
|
+
*/
|
|
60
|
+
export const GLSL_IMPOSTOR_BILINEAR_WEIGHTS: string;
|
|
61
|
+
/**
|
|
62
|
+
* Card-UV -> single-frame texture-UV rotation matrix.
|
|
63
|
+
*
|
|
64
|
+
* Each atlas frame was baked with its own camera right/up (three.js
|
|
65
|
+
* `Camera.lookAt` with up=(0,1,0)); near the octahedral pole those right-axes
|
|
66
|
+
* swing by 90 degrees or more between adjacent frames, so the four blended
|
|
67
|
+
* corners have to be rotated into a common orientation first.
|
|
68
|
+
*
|
|
69
|
+
* The `abs(D_frame.y) > 0.99999` nudge mirrors three.js's own polar
|
|
70
|
+
* degeneracy handling so the shader basis matches what the baker used.
|
|
71
|
+
*
|
|
72
|
+
* @type {string}
|
|
73
|
+
*/
|
|
74
|
+
export const GLSL_IMPOSTOR_COMPUTE_FRAME_XFORM: string;
|
|
75
|
+
/**
|
|
76
|
+
* Fragment-side application of a `ComputeFrameXform` matrix to a card UV.
|
|
77
|
+
*
|
|
78
|
+
* @type {string}
|
|
79
|
+
*/
|
|
80
|
+
export const GLSL_IMPOSTOR_APPLY_FRAME_XFORM: string;
|
|
81
|
+
/**
|
|
82
|
+
* Sample one card UV from the four cell-corner atlas frames and blend.
|
|
83
|
+
*
|
|
84
|
+
* Requires `apply_frame_xform` (see {@link GLSL_IMPOSTOR_APPLY_FRAME_XFORM})
|
|
85
|
+
* and `uniform float uFrames;`.
|
|
86
|
+
*
|
|
87
|
+
* @type {string}
|
|
88
|
+
*/
|
|
89
|
+
export const GLSL_IMPOSTOR_BLEND_4_FRAMES: string;
|
|
90
|
+
/**
|
|
91
|
+
* Decode an atlas normal (stored in bake-camera view space) back to object
|
|
92
|
+
* space, given the frame's own bake direction.
|
|
93
|
+
*
|
|
94
|
+
* The bake basis reconstruction here MUST match
|
|
95
|
+
* {@link GLSL_IMPOSTOR_COMPUTE_FRAME_XFORM} and `BakeShaderStandard`'s encode
|
|
96
|
+
* side, including the polar nudge threshold — a normal decoded in the wrong
|
|
97
|
+
* basis tilts lighting rather than producing an obvious artefact.
|
|
98
|
+
*
|
|
99
|
+
* @type {string}
|
|
100
|
+
*/
|
|
101
|
+
export const GLSL_IMPOSTOR_DECODE_NORMAL_OS: string;
|
|
102
|
+
//# sourceMappingURL=glsl_octahedral_impostor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glsl_octahedral_impostor.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/shaders/chunks/glsl_octahedral_impostor.js"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH;;;;;;;;;;;GAWG;AACH,mCAFU,MAAM,CAmFd;AAEF;;;;;;;;GAQG;AACH,6CAFU,MAAM,CAed;AAEF;;;;;;;;;;;;GAYG;AACH,gDAFU,MAAM,CA0Bd;AAEF;;;;GAIG;AACH,8CAFU,MAAM,CAcd;AAEF;;;;;;;GAOG;AACH,2CAFU,MAAM,CA4Bd;AAEF;;;;;;;;;;GAUG;AACH,6CAFU,MAAM,CAgBd"}
|
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared GLSL source fragments for the octahedral-impostor family.
|
|
3
|
+
*
|
|
4
|
+
* WHY THIS EXISTS
|
|
5
|
+
*
|
|
6
|
+
* The octahedral atlas mapping is a single invariant shared by the bake side
|
|
7
|
+
* (`impostors/octahedral/grid/OctahedralUvEncoder.js`) and every sampling
|
|
8
|
+
* shader. Before this module the whole ~90-line library was transcribed nine
|
|
9
|
+
* times — once per stage of `ImpostorShaderV0`, `...DepthV0`, `...NormalsV0`,
|
|
10
|
+
* `...ViewportDepthV0`, `...WireframeV0`, `...PerPixelV0` (vertex AND fragment)
|
|
11
|
+
* and `...LitV0` (vertex AND fragment). Nine transcriptions of one invariant is
|
|
12
|
+
* nine chances for the sample side to stop agreeing with the bake side, and the
|
|
13
|
+
* failure mode (subtly wrong atlas frame) is invisible in code review.
|
|
14
|
+
*
|
|
15
|
+
* These are plain named string exports rather than a keyed chunk registry: a
|
|
16
|
+
* shader interpolates exactly the fragments it needs, by name, and an unused
|
|
17
|
+
* import is a static error rather than a silent miss.
|
|
18
|
+
*
|
|
19
|
+
* HOST REQUIREMENTS
|
|
20
|
+
*
|
|
21
|
+
* `GLSL_OCTAHEDRAL_GRID` reads `uniform bool uIsFullSphere;` and
|
|
22
|
+
* `GLSL_IMPOSTOR_BLEND_4_FRAMES` reads `uniform float uFrames;` — the including
|
|
23
|
+
* shader must declare both. GLSL requires declaration-before-use, so each
|
|
24
|
+
* fragment must be interpolated above the function that calls it.
|
|
25
|
+
*
|
|
26
|
+
* KNOWN DIVERGENCE FROM THE CPU REFERENCE — DO NOT "FIX" IN PASSING
|
|
27
|
+
*
|
|
28
|
+
* `VecToSphereOct` below uses the GLSL builtin `sign()`, while the CPU
|
|
29
|
+
* reference `core/geom/3d/octahedra/octahedral_direction_to_uv.js:24` uses
|
|
30
|
+
* `sign_not_zero()`. `sign(0.0)` is `0.0` in GLSL, so for a direction with an
|
|
31
|
+
* exactly-zero component the two disagree: the GPU path shrinks the L1 norm
|
|
32
|
+
* (`sum`) and folds an axis-aligned direction differently. This module
|
|
33
|
+
* preserves the GPU behaviour verbatim — reconciling the two conventions
|
|
34
|
+
* changes rendered output for axis-aligned view directions and must be done as
|
|
35
|
+
* a deliberate, separately-verified change, not as a side effect of
|
|
36
|
+
* deduplication.
|
|
37
|
+
*/
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Direction <-> octahedral grid coordinate, both sphere and hemisphere folds.
|
|
41
|
+
*
|
|
42
|
+
* `VectorToGrid` returns the grid coordinate in the range -1..+1; callers remap
|
|
43
|
+
* with `* 0.5 + 0.5`. `GridToVector` is its inverse over the 0..1 range, and
|
|
44
|
+
* `FrameToRay` turns an integer atlas frame index into the bake-camera
|
|
45
|
+
* direction that captured it.
|
|
46
|
+
*
|
|
47
|
+
* Requires: `uniform bool uIsFullSphere;`
|
|
48
|
+
*
|
|
49
|
+
* @type {string}
|
|
50
|
+
*/
|
|
51
|
+
export const GLSL_OCTAHEDRAL_GRID = `
|
|
52
|
+
// ----- direction -> octahedral grid coord (range -1..+1) -----
|
|
53
|
+
|
|
54
|
+
vec2 VecToSphereOct(vec3 pivotToCamera)
|
|
55
|
+
{
|
|
56
|
+
vec3 octant = sign(pivotToCamera);
|
|
57
|
+
float sum = dot(pivotToCamera, octant);
|
|
58
|
+
vec3 octahedron = pivotToCamera / sum;
|
|
59
|
+
if (octahedron.y < 0.0) {
|
|
60
|
+
vec3 absolute = abs(octahedron);
|
|
61
|
+
octahedron.xz = octant.xz * vec2(1.0 - absolute.z, 1.0 - absolute.x);
|
|
62
|
+
}
|
|
63
|
+
return octahedron.xz;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
vec2 VecToHemiSphereOct(vec3 v)
|
|
67
|
+
{
|
|
68
|
+
v.y = max(v.y, 0.001);
|
|
69
|
+
v = normalize(v);
|
|
70
|
+
vec3 octant = sign(v);
|
|
71
|
+
float sum = dot(v, octant);
|
|
72
|
+
vec3 octahedron = v / sum;
|
|
73
|
+
return vec2(
|
|
74
|
+
octahedron.x + octahedron.z,
|
|
75
|
+
octahedron.z - octahedron.x
|
|
76
|
+
);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
vec2 VectorToGrid(vec3 v)
|
|
80
|
+
{
|
|
81
|
+
if (uIsFullSphere) {
|
|
82
|
+
return VecToSphereOct(v);
|
|
83
|
+
} else {
|
|
84
|
+
return VecToHemiSphereOct(v);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
// ----- octahedral grid coord (range 0..1) -> direction -----
|
|
89
|
+
//
|
|
90
|
+
// Inverse of VectorToGrid (after the 0.5/2.0 remap). Given the
|
|
91
|
+
// normalised position of a frame in the atlas, return the world-space
|
|
92
|
+
// direction the bake camera was sitting at when it captured that frame.
|
|
93
|
+
|
|
94
|
+
vec3 OctaSphereDec(vec2 coord)
|
|
95
|
+
{
|
|
96
|
+
coord = (coord - 0.5) * 2.0;
|
|
97
|
+
vec3 p = vec3(coord.x, 0.0, coord.y);
|
|
98
|
+
vec2 a = abs(p.xz);
|
|
99
|
+
p.y = 1.0 - a.x - a.y;
|
|
100
|
+
if (p.y < 0.0) {
|
|
101
|
+
p.xz = sign(p.xz) * vec2(1.0 - a.y, 1.0 - a.x);
|
|
102
|
+
}
|
|
103
|
+
return p;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
vec3 OctaHemiSphereDec(vec2 coord)
|
|
107
|
+
{
|
|
108
|
+
vec3 p = vec3(coord.x - coord.y, 0.0, -1.0 + coord.x + coord.y);
|
|
109
|
+
vec2 a = abs(p.xz);
|
|
110
|
+
p.y = 1.0 - a.x - a.y;
|
|
111
|
+
return p;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
vec3 GridToVector(vec2 coord)
|
|
115
|
+
{
|
|
116
|
+
if (uIsFullSphere) {
|
|
117
|
+
return OctaSphereDec(coord);
|
|
118
|
+
} else {
|
|
119
|
+
return OctaHemiSphereDec(coord);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
// Frame index (gridFloor + corner offset) -> baked view direction.
|
|
124
|
+
// Frame coords at the grid border can sit slightly outside the
|
|
125
|
+
// [0, uFrames-1] range (e.g. gridFloor + (1,1) at the corner); clamp so
|
|
126
|
+
// we don't feed invalid UVs to the octahedral decoder.
|
|
127
|
+
vec3 FrameToRay(vec2 frame, vec2 framesMinusOne)
|
|
128
|
+
{
|
|
129
|
+
vec2 f = clamp(frame / framesMinusOne, 0.0, 1.0);
|
|
130
|
+
return normalize(GridToVector(f));
|
|
131
|
+
}
|
|
132
|
+
`;
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* Bilinear weights over the four corners of the current atlas cell.
|
|
136
|
+
*
|
|
137
|
+
* The impostor family blends a full 2x2 cell rather than interpolating over
|
|
138
|
+
* three corners: triangle interpolation has a C1-discontinuous "diagonal
|
|
139
|
+
* switch" whose weight derivative jumps inside the cell, which reads as a snap.
|
|
140
|
+
*
|
|
141
|
+
* @type {string}
|
|
142
|
+
*/
|
|
143
|
+
export const GLSL_IMPOSTOR_BILINEAR_WEIGHTS = `
|
|
144
|
+
// Bilinear weights over the 4 corners of the current cell, in the
|
|
145
|
+
// order (w00, w10, w01, w11) matching gridFloor + (0,0)/(1,0)/(0,1)/(1,1).
|
|
146
|
+
vec4 BilinearWeights(vec2 frac_uv)
|
|
147
|
+
{
|
|
148
|
+
vec2 omuv = vec2(1.0) - frac_uv;
|
|
149
|
+
return vec4(
|
|
150
|
+
omuv.x * omuv.y, // w00
|
|
151
|
+
frac_uv.x * omuv.y, // w10
|
|
152
|
+
omuv.x * frac_uv.y, // w01
|
|
153
|
+
frac_uv.x * frac_uv.y // w11
|
|
154
|
+
);
|
|
155
|
+
}
|
|
156
|
+
`;
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* Card-UV -> single-frame texture-UV rotation matrix.
|
|
160
|
+
*
|
|
161
|
+
* Each atlas frame was baked with its own camera right/up (three.js
|
|
162
|
+
* `Camera.lookAt` with up=(0,1,0)); near the octahedral pole those right-axes
|
|
163
|
+
* swing by 90 degrees or more between adjacent frames, so the four blended
|
|
164
|
+
* corners have to be rotated into a common orientation first.
|
|
165
|
+
*
|
|
166
|
+
* The `abs(D_frame.y) > 0.99999` nudge mirrors three.js's own polar
|
|
167
|
+
* degeneracy handling so the shader basis matches what the baker used.
|
|
168
|
+
*
|
|
169
|
+
* @type {string}
|
|
170
|
+
*/
|
|
171
|
+
export const GLSL_IMPOSTOR_COMPUTE_FRAME_XFORM = `
|
|
172
|
+
// Build the 2x2 matrix that maps card-centred UV (vUv - 0.5) into the
|
|
173
|
+
// texture-centred UV of a single baked frame. The matrix is just the
|
|
174
|
+
// (tangent_OS, binormal_OS) basis expressed in the frame's own
|
|
175
|
+
// (bake_right, bake_up) basis — i.e. how a step along the card's local
|
|
176
|
+
// axes shows up in the texture the frame was rendered into.
|
|
177
|
+
//
|
|
178
|
+
// bake_right/bake_up follow three.js Camera.lookAt with up=(0,1,0).
|
|
179
|
+
// We mirror its polar nudge so our shader basis matches what the
|
|
180
|
+
// baker actually used when D_frame is parallel to up.
|
|
181
|
+
vec4 ComputeFrameXform(vec3 D_frame, vec3 tangent_OS, vec3 binormal_OS)
|
|
182
|
+
{
|
|
183
|
+
vec3 D = abs(D_frame.y) > 0.99999
|
|
184
|
+
? normalize(D_frame + vec3(0.0, 0.0, 0.0001))
|
|
185
|
+
: D_frame;
|
|
186
|
+
vec3 bake_right = normalize(cross(vec3(0.0, 1.0, 0.0), D));
|
|
187
|
+
vec3 bake_up = cross(D, bake_right);
|
|
188
|
+
return vec4(
|
|
189
|
+
dot(tangent_OS, bake_right),
|
|
190
|
+
dot(binormal_OS, bake_right),
|
|
191
|
+
dot(tangent_OS, bake_up),
|
|
192
|
+
dot(binormal_OS, bake_up)
|
|
193
|
+
);
|
|
194
|
+
}
|
|
195
|
+
`;
|
|
196
|
+
|
|
197
|
+
/**
|
|
198
|
+
* Fragment-side application of a `ComputeFrameXform` matrix to a card UV.
|
|
199
|
+
*
|
|
200
|
+
* @type {string}
|
|
201
|
+
*/
|
|
202
|
+
export const GLSL_IMPOSTOR_APPLY_FRAME_XFORM = `
|
|
203
|
+
// Apply a per-frame 2x2 rotation matrix to a card UV, rotating around
|
|
204
|
+
// the texture centre (0.5, 0.5). xform = (a, b, c, d) packs row-major
|
|
205
|
+
// [a b ; c d].
|
|
206
|
+
vec2 apply_frame_xform(vec2 card_uv, vec4 xform)
|
|
207
|
+
{
|
|
208
|
+
vec2 c = card_uv - 0.5;
|
|
209
|
+
return vec2(
|
|
210
|
+
xform.x * c.x + xform.y * c.y,
|
|
211
|
+
xform.z * c.x + xform.w * c.y
|
|
212
|
+
) + 0.5;
|
|
213
|
+
}
|
|
214
|
+
`;
|
|
215
|
+
|
|
216
|
+
/**
|
|
217
|
+
* Sample one card UV from the four cell-corner atlas frames and blend.
|
|
218
|
+
*
|
|
219
|
+
* Requires `apply_frame_xform` (see {@link GLSL_IMPOSTOR_APPLY_FRAME_XFORM})
|
|
220
|
+
* and `uniform float uFrames;`.
|
|
221
|
+
*
|
|
222
|
+
* @type {string}
|
|
223
|
+
*/
|
|
224
|
+
export const GLSL_IMPOSTOR_BLEND_4_FRAMES = `
|
|
225
|
+
// Sample the same card-UV from the 4 cell-corner atlas frames, applying
|
|
226
|
+
// each frame's own UV rotation so the textures land in a consistent
|
|
227
|
+
// orientation, then blend with the bilinear weights. Used for both
|
|
228
|
+
// depth and colour.
|
|
229
|
+
vec4 blend_4_frames(
|
|
230
|
+
sampler2D tex, vec2 card_uv,
|
|
231
|
+
vec2 gridFloor, vec4 w,
|
|
232
|
+
vec4 x00, vec4 x10, vec4 x01, vec4 x11
|
|
233
|
+
) {
|
|
234
|
+
vec2 frame_size = vec2(1.0 / uFrames);
|
|
235
|
+
// Clamp inside the unit square AFTER the per-frame rotation: at
|
|
236
|
+
// sharp angles the rotation can push a corner UV outside [0,1] and
|
|
237
|
+
// bleed into the neighbouring atlas tile (which is a completely
|
|
238
|
+
// different bake direction). Clamping keeps the sample inside the
|
|
239
|
+
// frame it's supposed to belong to.
|
|
240
|
+
vec2 uv00 = clamp(apply_frame_xform(card_uv, x00), 0.0, 1.0);
|
|
241
|
+
vec2 uv10 = clamp(apply_frame_xform(card_uv, x10), 0.0, 1.0);
|
|
242
|
+
vec2 uv01 = clamp(apply_frame_xform(card_uv, x01), 0.0, 1.0);
|
|
243
|
+
vec2 uv11 = clamp(apply_frame_xform(card_uv, x11), 0.0, 1.0);
|
|
244
|
+
vec4 s00 = texture(tex, (gridFloor + vec2(0.0, 0.0) + uv00) * frame_size);
|
|
245
|
+
vec4 s10 = texture(tex, (gridFloor + vec2(1.0, 0.0) + uv10) * frame_size);
|
|
246
|
+
vec4 s01 = texture(tex, (gridFloor + vec2(0.0, 1.0) + uv01) * frame_size);
|
|
247
|
+
vec4 s11 = texture(tex, (gridFloor + vec2(1.0, 1.0) + uv11) * frame_size);
|
|
248
|
+
return s00 * w.x + s10 * w.y + s01 * w.z + s11 * w.w;
|
|
249
|
+
}
|
|
250
|
+
`;
|
|
251
|
+
|
|
252
|
+
/**
|
|
253
|
+
* Decode an atlas normal (stored in bake-camera view space) back to object
|
|
254
|
+
* space, given the frame's own bake direction.
|
|
255
|
+
*
|
|
256
|
+
* The bake basis reconstruction here MUST match
|
|
257
|
+
* {@link GLSL_IMPOSTOR_COMPUTE_FRAME_XFORM} and `BakeShaderStandard`'s encode
|
|
258
|
+
* side, including the polar nudge threshold — a normal decoded in the wrong
|
|
259
|
+
* basis tilts lighting rather than producing an obvious artefact.
|
|
260
|
+
*
|
|
261
|
+
* @type {string}
|
|
262
|
+
*/
|
|
263
|
+
export const GLSL_IMPOSTOR_DECODE_NORMAL_OS = `
|
|
264
|
+
// Decode encoded RGB (bake-view-space normal) back to OBJECT space
|
|
265
|
+
// using the corner's D_frame direction. Mirrors BakeShaderStandard's
|
|
266
|
+
// encode side.
|
|
267
|
+
vec3 decode_normal_OS(vec3 encoded, vec3 D_frame_OS)
|
|
268
|
+
{
|
|
269
|
+
vec3 n_bv = encoded * 2.0 - 1.0;
|
|
270
|
+
vec3 D = abs(D_frame_OS.y) > 0.99999
|
|
271
|
+
? normalize(D_frame_OS + vec3(0.0, 0.0, 0.0001))
|
|
272
|
+
: D_frame_OS;
|
|
273
|
+
vec3 bake_right = normalize(cross(vec3(0.0, 1.0, 0.0), D));
|
|
274
|
+
vec3 bake_up = cross(D, bake_right);
|
|
275
|
+
return bake_right * n_bv.x + bake_up * n_bv.y + D * n_bv.z;
|
|
276
|
+
}
|
|
277
|
+
`;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* three.js's own `<packing>` GLSL chunk, re-exported as a plain string.
|
|
3
|
+
*
|
|
4
|
+
* WHY THIS EXISTS
|
|
5
|
+
*
|
|
6
|
+
* `RawShaderMaterial` skips three's automatic prefix and `#include` resolution,
|
|
7
|
+
* so a raw shader that needs `packDepthToRGBA` cannot write `#include <packing>`
|
|
8
|
+
* — it has to have the source spliced in. Both octahedral and voxel impostor
|
|
9
|
+
* depth passes needed it, and both ended up hand-transcribing the function plus
|
|
10
|
+
* its `PackUpscale` / `PackFactors` / `ShiftRight8` constants.
|
|
11
|
+
*
|
|
12
|
+
* That is a copy of three's shadow-map depth ENCODING, read back by three's own
|
|
13
|
+
* PCF sampler in `<shadowmap_pars_fragment>`. If three ever changes the
|
|
14
|
+
* encoding, a transcription breaks silently — shadows go subtly wrong rather
|
|
15
|
+
* than failing to compile. Re-exporting the real chunk means the encoder and the
|
|
16
|
+
* decoder can never disagree.
|
|
17
|
+
*
|
|
18
|
+
* This module is the single boundary where three's chunk table is read; per the
|
|
19
|
+
* codebase's "confine vendor imports to boundaries" rule, shaders import from
|
|
20
|
+
* here rather than reaching into `three` themselves.
|
|
21
|
+
*
|
|
22
|
+
* The chunk also carries `unpackRGBAToDepth`, the half-float packers and the
|
|
23
|
+
* viewZ/depth conversions. Unused GLSL functions are dead-stripped by the
|
|
24
|
+
* driver, so interpolating the whole chunk costs nothing at runtime.
|
|
25
|
+
*
|
|
26
|
+
* @type {string}
|
|
27
|
+
*/
|
|
28
|
+
export const GLSL_PACKING: string;
|
|
29
|
+
//# sourceMappingURL=glsl_packing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glsl_packing.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/shaders/chunks/glsl_packing.js"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,2BAFU,MAAM,CAEgC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { ShaderChunk } from "three";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* three.js's own `<packing>` GLSL chunk, re-exported as a plain string.
|
|
5
|
+
*
|
|
6
|
+
* WHY THIS EXISTS
|
|
7
|
+
*
|
|
8
|
+
* `RawShaderMaterial` skips three's automatic prefix and `#include` resolution,
|
|
9
|
+
* so a raw shader that needs `packDepthToRGBA` cannot write `#include <packing>`
|
|
10
|
+
* — it has to have the source spliced in. Both octahedral and voxel impostor
|
|
11
|
+
* depth passes needed it, and both ended up hand-transcribing the function plus
|
|
12
|
+
* its `PackUpscale` / `PackFactors` / `ShiftRight8` constants.
|
|
13
|
+
*
|
|
14
|
+
* That is a copy of three's shadow-map depth ENCODING, read back by three's own
|
|
15
|
+
* PCF sampler in `<shadowmap_pars_fragment>`. If three ever changes the
|
|
16
|
+
* encoding, a transcription breaks silently — shadows go subtly wrong rather
|
|
17
|
+
* than failing to compile. Re-exporting the real chunk means the encoder and the
|
|
18
|
+
* decoder can never disagree.
|
|
19
|
+
*
|
|
20
|
+
* This module is the single boundary where three's chunk table is read; per the
|
|
21
|
+
* codebase's "confine vendor imports to boundaries" rule, shaders import from
|
|
22
|
+
* here rather than reaching into `three` themselves.
|
|
23
|
+
*
|
|
24
|
+
* The chunk also carries `unpackRGBAToDepth`, the half-float packers and the
|
|
25
|
+
* viewZ/depth conversions. Unused GLSL functions are dead-stripped by the
|
|
26
|
+
* driver, so interpolating the whole chunk costs nothing at runtime.
|
|
27
|
+
*
|
|
28
|
+
* @type {string}
|
|
29
|
+
*/
|
|
30
|
+
export const GLSL_PACKING = ShaderChunk.packing;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Vertex-stage splat expansion shared by every voxel-impostor material.
|
|
3
|
+
*
|
|
4
|
+
* WHY THIS EXISTS
|
|
5
|
+
*
|
|
6
|
+
* `VoxelImpostorShaderDepthV0` states the contract in a comment: *"Inward-shift
|
|
7
|
+
* must match the colour pass exactly so the cast silhouette agrees with the
|
|
8
|
+
* visible one"*. That invariant used to live in five separate string literals
|
|
9
|
+
* (`VoxelImpostorShaderV0`, `...NormalsV0`, `...DepthV0`, `...ViewportDepthV0`,
|
|
10
|
+
* `...LitV0`), so nothing but discipline kept the shadow caster, the colour pass
|
|
11
|
+
* and the debug visualisers agreeing about where a splat is. Now there is one
|
|
12
|
+
* definition and the invariant is structural.
|
|
13
|
+
*
|
|
14
|
+
* WHAT IT COMPUTES
|
|
15
|
+
*
|
|
16
|
+
* The quad is expanded in VIEW space. The view matrix is rigid (rotation +
|
|
17
|
+
* translation, no scale), so a view-space offset of `world_diameter * 0.5`
|
|
18
|
+
* is a world-space offset too, and perspective projection shrinks the splat
|
|
19
|
+
* with distance for free. `uPointDiameter` is in OBJECT (bake) space and is
|
|
20
|
+
* scaled into world units by the entity's uniform scale, which decouples the
|
|
21
|
+
* baked impostor data from the runtime entity scale.
|
|
22
|
+
*
|
|
23
|
+
* The centre is shifted INWARD along the surface normal by `radius_OS` so the
|
|
24
|
+
* splat's outer edge lands on the original surface — `iPosition` from the
|
|
25
|
+
* voxeliser is the un-shifted surface centroid. Without the shift a
|
|
26
|
+
* camera-facing quad of diameter D centred on the surface would stick out D/2
|
|
27
|
+
* past it on silhouette voxels and inflate the outline.
|
|
28
|
+
*
|
|
29
|
+
* HOST REQUIREMENTS
|
|
30
|
+
*
|
|
31
|
+
* Interpolate inside `void main()`. Reads `uniform float uPointDiameter`, the
|
|
32
|
+
* `iPosition` / `iNormal` per-instance attributes, the quad's `position`
|
|
33
|
+
* attribute, and `modelMatrix` / `modelViewMatrix`. Declares the locals
|
|
34
|
+
* `model_scale`, `world_diameter`, `radius_OS`, `centre_OS`, `centre_view`,
|
|
35
|
+
* `corner` and `pos_view` — project with `projectionMatrix * pos_view`.
|
|
36
|
+
*
|
|
37
|
+
* @type {string}
|
|
38
|
+
*/
|
|
39
|
+
export const GLSL_VOXEL_IMPOSTOR_SPLAT_EXPAND_VERTEX: string;
|
|
40
|
+
//# sourceMappingURL=glsl_voxel_impostor_splat.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glsl_voxel_impostor_splat.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/shaders/chunks/glsl_voxel_impostor_splat.js"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,sDAFU,MAAM,CAoBd"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Vertex-stage splat expansion shared by every voxel-impostor material.
|
|
3
|
+
*
|
|
4
|
+
* WHY THIS EXISTS
|
|
5
|
+
*
|
|
6
|
+
* `VoxelImpostorShaderDepthV0` states the contract in a comment: *"Inward-shift
|
|
7
|
+
* must match the colour pass exactly so the cast silhouette agrees with the
|
|
8
|
+
* visible one"*. That invariant used to live in five separate string literals
|
|
9
|
+
* (`VoxelImpostorShaderV0`, `...NormalsV0`, `...DepthV0`, `...ViewportDepthV0`,
|
|
10
|
+
* `...LitV0`), so nothing but discipline kept the shadow caster, the colour pass
|
|
11
|
+
* and the debug visualisers agreeing about where a splat is. Now there is one
|
|
12
|
+
* definition and the invariant is structural.
|
|
13
|
+
*
|
|
14
|
+
* WHAT IT COMPUTES
|
|
15
|
+
*
|
|
16
|
+
* The quad is expanded in VIEW space. The view matrix is rigid (rotation +
|
|
17
|
+
* translation, no scale), so a view-space offset of `world_diameter * 0.5`
|
|
18
|
+
* is a world-space offset too, and perspective projection shrinks the splat
|
|
19
|
+
* with distance for free. `uPointDiameter` is in OBJECT (bake) space and is
|
|
20
|
+
* scaled into world units by the entity's uniform scale, which decouples the
|
|
21
|
+
* baked impostor data from the runtime entity scale.
|
|
22
|
+
*
|
|
23
|
+
* The centre is shifted INWARD along the surface normal by `radius_OS` so the
|
|
24
|
+
* splat's outer edge lands on the original surface — `iPosition` from the
|
|
25
|
+
* voxeliser is the un-shifted surface centroid. Without the shift a
|
|
26
|
+
* camera-facing quad of diameter D centred on the surface would stick out D/2
|
|
27
|
+
* past it on silhouette voxels and inflate the outline.
|
|
28
|
+
*
|
|
29
|
+
* HOST REQUIREMENTS
|
|
30
|
+
*
|
|
31
|
+
* Interpolate inside `void main()`. Reads `uniform float uPointDiameter`, the
|
|
32
|
+
* `iPosition` / `iNormal` per-instance attributes, the quad's `position`
|
|
33
|
+
* attribute, and `modelMatrix` / `modelViewMatrix`. Declares the locals
|
|
34
|
+
* `model_scale`, `world_diameter`, `radius_OS`, `centre_OS`, `centre_view`,
|
|
35
|
+
* `corner` and `pos_view` — project with `projectionMatrix * pos_view`.
|
|
36
|
+
*
|
|
37
|
+
* @type {string}
|
|
38
|
+
*/
|
|
39
|
+
export const GLSL_VOXEL_IMPOSTOR_SPLAT_EXPAND_VERTEX = `
|
|
40
|
+
float model_scale = length(modelMatrix[0].xyz);
|
|
41
|
+
float world_diameter = uPointDiameter * model_scale;
|
|
42
|
+
float radius_OS = uPointDiameter * 0.5;
|
|
43
|
+
|
|
44
|
+
// Inward-shift along the surface normal so the splat's OUTER
|
|
45
|
+
// edge (= centre + radius along normal) lands at the original
|
|
46
|
+
// surface position (iPosition is the un-shifted surface
|
|
47
|
+
// centroid the voxeliser produced). Silhouette voxels then
|
|
48
|
+
// render edge-on exactly at the mesh outline; inside voxels are
|
|
49
|
+
// pushed slightly below the surface (sub-pixel at design
|
|
50
|
+
// distance). Every voxel-impostor pass MUST use this same shift
|
|
51
|
+
// or the shadow caster's silhouette stops matching the visible one.
|
|
52
|
+
vec3 centre_OS = iPosition - iNormal * radius_OS;
|
|
53
|
+
|
|
54
|
+
vec4 centre_view = modelViewMatrix * vec4(centre_OS, 1.0);
|
|
55
|
+
vec2 corner = position.xy * world_diameter;
|
|
56
|
+
vec4 pos_view = centre_view + vec4(corner, 0.0, 0.0);
|
|
57
|
+
`;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Uniform block consumed by the `clouds_*` GLSL chunks in `ShaderChunks.js`, which implement the
|
|
3
|
+
* animated cloud-shadow overlay guarded by the `SHADOWMAP_CLOUDS` define.
|
|
4
|
+
*
|
|
5
|
+
* This lives next to those chunks on purpose: the GLSL half of the feature was already centralised
|
|
6
|
+
* while the JS half was declared verbatim in {@link SplatMaterial} and {@link WaterMaterial}
|
|
7
|
+
* (13 uniforms each, differing only in the `f_CloudsIntensity` default). Renaming or adding a
|
|
8
|
+
* cloud uniform therefore needed matching edits in three files with nothing tying them together.
|
|
9
|
+
*
|
|
10
|
+
* A fresh object is returned on every call - three's `UniformsUtils.merge` clones values, but the
|
|
11
|
+
* `Vector2` instances must not be shared across materials regardless.
|
|
12
|
+
*
|
|
13
|
+
* @param {number} intensity how much the clouds darken direct diffuse light, `0` disables the effect
|
|
14
|
+
* @returns {Object<string,{type:string,value:*}>}
|
|
15
|
+
*/
|
|
16
|
+
export function make_clouds_uniforms(intensity: number): {
|
|
17
|
+
[x: string]: {
|
|
18
|
+
type: string;
|
|
19
|
+
value: any;
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=make_clouds_uniforms.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"make_clouds_uniforms.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/shaders/lib/make_clouds_uniforms.js"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;GAcG;AACH,gDAHW,MAAM;QACG,MAAM,GAAC;QAAC,IAAI,EAAC,MAAM,CAAC;QAAA,KAAK,MAAE;KAAC;EAsB/C"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { Vector2 } from "three";
|
|
2
|
+
import { assert } from "../../../../core/assert.js";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Uniform block consumed by the `clouds_*` GLSL chunks in `ShaderChunks.js`, which implement the
|
|
6
|
+
* animated cloud-shadow overlay guarded by the `SHADOWMAP_CLOUDS` define.
|
|
7
|
+
*
|
|
8
|
+
* This lives next to those chunks on purpose: the GLSL half of the feature was already centralised
|
|
9
|
+
* while the JS half was declared verbatim in {@link SplatMaterial} and {@link WaterMaterial}
|
|
10
|
+
* (13 uniforms each, differing only in the `f_CloudsIntensity` default). Renaming or adding a
|
|
11
|
+
* cloud uniform therefore needed matching edits in three files with nothing tying them together.
|
|
12
|
+
*
|
|
13
|
+
* A fresh object is returned on every call - three's `UniformsUtils.merge` clones values, but the
|
|
14
|
+
* `Vector2` instances must not be shared across materials regardless.
|
|
15
|
+
*
|
|
16
|
+
* @param {number} intensity how much the clouds darken direct diffuse light, `0` disables the effect
|
|
17
|
+
* @returns {Object<string,{type:string,value:*}>}
|
|
18
|
+
*/
|
|
19
|
+
export function make_clouds_uniforms(intensity) {
|
|
20
|
+
assert.isNumber(intensity, 'intensity');
|
|
21
|
+
|
|
22
|
+
return {
|
|
23
|
+
"f_CloudsTime": { type: "f", value: 0 },
|
|
24
|
+
"f_CloudsAmount": { type: "f", value: 0.9 },
|
|
25
|
+
"f_CloudsIntensity": { type: "f", value: intensity },
|
|
26
|
+
|
|
27
|
+
"v_CloudsSpeed_0": { type: "v2", value: new Vector2(0.03, -0.03) },
|
|
28
|
+
"v_CloudsSpeed_1": { type: "v2", value: new Vector2(0.011, -0.011) },
|
|
29
|
+
"v_CloudsSpeed_2": { type: "v2", value: new Vector2(0.023, -0.023) },
|
|
30
|
+
|
|
31
|
+
"v_CloudsSize_0": { type: "v2", value: new Vector2(40, 40) },
|
|
32
|
+
"v_CloudsSize_1": { type: "v2", value: new Vector2(20, 20) },
|
|
33
|
+
"v_CloudsSize_2": { type: "v2", value: new Vector2(10, 10) },
|
|
34
|
+
|
|
35
|
+
"t_Clouds_0": { type: "t", value: null },
|
|
36
|
+
"t_Clouds_1": { type: "t", value: null },
|
|
37
|
+
"t_Clouds_2": { type: "t", value: null }
|
|
38
|
+
};
|
|
39
|
+
}
|
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
+
* Pick the three.js texture format for an {@link AttributeSpec}.
|
|
3
|
+
*
|
|
4
|
+
* The only thing this adds over {@link computeThreeTextureFormat} is the `normalized` pre-branch:
|
|
5
|
+
* normalized integer data is read as float by the sampler, so it takes the float format. The
|
|
6
|
+
* numeric-type dispatch below it used to be a second copy of `computeThreeTextureFormat`, throw
|
|
7
|
+
* message included.
|
|
2
8
|
*
|
|
3
9
|
* @param {AttributeSpec} spec
|
|
4
10
|
* @returns {number}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attribute_spec_to_three_format.d.ts","sourceRoot":"","sources":["../../../../../src/engine/graphics/texture/attribute_spec_to_three_format.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"attribute_spec_to_three_format.d.ts","sourceRoot":"","sources":["../../../../../src/engine/graphics/texture/attribute_spec_to_three_format.js"],"names":[],"mappings":"AAKA;;;;;;;;;;GAUG;AACH,qEAFa,MAAM,CAWlB"}
|
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
import { assert } from "../../../core/assert.js";
|
|
2
|
-
import { NumericType } from "../../../core/math/NumericType.js";
|
|
3
2
|
import { channelCountToThreeTextureFormat } from "./channelCountToThreeTextureFormat.js";
|
|
4
|
-
import {
|
|
3
|
+
import { computeThreeTextureFormat } from "./computeThreeTextureFormat.js";
|
|
5
4
|
import { numericTypeFromBinaryDataType } from "./numericTypeFromBinaryDataType.js";
|
|
6
5
|
|
|
7
6
|
/**
|
|
7
|
+
* Pick the three.js texture format for an {@link AttributeSpec}.
|
|
8
|
+
*
|
|
9
|
+
* The only thing this adds over {@link computeThreeTextureFormat} is the `normalized` pre-branch:
|
|
10
|
+
* normalized integer data is read as float by the sampler, so it takes the float format. The
|
|
11
|
+
* numeric-type dispatch below it used to be a second copy of `computeThreeTextureFormat`, throw
|
|
12
|
+
* message included.
|
|
8
13
|
*
|
|
9
14
|
* @param {AttributeSpec} spec
|
|
10
15
|
* @returns {number}
|
|
@@ -13,14 +18,9 @@ export function attribute_spec_to_three_format(spec) {
|
|
|
13
18
|
assert.defined(spec, 'spec');
|
|
14
19
|
assert.notNull(spec, 'spec');
|
|
15
20
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
if (spec.normalized || numeric_type === NumericType.Float) {
|
|
21
|
+
if (spec.normalized) {
|
|
19
22
|
return channelCountToThreeTextureFormat(spec.itemSize);
|
|
20
|
-
} else if (numeric_type === NumericType.Int || numeric_type === NumericType.Uint) {
|
|
21
|
-
return channelCountToThreIntegerTextureType(spec.itemSize);
|
|
22
|
-
} else {
|
|
23
|
-
throw new Error(`Unsupported numeric type '${numeric_type}'`);
|
|
24
23
|
}
|
|
25
24
|
|
|
25
|
+
return computeThreeTextureFormat(numericTypeFromBinaryDataType(spec.type), spec.itemSize);
|
|
26
26
|
}
|