@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
@@ -7,6 +7,13 @@ import {
7
7
  RawShaderMaterial,
8
8
  Vector3
9
9
  } from "three";
10
+ import {
11
+ GLSL_IMPOSTOR_APPLY_FRAME_XFORM,
12
+ GLSL_IMPOSTOR_BILINEAR_WEIGHTS,
13
+ GLSL_IMPOSTOR_BLEND_4_FRAMES,
14
+ GLSL_IMPOSTOR_COMPUTE_FRAME_XFORM,
15
+ GLSL_OCTAHEDRAL_GRID
16
+ } from "../../../shaders/chunks/glsl_octahedral_impostor.js";
10
17
 
11
18
  /*
12
19
  *
@@ -66,123 +73,9 @@ const shader_vx = `
66
73
  uniform float uFrames;
67
74
  uniform bool uIsFullSphere;
68
75
 
69
- // ----- direction -> octahedral grid coord (range -1..+1) -----
70
-
71
- vec2 VecToSphereOct(vec3 pivotToCamera)
72
- {
73
- vec3 octant = sign(pivotToCamera);
74
- float sum = dot(pivotToCamera, octant);
75
- vec3 octahedron = pivotToCamera / sum;
76
- if (octahedron.y < 0.0) {
77
- vec3 absolute = abs(octahedron);
78
- octahedron.xz = octant.xz * vec2(1.0 - absolute.z, 1.0 - absolute.x);
79
- }
80
- return octahedron.xz;
81
- }
82
-
83
- vec2 VecToHemiSphereOct(vec3 v)
84
- {
85
- v.y = max(v.y, 0.001);
86
- v = normalize(v);
87
- vec3 octant = sign(v);
88
- float sum = dot(v, octant);
89
- vec3 octahedron = v / sum;
90
- return vec2(
91
- octahedron.x + octahedron.z,
92
- octahedron.z - octahedron.x
93
- );
94
- }
95
-
96
- vec2 VectorToGrid(vec3 v)
97
- {
98
- if (uIsFullSphere) {
99
- return VecToSphereOct(v);
100
- } else {
101
- return VecToHemiSphereOct(v);
102
- }
103
- }
104
-
105
- // ----- octahedral grid coord (range 0..1) -> direction -----
106
- //
107
- // Inverse of VectorToGrid (after the 0.5/2.0 remap). Given the
108
- // normalised position of a frame in the atlas, return the world-space
109
- // direction the bake camera was sitting at when it captured that frame.
110
-
111
- vec3 OctaSphereDec(vec2 coord)
112
- {
113
- coord = (coord - 0.5) * 2.0;
114
- vec3 p = vec3(coord.x, 0.0, coord.y);
115
- vec2 a = abs(p.xz);
116
- p.y = 1.0 - a.x - a.y;
117
- if (p.y < 0.0) {
118
- p.xz = sign(p.xz) * vec2(1.0 - a.y, 1.0 - a.x);
119
- }
120
- return p;
121
- }
122
-
123
- vec3 OctaHemiSphereDec(vec2 coord)
124
- {
125
- vec3 p = vec3(coord.x - coord.y, 0.0, -1.0 + coord.x + coord.y);
126
- vec2 a = abs(p.xz);
127
- p.y = 1.0 - a.x - a.y;
128
- return p;
129
- }
130
-
131
- vec3 GridToVector(vec2 coord)
132
- {
133
- if (uIsFullSphere) {
134
- return OctaSphereDec(coord);
135
- } else {
136
- return OctaHemiSphereDec(coord);
137
- }
138
- }
139
-
140
- // Frame index (gridFloor + corner offset) -> baked view direction.
141
- // Frame coords at the grid border can sit slightly outside the
142
- // [0, uFrames-1] range (e.g. gridFloor + (1,1) at the corner); clamp so
143
- // we don't feed invalid UVs to the octahedral decoder.
144
- vec3 FrameToRay(vec2 frame, vec2 framesMinusOne)
145
- {
146
- vec2 f = clamp(frame / framesMinusOne, 0.0, 1.0);
147
- return normalize(GridToVector(f));
148
- }
149
-
150
- // Build the 2x2 matrix that maps card-centred UV (vUv - 0.5) into the
151
- // texture-centred UV of a single baked frame. The matrix is just the
152
- // (tangent_OS, binormal_OS) basis expressed in the frame's own
153
- // (bake_right, bake_up) basis — i.e. how a step along the card's local
154
- // axes shows up in the texture the frame was rendered into.
155
- //
156
- // bake_right/bake_up follow three.js Camera.lookAt with up=(0,1,0).
157
- // We mirror its polar nudge so our shader basis matches what the
158
- // baker actually used when D_frame is parallel to up.
159
- vec4 ComputeFrameXform(vec3 D_frame, vec3 tangent_OS, vec3 binormal_OS)
160
- {
161
- vec3 D = abs(D_frame.y) > 0.99999
162
- ? normalize(D_frame + vec3(0.0, 0.0, 0.0001))
163
- : D_frame;
164
- vec3 bake_right = normalize(cross(vec3(0.0, 1.0, 0.0), D));
165
- vec3 bake_up = cross(D, bake_right);
166
- return vec4(
167
- dot(tangent_OS, bake_right),
168
- dot(binormal_OS, bake_right),
169
- dot(tangent_OS, bake_up),
170
- dot(binormal_OS, bake_up)
171
- );
172
- }
173
-
174
- // Bilinear weights over the 4 corners of the current cell, in the
175
- // order (w00, w10, w01, w11) matching gridFloor + (0,0)/(1,0)/(0,1)/(1,1).
176
- vec4 BilinearWeights(vec2 frac_uv)
177
- {
178
- vec2 omuv = vec2(1.0) - frac_uv;
179
- return vec4(
180
- omuv.x * omuv.y, // w00
181
- frac_uv.x * omuv.y, // w10
182
- omuv.x * frac_uv.y, // w01
183
- frac_uv.x * frac_uv.y // w11
184
- );
185
- }
76
+ ${GLSL_OCTAHEDRAL_GRID}
77
+ ${GLSL_IMPOSTOR_COMPUTE_FRAME_XFORM}
78
+ ${GLSL_IMPOSTOR_BILINEAR_WEIGHTS}
186
79
 
187
80
  void main() {
188
81
  vUv = uv;
@@ -315,43 +208,8 @@ const shader_fg = `
315
208
  uniform float uFrames;
316
209
  uniform float uDepthScale;
317
210
 
318
- // Apply a per-frame 2x2 rotation matrix to a card UV, rotating around
319
- // the texture centre (0.5, 0.5). xform = (a, b, c, d) packs row-major
320
- // [a b ; c d].
321
- vec2 apply_frame_xform(vec2 card_uv, vec4 xform)
322
- {
323
- vec2 c = card_uv - 0.5;
324
- return vec2(
325
- xform.x * c.x + xform.y * c.y,
326
- xform.z * c.x + xform.w * c.y
327
- ) + 0.5;
328
- }
329
-
330
- // Sample the same card-UV from the 4 cell-corner atlas frames, applying
331
- // each frame's own UV rotation so the textures land in a consistent
332
- // orientation, then blend with the bilinear weights. Used for both
333
- // depth and colour.
334
- vec4 blend_4_frames(
335
- sampler2D tex, vec2 card_uv,
336
- vec2 gridFloor, vec4 w,
337
- vec4 x00, vec4 x10, vec4 x01, vec4 x11
338
- ) {
339
- vec2 frame_size = vec2(1.0 / uFrames);
340
- // Clamp inside the unit square AFTER the per-frame rotation: at
341
- // sharp angles the rotation can push a corner UV outside [0,1] and
342
- // bleed into the neighbouring atlas tile (which is a completely
343
- // different bake direction). Clamping keeps the sample inside the
344
- // frame it's supposed to belong to.
345
- vec2 uv00 = clamp(apply_frame_xform(card_uv, x00), 0.0, 1.0);
346
- vec2 uv10 = clamp(apply_frame_xform(card_uv, x10), 0.0, 1.0);
347
- vec2 uv01 = clamp(apply_frame_xform(card_uv, x01), 0.0, 1.0);
348
- vec2 uv11 = clamp(apply_frame_xform(card_uv, x11), 0.0, 1.0);
349
- vec4 s00 = texture(tex, (gridFloor + vec2(0.0, 0.0) + uv00) * frame_size);
350
- vec4 s10 = texture(tex, (gridFloor + vec2(1.0, 0.0) + uv10) * frame_size);
351
- vec4 s01 = texture(tex, (gridFloor + vec2(0.0, 1.0) + uv01) * frame_size);
352
- vec4 s11 = texture(tex, (gridFloor + vec2(1.0, 1.0) + uv11) * frame_size);
353
- return s00 * w.x + s10 * w.y + s01 * w.z + s11 * w.w;
354
- }
211
+ ${GLSL_IMPOSTOR_APPLY_FRAME_XFORM}
212
+ ${GLSL_IMPOSTOR_BLEND_4_FRAMES}
355
213
 
356
214
  void main() {
357
215
  // View direction in the card's tangent space. The card is oriented
@@ -1 +1 @@
1
- {"version":3,"file":"ImpostorShaderViewportDepthV0.d.ts","sourceRoot":"","sources":["../../../../../../../src/engine/graphics/impostors/octahedral/shader/ImpostorShaderViewportDepthV0.js"],"names":[],"mappings":"AAiUA;;;;;;;;GAQG;AACH;IACI,cAkBC;CACJ;kCA9V6D,OAAO"}
1
+ {"version":3,"file":"ImpostorShaderViewportDepthV0.d.ts","sourceRoot":"","sources":["../../../../../../../src/engine/graphics/impostors/octahedral/shader/ImpostorShaderViewportDepthV0.js"],"names":[],"mappings":"AA6OA;;;;;;;;GAQG;AACH;IACI,cAkBC;CACJ;kCA1Q6D,OAAO"}
@@ -1,4 +1,10 @@
1
1
  import { GLSL3, NoBlending, RawShaderMaterial, Vector3 } from "three";
2
+ import {
3
+ GLSL_IMPOSTOR_APPLY_FRAME_XFORM,
4
+ GLSL_IMPOSTOR_BILINEAR_WEIGHTS,
5
+ GLSL_IMPOSTOR_COMPUTE_FRAME_XFORM,
6
+ GLSL_OCTAHEDRAL_GRID
7
+ } from "../../../shaders/chunks/glsl_octahedral_impostor.js";
2
8
 
3
9
  // Debug-viz variant: shows the parallax-corrected surface's VIEWPORT
4
10
  // depth as grayscale. This is the same value ImpostorShaderDepthV0
@@ -43,92 +49,9 @@ const shader_vx = `
43
49
  uniform float uFrames;
44
50
  uniform bool uIsFullSphere;
45
51
 
46
- vec2 VecToSphereOct(vec3 pivotToCamera)
47
- {
48
- vec3 octant = sign(pivotToCamera);
49
- float sum = dot(pivotToCamera, octant);
50
- vec3 octahedron = pivotToCamera / sum;
51
- if (octahedron.y < 0.0) {
52
- vec3 absolute = abs(octahedron);
53
- octahedron.xz = octant.xz * vec2(1.0 - absolute.z, 1.0 - absolute.x);
54
- }
55
- return octahedron.xz;
56
- }
57
-
58
- vec2 VecToHemiSphereOct(vec3 v)
59
- {
60
- v.y = max(v.y, 0.001);
61
- v = normalize(v);
62
- vec3 octant = sign(v);
63
- float sum = dot(v, octant);
64
- vec3 octahedron = v / sum;
65
- return vec2(
66
- octahedron.x + octahedron.z,
67
- octahedron.z - octahedron.x
68
- );
69
- }
70
-
71
- vec2 VectorToGrid(vec3 v)
72
- {
73
- return uIsFullSphere ? VecToSphereOct(v) : VecToHemiSphereOct(v);
74
- }
75
-
76
- vec3 OctaSphereDec(vec2 coord)
77
- {
78
- coord = (coord - 0.5) * 2.0;
79
- vec3 p = vec3(coord.x, 0.0, coord.y);
80
- vec2 a = abs(p.xz);
81
- p.y = 1.0 - a.x - a.y;
82
- if (p.y < 0.0) {
83
- p.xz = sign(p.xz) * vec2(1.0 - a.y, 1.0 - a.x);
84
- }
85
- return p;
86
- }
87
-
88
- vec3 OctaHemiSphereDec(vec2 coord)
89
- {
90
- vec3 p = vec3(coord.x - coord.y, 0.0, -1.0 + coord.x + coord.y);
91
- vec2 a = abs(p.xz);
92
- p.y = 1.0 - a.x - a.y;
93
- return p;
94
- }
95
-
96
- vec3 GridToVector(vec2 coord)
97
- {
98
- return uIsFullSphere ? OctaSphereDec(coord) : OctaHemiSphereDec(coord);
99
- }
100
-
101
- vec3 FrameToRay(vec2 frame, vec2 framesMinusOne)
102
- {
103
- vec2 f = clamp(frame / framesMinusOne, 0.0, 1.0);
104
- return normalize(GridToVector(f));
105
- }
106
-
107
- vec4 ComputeFrameXform(vec3 D_frame, vec3 tangent_OS, vec3 binormal_OS)
108
- {
109
- vec3 D = abs(D_frame.y) > 0.99999
110
- ? normalize(D_frame + vec3(0.0, 0.0, 0.0001))
111
- : D_frame;
112
- vec3 bake_right = normalize(cross(vec3(0.0, 1.0, 0.0), D));
113
- vec3 bake_up = cross(D, bake_right);
114
- return vec4(
115
- dot(tangent_OS, bake_right),
116
- dot(binormal_OS, bake_right),
117
- dot(tangent_OS, bake_up),
118
- dot(binormal_OS, bake_up)
119
- );
120
- }
121
-
122
- vec4 BilinearWeights(vec2 frac_uv)
123
- {
124
- vec2 omuv = vec2(1.0) - frac_uv;
125
- return vec4(
126
- omuv.x * omuv.y,
127
- frac_uv.x * omuv.y,
128
- omuv.x * frac_uv.y,
129
- frac_uv.x * frac_uv.y
130
- );
131
- }
52
+ ${GLSL_OCTAHEDRAL_GRID}
53
+ ${GLSL_IMPOSTOR_COMPUTE_FRAME_XFORM}
54
+ ${GLSL_IMPOSTOR_BILINEAR_WEIGHTS}
132
55
 
133
56
  void main() {
134
57
  vUv = uv;
@@ -222,14 +145,7 @@ const shader_fg = `
222
145
  uniform float uRadius;
223
146
  uniform float uDepthScale;
224
147
 
225
- vec2 apply_frame_xform(vec2 card_uv, vec4 xform)
226
- {
227
- vec2 c = card_uv - 0.5;
228
- return vec2(
229
- xform.x * c.x + xform.y * c.y,
230
- xform.z * c.x + xform.w * c.y
231
- ) + 0.5;
232
- }
148
+ ${GLSL_IMPOSTOR_APPLY_FRAME_XFORM}
233
149
 
234
150
  void main() {
235
151
  // Parallax shift in CAMERA tangent space — this is the visible
@@ -1 +1 @@
1
- {"version":3,"file":"ImpostorShaderWireframeV0.d.ts","sourceRoot":"","sources":["../../../../../../../src/engine/graphics/impostors/octahedral/shader/ImpostorShaderWireframeV0.js"],"names":[],"mappings":"AAgKA;IACI,cA2DC;IAHG,4CAAyB;CAIhC;kCArNM,OAAO"}
1
+ {"version":3,"file":"ImpostorShaderWireframeV0.d.ts","sourceRoot":"","sources":["../../../../../../../src/engine/graphics/impostors/octahedral/shader/ImpostorShaderWireframeV0.js"],"names":[],"mappings":"AAgGA;IACI,cA2DC;IAHG,4CAAyB;CAIhC;kCArJM,OAAO"}
@@ -7,6 +7,10 @@ import {
7
7
  RawShaderMaterial,
8
8
  Vector3
9
9
  } from "three";
10
+ import {
11
+ GLSL_IMPOSTOR_BILINEAR_WEIGHTS,
12
+ GLSL_OCTAHEDRAL_GRID
13
+ } from "../../../shaders/chunks/glsl_octahedral_impostor.js";
10
14
 
11
15
  // The wireframe must trace the SAME card geometry that ImpostorShaderV0
12
16
  // produces, otherwise the red outline lies about where the impostor surface
@@ -28,79 +32,11 @@ const shader_vx = `
28
32
 
29
33
  // ----- direction -> octahedral grid coord (range -1..+1) -----
30
34
 
31
- vec2 VecToSphereOct(vec3 pivotToCamera)
32
- {
33
- vec3 octant = sign(pivotToCamera);
34
- float sum = dot(pivotToCamera, octant);
35
- vec3 octahedron = pivotToCamera / sum;
36
- if (octahedron.y < 0.0) {
37
- vec3 absolute = abs(octahedron);
38
- octahedron.xz = octant.xz * vec2(1.0 - absolute.z, 1.0 - absolute.x);
39
- }
40
- return octahedron.xz;
41
- }
42
-
43
- vec2 VecToHemiSphereOct(vec3 v)
44
- {
45
- v.y = max(v.y, 0.001);
46
- v = normalize(v);
47
- vec3 octant = sign(v);
48
- float sum = dot(v, octant);
49
- vec3 octahedron = v / sum;
50
- return vec2(
51
- octahedron.x + octahedron.z,
52
- octahedron.z - octahedron.x
53
- );
54
- }
55
-
56
- vec2 VectorToGrid(vec3 v)
57
- {
58
- return uIsFullSphere ? VecToSphereOct(v) : VecToHemiSphereOct(v);
59
- }
60
-
61
- // ----- octahedral grid coord (range 0..1) -> direction -----
62
-
63
- vec3 OctaSphereDec(vec2 coord)
64
- {
65
- coord = (coord - 0.5) * 2.0;
66
- vec3 p = vec3(coord.x, 0.0, coord.y);
67
- vec2 a = abs(p.xz);
68
- p.y = 1.0 - a.x - a.y;
69
- if (p.y < 0.0) {
70
- p.xz = sign(p.xz) * vec2(1.0 - a.y, 1.0 - a.x);
71
- }
72
- return p;
73
- }
35
+ ${GLSL_OCTAHEDRAL_GRID}
36
+
74
37
 
75
- vec3 OctaHemiSphereDec(vec2 coord)
76
- {
77
- vec3 p = vec3(coord.x - coord.y, 0.0, -1.0 + coord.x + coord.y);
78
- vec2 a = abs(p.xz);
79
- p.y = 1.0 - a.x - a.y;
80
- return p;
81
- }
82
-
83
- vec3 GridToVector(vec2 coord)
84
- {
85
- return uIsFullSphere ? OctaSphereDec(coord) : OctaHemiSphereDec(coord);
86
- }
87
-
88
- vec3 FrameToRay(vec2 frame, vec2 framesMinusOne)
89
- {
90
- vec2 f = clamp(frame / framesMinusOne, 0.0, 1.0);
91
- return normalize(GridToVector(f));
92
- }
93
-
94
- vec4 BilinearWeights(vec2 frac_uv)
95
- {
96
- vec2 omuv = vec2(1.0) - frac_uv;
97
- return vec4(
98
- omuv.x * omuv.y,
99
- frac_uv.x * omuv.y,
100
- omuv.x * frac_uv.y,
101
- frac_uv.x * frac_uv.y
102
- );
103
- }
38
+ ${GLSL_IMPOSTOR_BILINEAR_WEIGHTS}
39
+
104
40
 
105
41
  void main() {
106
42
  // Pivot-to-camera direction in object-local space; same as V0.
@@ -1,3 +1,13 @@
1
+ // NAME COLLISION WARNING.
2
+ //
3
+ // `VecToSphereOct`, `VectorToGrid` and `GridToVector` below are the HLSL-derived
4
+ // V1/Standard convention: they fold via `_ImposterFullSphere`, divide only the
5
+ // .xz components by the L1 norm, and use HLSL intrinsics (`frac`, `saturate`,
6
+ // `tex2Dgrad`). They are NOT the same mapping as the identically-named functions
7
+ // in `engine/graphics/shaders/chunks/glsl_octahedral_impostor.js`, which is what
8
+ // the V0 impostor family and the CPU bake path use. Do not assume a function
9
+ // named `VecToSphereOct` in this repository produces one particular mapping —
10
+ // check which preamble the shader you are reading pulls in.
1
11
  struct ImposterData
2
12
  {
3
13
  vec2 uv;
@@ -1 +1 @@
1
- {"version":3,"file":"read_atlas_to_samples.d.ts","sourceRoot":"","sources":["../../../../../../../src/engine/graphics/impostors/voxel/bake/read_atlas_to_samples.js"],"names":[],"mappings":"AAuLA;;;;;;;;;;;;;;;;GAgBG;AACH;IAJuC,QAAQ;IACR,QAAQ,EAApC,MAAM,aAAa;;aACP,YAAY;kBAAgB,MAAM;EA2IxD;AA3UD;;;;;;;;;;;GAWG;AACH,kCAFU,MAAM,CAEsB"}
1
+ {"version":3,"file":"read_atlas_to_samples.d.ts","sourceRoot":"","sources":["../../../../../../../src/engine/graphics/impostors/voxel/bake/read_atlas_to_samples.js"],"names":[],"mappings":"AAuMA;;;;;;;;;;;;;;;;GAgBG;AACH;IAJuC,QAAQ;IACR,QAAQ,EAApC,MAAM,aAAa;;aACP,YAAY;kBAAgB,MAAM;EAgJxD;AAhWD;;;;;;;;;;;GAWG;AACH,kCAFU,MAAM,CAEsB"}
@@ -45,36 +45,33 @@ function read_atlas_texture_rgba_u8(renderer, texture) {
45
45
 
46
46
 
47
47
  /**
48
- * Decode the bake-time view-space normal back into the impostor's local
49
- * (object) space. Inverse of the encode side in BakeShaderStandard.
50
- *
51
- * The baker placed an OrthographicCamera at
48
+ * Number of values in a bake frame basis: right.xyz, up.xyz, D.xyz.
49
+ * @type {number}
50
+ */
51
+ const BAKE_FRAME_STRIDE = 9;
52
+
53
+ /**
54
+ * Rebuild the bake camera's orthonormal basis for one atlas frame.
52
55
  *
53
- * camera_pos = centre + radius * D_frame
56
+ * The baker placed an OrthographicCamera at `centre + radius * D_frame` and
57
+ * pointed it at `centre` with three.js's `lookAt` using world-up = (0,1,0).
58
+ * That gives the object-space basis `(bake_right, bake_up, +D)`. Both the
59
+ * normal decode and the position reconstruction have to rebuild EXACTLY that
60
+ * basis, including the polar nudge, or they disagree with each other and with
61
+ * the baker — which is why this is one function rather than the two copies it
62
+ * replaces. The copies even said so ("Same polar nudge as the normal decoder,
63
+ * so right/up agree") without being able to enforce it.
54
64
  *
55
- * with three.js's lookAt(centre) using world-up = (0,1,0). That gives a
56
- * camera basis (bake_right, bake_up, +D_frame) in object space. The
57
- * baker wrote the surface normal as (normal.x = dot(n, right),
58
- * normal.y = dot(n, up), normal.z = dot(n, D_frame)) and packed it into
59
- * the atlas RGB channels as (* 0.5 + 0.5). So to reverse, decode the RGB
60
- * back to ±1 and recombine through the same basis.
65
+ * `D` is written into the output too: the nudge can change it, and every
66
+ * consumer needs the nudged value, not the caller's original.
61
67
  *
62
- * @param {number[]} out length-3 output, object-space normal
63
- * @param {number} nr encoded R in [0,1]
64
- * @param {number} ng encoded G in [0,1]
65
- * @param {number} nb encoded B in [0,1]
66
- * @param {number[]} D_frame bake direction in object space (unit)
68
+ * @param {number[]} out_frame length {@link BAKE_FRAME_STRIDE}: [right.xyz, up.xyz, D.xyz]
69
+ * @param {number[]} D_frame bake direction in object space (unit)
67
70
  */
