@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
@@ -1,419 +1,189 @@
1
- vec3 inverseTransformDirection(in vec3 normal, in mat4 matrix) {
2
- // matrix is assumed to be orthogonal
3
- return normalize((vec4(normal, 0.0) * matrix).xyz);
4
- }
5
-
6
-
7
- precision highp usampler2D;
8
- precision highp usampler3D;
9
-
10
- uniform sampler2D lpv_t_probe_positions;
11
- uniform sampler2D lpv_t_probe_depth;
12
-
13
- uniform uint lpv_u_probe_depth_resolution;
14
-
15
- #define SEARCH_STEP_LIMIT 64u
16
- #define INVALID_TET 1073741823u
17
-
18
- ivec2 lpv_index_to_256_coordinate(uint index) {
19
-
20
- uint pixel_x = index % 256u;
21
- uint pixel_y = index / 256u;
22
-
23
- return ivec2(int(pixel_x), int(pixel_y));
24
- }
25
-
26
- float sign_not_zero(float x) {
27
- return x >= 0.0 ? 1.0 : -1.0;
28
- }
29
-
30
- vec2 sign_not_zero(vec2 x) {
31
- return vec2(
32
- sign_not_zero(x.x),
33
- sign_not_zero(x.y)
34
- );
35
- }
36
-
37
- vec3 sign_not_zero(vec3 x) {
38
- return vec3(
39
- sign_not_zero(x.x),
40
- sign_not_zero(x.y),
41
- sign_not_zero(x.z)
42
- );
43
- }
44
-
45
- vec4 quadBlendWieghts(vec2 coords)
46
- {
47
- vec4 res;
48
- /* 0 0 0
49
- 0 0 0
50
- 1 0 0 */
51
- res.x = min(1.0f - coords.x, 1.0f - coords.y);
52
- /* 1 0 0
53
- 0 0 0
54
- 0 0 1 */
55
- res.y = abs(coords.x - coords.y);
56
- /* 0 0 1
57
- 0 0 0
58
- 0 0 0 */
59
- res.z = min(coords.x, coords.y);
60
- /* 0 0 0
61
- 0 0 1
62
- 0 1 1 */
63
- res.w = ceil(coords.x - coords.y);
64
- //res.xyz /= (res.x + res.y + res.z);
65
- return res;
66
- }
67
-
68
- //vec2 VecToSphereOct(vec3 v)
69
- //{
70
- // float l1norm = abs(v.x) + abs(v.y) + abs(v.z);
71
- //
72
- // vec2 result = v.xz / l1norm;
73
- //
74
- // if (v.y < 0.0) {
75
- // result = (1.0 - abs(result.yx)) * sign_not_zero(result.xy);
76
- // }
77
- //
78
- // return result;
79
- //}
80
-
81
- vec3 OctaSphereEnc(vec2 coord)
82
- {
83
- coord = (coord - 0.5) * 2.0;
84
- vec3 position = vec3(coord.x, 0.0, coord.y);
85
- vec2 absolute = abs(position.xz);
86
- position.y = 1.0 - absolute.x - absolute.y;
87
-
88
- if (position.y < 0.0)
89
- {
90
- position.xz = sign(position.xz) * vec2(1.0 - absolute.y, 1.0 - absolute.x);
91
- }
92
-
93
- return position;
94
- }
95
-
96
- vec2 VecToSphereOct(vec3 v)
97
- {
98
- float l1norm = abs(v.x) + abs(v.y) + abs(v.z);
99
-
100
- vec2 result = v.xz / l1norm;
101
-
102
- if (v.y < 0.0) {
103
- result = (1.0 - abs(result.yx)) * sign_not_zero(result.xy);
104
- }
105
-
106
- return result;
107
- }
108
-
109
- float SampleBlended(sampler2D tex, vec2 uv0, vec2 uv1, vec2 uv2, vec4 weights) {
110
-
111
- float samp0 = textureLod(tex, uv0, 0.0).r;
112
- float samp1 = textureLod(tex, uv1, 0.0).r;
113
- float samp2 = textureLod(tex, uv2, 0.0).r;
114
-
115
- return samp0 * weights.x + samp1 * weights.y + samp2 * weights.z;
116
- }
117
-
118
- float lpv_probe_getDepth(uint probe_index, vec3 direction) {
119
- // get offset
120
- uint depth_tile_resolution = lpv_u_probe_depth_resolution;
121
- uvec2 atlas_size = uvec2(4096u);
122
-
123
- uint tiles_per_row = atlas_size.x / depth_tile_resolution;
124
-
125
- uint tile_x = probe_index % tiles_per_row;
126
- uint tile_y = probe_index / tiles_per_row;
127
-
128
- vec2 tile_offset = vec2(
129
- tile_x * depth_tile_resolution,
130
- tile_y * depth_tile_resolution
131
- );
132
-
133
- // convert direction to UV
134
- vec2 octahedral_uv = clamp(VecToSphereOct(direction) * 0.5 + 0.5, 0.0, 1.0);
135
- vec2 grid = octahedral_uv * vec2(depth_tile_resolution - 1u);
136
-
137
- vec2 gridFrac = fract(grid);
138
- vec2 gridFloor = floor(grid);
139
-
140
- vec4 weights = quadBlendWieghts(gridFrac);
141
-
142
- //3 nearest frames
143
- vec2 frame0 = gridFloor;
144
- vec2 frame1 = gridFloor + mix(vec2(0, 1), vec2(1, 0), weights.w);
145
- vec2 frame2 = gridFloor + vec2(1.0, 1.0);
146
-
147
- // move frames to atlas space
148
- frame0 += tile_offset;
149
- frame1 += tile_offset;
150
- frame2 += tile_offset;
151
-
152
- vec2 uv0 = (frame0 + 0.5) / vec2(atlas_size);
153
- vec2 uv1 = (frame1 + 0.5) / vec2(atlas_size);
154
- vec2 uv2 = (frame2 + 0.5) / vec2(atlas_size);
155
-
156
- return SampleBlended(
157
- lpv_t_probe_depth,
158
- uv0, uv1, uv2,
159
- weights
160
- );
161
- }
162
-
163
- float lpv_bilinear_lerp(float v00, float v01, float v10, float v11, vec2 fraction) {
164
-
165
- float x0 = mix(v00, v01, fraction.x);
166
- float x1 = mix(v10, v11, fraction.x);
167
-
168
- return mix(x0, x1, fraction.y);
169
- }
170
-
171
- vec2 lpv_bilinear_lerp(vec2 v00, vec2 v01, vec2 v10, vec2 v11, vec2 fraction) {
172
-
173
- vec2 x0 = mix(v00, v01, fraction.x);
174
- vec2 x1 = mix(v10, v11, fraction.x);
175
-
176
- return mix(x0, x1, fraction.y);
177
- }
178
-
179
- vec2 lpv_sample_bilinear(sampler2D tex, ivec2 texel_position, vec2 fraction) {
180
-
181
- float texel_00 = texelFetch(tex, texel_position, 0).r;
182
- float texel_01 = texelFetch(tex, texel_position + ivec2(1, 0), 0).r;
183
- float texel_10 = texelFetch(tex, texel_position + ivec2(0, 1), 0).r;
184
- float texel_11 = texelFetch(tex, texel_position + ivec2(1, 1), 0).r;
185
-
186
- return vec2(
187
- lpv_bilinear_lerp(
188
- texel_00, texel_01,
189
- texel_10, texel_11,
190
- fraction
191
- ),
192
- lpv_bilinear_lerp(
193
- texel_00 * texel_00, texel_01 * texel_01,
194
- texel_10 * texel_10, texel_11 * texel_11,
195
- fraction
196
- )
197
- );
198
- }
199
-
200
- ivec2 wrapOctahedralTexelCoordinatesNone(in ivec2 texelCoord, in int texture_size) {
201
- return texelCoord;
202
- }
203
-
204
- ivec2 wrapOctahedralTexelCoordinatesV0(in ivec2 texelCoord, in int texture_size) {
205
- // return texelCoord;
206
- // Decrement the texture size by 1 to get the maximum valid index
207
- int maxIndex = texture_size - 1;
208
-
209
- // Wrap the texel coordinates
210
- ivec2 wrappedCoord = texelCoord;
211
-
212
- // Wrap the X coordinate
213
- if (wrappedCoord.x > maxIndex) {
214
- wrappedCoord.x = maxIndex;
215
- wrappedCoord.y += 1;
216
- }
217
-
218
- // Wrap the Y coordinate
219
- if (wrappedCoord.y > maxIndex) {
220
- wrappedCoord.y = maxIndex - wrappedCoord.y; // Wrap from top to bottom
221
- }
222
-
223
- return wrappedCoord;
224
- }
225
-
226
- ivec2 wrapOctahedralTexelCoordinates(const in ivec2 texel, const in int texture_size) {
227
- ivec2 wrapped = ((texel % texture_size) + texture_size) % texture_size;
228
-
229
- int fx = (abs(texel.x / texture_size) + int(texel.x < 0));
230
- int fy = (abs(texel.y / texture_size) + int(texel.y < 0));
231
-
232
- if (((fx ^ fy) & 1) != 0) {
233
- return (texture_size - (wrapped + ivec2(1)));
234
- return wrapped;
235
- } else {
236
- return wrapped;
237
- }
238
- }
239
-
240
-
241
- vec2 lpv_probe_getDepthBilinear(uint probe_index, vec3 direction) {
242
- // get offset
243
- int depth_tile_resolution = int(lpv_u_probe_depth_resolution);
244
- ivec2 tile_resolution = ivec2(depth_tile_resolution);
245
- const ivec2 atlas_size = ivec2(4096);
246
-
247
- int tiles_per_row = atlas_size.x / depth_tile_resolution;
248
-
249
- int tile_x = int(probe_index) % tiles_per_row;
250
- int tile_y = int(probe_index) / tiles_per_row;
251
-
252
- ivec2 tile_offset = ivec2(
253
- tile_x * depth_tile_resolution,
254
- tile_y * depth_tile_resolution
255
- );
256
-
257
- // convert direction to UV
258
- vec2 octahedral_uv = clamp(VecToSphereOct(direction) * 0.5 + 0.5, 0.0, 1.0);
259
- vec2 grid = octahedral_uv * vec2(depth_tile_resolution) - 0.5;
260
-
261
- vec2 gridFrac = fract(grid);
262
-
263
- ivec2 texel_position = ivec2(floor(grid));
264
-
265
- ivec2 tile_p_00;
266
- ivec2 tile_p_01;
267
- ivec2 tile_p_10;
268
- ivec2 tile_p_11;
269
-
270
- tile_p_00 = wrapOctahedralTexelCoordinates(texel_position , depth_tile_resolution);
271
- tile_p_01 = wrapOctahedralTexelCoordinates(texel_position + ivec2(1, 0), depth_tile_resolution);
272
- tile_p_10 = wrapOctahedralTexelCoordinates(texel_position + ivec2(0, 1), depth_tile_resolution);
273
- tile_p_11 = wrapOctahedralTexelCoordinates(texel_position + ivec2(1, 1), depth_tile_resolution);
274
-
275
-
276
- vec2 texel_00 = texelFetch(lpv_t_probe_depth, tile_offset + tile_p_00, 0).rg;
277
- vec2 texel_01 = texelFetch(lpv_t_probe_depth, tile_offset + tile_p_01, 0).rg;
278
- vec2 texel_10 = texelFetch(lpv_t_probe_depth, tile_offset + tile_p_10, 0).rg;
279
- vec2 texel_11 = texelFetch(lpv_t_probe_depth, tile_offset + tile_p_11, 0).rg;
280
-
281
- return lpv_bilinear_lerp(
282
- texel_00, texel_01,
283
- texel_10, texel_11,
284
- gridFrac
285
- );
286
- }
287
-
288
- vec2 lpv_probe_getDepthTriangular(uint probe_index, vec3 direction) {
289
- // get offset
290
- uint depth_tile_resolution = lpv_u_probe_depth_resolution;
291
- uvec2 atlas_size = uvec2(4096u);
292
-
293
- uint tiles_per_row = atlas_size.x / depth_tile_resolution;
294
-
295
- uint tile_x = probe_index % tiles_per_row;
296
- uint tile_y = probe_index / tiles_per_row;
297
-
298
- vec2 tile_offset = vec2(
299
- tile_x * depth_tile_resolution,
300
- tile_y * depth_tile_resolution
301
- );
302
-
303
- // convert direction to UV
304
- vec2 octahedral_uv = clamp(VecToSphereOct(direction) * 0.5 + 0.5, 0.0, 1.0);
305
- vec2 grid = octahedral_uv * vec2(depth_tile_resolution - 1u);
306
-
307
- vec2 gridFrac = fract(grid);
308
- vec2 gridFloor = floor(grid);
309
-
310
- vec4 weights = quadBlendWieghts(gridFrac);
311
-
312
- //3 nearest frames
313
- vec2 frame0 = gridFloor;
314
- vec2 frame1 = gridFloor + mix(vec2(0, 1), vec2(1, 0), weights.w);
315
- vec2 frame2 = gridFloor + vec2(1.0, 1.0);
316
-
317
- // move frames to atlas space
318
- frame0 += tile_offset;
319
- frame1 += tile_offset;
320
- frame2 += tile_offset;
321
-
322
- float samp0 = texelFetch(lpv_t_probe_depth, ivec2(frame0), 0).r;
323
- float samp1 = texelFetch(lpv_t_probe_depth, ivec2(frame1), 0).r;
324
- float samp2 = texelFetch(lpv_t_probe_depth, ivec2(frame2), 0).r;
325
-
326
- float d0 = samp0 * weights.x;
327
- float d1 = samp1 * weights.y;
328
- float d2 = samp2 * weights.z;
329
-
330
- float mean = d0 + d1 + d2;
331
- float mean2 = samp0 * d0 + samp1 * d1 + samp2 * d2;
332
-
333
- return vec2(mean, mean2);
334
- }
335
- vec3 lpv_DEBUG(uint probe_index, vec3 direction) {
336
- // get offset
337
- int depth_tile_resolution = int(lpv_u_probe_depth_resolution);
338
- const ivec2 atlas_size = ivec2(4096);
339
-
340
- int tiles_per_row = atlas_size.x / depth_tile_resolution;
341
-
342
- int tile_x = int(probe_index) % tiles_per_row;
343
- int tile_y = int(probe_index) / tiles_per_row;
344
-
345
- ivec2 tile_offset = ivec2(
346
- tile_x * depth_tile_resolution,
347
- tile_y * depth_tile_resolution
348
- );
349
-
350
- // convert direction to UV
351
- vec2 octahedral_uv = clamp(VecToSphereOct(direction) * 0.5 + 0.5, 0.0, 1.0);
352
- vec2 grid = octahedral_uv * vec2(depth_tile_resolution);
353
-
354
- vec2 gridFrac = fract(grid);
355
-
356
- ivec2 texel_position = ivec2(floor(grid));
357
-
358
- ivec2 tile_p_01 = wrapOctahedralTexelCoordinates(texel_position + ivec2(1, 0), depth_tile_resolution);
359
- ivec2 tile_p_10 = wrapOctahedralTexelCoordinates(texel_position + ivec2(0, 1), depth_tile_resolution);
360
- ivec2 tile_p_11 = wrapOctahedralTexelCoordinates(texel_position + ivec2(1, 1), depth_tile_resolution);
361
-
362
- return mix(vec3(
363
- tile_p_01.x == depth_tile_resolution ? 1.0 : 0.0,
364
- tile_p_10.y == depth_tile_resolution ? 1.0 : 0.0,
365
- 0.0
366
- ), vec3(octahedral_uv, 0.0), 0.0);
367
-
368
- float texel_00 = texelFetch(lpv_t_probe_depth, tile_offset + texel_position, 0).r;
369
- float texel_01 = texelFetch(lpv_t_probe_depth, tile_offset + tile_p_01, 0).r;
370
- float texel_10 = texelFetch(lpv_t_probe_depth, tile_offset + tile_p_10, 0).r;
371
- float texel_11 = texelFetch(lpv_t_probe_depth, tile_offset + tile_p_11, 0).r;
372
-
373
-
374
- vec3 dir_00 = OctaSphereEnc(vec2(texel_position) / float(depth_tile_resolution));
375
- vec3 dir_01 = OctaSphereEnc(vec2(tile_p_01) / float(depth_tile_resolution));
376
- vec3 dir_10 = OctaSphereEnc(vec2(tile_p_10) / float(depth_tile_resolution));
377
- vec3 dir_11 = OctaSphereEnc(vec2(tile_p_11) / float(depth_tile_resolution));
378
-
379
-
380
- vec3 dir = vec3(
381
- lpv_bilinear_lerp(
382
- dir_00.x, dir_01.x,
383
- dir_10.x, dir_11.x,
384
- gridFrac
385
- ), lpv_bilinear_lerp(
386
- dir_00.y, dir_01.y,
387
- dir_10.y, dir_11.y,
388
- gridFrac
389
- ), lpv_bilinear_lerp(
390
- dir_00.z, dir_01.z,
391
- dir_10.z, dir_11.z,
392
- gridFrac
393
- )
394
- ) * 0.5 + 0.5;
395
-
396
- return dir;
397
-
398
- return vec3(octahedral_uv, 1.0);
399
- }
400
-
401
-
402
- vec3 lpv_probe_getPosition(uint probe_index) {
403
- return texelFetch(lpv_t_probe_positions, lpv_index_to_256_coordinate(probe_index), 0).rgb;
404
- }
405
-
406
- varying vec3 vNormal;
407
- flat varying uint instance_index;
408
-
409
- void main() {
410
- vec3 normal = normalize(vNormal);
411
- vec3 worldNormal = normalize(inverseTransformDirection(normal, viewMatrix));
412
-
413
- float depth = lpv_probe_getDepthBilinear(instance_index, worldNormal).r / 7.0;
414
- // float depth = lpv_probe_getDepthTriangular(instance_index, worldNormal).r / 7.0;
415
-
416
- // gl_FragColor = vec4(lpv_DEBUG(instance_index, worldNormal), 1.0);
417
- gl_FragColor = vec4(vec3(depth), 1.0);
418
- // gl_FragColor = vec4( 1.0);
419
- }
1
+ // NOTE: the octahedral probe-depth sampling library this shader is built on
2
+ // (sign_not_zero / quadBlendWieghts / VecToSphereOct / SampleBlended /
3
+ // lpv_bilinear_lerp / lpv_sample_bilinear / wrapOctahedralTexelCoordinates /
4
+ // lpv_probe_getDepthBilinear / lpv_probe_getDepthTriangular /
5
+ // lpv_probe_getPosition, plus the three probe uniforms) is NOT declared here.
6
+ // It is prepended by VLPDepthMapVisualisation.js from
7
+ // `sh3/lpv/depth/chunk_probe_depth_sampling.js`, which is the same source the
8
+ // production GI sampler compiles. That is the point of this visualiser: if it
9
+ // carried its own copy it could show something the production path does not do.
10
+
11
+ vec3 inverseTransformDirection(in vec3 normal, in mat4 matrix) {
12
+ // matrix is assumed to be orthogonal
13
+ return normalize((vec4(normal, 0.0) * matrix).xyz);
14
+ }
15
+
16
+
17
+ precision highp usampler2D;
18
+ precision highp usampler3D;
19
+
20
+ #define SEARCH_STEP_LIMIT 64u
21
+ #define INVALID_TET 1073741823u
22
+
23
+ vec3 OctaSphereEnc(vec2 coord)
24
+ {
25
+ coord = (coord - 0.5) * 2.0;
26
+ vec3 position = vec3(coord.x, 0.0, coord.y);
27
+ vec2 absolute = abs(position.xz);
28
+ position.y = 1.0 - absolute.x - absolute.y;
29
+
30
+ if (position.y < 0.0)
31
+ {
32
+ position.xz = sign(position.xz) * vec2(1.0 - absolute.y, 1.0 - absolute.x);
33
+ }
34
+
35
+ return position;
36
+ }
37
+
38
+ float lpv_probe_getDepth(uint probe_index, vec3 direction) {
39
+ // get offset
40
+ uint depth_tile_resolution = lpv_u_probe_depth_resolution;
41
+ uvec2 atlas_size = uvec2(4096u);
42
+
43
+ uint tiles_per_row = atlas_size.x / depth_tile_resolution;
44
+
45
+ uint tile_x = probe_index % tiles_per_row;
46
+ uint tile_y = probe_index / tiles_per_row;
47
+
48
+ vec2 tile_offset = vec2(
49
+ tile_x * depth_tile_resolution,
50
+ tile_y * depth_tile_resolution
51
+ );
52
+
53
+ // convert direction to UV
54
+ vec2 octahedral_uv = clamp(VecToSphereOct(direction) * 0.5 + 0.5, 0.0, 1.0);
55
+ vec2 grid = octahedral_uv * vec2(depth_tile_resolution - 1u);
56
+
57
+ vec2 gridFrac = fract(grid);
58
+ vec2 gridFloor = floor(grid);
59
+
60
+ vec4 weights = quadBlendWieghts(gridFrac);
61
+
62
+ //3 nearest frames
63
+ vec2 frame0 = gridFloor;
64
+ vec2 frame1 = gridFloor + mix(vec2(0, 1), vec2(1, 0), weights.w);
65
+ vec2 frame2 = gridFloor + vec2(1.0, 1.0);
66
+
67
+ // move frames to atlas space
68
+ frame0 += tile_offset;
69
+ frame1 += tile_offset;
70
+ frame2 += tile_offset;
71
+
72
+ vec2 uv0 = (frame0 + 0.5) / vec2(atlas_size);
73
+ vec2 uv1 = (frame1 + 0.5) / vec2(atlas_size);
74
+ vec2 uv2 = (frame2 + 0.5) / vec2(atlas_size);
75
+
76
+ return SampleBlended(
77
+ lpv_t_probe_depth,
78
+ uv0, uv1, uv2,
79
+ weights
80
+ );
81
+ }
82
+
83
+ ivec2 wrapOctahedralTexelCoordinatesNone(in ivec2 texelCoord, in int texture_size) {
84
+ return texelCoord;
85
+ }
86
+
87
+ ivec2 wrapOctahedralTexelCoordinatesV0(in ivec2 texelCoord, in int texture_size) {
88
+ // return texelCoord;
89
+ // Decrement the texture size by 1 to get the maximum valid index
90
+ int maxIndex = texture_size - 1;
91
+
92
+ // Wrap the texel coordinates
93
+ ivec2 wrappedCoord = texelCoord;
94
+
95
+ // Wrap the X coordinate
96
+ if (wrappedCoord.x > maxIndex) {
97
+ wrappedCoord.x = maxIndex;
98
+ wrappedCoord.y += 1;
99
+ }
100
+
101
+ // Wrap the Y coordinate
102
+ if (wrappedCoord.y > maxIndex) {
103
+ wrappedCoord.y = maxIndex - wrappedCoord.y; // Wrap from top to bottom
104
+ }
105
+
106
+ return wrappedCoord;
107
+ }
108
+
109
+ vec3 lpv_DEBUG(uint probe_index, vec3 direction) {
110
+ // get offset
111
+ int depth_tile_resolution = int(lpv_u_probe_depth_resolution);
112
+ const ivec2 atlas_size = ivec2(4096);
113
+
114
+ int tiles_per_row = atlas_size.x / depth_tile_resolution;
115
+
116
+ int tile_x = int(probe_index) % tiles_per_row;
117
+ int tile_y = int(probe_index) / tiles_per_row;
118
+
119
+ ivec2 tile_offset = ivec2(
120
+ tile_x * depth_tile_resolution,
121
+ tile_y * depth_tile_resolution
122
+ );
123
+
124
+ // convert direction to UV
125
+ vec2 octahedral_uv = clamp(VecToSphereOct(direction) * 0.5 + 0.5, 0.0, 1.0);
126
+ vec2 grid = octahedral_uv * vec2(depth_tile_resolution);
127
+
128
+ vec2 gridFrac = fract(grid);
129
+
130
+ ivec2 texel_position = ivec2(floor(grid));
131
+
132
+ ivec2 tile_p_01 = wrapOctahedralTexelCoordinates(texel_position + ivec2(1, 0), depth_tile_resolution);
133
+ ivec2 tile_p_10 = wrapOctahedralTexelCoordinates(texel_position + ivec2(0, 1), depth_tile_resolution);
134
+ ivec2 tile_p_11 = wrapOctahedralTexelCoordinates(texel_position + ivec2(1, 1), depth_tile_resolution);
135
+
136
+ return mix(vec3(
137
+ tile_p_01.x == depth_tile_resolution ? 1.0 : 0.0,
138
+ tile_p_10.y == depth_tile_resolution ? 1.0 : 0.0,
139
+ 0.0
140
+ ), vec3(octahedral_uv, 0.0), 0.0);
141
+
142
+ float texel_00 = texelFetch(lpv_t_probe_depth, tile_offset + texel_position, 0).r;
143
+ float texel_01 = texelFetch(lpv_t_probe_depth, tile_offset + tile_p_01, 0).r;
144
+ float texel_10 = texelFetch(lpv_t_probe_depth, tile_offset + tile_p_10, 0).r;
145
+ float texel_11 = texelFetch(lpv_t_probe_depth, tile_offset + tile_p_11, 0).r;
146
+
147
+
148
+ vec3 dir_00 = OctaSphereEnc(vec2(texel_position) / float(depth_tile_resolution));
149
+ vec3 dir_01 = OctaSphereEnc(vec2(tile_p_01) / float(depth_tile_resolution));
150
+ vec3 dir_10 = OctaSphereEnc(vec2(tile_p_10) / float(depth_tile_resolution));
151
+ vec3 dir_11 = OctaSphereEnc(vec2(tile_p_11) / float(depth_tile_resolution));
152
+
153
+
154
+ vec3 dir = vec3(
155
+ lpv_bilinear_lerp(
156
+ dir_00.x, dir_01.x,
157
+ dir_10.x, dir_11.x,
158
+ gridFrac
159
+ ), lpv_bilinear_lerp(
160
+ dir_00.y, dir_01.y,
161
+ dir_10.y, dir_11.y,
162
+ gridFrac
163
+ ), lpv_bilinear_lerp(
164
+ dir_00.z, dir_01.z,
165
+ dir_10.z, dir_11.z,
166
+ gridFrac
167
+ )
168
+ ) * 0.5 + 0.5;
169
+
170
+ return dir;
171
+
172
+ return vec3(octahedral_uv, 1.0);
173
+ }
174
+
175
+
176
+ varying vec3 vNormal;
177
+ flat varying uint instance_index;
178
+
179
+ void main() {
180
+ vec3 normal = normalize(vNormal);
181
+ vec3 worldNormal = normalize(inverseTransformDirection(normal, viewMatrix));
182
+
183
+ float depth = lpv_probe_getDepthBilinear(instance_index, worldNormal).r / 7.0;
184
+ // float depth = lpv_probe_getDepthTriangular(instance_index, worldNormal).r / 7.0;
185
+
186
+ // gl_FragColor = vec4(lpv_DEBUG(instance_index, worldNormal), 1.0);
187
+ gl_FragColor = vec4(vec3(depth), 1.0);
188
+ // gl_FragColor = vec4( 1.0);
189
+ }
@@ -1,3 +1,3 @@
1
- declare const _default: "\n#define RECIPROCAL_PI 0.318309886\n\nvec3 inverseTransformDirection( in vec3 normal, in mat4 matrix ) {\n // matrix is assumed to be orthogonal\n return normalize( ( vec4( normal, 0.0 ) * matrix ).xyz );\n}\n\n// source: https://graphics.stanford.edu/papers/envmap/envmap.pdf\nvec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {\n // normal is assumed to have unit length\n float x = normal.x, y = normal.y, z = normal.z;\n\n // band 0\n vec3 result = shCoefficients[ 0 ] * 0.8862269254527579;\n\n // band 1\n result -= shCoefficients[ 1 ] * 1.0233267079464885 * y;\n result += shCoefficients[ 2 ] * 1.0233267079464885 * z;\n result -= shCoefficients[ 3 ] * 1.0233267079464885 * x;\n\n // band 2\n result += shCoefficients[ 4 ] * 0.8580855308097834 * x * y;\n result -= shCoefficients[ 5 ] * 0.8580855308097834 * y * z;\n result += shCoefficients[ 6 ] * ( 0.7431238683011272 * z * z - 0.24770795610037571 );\n result -= shCoefficients[ 7 ] * 0.8580855308097834 * x * z;\n result += shCoefficients[ 8 ] * 0.4290427654048917 * ( x * x - y * y );\n\n return result;\n}\n\nuniform vec3 sh[ 9 ]; // sh coefficients\nuniform float intensity; // light probe intensity\nvarying vec3 vNormal;\n\nvoid main() {\n vec3 normal = normalize( vNormal );\n vec3 worldNormal = normalize(inverseTransformDirection( normal, viewMatrix ));\n vec3 irradiance = shGetIrradianceAt( worldNormal, sh );\n vec3 outgoingLight = 1.0 * irradiance * intensity;\n gl_FragColor = linearToOutputTexel( vec4( outgoingLight, 1.0 ) );\n}\n";
1
+ declare const _default: "\n#define RECIPROCAL_PI 0.318309886\n\nvec3 inverseTransformDirection( in vec3 normal, in mat4 matrix ) {\n // matrix is assumed to be orthogonal\n return normalize( ( vec4( normal, 0.0 ) * matrix ).xyz );\n}\n\n// source: https://graphics.stanford.edu/papers/envmap/envmap.pdf\n//\n// SIGN CONVENTION: coefficients 1, 3, 5 and 7 are SUBTRACTED here, matching\n// three.js's SphericalHarmonics3 and the JS reference\n// core/geom/3d/sphere/harmonics/sh3_sample_irradiance_by_direction.js. The LPV\n// and LPG shader chunks (sh3/{gi,lpg}/material/chunk_*_get_irradiance_at.js)\n// ADD them instead — see the note in chunk_lpv_get_irradiance_at.js. The\n// constants are the same in all four; only these signs differ.\nvec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {\n // normal is assumed to have unit length\n float x = normal.x, y = normal.y, z = normal.z;\n\n // band 0\n vec3 result = shCoefficients[ 0 ] * 0.8862269254527579;\n\n // band 1\n result -= shCoefficients[ 1 ] * 1.0233267079464885 * y;\n result += shCoefficients[ 2 ] * 1.0233267079464885 * z;\n result -= shCoefficients[ 3 ] * 1.0233267079464885 * x;\n\n // band 2\n result += shCoefficients[ 4 ] * 0.8580855308097834 * x * y;\n result -= shCoefficients[ 5 ] * 0.8580855308097834 * y * z;\n result += shCoefficients[ 6 ] * ( 0.7431238683011272 * z * z - 0.24770795610037571 );\n result -= shCoefficients[ 7 ] * 0.8580855308097834 * x * z;\n result += shCoefficients[ 8 ] * 0.4290427654048917 * ( x * x - y * y );\n\n return result;\n}\n\nuniform vec3 sh[ 9 ]; // sh coefficients\nuniform float intensity; // light probe intensity\nvarying vec3 vNormal;\n\nvoid main() {\n vec3 normal = normalize( vNormal );\n vec3 worldNormal = normalize(inverseTransformDirection( normal, viewMatrix ));\n vec3 irradiance = shGetIrradianceAt( worldNormal, sh );\n vec3 outgoingLight = 1.0 * irradiance * intensity;\n gl_FragColor = linearToOutputTexel( vec4( outgoingLight, 1.0 ) );\n}\n";
2
2
  export default _default;
3
3
  //# sourceMappingURL=visualize.frag.d.ts.map
@@ -8,6 +8,13 @@ vec3 inverseTransformDirection( in vec3 normal, in mat4 matrix ) {
8
8
  }
9
9
 
10
10
  // source: https://graphics.stanford.edu/papers/envmap/envmap.pdf
11
+ //
12
+ // SIGN CONVENTION: coefficients 1, 3, 5 and 7 are SUBTRACTED here, matching
13
+ // three.js's SphericalHarmonics3 and the JS reference
14
+ // core/geom/3d/sphere/harmonics/sh3_sample_irradiance_by_direction.js. The LPV
15
+ // and LPG shader chunks (sh3/{gi,lpg}/material/chunk_*_get_irradiance_at.js)
16
+ // ADD them instead — see the note in chunk_lpv_get_irradiance_at.js. The
17
+ // constants are the same in all four; only these signs differ.
11
18
  vec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {
12
19
  // normal is assumed to have unit length
13
20
  float x = normal.x, y = normal.y, z = normal.z;