@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.
Files changed (680) hide show
  1. package/editor/ecs/component/editors/NumericIntervalEditor.js +18 -35
  2. package/editor/ecs/component/editors/ObservedIntegerEditor.js +22 -43
  3. package/editor/ecs/component/editors/ObservedStringEditor.js +34 -51
  4. package/editor/ecs/component/editors/common/makeV3_editor.js +12 -30
  5. package/editor/ecs/component/editors/common/two_way_sync.js +50 -0
  6. package/editor/ecs/component/editors/geom/QuaternionEditor.js +20 -35
  7. package/editor/ecs/component/editors/geom/Vector1Editor.js +5 -28
  8. package/editor/ecs/component/editors/primitive/NumberEditor.js +15 -31
  9. package/editor/tools/paint/TerrainHeightPaintTool.js +22 -31
  10. package/editor/tools/paint/TerrainPaintTool.js +85 -13
  11. package/editor/tools/paint/TerrainTexturePaintTool.js +18 -29
  12. package/editor/view/ecs/components/TerrainController.js +1 -4
  13. package/package.json +1 -1
  14. package/src/DUPLICATION_AUDIT_2026_08_07/00_core_reuse_surface.md +738 -0
  15. package/src/DUPLICATION_AUDIT_2026_08_07/A_core_math_geom.md +79 -0
  16. package/src/DUPLICATION_AUDIT_2026_08_07/B_core_data.md +93 -0
  17. package/src/DUPLICATION_AUDIT_2026_08_07/C_gfx_render.md +80 -0
  18. package/src/DUPLICATION_AUDIT_2026_08_07/D_gfx_features.md +164 -0
  19. package/src/DUPLICATION_AUDIT_2026_08_07/E_physics.md +69 -0
  20. package/src/DUPLICATION_AUDIT_2026_08_07/F_sound.md +102 -0
  21. package/src/DUPLICATION_AUDIT_2026_08_07/G_net_save.md +129 -0
  22. package/src/DUPLICATION_AUDIT_2026_08_07/H_engine_misc.md +72 -0
  23. package/src/DUPLICATION_AUDIT_2026_08_07/I_generation_view.md +74 -0
  24. package/src/DUPLICATION_AUDIT_2026_08_07/K_crosscutting.md +169 -0
  25. package/src/DUPLICATION_AUDIT_2026_08_07.md +254 -0
  26. package/src/DUPLICATION_AUDIT_REMEDIATION.md +250 -0
  27. package/src/core/bvh2/bvh3/query/bvh_collect_user_data.js +2 -2
  28. package/src/core/bvh2/bvh3/query/bvh_query_leaves_generic.js +77 -77
  29. package/src/core/bvh2/bvh3/query/bvh_query_leaves_ray.js +90 -90
  30. package/src/core/bvh2/bvh3/query/bvh_query_leaves_ray_segment.js +94 -94
  31. package/src/core/bvh2/bvh3/query/bvh_query_user_data_generic.js +86 -86
  32. package/src/core/bvh2/bvh3/query/bvh_query_user_data_intersects_aabb.js +2 -2
  33. package/src/core/bvh2/bvh3/query/bvh_query_user_data_intersects_capsule.js +2 -2
  34. package/src/core/bvh2/bvh3/query/bvh_query_user_data_intersects_frustum.js +2 -2
  35. package/src/core/bvh2/bvh3/query/bvh_query_user_data_intersects_sphere.js +2 -2
  36. package/src/core/bvh2/bvh3/query/bvh_query_user_data_ray.js +96 -96
  37. package/src/core/bvh2/bvh3/query/bvh_query_user_data_ray_segment.js +100 -100
  38. package/src/core/bvh2/bvh3/query/compute_tight_near_far_clipping_planes.js +2 -2
  39. package/src/core/bvh8/aabb3_round_to_float32.d.ts +16 -0
  40. package/src/core/bvh8/aabb3_round_to_float32.d.ts.map +1 -0
  41. package/src/core/bvh8/aabb3_round_to_float32.js +22 -0
  42. package/src/core/bvh8/bvh8_geometry_validate.d.ts.map +1 -1
  43. package/src/core/bvh8/bvh8_geometry_validate.js +1 -12
  44. package/src/core/bvh8/bvh8_geometry_validate_indirect.d.ts.map +1 -1
  45. package/src/core/bvh8/bvh8_geometry_validate_indirect.js +1 -12
  46. package/src/core/cache/Cache.d.ts +13 -0
  47. package/src/core/cache/Cache.d.ts.map +1 -1
  48. package/src/core/cache/Cache.js +13 -0
  49. package/src/core/color/operations/color_darken.d.ts +5 -2
  50. package/src/core/color/operations/color_darken.d.ts.map +1 -1
  51. package/src/core/color/operations/color_darken.js +24 -33
  52. package/src/core/color/operations/color_desaturate.d.ts +5 -2
  53. package/src/core/color/operations/color_desaturate.d.ts.map +1 -1
  54. package/src/core/color/operations/color_desaturate.js +24 -33
  55. package/src/core/color/operations/color_lighten.d.ts +5 -2
  56. package/src/core/color/operations/color_lighten.d.ts.map +1 -1
  57. package/src/core/color/operations/color_lighten.js +24 -33
  58. package/src/core/color/operations/color_saturate.d.ts +5 -2
  59. package/src/core/color/operations/color_saturate.d.ts.map +1 -1
  60. package/src/core/color/operations/color_saturate.js +24 -33
  61. package/src/core/color/operations/color_scale_okhsv_channel.d.ts +28 -0
  62. package/src/core/color/operations/color_scale_okhsv_channel.d.ts.map +1 -0
  63. package/src/core/color/operations/color_scale_okhsv_channel.js +45 -0
  64. package/src/core/geom/2d/hash-grid/SpatialHashGrid.d.ts.map +1 -1
  65. package/src/core/geom/2d/hash-grid/SpatialHashGrid.js +12 -0
  66. package/src/core/geom/2d/line/segment2_intersects_segment2_2d.d.ts.map +1 -1
  67. package/src/core/geom/2d/line/segment2_intersects_segment2_2d.js +25 -29
  68. package/src/core/geom/2d/line/segment2_segment_compute_intersection_array_2d.d.ts.map +1 -1
  69. package/src/core/geom/2d/line/segment2_segment_compute_intersection_array_2d.js +46 -51
  70. package/src/core/geom/2d/line/segment2_segment_intersection_fractions.d.ts +31 -0
  71. package/src/core/geom/2d/line/segment2_segment_intersection_fractions.d.ts.map +1 -0
  72. package/src/core/geom/2d/line/segment2_segment_intersection_fractions.js +52 -0
  73. package/src/core/geom/2d/quad-tree/qt_collect_by_circle.d.ts +6 -1
  74. package/src/core/geom/2d/quad-tree/qt_collect_by_circle.d.ts.map +1 -1
  75. package/src/core/geom/2d/quad-tree/qt_collect_by_circle.js +39 -65
  76. package/src/core/geom/2d/quad-tree/qt_match_data_by_circle.d.ts +15 -5
  77. package/src/core/geom/2d/quad-tree/qt_match_data_by_circle.d.ts.map +1 -1
  78. package/src/core/geom/2d/quad-tree/qt_match_data_by_circle.js +101 -70
  79. package/src/core/geom/2d/r-tree/StaticR2Tree.d.ts.map +1 -1
  80. package/src/core/geom/2d/r-tree/StaticR2Tree.js +7 -3
  81. package/src/core/geom/3d/aabb/aabb3_intersects_ray_segment.d.ts +7 -8
  82. package/src/core/geom/3d/aabb/aabb3_intersects_ray_segment.d.ts.map +1 -1
  83. package/src/core/geom/3d/aabb/aabb3_intersects_ray_segment.js +15 -51
  84. package/src/core/geom/3d/atlas/param/atlas_chart_parameterize_bff.d.ts.map +1 -1
  85. package/src/core/geom/3d/atlas/param/atlas_chart_parameterize_bff.js +13 -14
  86. package/src/core/geom/3d/atlas/param/atlas_chart_parameterize_lscm.d.ts.map +1 -1
  87. package/src/core/geom/3d/atlas/param/atlas_chart_parameterize_lscm.js +2 -17
  88. package/src/core/geom/3d/atlas/segment/atlas_chart_roundness_delta.d.ts +22 -0
  89. package/src/core/geom/3d/atlas/segment/atlas_chart_roundness_delta.d.ts.map +1 -0
  90. package/src/core/geom/3d/atlas/segment/atlas_chart_roundness_delta.js +30 -0
  91. package/src/core/geom/3d/atlas/segment/atlas_segment_charts.d.ts +19 -0
  92. package/src/core/geom/3d/atlas/segment/atlas_segment_charts.d.ts.map +1 -1
  93. package/src/core/geom/3d/atlas/segment/atlas_segment_charts.js +5 -9
  94. package/src/core/geom/3d/atlas/segment/atlas_segment_charts_atomic.d.ts.map +1 -1
  95. package/src/core/geom/3d/atlas/segment/atlas_segment_charts_atomic.js +4 -12
  96. package/src/core/geom/3d/frustum/read_frustum_corner.d.ts +5 -0
  97. package/src/core/geom/3d/frustum/read_frustum_corner.d.ts.map +1 -1
  98. package/src/core/geom/3d/frustum/read_frustum_corner.js +8 -5
  99. package/src/core/geom/3d/line/line3_segment_segment_closest_point_pair.d.ts +33 -0
  100. package/src/core/geom/3d/line/line3_segment_segment_closest_point_pair.d.ts.map +1 -0
  101. package/src/core/geom/3d/line/line3_segment_segment_closest_point_pair.js +71 -0
  102. package/src/core/geom/3d/mat4/m4_compose.d.ts +5 -0
  103. package/src/core/geom/3d/mat4/m4_compose.d.ts.map +1 -1
  104. package/src/core/geom/3d/mat4/m4_compose.js +22 -53
  105. package/src/core/geom/3d/mat4/m4_decompose.d.ts +8 -0
  106. package/src/core/geom/3d/mat4/m4_decompose.d.ts.map +1 -1
  107. package/src/core/geom/3d/mat4/m4_decompose.js +84 -76
  108. package/src/core/geom/3d/mat4/m4_from_rotation_translation_scale.d.ts +2 -0
  109. package/src/core/geom/3d/mat4/m4_from_rotation_translation_scale.d.ts.map +1 -1
  110. package/src/core/geom/3d/mat4/m4_from_rotation_translation_scale.js +10 -44
  111. package/src/core/geom/3d/mat4/m4_from_rotation_translation_scale_scalar.d.ts +27 -0
  112. package/src/core/geom/3d/mat4/m4_from_rotation_translation_scale_scalar.d.ts.map +1 -0
  113. package/src/core/geom/3d/mat4/m4_from_rotation_translation_scale_scalar.js +67 -0
  114. package/src/core/geom/3d/plane/orient3d_fast.d.ts.map +1 -1
  115. package/src/core/geom/3d/plane/orient3d_fast.js +2 -22
  116. package/src/core/geom/3d/plane/orient3d_fast_point.d.ts +28 -0
  117. package/src/core/geom/3d/plane/orient3d_fast_point.d.ts.map +1 -0
  118. package/src/core/geom/3d/plane/orient3d_fast_point.js +47 -0
  119. package/src/core/geom/3d/quaternion/quat3_nlerp.d.ts +48 -0
  120. package/src/core/geom/3d/quaternion/quat3_nlerp.d.ts.map +1 -0
  121. package/src/core/geom/3d/quaternion/quat3_nlerp.js +72 -0
  122. package/src/core/geom/3d/shape/AbstractShape3D.d.ts +9 -0
  123. package/src/core/geom/3d/shape/AbstractShape3D.d.ts.map +1 -1
  124. package/src/core/geom/3d/shape/AbstractShape3D.js +44 -1
  125. package/src/core/geom/3d/shape/BoxShape3D.d.ts.map +1 -1
  126. package/src/core/geom/3d/shape/BoxShape3D.js +2 -1
  127. package/src/core/geom/3d/shape/CapsuleShape3D.d.ts.map +1 -1
  128. package/src/core/geom/3d/shape/CapsuleShape3D.js +2 -1
  129. package/src/core/geom/3d/shape/ConvexHullShape3D.d.ts +0 -1
  130. package/src/core/geom/3d/shape/ConvexHullShape3D.d.ts.map +1 -1
  131. package/src/core/geom/3d/shape/ConvexHullShape3D.js +25 -56
  132. package/src/core/geom/3d/shape/CylinderShape3D.d.ts.map +1 -1
  133. package/src/core/geom/3d/shape/CylinderShape3D.js +2 -1
  134. package/src/core/geom/3d/shape/HeightMapShape3D.d.ts.map +1 -1
  135. package/src/core/geom/3d/shape/HeightMapShape3D.js +3 -5
  136. package/src/core/geom/3d/shape/MeshShape3D.d.ts +0 -11
  137. package/src/core/geom/3d/shape/MeshShape3D.d.ts.map +1 -1
  138. package/src/core/geom/3d/shape/MeshShape3D.js +27 -106
  139. package/src/core/geom/3d/shape/Triangle3D.d.ts +1 -1
  140. package/src/core/geom/3d/shape/Triangle3D.d.ts.map +1 -1
  141. package/src/core/geom/3d/shape/Triangle3D.js +10 -31
  142. package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_carve_outside_surface.d.ts.map +1 -1
  143. package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_carve_outside_surface.js +8 -57
  144. package/src/core/geom/3d/topology/simplify/decimate_edge_collapse_snap.d.ts +8 -1
  145. package/src/core/geom/3d/topology/simplify/decimate_edge_collapse_snap.d.ts.map +1 -1
  146. package/src/core/geom/3d/topology/simplify/decimate_edge_collapse_snap.js +281 -272
  147. package/src/core/geom/3d/topology/simplify/quadratic/build_vertex_quadrics.d.ts.map +1 -1
  148. package/src/core/geom/3d/topology/simplify/quadratic/build_vertex_quadrics.js +3 -4
  149. package/src/core/geom/3d/topology/simplify/quadratic/quadric3_set_from_plane_through_point.d.ts +22 -0
  150. package/src/core/geom/3d/topology/simplify/quadratic/quadric3_set_from_plane_through_point.d.ts.map +1 -0
  151. package/src/core/geom/3d/topology/simplify/quadratic/quadric3_set_from_plane_through_point.js +27 -0
  152. package/src/core/geom/3d/topology/struct/binary/io/bt_boundary_loop.d.ts +24 -0
  153. package/src/core/geom/3d/topology/struct/binary/io/bt_boundary_loop.d.ts.map +1 -0
  154. package/src/core/geom/3d/topology/struct/binary/io/bt_boundary_loop.js +73 -0
  155. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_close_boundary_holes.d.ts.map +1 -1
  156. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_close_boundary_holes.js +2 -53
  157. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_compute_vertex_quadrics.d.ts.map +1 -1
  158. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_compute_vertex_quadrics.js +3 -4
  159. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_fill_small_holes.d.ts.map +1 -1
  160. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_fill_small_holes.js +3 -33
  161. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_from_indexed_geometry.d.ts.map +1 -1
  162. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_from_indexed_geometry.js +4 -37
  163. package/src/core/geom/3d/topology/struct/binary/io/face/bt_face_poke.d.ts.map +1 -1
  164. package/src/core/geom/3d/topology/struct/binary/io/face/bt_face_poke.js +3 -32
  165. package/src/core/geom/3d/topology/struct/binary/query/bt_face_read_triangle.d.ts +32 -0
  166. package/src/core/geom/3d/topology/struct/binary/query/bt_face_read_triangle.d.ts.map +1 -0
  167. package/src/core/geom/3d/topology/struct/binary/query/bt_face_read_triangle.js +66 -0
  168. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_face_find_path.d.ts.map +1 -1
  169. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_face_find_path.js +703 -728
  170. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_face_find_path_polyanya.d.ts.map +1 -1
  171. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_face_find_path_polyanya.js +13 -24
  172. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_sample_interior_grid_points.d.ts.map +1 -1
  173. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_sample_interior_grid_points.js +8 -54
  174. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_surface_ray_parity.d.ts +35 -0
  175. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_surface_ray_parity.d.ts.map +1 -0
  176. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_surface_ray_parity.js +82 -0
  177. package/src/core/geom/3d/triangle/tri3_closest_point.d.ts +29 -0
  178. package/src/core/geom/3d/triangle/tri3_closest_point.d.ts.map +1 -0
  179. package/src/core/geom/3d/triangle/tri3_closest_point.js +65 -0
  180. package/src/core/geom/3d/triangle/tri3_flatten_isometric.d.ts +42 -0
  181. package/src/core/geom/3d/triangle/tri3_flatten_isometric.d.ts.map +1 -0
  182. package/src/core/geom/3d/triangle/tri3_flatten_isometric.js +79 -0
  183. package/src/core/geom/Vector2.d.ts.map +1 -1
  184. package/src/core/geom/Vector2.js +2 -1
  185. package/src/core/geom/random/random_orthonormal_basis.d.ts +21 -0
  186. package/src/core/geom/random/random_orthonormal_basis.d.ts.map +1 -0
  187. package/src/core/geom/random/random_orthonormal_basis.js +31 -0
  188. package/src/core/geom/vec2/v2_rotate.d.ts +18 -0
  189. package/src/core/geom/vec2/v2_rotate.d.ts.map +1 -0
  190. package/src/core/geom/vec2/v2_rotate.js +21 -0
  191. package/src/core/geom/vec2/v2_rotate_cos_sin.d.ts +19 -0
  192. package/src/core/geom/vec2/v2_rotate_cos_sin.d.ts.map +1 -0
  193. package/src/core/geom/vec2/v2_rotate_cos_sin.js +21 -0
  194. package/src/core/graph/csr/csr_graph_from_undirected_edge_list.d.ts +30 -0
  195. package/src/core/graph/csr/csr_graph_from_undirected_edge_list.d.ts.map +1 -0
  196. package/src/core/graph/csr/csr_graph_from_undirected_edge_list.js +94 -0
  197. package/src/core/graph/layout/CircleLayout.d.ts.map +1 -1
  198. package/src/core/graph/layout/CircleLayout.js +6 -29
  199. package/src/core/graph/layout/box/BoxLayouter.d.ts.map +1 -1
  200. package/src/core/graph/layout/box/BoxLayouter.js +2 -26
  201. package/src/core/graph/layout/box/position_box_next_to_box.d.ts.map +1 -1
  202. package/src/core/graph/layout/box/position_box_next_to_box.js +2 -1
  203. package/src/core/graph/layout/computeDisconnectedSubGraphs.d.ts.map +1 -1
  204. package/src/core/graph/layout/computeDisconnectedSubGraphs.js +14 -3
  205. package/src/core/graph/layout/graph_peel_topological_layer.d.ts +25 -0
  206. package/src/core/graph/layout/graph_peel_topological_layer.d.ts.map +1 -0
  207. package/src/core/graph/layout/graph_peel_topological_layer.js +45 -0
  208. package/src/core/math/hash/hash_mix2.d.ts +21 -0
  209. package/src/core/math/hash/hash_mix2.d.ts.map +1 -0
  210. package/src/core/math/hash/hash_mix2.js +22 -0
  211. package/src/core/math/hash/hash_mix3.d.ts +16 -0
  212. package/src/core/math/hash/hash_mix3.d.ts.map +1 -0
  213. package/src/core/math/hash/hash_mix3.js +19 -0
  214. package/src/core/math/lookup/LUT_HEATMAP.d.ts +17 -0
  215. package/src/core/math/lookup/LUT_HEATMAP.d.ts.map +1 -0
  216. package/src/core/math/lookup/LUT_HEATMAP.js +30 -0
  217. package/src/core/math/noise/curl_noise_3d.d.ts +6 -0
  218. package/src/core/math/noise/curl_noise_3d.d.ts.map +1 -1
  219. package/src/core/math/noise/curl_noise_3d.js +18 -27
  220. package/src/core/math/statistics/hammersley_sequence.d.ts +28 -16
  221. package/src/core/math/statistics/hammersley_sequence.d.ts.map +1 -1
  222. package/src/core/math/statistics/hammersley_sequence.js +53 -34
  223. package/src/core/science/units/MEASUREMENT_UNITS_SI.d.ts +3 -0
  224. package/src/core/science/units/MEASUREMENT_UNITS_SI.d.ts.map +1 -1
  225. package/src/core/science/units/MEASUREMENT_UNITS_SI.js +5 -16
  226. package/src/engine/animation/TransitionFunctions.d.ts +31 -0
  227. package/src/engine/animation/TransitionFunctions.d.ts.map +1 -1
  228. package/src/engine/animation/TransitionFunctions.js +44 -0
  229. package/src/engine/animation/curve/animation_curve_binary_codec.d.ts +29 -0
  230. package/src/engine/animation/curve/animation_curve_binary_codec.d.ts.map +1 -0
  231. package/src/engine/animation/curve/animation_curve_binary_codec.js +60 -0
  232. package/src/engine/animation/curve/draw/canvas_point_to_curve.d.ts +16 -0
  233. package/src/engine/animation/curve/draw/canvas_point_to_curve.d.ts.map +1 -0
  234. package/src/engine/animation/curve/draw/canvas_point_to_curve.js +22 -0
  235. package/src/engine/animation/curve/draw/curve_point_to_canvas.d.ts +27 -0
  236. package/src/engine/animation/curve/draw/curve_point_to_canvas.d.ts.map +1 -0
  237. package/src/engine/animation/curve/draw/curve_point_to_canvas.js +38 -0
  238. package/src/engine/animation/curve/draw/position_canvas_to_curve.d.ts +2 -0
  239. package/src/engine/animation/curve/draw/position_canvas_to_curve.d.ts.map +1 -1
  240. package/src/engine/animation/curve/draw/position_canvas_to_curve.js +22 -24
  241. package/src/engine/animation/curve/draw/position_curve_to_canvas.d.ts +2 -0
  242. package/src/engine/animation/curve/draw/position_curve_to_canvas.d.ts.map +1 -1
  243. package/src/engine/animation/curve/draw/position_curve_to_canvas.js +22 -25
  244. package/src/engine/animation/curve/editor/canvas2dDrawWorldAxisLabels.d.ts.map +1 -1
  245. package/src/engine/animation/curve/editor/canvas2dDrawWorldAxisLabels.js +3 -2
  246. package/src/engine/animation/curve/editor/canvas2dPlotCurvePoints.d.ts.map +1 -1
  247. package/src/engine/animation/curve/editor/canvas2dPlotCurvePoints.js +14 -14
  248. package/src/engine/animation/removeEntityWithMeshParticlesEffect.d.ts.map +1 -1
  249. package/src/engine/animation/removeEntityWithMeshParticlesEffect.js +5 -0
  250. package/src/engine/asset/loaders/GLTFAssetLoader.d.ts.map +1 -1
  251. package/src/engine/asset/loaders/GLTFAssetLoader.js +25 -51
  252. package/src/engine/asset/loaders/material/StaticMaterialCache.d.ts +3 -2
  253. package/src/engine/asset/loaders/material/StaticMaterialCache.d.ts.map +1 -1
  254. package/src/engine/asset/loaders/material/StaticMaterialCache.js +16 -55
  255. package/src/engine/asset/loaders/material/TextureCoalescer.d.ts +32 -0
  256. package/src/engine/asset/loaders/material/TextureCoalescer.d.ts.map +1 -0
  257. package/src/engine/asset/loaders/material/TextureCoalescer.js +68 -0
  258. package/src/engine/asset/loaders/material/traverseMaterialTextures.d.ts +10 -2
  259. package/src/engine/asset/loaders/material/traverseMaterialTextures.d.ts.map +1 -1
  260. package/src/engine/asset/loaders/material/traverseMaterialTextures.js +10 -2
  261. package/src/engine/control/first-person/abilities/Mantle.d.ts.map +1 -1
  262. package/src/engine/control/first-person/abilities/Mantle.js +10 -26
  263. package/src/engine/ecs/dynamic_actions/actions/definition/WeightedRandomActionDescription.d.ts.map +1 -1
  264. package/src/engine/ecs/dynamic_actions/actions/definition/WeightedRandomActionDescription.js +5 -0
  265. package/src/engine/ecs/evaluation/complex/PointFitnessGaussianBlur.d.ts +22 -2
  266. package/src/engine/ecs/evaluation/complex/PointFitnessGaussianBlur.d.ts.map +1 -1
  267. package/src/engine/ecs/evaluation/complex/PointFitnessGaussianBlur.js +92 -41
  268. package/src/engine/ecs/gui/hud/HeadsUpDisplaySystem.d.ts +3 -1
  269. package/src/engine/ecs/gui/hud/HeadsUpDisplaySystem.d.ts.map +1 -1
  270. package/src/engine/ecs/gui/hud/HeadsUpDisplaySystem.js +14 -16
  271. package/src/engine/ecs/gui/parallax/GuiElementParallaxSystem.d.ts.map +1 -1
  272. package/src/engine/ecs/gui/parallax/GuiElementParallaxSystem.js +16 -29
  273. package/src/engine/ecs/ik/OneBoneSurfaceAlignmentSolver.d.ts.map +1 -1
  274. package/src/engine/ecs/ik/OneBoneSurfaceAlignmentSolver.js +12 -74
  275. package/src/engine/ecs/ik/TwoBoneInverseKinematicsSolver.d.ts.map +1 -1
  276. package/src/engine/ecs/ik/TwoBoneInverseKinematicsSolver.js +10 -73
  277. package/src/engine/ecs/ik/ik_probe_terrain_contact.d.ts +38 -0
  278. package/src/engine/ecs/ik/ik_probe_terrain_contact.d.ts.map +1 -0
  279. package/src/engine/ecs/ik/ik_probe_terrain_contact.js +119 -0
  280. package/src/engine/ecs/terrain/util/paintTerrainOverlayViaLookupTable.d.ts +0 -1
  281. package/src/engine/ecs/terrain/util/paintTerrainOverlayViaLookupTable.d.ts.map +1 -1
  282. package/src/engine/ecs/terrain/util/paintTerrainOverlayViaLookupTable.js +2 -14
  283. package/src/engine/graphics/FULL_SCREEN_QUAD_VERTEX_SHADER.d.ts +12 -1
  284. package/src/engine/graphics/FULL_SCREEN_QUAD_VERTEX_SHADER.d.ts.map +1 -1
  285. package/src/engine/graphics/FULL_SCREEN_QUAD_VERTEX_SHADER.js +14 -10
  286. package/src/engine/graphics/ecs/camera/auto_set_camera_clipping_planes.d.ts.map +1 -1
  287. package/src/engine/graphics/ecs/camera/auto_set_camera_clipping_planes.js +7 -28
  288. package/src/engine/graphics/ecs/highlight/renderer/HighlightDecodeShader.d.ts +1 -2
  289. package/src/engine/graphics/ecs/highlight/renderer/HighlightDecodeShader.d.ts.map +1 -1
  290. package/src/engine/graphics/ecs/highlight/renderer/HighlightDecodeShader.js +4 -12
  291. package/src/engine/graphics/ecs/highlight/renderer/OutlineRenderer.d.ts.map +1 -1
  292. package/src/engine/graphics/ecs/highlight/renderer/OutlineRenderer.js +2 -11
  293. package/src/engine/graphics/ecs/highlight/renderer/makeBlurShader_9.d.ts +1 -2
  294. package/src/engine/graphics/ecs/highlight/renderer/makeBlurShader_9.d.ts.map +1 -1
  295. package/src/engine/graphics/ecs/highlight/renderer/makeBlurShader_9.js +3 -11
  296. package/src/engine/graphics/ecs/highlight/renderer/makeDilationShader.d.ts +1 -2
  297. package/src/engine/graphics/ecs/highlight/renderer/makeDilationShader.d.ts.map +1 -1
  298. package/src/engine/graphics/ecs/highlight/renderer/makeDilationShader.js +3 -11
  299. package/src/engine/graphics/ecs/highlight/renderer/make_screen_space_quad_material.d.ts +33 -0
  300. package/src/engine/graphics/ecs/highlight/renderer/make_screen_space_quad_material.d.ts.map +1 -0
  301. package/src/engine/graphics/ecs/highlight/renderer/make_screen_space_quad_material.js +44 -0
  302. package/src/engine/graphics/ecs/highlight/system/HighlightSystemBase.d.ts +55 -0
  303. package/src/engine/graphics/ecs/highlight/system/HighlightSystemBase.d.ts.map +1 -0
  304. package/src/engine/graphics/ecs/highlight/system/HighlightSystemBase.js +205 -0
  305. package/src/engine/graphics/ecs/highlight/system/MeshHighlightSystem.d.ts +4 -45
  306. package/src/engine/graphics/ecs/highlight/system/MeshHighlightSystem.d.ts.map +1 -1
  307. package/src/engine/graphics/ecs/highlight/system/MeshHighlightSystem.js +39 -162
  308. package/src/engine/graphics/ecs/highlight/system/RenderableHighlightSystem.d.ts +4 -51
  309. package/src/engine/graphics/ecs/highlight/system/RenderableHighlightSystem.d.ts.map +1 -1
  310. package/src/engine/graphics/ecs/highlight/system/RenderableHighlightSystem.js +34 -164
  311. package/src/engine/graphics/ecs/highlight/system/ShadedGeometryHighlightSystem.d.ts +5 -57
  312. package/src/engine/graphics/ecs/highlight/system/ShadedGeometryHighlightSystem.d.ts.map +1 -1
  313. package/src/engine/graphics/ecs/highlight/system/ShadedGeometryHighlightSystem.js +48 -175
  314. package/src/engine/graphics/ecs/light/shadow/extend_shadow_camera_near_for_casters.d.ts.map +1 -1
  315. package/src/engine/graphics/ecs/light/shadow/extend_shadow_camera_near_for_casters.js +7 -25
  316. package/src/engine/graphics/ecs/make_bvh_depth_range_computer.d.ts +26 -0
  317. package/src/engine/graphics/ecs/make_bvh_depth_range_computer.d.ts.map +1 -0
  318. package/src/engine/graphics/ecs/make_bvh_depth_range_computer.js +33 -0
  319. package/src/engine/graphics/ecs/mesh/MeshSystem.d.ts.map +1 -1
  320. package/src/engine/graphics/ecs/mesh/MeshSystem.js +2 -5
  321. package/src/engine/graphics/ecs/mesh-v2/ShadedGeometrySystem.d.ts.map +1 -1
  322. package/src/engine/graphics/ecs/mesh-v2/ShadedGeometrySystem.js +2 -5
  323. package/src/engine/graphics/ecs/render_layers_compute_depth_range.d.ts +35 -0
  324. package/src/engine/graphics/ecs/render_layers_compute_depth_range.d.ts.map +1 -0
  325. package/src/engine/graphics/ecs/render_layers_compute_depth_range.js +64 -0
  326. package/src/engine/graphics/ecs/trail2d/Trail2DSystem.d.ts.map +1 -1
  327. package/src/engine/graphics/ecs/trail2d/Trail2DSystem.js +2 -5
  328. package/src/engine/graphics/ecs/trail3d/Trail3DSystem.d.ts.map +1 -1
  329. package/src/engine/graphics/ecs/trail3d/Trail3DSystem.js +2 -5
  330. package/src/engine/graphics/ecs/water/WaterSystem.d.ts.map +1 -1
  331. package/src/engine/graphics/ecs/water/WaterSystem.js +2 -5
  332. package/src/engine/graphics/geometry/buffered/query/bvh32_geometry_nearest.d.ts.map +1 -1
  333. package/src/engine/graphics/geometry/buffered/query/bvh32_geometry_nearest.js +22 -94
  334. package/src/engine/graphics/geometry/buffered/query/bvh32_geometry_overlap_clipping_volume.d.ts.map +1 -1
  335. package/src/engine/graphics/geometry/buffered/query/bvh32_geometry_overlap_clipping_volume.js +17 -57
  336. package/src/engine/graphics/geometry/buffered/query/bvh32_geometry_raycast.d.ts.map +1 -1
  337. package/src/engine/graphics/geometry/buffered/query/bvh32_geometry_raycast.js +17 -57
  338. package/src/engine/graphics/geometry/buffered/query/nearest_point_on_triangle_record.d.ts +30 -0
  339. package/src/engine/graphics/geometry/buffered/query/nearest_point_on_triangle_record.d.ts.map +1 -0
  340. package/src/engine/graphics/geometry/buffered/query/nearest_point_on_triangle_record.js +87 -0
  341. package/src/engine/graphics/geometry/buffered/query/query_bvh_geometry_nearest.d.ts.map +1 -1
  342. package/src/engine/graphics/geometry/buffered/query/query_bvh_geometry_nearest.js +11 -55
  343. package/src/engine/graphics/geometry/buffered/read_triangle_vertices.d.ts +29 -0
  344. package/src/engine/graphics/geometry/buffered/read_triangle_vertices.d.ts.map +1 -0
  345. package/src/engine/graphics/geometry/buffered/read_triangle_vertices.js +102 -0
  346. package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderDepthV0.d.ts.map +1 -1
  347. package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderDepthV0.js +17 -122
  348. package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderLitV0.d.ts.map +1 -1
  349. package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderLitV0.js +15 -194
  350. package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderNormalsV0.d.ts.map +1 -1
  351. package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderNormalsV0.js +12 -108
  352. package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderPerPixelV0.d.ts.map +1 -1
  353. package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderPerPixelV0.js +14 -183
  354. package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderV0.d.ts.map +1 -1
  355. package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderV0.js +12 -154
  356. package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderViewportDepthV0.d.ts.map +1 -1
  357. package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderViewportDepthV0.js +10 -94
  358. package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderWireframeV0.d.ts.map +1 -1
  359. package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderWireframeV0.js +8 -72
  360. package/src/engine/graphics/impostors/octahedral/shader/glsl/common.glsl +10 -0
  361. package/src/engine/graphics/impostors/voxel/bake/read_atlas_to_samples.d.ts.map +1 -1
  362. package/src/engine/graphics/impostors/voxel/bake/read_atlas_to_samples.js +79 -58
  363. package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderDepthV0.d.ts.map +1 -1
  364. package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderDepthV0.js +11 -22
  365. package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderLitV0.d.ts.map +1 -1
  366. package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderLitV0.js +7 -16
  367. package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderNormalsV0.d.ts.map +1 -1
  368. package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderNormalsV0.js +5 -9
  369. package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderV0.d.ts.map +1 -1
  370. package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderV0.js +4 -19
  371. package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderViewportDepthV0.d.ts.map +1 -1
  372. package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderViewportDepthV0.js +5 -9
  373. package/src/engine/graphics/material/SplatMaterial.d.ts.map +1 -1
  374. package/src/engine/graphics/material/SplatMaterial.js +2 -17
  375. package/src/engine/graphics/material/WaterMaterial.d.ts.map +1 -1
  376. package/src/engine/graphics/material/WaterMaterial.js +3 -18
  377. package/src/engine/graphics/material/manager/compilers/CoalesceTextures.d.ts +4 -4
  378. package/src/engine/graphics/material/manager/compilers/CoalesceTextures.d.ts.map +1 -1
  379. package/src/engine/graphics/material/manager/compilers/CoalesceTextures.js +25 -70
  380. package/src/engine/graphics/particles/ecs/ParticleEmitterSystem.d.ts.map +1 -1
  381. package/src/engine/graphics/particles/ecs/ParticleEmitterSystem.js +2 -5
  382. package/src/engine/graphics/particles/node-based/codegen/glsl/getTypeByteSize.d.ts +8 -11
  383. package/src/engine/graphics/particles/node-based/codegen/glsl/getTypeByteSize.d.ts.map +1 -1
  384. package/src/engine/graphics/particles/node-based/codegen/glsl/getTypeByteSize.js +20 -21
  385. package/src/engine/graphics/particles/node-based/nodes/particle_data_type_component_count.d.ts +39 -0
  386. package/src/engine/graphics/particles/node-based/nodes/particle_data_type_component_count.d.ts.map +1 -0
  387. package/src/engine/graphics/particles/node-based/nodes/particle_data_type_component_count.js +45 -0
  388. package/src/engine/graphics/particles/node-based/particle/ParticleAttributeSpecification.d.ts +6 -8
  389. package/src/engine/graphics/particles/node-based/particle/ParticleAttributeSpecification.d.ts.map +1 -1
  390. package/src/engine/graphics/particles/node-based/particle/ParticleAttributeSpecification.js +2 -13
  391. package/src/engine/graphics/particles/particular/engine/utils/distributeParticlesOnObject3D.d.ts.map +1 -1
  392. package/src/engine/graphics/particles/particular/engine/utils/distributeParticlesOnObject3D.js +16 -78
  393. package/src/engine/graphics/particles/particular/engine/utils/distribute_points_on_indexed_triangles.d.ts +45 -0
  394. package/src/engine/graphics/particles/particular/engine/utils/distribute_points_on_indexed_triangles.d.ts.map +1 -0
  395. package/src/engine/graphics/particles/particular/engine/utils/distribute_points_on_indexed_triangles.js +168 -0
  396. package/src/engine/graphics/particles/particular/engine/utils/distrubuteParticlesOnMesh.d.ts.map +1 -1
  397. package/src/engine/graphics/particles/particular/engine/utils/distrubuteParticlesOnMesh.js +11 -115
  398. package/src/engine/graphics/postprocess/threejs/shaders/CopyShader.d.ts +24 -16
  399. package/src/engine/graphics/postprocess/threejs/shaders/CopyShader.d.ts.map +1 -1
  400. package/src/engine/graphics/postprocess/threejs/shaders/CopyShader.js +15 -47
  401. package/src/engine/graphics/render/buffer/simple-fx/ao/AmbientOcclusionPostProcessEffect.d.ts +4 -0
  402. package/src/engine/graphics/render/buffer/simple-fx/ao/AmbientOcclusionPostProcessEffect.d.ts.map +1 -1
  403. package/src/engine/graphics/render/buffer/simple-fx/ao/AmbientOcclusionPostProcessEffect.js +4 -0
  404. package/src/engine/graphics/sh3/build_injected_shader.d.ts +51 -0
  405. package/src/engine/graphics/sh3/build_injected_shader.d.ts.map +1 -0
  406. package/src/engine/graphics/sh3/build_injected_shader.js +56 -0
  407. package/src/engine/graphics/sh3/gi/material/MaterialTransformer.d.ts.map +1 -1
  408. package/src/engine/graphics/sh3/gi/material/MaterialTransformer.js +10 -1
  409. package/src/engine/graphics/sh3/gi/material/chunk_lpv_get_irradiance_at.d.ts.map +1 -1
  410. package/src/engine/graphics/sh3/gi/material/chunk_lpv_get_irradiance_at.js +17 -0
  411. package/src/engine/graphics/sh3/gi/material/common.d.ts +1 -1
  412. package/src/engine/graphics/sh3/gi/material/common.js +6 -222
  413. package/src/engine/graphics/sh3/gi/material/space_fragment/build_fragment_shader.d.ts.map +1 -1
  414. package/src/engine/graphics/sh3/gi/material/space_fragment/build_fragment_shader.js +7 -11
  415. package/src/engine/graphics/sh3/gi/material/space_fragment/build_vertex_shader.d.ts.map +1 -1
  416. package/src/engine/graphics/sh3/gi/material/space_fragment/build_vertex_shader.js +27 -29
  417. package/src/engine/graphics/sh3/gi/material/space_vertex/build_fragment_shader.d.ts.map +1 -1
  418. package/src/engine/graphics/sh3/gi/material/space_vertex/build_fragment_shader.js +7 -11
  419. package/src/engine/graphics/sh3/gi/material/space_vertex/build_vertex_shader.d.ts.map +1 -1
  420. package/src/engine/graphics/sh3/gi/material/space_vertex/build_vertex_shader.js +7 -12
  421. package/src/engine/graphics/sh3/grid_dilate_average.d.ts +38 -0
  422. package/src/engine/graphics/sh3/grid_dilate_average.d.ts.map +1 -0
  423. package/src/engine/graphics/sh3/grid_dilate_average.js +175 -0
  424. package/src/engine/graphics/sh3/lightmap/lightmap_dilate.d.ts +4 -0
  425. package/src/engine/graphics/sh3/lightmap/lightmap_dilate.d.ts.map +1 -1
  426. package/src/engine/graphics/sh3/lightmap/lightmap_dilate.js +7 -70
  427. package/src/engine/graphics/sh3/lpg/light_probe_grid_dilate.d.ts +6 -0
  428. package/src/engine/graphics/sh3/lpg/light_probe_grid_dilate.d.ts.map +1 -1
  429. package/src/engine/graphics/sh3/lpg/light_probe_grid_dilate.js +14 -113
  430. package/src/engine/graphics/sh3/lpg/material/chunk_lpg_get_irradiance_at.d.ts.map +1 -1
  431. package/src/engine/graphics/sh3/lpg/material/chunk_lpg_get_irradiance_at.js +7 -0
  432. package/src/engine/graphics/sh3/lpg/material/space_fragment/build_fragment_shader.d.ts.map +1 -1
  433. package/src/engine/graphics/sh3/lpg/material/space_fragment/build_fragment_shader.js +5 -8
  434. package/src/engine/graphics/sh3/lpg/material/space_fragment/build_vertex_shader.d.ts.map +1 -1
  435. package/src/engine/graphics/sh3/lpg/material/space_fragment/build_vertex_shader.js +5 -8
  436. package/src/engine/graphics/sh3/lpg/material/space_vertex/build_fragment_shader.d.ts.map +1 -1
  437. package/src/engine/graphics/sh3/lpg/material/space_vertex/build_fragment_shader.js +5 -8
  438. package/src/engine/graphics/sh3/lpg/material/space_vertex/build_vertex_shader.d.ts.map +1 -1
  439. package/src/engine/graphics/sh3/lpg/material/space_vertex/build_vertex_shader.js +5 -8
  440. package/src/engine/graphics/sh3/lpv/depth/chunk_probe_depth_sampling.d.ts +38 -0
  441. package/src/engine/graphics/sh3/lpv/depth/chunk_probe_depth_sampling.d.ts.map +1 -0
  442. package/src/engine/graphics/sh3/lpv/depth/chunk_probe_depth_sampling.js +265 -0
  443. package/src/engine/graphics/sh3/lpv/depth/octahedral/shader/visualize.frag.glsl +11 -0
  444. package/src/engine/graphics/sh3/lpv/depth/octahedral/v2/VLPDepthMapVisualisation.d.ts.map +1 -1
  445. package/src/engine/graphics/sh3/lpv/depth/octahedral/v2/VLPDepthMapVisualisation.js +5 -1
  446. package/src/engine/graphics/sh3/lpv/depth/octahedral/v2/visualise.frag.glsl +189 -419
  447. package/src/engine/graphics/sh3/shader/visualize.frag.d.ts +1 -1
  448. package/src/engine/graphics/sh3/shader/visualize.frag.js +7 -0
  449. package/src/engine/graphics/shaders/chunks/glsl_octahedral_impostor.d.ts +102 -0
  450. package/src/engine/graphics/shaders/chunks/glsl_octahedral_impostor.d.ts.map +1 -0
  451. package/src/engine/graphics/shaders/chunks/glsl_octahedral_impostor.js +277 -0
  452. package/src/engine/graphics/shaders/chunks/glsl_packing.d.ts +29 -0
  453. package/src/engine/graphics/shaders/chunks/glsl_packing.d.ts.map +1 -0
  454. package/src/engine/graphics/shaders/chunks/glsl_packing.js +30 -0
  455. package/src/engine/graphics/shaders/chunks/glsl_voxel_impostor_splat.d.ts +40 -0
  456. package/src/engine/graphics/shaders/chunks/glsl_voxel_impostor_splat.d.ts.map +1 -0
  457. package/src/engine/graphics/shaders/chunks/glsl_voxel_impostor_splat.js +57 -0
  458. package/src/engine/graphics/shaders/lib/make_clouds_uniforms.d.ts +22 -0
  459. package/src/engine/graphics/shaders/lib/make_clouds_uniforms.d.ts.map +1 -0
  460. package/src/engine/graphics/shaders/lib/make_clouds_uniforms.js +39 -0
  461. package/src/engine/graphics/texture/attribute_spec_to_three_format.d.ts +6 -0
  462. package/src/engine/graphics/texture/attribute_spec_to_three_format.d.ts.map +1 -1
  463. package/src/engine/graphics/texture/attribute_spec_to_three_format.js +9 -9
  464. package/src/engine/graphics/texture/channel_count_to_format_prefix.d.ts +14 -0
  465. package/src/engine/graphics/texture/channel_count_to_format_prefix.d.ts.map +1 -0
  466. package/src/engine/graphics/texture/channel_count_to_format_prefix.js +26 -0
  467. package/src/engine/graphics/texture/computeThreeTextureInternalFormatFromDataType.d.ts.map +1 -1
  468. package/src/engine/graphics/texture/computeThreeTextureInternalFormatFromDataType.js +2 -20
  469. package/src/engine/graphics/texture/normalized_internal_format.d.ts.map +1 -1
  470. package/src/engine/graphics/texture/normalized_internal_format.js +2 -20
  471. package/src/engine/graphics/texture/sampler/convertTexture2Sampler2D.d.ts.map +1 -1
  472. package/src/engine/graphics/texture/sampler/convertTexture2Sampler2D.js +9 -3
  473. package/src/engine/input/devices/gamepad/GamepadDeviceLayout.d.ts +54 -0
  474. package/src/engine/input/devices/gamepad/GamepadDeviceLayout.d.ts.map +1 -0
  475. package/src/engine/input/devices/gamepad/GamepadDeviceLayout.js +323 -0
  476. package/src/engine/input/devices/gamepad/GamepadHandle.d.ts +21 -2
  477. package/src/engine/input/devices/gamepad/GamepadHandle.d.ts.map +1 -1
  478. package/src/engine/input/devices/gamepad/GamepadHandle.js +39 -11
  479. package/src/engine/input/devices/gamepad/GamepadLayout.d.ts +128 -0
  480. package/src/engine/input/devices/gamepad/GamepadLayout.d.ts.map +1 -0
  481. package/src/engine/input/devices/gamepad/GamepadLayout.js +160 -0
  482. package/src/engine/input/devices/gamepad/GamepadStandardMapping.d.ts +10 -0
  483. package/src/engine/input/devices/gamepad/GamepadStandardMapping.d.ts.map +1 -1
  484. package/src/engine/input/devices/gamepad/GamepadStandardMapping.js +11 -0
  485. package/src/engine/input/devices/gamepad/GamepadStick.d.ts +5 -1
  486. package/src/engine/input/devices/gamepad/GamepadStick.d.ts.map +1 -1
  487. package/src/engine/input/devices/gamepad/GamepadStick.js +5 -1
  488. package/src/engine/input/devices/gamepad/gamepad_layout_database.d.ts +27 -0
  489. package/src/engine/input/devices/gamepad/gamepad_layout_database.d.ts.map +1 -0
  490. package/src/engine/input/devices/gamepad/gamepad_layout_database.js +144 -0
  491. package/src/engine/input/devices/gamepad/gamepad_read_hat_axis.d.ts +25 -0
  492. package/src/engine/input/devices/gamepad/gamepad_read_hat_axis.d.ts.map +1 -0
  493. package/src/engine/input/devices/gamepad/gamepad_read_hat_axis.js +61 -0
  494. package/src/engine/input/devices/gamepad/prototypeGamepadTester.d.ts +2 -0
  495. package/src/engine/input/devices/gamepad/prototypeGamepadTester.d.ts.map +1 -0
  496. package/src/engine/input/devices/gamepad/prototypeGamepadTester.js +2124 -0
  497. package/src/engine/input/ecs/util/TopDownCameraControllerHelper.d.ts.map +1 -1
  498. package/src/engine/input/ecs/util/TopDownCameraControllerHelper.js +3 -33
  499. package/src/engine/intelligence/behavior/util/RandomDelayBehavior.d.ts.map +1 -1
  500. package/src/engine/intelligence/behavior/util/RandomDelayBehavior.js +5 -0
  501. package/src/engine/network/adapters/QuaternionInterpolationAdapter.d.ts.map +1 -1
  502. package/src/engine/network/adapters/QuaternionInterpolationAdapter.js +18 -19
  503. package/src/engine/network/adapters/TransformInterpolationAdapter.d.ts.map +1 -1
  504. package/src/engine/network/adapters/TransformInterpolationAdapter.js +18 -13
  505. package/src/engine/network/orchestrator/NetworkPeer.d.ts.map +1 -1
  506. package/src/engine/network/orchestrator/NetworkPeer.js +2 -1
  507. package/src/engine/network/sim/ActionLog.d.ts +9 -6
  508. package/src/engine/network/sim/ActionLog.d.ts.map +1 -1
  509. package/src/engine/network/sim/ActionLog.js +43 -80
  510. package/src/engine/network/sim/SmoothingState.d.ts.map +1 -1
  511. package/src/engine/network/sim/SmoothingState.js +27 -28
  512. package/src/engine/network/state/FrameBufferRing.d.ts +84 -0
  513. package/src/engine/network/state/FrameBufferRing.d.ts.map +1 -0
  514. package/src/engine/network/state/FrameBufferRing.js +168 -0
  515. package/src/engine/network/state/InputRing.d.ts +14 -12
  516. package/src/engine/network/state/InputRing.d.ts.map +1 -1
  517. package/src/engine/network/state/InputRing.js +37 -76
  518. package/src/engine/network/transport/LoopbackTransport.d.ts.map +1 -1
  519. package/src/engine/network/transport/LoopbackTransport.js +10 -31
  520. package/src/engine/network/transport/Transport.d.ts +42 -2
  521. package/src/engine/network/transport/Transport.d.ts.map +1 -1
  522. package/src/engine/network/transport/Transport.js +87 -3
  523. package/src/engine/network/transport/adapters/NodeUDPTransport.d.ts.map +1 -1
  524. package/src/engine/network/transport/adapters/NodeUDPTransport.js +7 -33
  525. package/src/engine/network/transport/adapters/SimulatedTransport.d.ts.map +1 -1
  526. package/src/engine/network/transport/adapters/SimulatedTransport.js +17 -28
  527. package/src/engine/network/transport/adapters/WebRTCDataChannelTransport.d.ts.map +1 -1
  528. package/src/engine/network/transport/adapters/WebRTCDataChannelTransport.js +6 -32
  529. package/src/engine/network/transport/adapters/WebSocketTransport.d.ts.map +1 -1
  530. package/src/engine/network/transport/adapters/WebSocketTransport.js +6 -32
  531. package/src/engine/network/transport/adapters/WebTransportTransport.d.ts.map +1 -1
  532. package/src/engine/network/transport/adapters/WebTransportTransport.js +11 -22
  533. package/src/engine/physics/constraint/solve_constraints.d.ts.map +1 -1
  534. package/src/engine/physics/constraint/solve_constraints.js +18 -48
  535. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
  536. package/src/engine/physics/fluid/ecs/FluidSystem.d.ts +3 -3
  537. package/src/engine/physics/fluid/solver/v3_grid_advect_maccormack_scalar.d.ts.map +1 -1
  538. package/src/engine/physics/fluid/solver/v3_grid_advect_maccormack_scalar.js +7 -0
  539. package/src/engine/physics/fluid/solver/v3_grid_advect_maccormack_velocity.d.ts.map +1 -1
  540. package/src/engine/physics/fluid/solver/v3_grid_advect_maccormack_velocity.js +11 -18
  541. package/src/engine/physics/fluid/solver/v3_grid_advect_sl_velocity.d.ts.map +1 -1
  542. package/src/engine/physics/fluid/solver/v3_grid_advect_sl_velocity.js +7 -0
  543. package/src/engine/physics/fluid/solver/v3_grid_apply_advection_forward.d.ts.map +1 -1
  544. package/src/engine/physics/fluid/solver/v3_grid_apply_advection_forward.js +15 -57
  545. package/src/engine/physics/fluid/solver/v3_grid_apply_scalar_advection.d.ts.map +1 -1
  546. package/src/engine/physics/fluid/solver/v3_grid_apply_scalar_advection.js +7 -0
  547. package/src/engine/physics/fluid/solver/v3_grid_limit8_at_indices.d.ts +28 -0
  548. package/src/engine/physics/fluid/solver/v3_grid_limit8_at_indices.d.ts.map +1 -0
  549. package/src/engine/physics/fluid/solver/v3_grid_limit8_at_indices.js +38 -0
  550. package/src/engine/physics/fluid/solver/v3_mac_advect_maccormack_velocity.d.ts.map +1 -1
  551. package/src/engine/physics/fluid/solver/v3_mac_advect_maccormack_velocity.js +12 -14
  552. package/src/engine/physics/fluid/solver/v3_mac_apply_vorticity_confinement.d.ts.map +1 -1
  553. package/src/engine/physics/fluid/solver/v3_mac_apply_vorticity_confinement.js +9 -0
  554. package/src/engine/physics/mls-mpm/MLS_MPM.d.ts +13 -1
  555. package/src/engine/physics/mls-mpm/MLS_MPM.d.ts.map +1 -1
  556. package/src/engine/physics/mls-mpm/MLS_MPM.js +15 -4
  557. package/src/engine/physics/narrowphase/box_triangle_contact.d.ts.map +1 -1
  558. package/src/engine/physics/narrowphase/box_triangle_contact.js +9 -0
  559. package/src/engine/physics/narrowphase/capsule_contacts.d.ts.map +1 -1
  560. package/src/engine/physics/narrowphase/capsule_contacts.js +10 -11
  561. package/src/engine/physics/narrowphase/sphere_triangle_contact.d.ts.map +1 -1
  562. package/src/engine/physics/narrowphase/sphere_triangle_contact.js +7 -12
  563. package/src/engine/physics/solver/apply_impulse_to_body.d.ts +36 -0
  564. package/src/engine/physics/solver/apply_impulse_to_body.d.ts.map +1 -0
  565. package/src/engine/physics/solver/apply_impulse_to_body.js +86 -0
  566. package/src/engine/physics/solver/solve_contacts.d.ts.map +1 -1
  567. package/src/engine/physics/solver/solve_contacts.js +1 -53
  568. package/src/engine/plugin/EnginePlugin.d.ts +3 -0
  569. package/src/engine/plugin/EnginePlugin.d.ts.map +1 -1
  570. package/src/engine/plugin/EnginePlugin.js +3 -0
  571. package/src/engine/save/storage/IndexedDBStorage.d.ts +1 -0
  572. package/src/engine/save/storage/IndexedDBStorage.d.ts.map +1 -1
  573. package/src/engine/save/storage/IndexedDBStorage.js +50 -50
  574. package/src/engine/sound/ecs/SoundControllerSystem.d.ts.map +1 -1
  575. package/src/engine/sound/ecs/SoundControllerSystem.js +2 -10
  576. package/src/engine/sound/simulation/AcousticSimulator.d.ts.map +1 -1
  577. package/src/engine/sound/simulation/AcousticSimulator.js +2 -1
  578. package/src/engine/sound/simulation/core/AcousticOccluderIndex.d.ts.map +1 -1
  579. package/src/engine/sound/simulation/core/AcousticOccluderIndex.js +4 -6
  580. package/src/engine/sound/simulation/core/OcclusionSolver.d.ts.map +1 -1
  581. package/src/engine/sound/simulation/core/OcclusionSolver.js +2 -9
  582. package/src/engine/sound/simulation/probe/ProbeVisibilityRecheck.d.ts.map +1 -1
  583. package/src/engine/sound/simulation/probe/ProbeVisibilityRecheck.js +9 -14
  584. package/src/engine/sound/simulation/probe/bakeReverbBands.d.ts.map +1 -1
  585. package/src/engine/sound/simulation/probe/bakeReverbBands.js +2 -6
  586. package/src/engine/sound/simulation/probe/bakeVisibility.d.ts.map +1 -1
  587. package/src/engine/sound/simulation/probe/bakeVisibility.js +4 -34
  588. package/src/engine/sound/simulation/probe/probe_densify_portals.d.ts.map +1 -1
  589. package/src/engine/sound/simulation/probe/probe_densify_portals.js +3 -6
  590. package/src/engine/sound/simulation/probe/probe_edge_key.d.ts +31 -0
  591. package/src/engine/sound/simulation/probe/probe_edge_key.d.ts.map +1 -0
  592. package/src/engine/sound/simulation/probe/probe_edge_key.js +38 -0
  593. package/src/engine/sound/simulation/probe/probe_sdf_grid.d.ts +10 -3
  594. package/src/engine/sound/simulation/probe/probe_sdf_grid.d.ts.map +1 -1
  595. package/src/engine/sound/simulation/probe/probe_sdf_grid.js +10 -22
  596. package/src/engine/sound/simulation/probe/probe_visibility_augment.d.ts.map +1 -1
  597. package/src/engine/sound/simulation/probe/probe_visibility_augment.js +12 -48
  598. package/src/engine/sound/simulation/probe/probe_visibility_bridge_components.d.ts.map +1 -1
  599. package/src/engine/sound/simulation/probe/probe_visibility_bridge_components.js +4 -3
  600. package/src/engine/sound/simulation/render/foaReverbImpulseResponse.d.ts +5 -4
  601. package/src/engine/sound/simulation/render/foaReverbImpulseResponse.d.ts.map +1 -1
  602. package/src/engine/sound/simulation/render/foaReverbImpulseResponse.js +23 -31
  603. package/src/engine/sound/simulation/render/reverbImpulseResponse.d.ts +1 -8
  604. package/src/engine/sound/simulation/render/reverbImpulseResponse.d.ts.map +1 -1
  605. package/src/engine/sound/simulation/render/reverbImpulseResponse.js +21 -31
  606. package/src/engine/sound/simulation/render/reverb_band_tails.d.ts +55 -0
  607. package/src/engine/sound/simulation/render/reverb_band_tails.d.ts.map +1 -0
  608. package/src/engine/sound/simulation/render/reverb_band_tails.js +93 -0
  609. package/src/engine/sound/sopra/definition/EventDescriptionSerializationAdapter.d.ts.map +1 -1
  610. package/src/engine/sound/sopra/definition/EventDescriptionSerializationAdapter.js +6 -22
  611. package/src/engine/sound/sopra/definition/clip/BlendContainerAudioClip.d.ts.map +1 -1
  612. package/src/engine/sound/sopra/definition/clip/BlendContainerAudioClip.js +7 -3
  613. package/src/engine/sound/sopra/definition/clip/BlendContainerAudioClipSerializationAdapter.d.ts.map +1 -1
  614. package/src/engine/sound/sopra/definition/clip/BlendContainerAudioClipSerializationAdapter.js +7 -22
  615. package/src/engine/sound/sopra/definition/clip/ContainerAudioClip.d.ts.map +1 -1
  616. package/src/engine/sound/sopra/definition/clip/ContainerAudioClip.js +28 -0
  617. package/src/engine/sound/sopra/definition/clip/RandomContainerAudioClip.d.ts.map +1 -1
  618. package/src/engine/sound/sopra/definition/clip/RandomContainerAudioClip.js +1 -5
  619. package/src/engine/sound/sopra/definition/clip/SequenceContainerAudioClip.d.ts.map +1 -1
  620. package/src/engine/sound/sopra/definition/clip/SequenceContainerAudioClip.js +1 -13
  621. package/src/engine/sound/sopra/definition/clip/SwitchContainerAudioClip.d.ts.map +1 -1
  622. package/src/engine/sound/sopra/definition/clip/SwitchContainerAudioClip.js +2 -8
  623. package/src/engine/sound/sopra/definition/effect/ReverbEffect.d.ts +3 -0
  624. package/src/engine/sound/sopra/definition/effect/ReverbEffect.d.ts.map +1 -1
  625. package/src/engine/sound/sopra/definition/effect/ReverbEffect.js +26 -14
  626. package/src/engine/sound/sopra/runtime/BusGraph.d.ts.map +1 -1
  627. package/src/engine/sound/sopra/runtime/BusGraph.js +21 -33
  628. package/src/engine/sound/sopra/runtime/EventInstance.js +1 -1
  629. package/src/engine/ui/apply_pointer_tilt_3d.d.ts +25 -0
  630. package/src/engine/ui/apply_pointer_tilt_3d.d.ts.map +1 -0
  631. package/src/engine/ui/apply_pointer_tilt_3d.js +50 -0
  632. package/src/engine/ui/bindings/processors/DomElementProcessorTilt3D.d.ts.map +1 -1
  633. package/src/engine/ui/bindings/processors/DomElementProcessorTilt3D.js +9 -26
  634. package/src/generation/filtering/numeric/CellFilterCache.d.ts.map +1 -1
  635. package/src/generation/filtering/numeric/CellFilterCache.js +4 -21
  636. package/src/generation/filtering/numeric/complex/CellFilterSobel.d.ts.map +1 -1
  637. package/src/generation/filtering/numeric/complex/CellFilterSobel.js +11 -20
  638. package/src/generation/filtering/numeric/math/CellFilterPower.d.ts +1 -1
  639. package/src/generation/filtering/numeric/math/CellFilterPower.d.ts.map +1 -1
  640. package/src/generation/filtering/numeric/math/CellFilterPower.js +1 -5
  641. package/src/generation/filtering/numeric/process/computeCellFilterGradient.d.ts.map +1 -1
  642. package/src/generation/filtering/numeric/process/computeCellFilterGradient.js +13 -15
  643. package/src/generation/filtering/numeric/process/computeCellFilterSobel.d.ts +20 -0
  644. package/src/generation/filtering/numeric/process/computeCellFilterSobel.d.ts.map +1 -0
  645. package/src/generation/filtering/numeric/process/computeCellFilterSobel.js +36 -0
  646. package/src/generation/filtering/numeric/util/CellFilterDisplaced.d.ts.map +1 -1
  647. package/src/generation/filtering/numeric/util/CellFilterDisplaced.js +11 -6
  648. package/src/generation/filtering/numeric/util/populateSampler2DFromCellFilter.d.ts.map +1 -1
  649. package/src/generation/filtering/numeric/util/populateSampler2DFromCellFilter.js +18 -36
  650. package/src/generation/filtering/numeric/util/write_cell_filter_to_sampler2d.d.ts +21 -0
  651. package/src/generation/filtering/numeric/util/write_cell_filter_to_sampler2d.d.ts.map +1 -0
  652. package/src/generation/filtering/numeric/util/write_cell_filter_to_sampler2d.js +47 -0
  653. package/src/generation/filtering/util/cell_filter_weights_pick.d.ts +25 -0
  654. package/src/generation/filtering/util/cell_filter_weights_pick.d.ts.map +1 -0
  655. package/src/generation/filtering/util/cell_filter_weights_pick.js +54 -0
  656. package/src/generation/grid/generation/discrete/GridTaskConnectRooms.d.ts.map +1 -1
  657. package/src/generation/grid/generation/discrete/GridTaskConnectRooms.js +14 -1
  658. package/src/generation/markers/GridActionRuleSet.d.ts.map +1 -1
  659. package/src/generation/markers/GridActionRuleSet.js +10 -7
  660. package/src/generation/markers/GridCellActionPlaceMarker.d.ts.map +1 -1
  661. package/src/generation/markers/GridCellActionPlaceMarker.js +10 -12
  662. package/src/generation/markers/actions/probability/MarkerNodeActionSelectWeighted.d.ts.map +1 -1
  663. package/src/generation/markers/actions/probability/MarkerNodeActionSelectWeighted.js +7 -42
  664. package/src/generation/markers/transform/MarkerNodeTransformerOffsetPosition.d.ts.map +1 -1
  665. package/src/generation/markers/transform/MarkerNodeTransformerOffsetPosition.js +11 -6
  666. package/src/generation/placement/GridCellPlacementRule.d.ts.map +1 -1
  667. package/src/generation/placement/GridCellPlacementRule.js +10 -7
  668. package/src/generation/placement/action/GridCellActionPlaceTags.d.ts.map +1 -1
  669. package/src/generation/placement/action/GridCellActionPlaceTags.js +10 -4
  670. package/src/generation/placement/action/random/weighted/CellActionSelectWeightedRandom.d.ts.map +1 -1
  671. package/src/generation/placement/action/random/weighted/CellActionSelectWeightedRandom.js +2 -38
  672. package/src/generation/placement/action/util/GridCellDisplacedAction.d.ts.map +1 -1
  673. package/src/generation/placement/action/util/GridCellDisplacedAction.js +11 -6
  674. package/src/generation/rules/cell/CellMatcherGridPattern.d.ts.map +1 -1
  675. package/src/generation/rules/cell/CellMatcherGridPattern.js +11 -4
  676. package/src/generation/theme/ThemeEngine.d.ts.map +1 -1
  677. package/src/generation/theme/ThemeEngine.js +7 -12
  678. package/src/view/elements/Group.d.ts +24 -3
  679. package/src/view/elements/Group.d.ts.map +1 -1
  680. 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":"AAMA;;;;GAIG;AACH,qEAFa,MAAM,CAgBlB"}
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 { channelCountToThreIntegerTextureType } from "./channelCountToThreIntegerTextureType.js";
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
- const numeric_type = numericTypeFromBinaryDataType(spec.type);
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
  }