68
- function decode_normal_to_object_space(out, nr, ng, nb, D_frame) {
69
- // 1. Decode bake-view-space normal from [0,1] to [-1,1]
70
- const nx = nr * 2 - 1;
71
- const ny = ng * 2 - 1;
72
- const nz = nb * 2 - 1;
73
-
74
- // 2. Mirror three.js Camera.lookAt's polar nudge — when D_frame is
75
- // parallel to world-up, lookAt jiggles +Z slightly to avoid a
76
- // degenerate cross product. We have to do the same so our basis
77
- // matches the baker's.
71
+ function bake_frame_from_direction(out_frame, D_frame) {
72
+ // Mirror three.js Camera.lookAt's polar nudge when D_frame is parallel
73
+ // to world-up, lookAt jiggles +Z slightly to avoid a degenerate cross
74
+ // product. We have to do the same so our basis matches the baker's.
78
75
  let Dx = D_frame[0], Dy = D_frame[1], Dz = D_frame[2];
79
76
  if (Math.abs(Dy) > 0.99999) {
80
77
  // Normalise (D + (0, 0, 0.0001)) — same nudge the lit shader uses.
@@ -85,8 +82,8 @@ function decode_normal_to_object_space(out, nr, ng, nb, D_frame) {
85
82
  Dz = dz_n / len;
86
83
  }
87
84
 
88
- // 3. bake_right = normalize(cross((0,1,0), D))
89
- // Cross product: (0,1,0) × (Dx,Dy,Dz) = (Dz, 0, -Dx)
85
+ // bake_right = normalize(cross((0,1,0), D))
86
+ // Cross product: (0,1,0) × (Dx,Dy,Dz) = (Dz, 0, -Dx)
90
87
  let rx = Dz;
91
88
  let ry = 0;
92
89
  let rz = -Dx;
@@ -94,13 +91,49 @@ function decode_normal_to_object_space(out, nr, ng, nb, D_frame) {
94
91
  const len = Math.sqrt(rx * rx + ry * ry + rz * rz);
95
92
  rx /= len; ry /= len; rz /= len;
96
93
  }
97
- // 4. bake_up = cross(D, right) — no normalise needed, D and right
98
- // are already orthonormal.
99
- const ux = Dy * rz - Dz * ry;
100
- const uy = Dz * rx - Dx * rz;
101
- const uz = Dx * ry - Dy * rx;
102
94
 
103
- // 5. Recompose in object space.
95
+ // bake_up = cross(D, right) — no normalise needed, D and right are
96
+ // already orthonormal.
97
+ out_frame[0] = rx;
98
+ out_frame[1] = ry;
99
+ out_frame[2] = rz;
100
+
101
+ out_frame[3] = Dy * rz - Dz * ry;
102
+ out_frame[4] = Dz * rx - Dx * rz;
103
+ out_frame[5] = Dx * ry - Dy * rx;
104
+
105
+ out_frame[6] = Dx;
106
+ out_frame[7] = Dy;
107
+ out_frame[8] = Dz;
108
+ }
109
+
110
+
111
+ /**
112
+ * Decode the bake-time view-space normal back into the impostor's local
113
+ * (object) space. Inverse of the encode side in BakeShaderStandard.
114
+ *
115
+ * The baker wrote the surface normal as (normal.x = dot(n, right),
116
+ * normal.y = dot(n, up), normal.z = dot(n, D_frame)) and packed it into
117
+ * the atlas RGB channels as (* 0.5 + 0.5). So to reverse, decode the RGB
118
+ * back to ±1 and recombine through the same basis.
119
+ *
120
+ * @param {number[]} out length-3 output, object-space normal
121
+ * @param {number} nr encoded R in [0,1]
122
+ * @param {number} ng encoded G in [0,1]
123
+ * @param {number} nb encoded B in [0,1]
124
+ * @param {number[]} frame bake basis from {@link bake_frame_from_direction}
125
+ */
126
+ function decode_normal_to_object_space(out, nr, ng, nb, frame) {
127
+ // Decode bake-view-space normal from [0,1] to [-1,1]
128
+ const nx = nr * 2 - 1;
129
+ const ny = ng * 2 - 1;
130
+ const nz = nb * 2 - 1;
131
+
132
+ const rx = frame[0], ry = frame[1], rz = frame[2];
133
+ const ux = frame[3], uy = frame[4], uz = frame[5];
134
+ const Dx = frame[6], Dy = frame[7], Dz = frame[8];
135
+
136
+ // Recompose in object space.
104
137
  out[0] = rx * nx + ux * ny + Dx * nz;
105
138
  out[1] = ry * nx + uy * ny + Dy * nz;
106
139
  out[2] = rz * nx + uz * ny + Dz * nz;
@@ -137,31 +170,14 @@ function decode_normal_to_object_space(out, nr, ng, nb, D_frame) {
137
170
  * @param {number} depth01 depth in [0,1] as stored in atlas alpha
138
171
  * @param {number} frame_u_local frame-local X in [-1, +1]
139
172
  * @param {number} frame_v_local frame-local Y in [-1, +1]
140
- * @param {number[]} D_frame bake direction in object space (unit)
173
+ * @param {number[]} frame bake basis from {@link bake_frame_from_direction}
141
174
  * @param {number} radius bounding sphere radius
142
175
  * @param {number[]} centre bounding sphere centre (object space)
143
176
  */
144
- function reconstruct_position(out, depth01, frame_u_local, frame_v_local, D_frame, radius, centre) {
145
- // Same polar nudge as the normal decoder, so right/up agree.
146
- let Dx = D_frame[0], Dy = D_frame[1], Dz = D_frame[2];
147
- if (Math.abs(Dy) > 0.99999) {
148
- const dz_n = Dz + 0.0001;
149
- const len = Math.sqrt(Dx * Dx + Dy * Dy + dz_n * dz_n);
150
- Dx /= len;
151
- Dy /= len;
152
- Dz = dz_n / len;
153
- }
154
-
155
- // Same basis as decode_normal_to_object_space; see the cross-product
156
- // derivation there.
157
- let rx = Dz, ry = 0, rz = -Dx;
158
- {
159
- const len = Math.sqrt(rx * rx + ry * ry + rz * rz);
160
- rx /= len; ry /= len; rz /= len;
161
- }
162
- const ux = Dy * rz - Dz * ry;
163
- const uy = Dz * rx - Dx * rz;
164
- const uz = Dx * ry - Dy * rx;
177
+ function reconstruct_position(out, depth01, frame_u_local, frame_v_local, frame, radius, centre) {
178
+ const rx = frame[0], ry = frame[1], rz = frame[2];
179
+ const ux = frame[3], uy = frame[4], uz = frame[5];
180
+ const Dx = frame[6], Dy = frame[7], Dz = frame[8];
165
181
 
166
182
  // C = centre + radius * D
167
183
  const cx = centre[0] + radius * Dx;
@@ -235,6 +251,9 @@ export function read_atlas_to_samples({ impostor, renderer }) {
235
251
  const D_frame = [0, 0, 0];
236
252
  const pos_scratch = [0, 0, 0];
237
253
  const nrm_scratch = [0, 0, 0];
254
+ // The bake basis is constant across a whole frame tile, so it is built
255
+ // once per tile rather than twice per covered pixel.
256
+ const frame_basis = new Array(BAKE_FRAME_STRIDE).fill(0);
238
257
 
239
258
  const max_frame_index = frame_count - 1;
240
259
  const inv_255 = 1 / 255;
@@ -261,6 +280,8 @@ export function read_atlas_to_samples({ impostor, renderer }) {
261
280
 
262
281
  encoder.uv_to_unit(D_frame, [frame_u, frame_v]);
263
282
 
283
+ bake_frame_from_direction(frame_basis, D_frame);
284
+
264
285
  // Per-pixel decode within this frame tile.
265
286
  const px_end = Math.ceil(frame_size);
266
287
  for (let py = 0; py < px_end; py++) {
@@ -286,14 +307,14 @@ export function read_atlas_to_samples({ impostor, renderer }) {
286
307
  const frame_u_local = ((px + 0.5) * inv_frame_size) * 2 - 1;
287
308
 
288
309
  const depth01 = geometry_bytes[pixel + 3] * inv_255;
289
- reconstruct_position(pos_scratch, depth01, frame_u_local, frame_v_local, D_frame, radius, centre);
310
+ reconstruct_position(pos_scratch, depth01, frame_u_local, frame_v_local, frame_basis, radius, centre);
290
311
 
291
312
  decode_normal_to_object_space(
292
313
  nrm_scratch,
293
314
  geometry_bytes[pixel] * inv_255,
294
315
  geometry_bytes[pixel + 1] * inv_255,
295
316
  geometry_bytes[pixel + 2] * inv_255,
296
- D_frame
317
+ frame_basis
297
318
  );
298
319
 
299
320
  const out_offset = sample_count * ATLAS_SAMPLE_STRIDE;
@@ -1 +1 @@
1
- {"version":3,"file":"VoxelImpostorShaderDepthV0.d.ts","sourceRoot":"","sources":["../../../../../../../src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderDepthV0.js"],"names":[],"mappings":"AA4EA;;;;;;;GAOG;AACH;IACI,cAYC;CACJ;kCAlGoD,OAAO"}
1
+ {"version":3,"file":"VoxelImpostorShaderDepthV0.d.ts","sourceRoot":"","sources":["../../../../../../../src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderDepthV0.js"],"names":[],"mappings":"AAiEA;;;;;;;GAOG;AACH;IACI,cAYC;CACJ;kCAvFoD,OAAO"}