@woosh/meep-engine 2.169.0 → 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 (1023) 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/process/symbolic/make3DSymbolicDisplay.js +1 -1
  10. package/editor/tools/paint/TerrainHeightPaintTool.js +22 -31
  11. package/editor/tools/paint/TerrainPaintTool.js +85 -13
  12. package/editor/tools/paint/TerrainTexturePaintTool.js +18 -29
  13. package/editor/view/ecs/EntityList.js +1 -1
  14. package/editor/view/ecs/components/TerrainController.js +1 -4
  15. package/editor/view/ecs/components/particles/ParticleLayerController.js +1 -1
  16. package/editor/view/makeEntityDecorators.js +1 -1
  17. package/package.json +1 -1
  18. package/src/DUPLICATION_AUDIT_2026_08_07/00_core_reuse_surface.md +738 -0
  19. package/src/DUPLICATION_AUDIT_2026_08_07/A_core_math_geom.md +79 -0
  20. package/src/DUPLICATION_AUDIT_2026_08_07/B_core_data.md +93 -0
  21. package/src/DUPLICATION_AUDIT_2026_08_07/C_gfx_render.md +80 -0
  22. package/src/DUPLICATION_AUDIT_2026_08_07/D_gfx_features.md +164 -0
  23. package/src/DUPLICATION_AUDIT_2026_08_07/E_physics.md +69 -0
  24. package/src/DUPLICATION_AUDIT_2026_08_07/F_sound.md +102 -0
  25. package/src/DUPLICATION_AUDIT_2026_08_07/G_net_save.md +129 -0
  26. package/src/DUPLICATION_AUDIT_2026_08_07/H_engine_misc.md +72 -0
  27. package/src/DUPLICATION_AUDIT_2026_08_07/I_generation_view.md +74 -0
  28. package/src/DUPLICATION_AUDIT_2026_08_07/K_crosscutting.md +169 -0
  29. package/src/DUPLICATION_AUDIT_2026_08_07.md +254 -0
  30. package/src/DUPLICATION_AUDIT_REMEDIATION.md +250 -0
  31. package/src/REVIEW_2026_08_06.md +39 -0
  32. package/src/core/IdPool.d.ts +2 -2
  33. package/src/core/IdPool.d.ts.map +1 -1
  34. package/src/core/IdPool.js +1 -1
  35. package/src/core/binary/32BitEncoder.d.ts +2 -3
  36. package/src/core/binary/32BitEncoder.d.ts.map +1 -1
  37. package/src/core/binary/32BitEncoder.js +1 -1
  38. package/src/core/bvh2/bvh3/BVH.d.ts +2 -2
  39. package/src/core/bvh2/bvh3/BVH.d.ts.map +1 -1
  40. package/src/core/bvh2/bvh3/BVH.js +1 -1
  41. package/src/core/bvh2/bvh3/query/bvh_collect_user_data.js +2 -2
  42. package/src/core/bvh2/bvh3/query/bvh_query_leaves_generic.js +77 -77
  43. package/src/core/bvh2/bvh3/query/bvh_query_leaves_ray.js +90 -90
  44. package/src/core/bvh2/bvh3/query/bvh_query_leaves_ray_segment.js +94 -94
  45. package/src/core/bvh2/bvh3/query/bvh_query_user_data_generic.js +86 -86
  46. package/src/core/bvh2/bvh3/query/bvh_query_user_data_intersects_aabb.js +2 -2
  47. package/src/core/bvh2/bvh3/query/bvh_query_user_data_intersects_capsule.js +2 -2
  48. package/src/core/bvh2/bvh3/query/bvh_query_user_data_intersects_frustum.js +2 -2
  49. package/src/core/bvh2/bvh3/query/bvh_query_user_data_intersects_sphere.js +2 -2
  50. package/src/core/bvh2/bvh3/query/bvh_query_user_data_nearest_to_point_filtered.d.ts +2 -2
  51. package/src/core/bvh2/bvh3/query/bvh_query_user_data_nearest_to_point_filtered.d.ts.map +1 -1
  52. package/src/core/bvh2/bvh3/query/bvh_query_user_data_nearest_to_point_filtered.js +86 -86
  53. package/src/core/bvh2/bvh3/query/bvh_query_user_data_ray.js +96 -96
  54. package/src/core/bvh2/bvh3/query/bvh_query_user_data_ray_segment.js +100 -100
  55. package/src/core/bvh2/bvh3/query/compute_tight_near_far_clipping_planes.js +2 -2
  56. package/src/core/bvh2/traversal/aabb3_detailed_volume_intersection_callback_based.d.ts +2 -2
  57. package/src/core/bvh2/traversal/aabb3_detailed_volume_intersection_callback_based.d.ts.map +1 -1
  58. package/src/core/bvh2/traversal/aabb3_detailed_volume_intersection_callback_based.js +1 -1
  59. package/src/core/bvh8/aabb3_round_to_float32.d.ts +16 -0
  60. package/src/core/bvh8/aabb3_round_to_float32.d.ts.map +1 -0
  61. package/src/core/bvh8/aabb3_round_to_float32.js +22 -0
  62. package/src/core/bvh8/bvh8_geometry_validate.d.ts.map +1 -1
  63. package/src/core/bvh8/bvh8_geometry_validate.js +1 -12
  64. package/src/core/bvh8/bvh8_geometry_validate_indirect.d.ts.map +1 -1
  65. package/src/core/bvh8/bvh8_geometry_validate_indirect.js +1 -12
  66. package/src/core/cache/Cache.d.ts +17 -4
  67. package/src/core/cache/Cache.d.ts.map +1 -1
  68. package/src/core/cache/Cache.js +16 -3
  69. package/src/core/cache/LoadingCache.d.ts +1 -1
  70. package/src/core/cache/LoadingCache.js +2 -2
  71. package/src/core/cache/wtinylfu/CacheWTinylfu.d.ts +2 -2
  72. package/src/core/cache/wtinylfu/CacheWTinylfu.js +2 -2
  73. package/src/core/collection/array/array_index_by_equality.d.ts +2 -2
  74. package/src/core/collection/array/array_index_by_equality.d.ts.map +1 -1
  75. package/src/core/collection/array/array_index_by_equality.js +1 -1
  76. package/src/core/collection/array/array_pick_best_element.d.ts +2 -2
  77. package/src/core/collection/array/array_pick_best_element.d.ts.map +1 -1
  78. package/src/core/collection/array/array_pick_best_element.js +1 -1
  79. package/src/core/collection/array/array_pick_best_elements.d.ts +2 -2
  80. package/src/core/collection/array/array_pick_best_elements.d.ts.map +1 -1
  81. package/src/core/collection/array/array_pick_best_elements.js +1 -1
  82. package/src/core/collection/array/array_set_diff.d.ts +2 -3
  83. package/src/core/collection/array/array_set_diff.d.ts.map +1 -1
  84. package/src/core/collection/array/array_set_diff.js +1 -1
  85. package/src/core/collection/array/array_set_diff_sorting.d.ts +2 -2
  86. package/src/core/collection/array/array_set_diff_sorting.d.ts.map +1 -1
  87. package/src/core/collection/array/array_set_diff_sorting.js +1 -1
  88. package/src/core/collection/array/iterator/ArrayIteratorRandom.d.ts +2 -1
  89. package/src/core/collection/array/iterator/ArrayIteratorRandom.d.ts.map +1 -1
  90. package/src/core/collection/heap/BinaryHeap.d.ts +2 -2
  91. package/src/core/collection/heap/BinaryHeap.d.ts.map +1 -1
  92. package/src/core/collection/heap/BinaryHeap.js +1 -1
  93. package/src/core/collection/list/List.d.ts +19 -19
  94. package/src/core/collection/list/List.d.ts.map +1 -1
  95. package/src/core/collection/list/List.js +10 -10
  96. package/src/core/collection/map/HashMap.d.ts +2 -2
  97. package/src/core/collection/map/HashMap.d.ts.map +1 -1
  98. package/src/core/collection/map/HashMap.js +1 -1
  99. package/src/core/collection/set/ArraySet.d.ts +2 -2
  100. package/src/core/collection/set/ArraySet.d.ts.map +1 -1
  101. package/src/core/collection/set/ArraySet.js +1 -1
  102. package/src/core/collection/table/RowFirstTable.d.ts +2 -2
  103. package/src/core/collection/table/RowFirstTable.d.ts.map +1 -1
  104. package/src/core/collection/table/RowFirstTable.js +1 -1
  105. package/src/core/collection/table/RowFirstTableSpec.js +4 -4
  106. package/src/core/color/operations/color_darken.d.ts +5 -2
  107. package/src/core/color/operations/color_darken.d.ts.map +1 -1
  108. package/src/core/color/operations/color_darken.js +24 -33
  109. package/src/core/color/operations/color_desaturate.d.ts +5 -2
  110. package/src/core/color/operations/color_desaturate.d.ts.map +1 -1
  111. package/src/core/color/operations/color_desaturate.js +24 -33
  112. package/src/core/color/operations/color_lighten.d.ts +5 -2
  113. package/src/core/color/operations/color_lighten.d.ts.map +1 -1
  114. package/src/core/color/operations/color_lighten.js +24 -33
  115. package/src/core/color/operations/color_saturate.d.ts +5 -2
  116. package/src/core/color/operations/color_saturate.d.ts.map +1 -1
  117. package/src/core/color/operations/color_saturate.js +24 -33
  118. package/src/core/color/operations/color_scale_okhsv_channel.d.ts +28 -0
  119. package/src/core/color/operations/color_scale_okhsv_channel.d.ts.map +1 -0
  120. package/src/core/color/operations/color_scale_okhsv_channel.js +45 -0
  121. package/src/core/fsm/simple/SimpleStateMachineDescription.d.ts +2 -2
  122. package/src/core/fsm/simple/SimpleStateMachineDescription.d.ts.map +1 -1
  123. package/src/core/fsm/simple/SimpleStateMachineDescription.js +1 -1
  124. package/src/core/geom/2d/bvh/BVH2D.d.ts +2 -2
  125. package/src/core/geom/2d/bvh/BVH2D.d.ts.map +1 -1
  126. package/src/core/geom/2d/bvh/BVH2D.js +1 -1
  127. package/src/core/geom/2d/hash-grid/SpatialHashGrid.d.ts.map +1 -1
  128. package/src/core/geom/2d/hash-grid/SpatialHashGrid.js +12 -0
  129. package/src/core/geom/2d/line/segment2_intersects_segment2_2d.d.ts.map +1 -1
  130. package/src/core/geom/2d/line/segment2_intersects_segment2_2d.js +25 -29
  131. package/src/core/geom/2d/line/segment2_segment_compute_intersection_array_2d.d.ts.map +1 -1
  132. package/src/core/geom/2d/line/segment2_segment_compute_intersection_array_2d.js +46 -51
  133. package/src/core/geom/2d/line/segment2_segment_intersection_fractions.d.ts +31 -0
  134. package/src/core/geom/2d/line/segment2_segment_intersection_fractions.d.ts.map +1 -0
  135. package/src/core/geom/2d/line/segment2_segment_intersection_fractions.js +52 -0
  136. package/src/core/geom/2d/quad-tree/qt_collect_by_circle.d.ts +6 -1
  137. package/src/core/geom/2d/quad-tree/qt_collect_by_circle.d.ts.map +1 -1
  138. package/src/core/geom/2d/quad-tree/qt_collect_by_circle.js +39 -65
  139. package/src/core/geom/2d/quad-tree/qt_match_data_by_circle.d.ts +15 -5
  140. package/src/core/geom/2d/quad-tree/qt_match_data_by_circle.d.ts.map +1 -1
  141. package/src/core/geom/2d/quad-tree/qt_match_data_by_circle.js +101 -70
  142. package/src/core/geom/2d/quad-tree/qt_query_data_raycast.d.ts +2 -2
  143. package/src/core/geom/2d/quad-tree/qt_query_data_raycast.d.ts.map +1 -1
  144. package/src/core/geom/2d/quad-tree/qt_query_data_raycast.js +1 -1
  145. package/src/core/geom/2d/r-tree/StaticR2Tree.d.ts.map +1 -1
  146. package/src/core/geom/2d/r-tree/StaticR2Tree.js +7 -3
  147. package/src/core/geom/3d/aabb/AABB3.d.ts +2 -2
  148. package/src/core/geom/3d/aabb/AABB3.d.ts.map +1 -1
  149. package/src/core/geom/3d/aabb/AABB3.js +1 -1
  150. package/src/core/geom/3d/aabb/aabb3_intersects_ray_segment.d.ts +7 -8
  151. package/src/core/geom/3d/aabb/aabb3_intersects_ray_segment.d.ts.map +1 -1
  152. package/src/core/geom/3d/aabb/aabb3_intersects_ray_segment.js +15 -51
  153. package/src/core/geom/3d/atlas/param/atlas_chart_parameterize_bff.d.ts.map +1 -1
  154. package/src/core/geom/3d/atlas/param/atlas_chart_parameterize_bff.js +13 -14
  155. package/src/core/geom/3d/atlas/param/atlas_chart_parameterize_lscm.d.ts.map +1 -1
  156. package/src/core/geom/3d/atlas/param/atlas_chart_parameterize_lscm.js +2 -17
  157. package/src/core/geom/3d/atlas/segment/atlas_chart_roundness_delta.d.ts +22 -0
  158. package/src/core/geom/3d/atlas/segment/atlas_chart_roundness_delta.d.ts.map +1 -0
  159. package/src/core/geom/3d/atlas/segment/atlas_chart_roundness_delta.js +30 -0
  160. package/src/core/geom/3d/atlas/segment/atlas_segment_charts.d.ts +19 -0
  161. package/src/core/geom/3d/atlas/segment/atlas_segment_charts.d.ts.map +1 -1
  162. package/src/core/geom/3d/atlas/segment/atlas_segment_charts.js +5 -9
  163. package/src/core/geom/3d/atlas/segment/atlas_segment_charts_atomic.d.ts.map +1 -1
  164. package/src/core/geom/3d/atlas/segment/atlas_segment_charts_atomic.js +4 -12
  165. package/src/core/geom/3d/frustum/read_frustum_corner.d.ts +5 -0
  166. package/src/core/geom/3d/frustum/read_frustum_corner.d.ts.map +1 -1
  167. package/src/core/geom/3d/frustum/read_frustum_corner.js +8 -5
  168. package/src/core/geom/3d/line/line3_segment_segment_closest_point_pair.d.ts +33 -0
  169. package/src/core/geom/3d/line/line3_segment_segment_closest_point_pair.d.ts.map +1 -0
  170. package/src/core/geom/3d/line/line3_segment_segment_closest_point_pair.js +71 -0
  171. package/src/core/geom/3d/mat4/m4_compose.d.ts +5 -0
  172. package/src/core/geom/3d/mat4/m4_compose.d.ts.map +1 -1
  173. package/src/core/geom/3d/mat4/m4_compose.js +22 -53
  174. package/src/core/geom/3d/mat4/m4_decompose.d.ts +8 -0
  175. package/src/core/geom/3d/mat4/m4_decompose.d.ts.map +1 -1
  176. package/src/core/geom/3d/mat4/m4_decompose.js +84 -76
  177. package/src/core/geom/3d/mat4/m4_from_rotation_translation_scale.d.ts +2 -0
  178. package/src/core/geom/3d/mat4/m4_from_rotation_translation_scale.d.ts.map +1 -1
  179. package/src/core/geom/3d/mat4/m4_from_rotation_translation_scale.js +10 -44
  180. package/src/core/geom/3d/mat4/m4_from_rotation_translation_scale_scalar.d.ts +27 -0
  181. package/src/core/geom/3d/mat4/m4_from_rotation_translation_scale_scalar.d.ts.map +1 -0
  182. package/src/core/geom/3d/mat4/m4_from_rotation_translation_scale_scalar.js +67 -0
  183. package/src/core/geom/3d/plane/orient3d_fast.d.ts.map +1 -1
  184. package/src/core/geom/3d/plane/orient3d_fast.js +2 -22
  185. package/src/core/geom/3d/plane/orient3d_fast_point.d.ts +28 -0
  186. package/src/core/geom/3d/plane/orient3d_fast_point.d.ts.map +1 -0
  187. package/src/core/geom/3d/plane/orient3d_fast_point.js +47 -0
  188. package/src/core/geom/3d/quaternion/quat3_nlerp.d.ts +48 -0
  189. package/src/core/geom/3d/quaternion/quat3_nlerp.d.ts.map +1 -0
  190. package/src/core/geom/3d/quaternion/quat3_nlerp.js +72 -0
  191. package/src/core/geom/3d/shape/AbstractShape3D.d.ts +9 -0
  192. package/src/core/geom/3d/shape/AbstractShape3D.d.ts.map +1 -1
  193. package/src/core/geom/3d/shape/AbstractShape3D.js +44 -1
  194. package/src/core/geom/3d/shape/BoxShape3D.d.ts.map +1 -1
  195. package/src/core/geom/3d/shape/BoxShape3D.js +2 -1
  196. package/src/core/geom/3d/shape/CapsuleShape3D.d.ts.map +1 -1
  197. package/src/core/geom/3d/shape/CapsuleShape3D.js +2 -1
  198. package/src/core/geom/3d/shape/ConvexHullShape3D.d.ts +0 -1
  199. package/src/core/geom/3d/shape/ConvexHullShape3D.d.ts.map +1 -1
  200. package/src/core/geom/3d/shape/ConvexHullShape3D.js +25 -56
  201. package/src/core/geom/3d/shape/CylinderShape3D.d.ts.map +1 -1
  202. package/src/core/geom/3d/shape/CylinderShape3D.js +2 -1
  203. package/src/core/geom/3d/shape/HeightMapShape3D.d.ts.map +1 -1
  204. package/src/core/geom/3d/shape/HeightMapShape3D.js +3 -5
  205. package/src/core/geom/3d/shape/MeshShape3D.d.ts +0 -11
  206. package/src/core/geom/3d/shape/MeshShape3D.d.ts.map +1 -1
  207. package/src/core/geom/3d/shape/MeshShape3D.js +27 -106
  208. package/src/core/geom/3d/shape/Triangle3D.d.ts +1 -1
  209. package/src/core/geom/3d/shape/Triangle3D.d.ts.map +1 -1
  210. package/src/core/geom/3d/shape/Triangle3D.js +10 -31
  211. package/src/core/geom/3d/tetrahedra/TetrahedralMesh.d.ts +2 -2
  212. package/src/core/geom/3d/tetrahedra/TetrahedralMesh.d.ts.map +1 -1
  213. package/src/core/geom/3d/tetrahedra/TetrahedralMesh.js +1 -1
  214. package/src/core/geom/3d/tetrahedra/delaunay/debug/push_boundary_with_validation.d.ts +2 -5
  215. package/src/core/geom/3d/tetrahedra/delaunay/debug/push_boundary_with_validation.d.ts.map +1 -1
  216. package/src/core/geom/3d/tetrahedra/delaunay/debug/push_boundary_with_validation.js +1 -1
  217. package/src/core/geom/3d/tetrahedra/delaunay/debug/validate_cavity_boundary.d.ts +2 -2
  218. package/src/core/geom/3d/tetrahedra/delaunay/debug/validate_cavity_boundary.d.ts.map +1 -1
  219. package/src/core/geom/3d/tetrahedra/delaunay/debug/validate_cavity_boundary.js +1 -1
  220. package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_carve_outside_surface.d.ts.map +1 -1
  221. package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_carve_outside_surface.js +8 -57
  222. package/src/core/geom/3d/tetrahedra/validate_tetrahedral_mesh.d.ts +2 -3
  223. package/src/core/geom/3d/tetrahedra/validate_tetrahedral_mesh.d.ts.map +1 -1
  224. package/src/core/geom/3d/tetrahedra/validate_tetrahedral_mesh.js +69 -69
  225. package/src/core/geom/3d/tetrahedra/validate_tetrahedron_neighbourhood.d.ts +2 -3
  226. package/src/core/geom/3d/tetrahedra/validate_tetrahedron_neighbourhood.d.ts.map +1 -1
  227. package/src/core/geom/3d/tetrahedra/validate_tetrahedron_neighbourhood.js +50 -50
  228. package/src/core/geom/3d/topology/simplify/decimate_edge_collapse_snap.d.ts +8 -1
  229. package/src/core/geom/3d/topology/simplify/decimate_edge_collapse_snap.d.ts.map +1 -1
  230. package/src/core/geom/3d/topology/simplify/decimate_edge_collapse_snap.js +281 -272
  231. package/src/core/geom/3d/topology/simplify/quadratic/build_vertex_quadrics.d.ts.map +1 -1
  232. package/src/core/geom/3d/topology/simplify/quadratic/build_vertex_quadrics.js +3 -4
  233. package/src/core/geom/3d/topology/simplify/quadratic/quadric3_set_from_plane_through_point.d.ts +22 -0
  234. package/src/core/geom/3d/topology/simplify/quadratic/quadric3_set_from_plane_through_point.d.ts.map +1 -0
  235. package/src/core/geom/3d/topology/simplify/quadratic/quadric3_set_from_plane_through_point.js +27 -0
  236. package/src/core/geom/3d/topology/struct/TopoEdge.d.ts +2 -2
  237. package/src/core/geom/3d/topology/struct/TopoEdge.d.ts.map +1 -1
  238. package/src/core/geom/3d/topology/struct/TopoEdge.js +1 -1
  239. package/src/core/geom/3d/topology/struct/TopoMesh.d.ts +2 -3
  240. package/src/core/geom/3d/topology/struct/TopoMesh.d.ts.map +1 -1
  241. package/src/core/geom/3d/topology/struct/TopoMesh.js +1 -1
  242. package/src/core/geom/3d/topology/struct/TopoTriangle.d.ts +2 -2
  243. package/src/core/geom/3d/topology/struct/TopoTriangle.d.ts.map +1 -1
  244. package/src/core/geom/3d/topology/struct/TopoTriangle.js +1 -1
  245. package/src/core/geom/3d/topology/struct/TopoVertex.d.ts +2 -2
  246. package/src/core/geom/3d/topology/struct/TopoVertex.d.ts.map +1 -1
  247. package/src/core/geom/3d/topology/struct/TopoVertex.js +1 -1
  248. package/src/core/geom/3d/topology/struct/binary/io/bt_boundary_loop.d.ts +24 -0
  249. package/src/core/geom/3d/topology/struct/binary/io/bt_boundary_loop.d.ts.map +1 -0
  250. package/src/core/geom/3d/topology/struct/binary/io/bt_boundary_loop.js +73 -0
  251. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_close_boundary_holes.d.ts.map +1 -1
  252. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_close_boundary_holes.js +2 -53
  253. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_compute_vertex_quadrics.d.ts.map +1 -1
  254. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_compute_vertex_quadrics.js +3 -4
  255. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_fill_small_holes.d.ts.map +1 -1
  256. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_fill_small_holes.js +3 -33
  257. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_from_indexed_geometry.d.ts.map +1 -1
  258. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_from_indexed_geometry.js +4 -37
  259. package/src/core/geom/3d/topology/struct/binary/io/face/bt_face_poke.d.ts.map +1 -1
  260. package/src/core/geom/3d/topology/struct/binary/io/face/bt_face_poke.js +3 -32
  261. package/src/core/geom/3d/topology/struct/binary/query/bt_face_read_triangle.d.ts +32 -0
  262. package/src/core/geom/3d/topology/struct/binary/query/bt_face_read_triangle.d.ts.map +1 -0
  263. package/src/core/geom/3d/topology/struct/binary/query/bt_face_read_triangle.js +66 -0
  264. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_face_find_path.d.ts.map +1 -1
  265. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_face_find_path.js +703 -728
  266. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_face_find_path_polyanya.d.ts.map +1 -1
  267. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_face_find_path_polyanya.js +13 -24
  268. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_sample_interior_grid_points.d.ts.map +1 -1
  269. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_sample_interior_grid_points.js +8 -54
  270. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_surface_ray_parity.d.ts +35 -0
  271. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_surface_ray_parity.d.ts.map +1 -0
  272. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_surface_ray_parity.js +82 -0
  273. package/src/core/geom/3d/topology/util/mesh_flood_fill.d.ts +1 -1
  274. package/src/core/geom/3d/topology/util/mesh_flood_fill.js +1 -1
  275. package/src/core/geom/3d/triangle/tri3_closest_point.d.ts +29 -0
  276. package/src/core/geom/3d/triangle/tri3_closest_point.d.ts.map +1 -0
  277. package/src/core/geom/3d/triangle/tri3_closest_point.js +65 -0
  278. package/src/core/geom/3d/triangle/tri3_flatten_isometric.d.ts +42 -0
  279. package/src/core/geom/3d/triangle/tri3_flatten_isometric.d.ts.map +1 -0
  280. package/src/core/geom/3d/triangle/tri3_flatten_isometric.js +79 -0
  281. package/src/core/geom/3d/util/aabb3_emit_point_grid.d.ts +2 -2
  282. package/src/core/geom/3d/util/aabb3_emit_point_grid.d.ts.map +1 -1
  283. package/src/core/geom/3d/util/aabb3_emit_point_grid.js +1 -1
  284. package/src/core/geom/Quaternion.d.ts +2 -2
  285. package/src/core/geom/Quaternion.d.ts.map +1 -1
  286. package/src/core/geom/Quaternion.js +1 -1
  287. package/src/core/geom/Vector1.d.ts +2 -2
  288. package/src/core/geom/Vector1.d.ts.map +1 -1
  289. package/src/core/geom/Vector1.js +1 -1
  290. package/src/core/geom/Vector2.d.ts.map +1 -1
  291. package/src/core/geom/Vector2.js +2 -1
  292. package/src/core/geom/packing/max-rect/find_best_container.d.ts +2 -2
  293. package/src/core/geom/packing/max-rect/find_best_container.d.ts.map +1 -1
  294. package/src/core/geom/packing/max-rect/find_best_container.js +1 -1
  295. package/src/core/geom/random/random_orthonormal_basis.d.ts +21 -0
  296. package/src/core/geom/random/random_orthonormal_basis.d.ts.map +1 -0
  297. package/src/core/geom/random/random_orthonormal_basis.js +31 -0
  298. package/src/core/geom/vec2/v2_rotate.d.ts +18 -0
  299. package/src/core/geom/vec2/v2_rotate.d.ts.map +1 -0
  300. package/src/core/geom/vec2/v2_rotate.js +21 -0
  301. package/src/core/geom/vec2/v2_rotate_cos_sin.d.ts +19 -0
  302. package/src/core/geom/vec2/v2_rotate_cos_sin.d.ts.map +1 -0
  303. package/src/core/geom/vec2/v2_rotate_cos_sin.js +21 -0
  304. package/src/core/geom/vec3/v3_lerp.d.ts +1 -1
  305. package/src/core/geom/vec3/v3_lerp.js +1 -1
  306. package/src/core/graph/csr/csr_graph_from_undirected_edge_list.d.ts +30 -0
  307. package/src/core/graph/csr/csr_graph_from_undirected_edge_list.d.ts.map +1 -0
  308. package/src/core/graph/csr/csr_graph_from_undirected_edge_list.js +94 -0
  309. package/src/core/graph/layout/CircleLayout.d.ts.map +1 -1
  310. package/src/core/graph/layout/CircleLayout.js +6 -29
  311. package/src/core/graph/layout/box/BoxLayouter.d.ts.map +1 -1
  312. package/src/core/graph/layout/box/BoxLayouter.js +2 -26
  313. package/src/core/graph/layout/box/position_box_next_to_box.d.ts.map +1 -1
  314. package/src/core/graph/layout/box/position_box_next_to_box.js +2 -1
  315. package/src/core/graph/layout/computeDisconnectedSubGraphs.d.ts.map +1 -1
  316. package/src/core/graph/layout/computeDisconnectedSubGraphs.js +14 -3
  317. package/src/core/graph/layout/graph_peel_topological_layer.d.ts +25 -0
  318. package/src/core/graph/layout/graph_peel_topological_layer.d.ts.map +1 -0
  319. package/src/core/graph/layout/graph_peel_topological_layer.js +45 -0
  320. package/src/core/json/abstractJSONSerializer.d.ts +2 -2
  321. package/src/core/json/abstractJSONSerializer.d.ts.map +1 -1
  322. package/src/core/json/abstractJSONSerializer.js +1 -1
  323. package/src/core/lang/reactive/AbstractCachingParser.d.ts +2 -3
  324. package/src/core/lang/reactive/AbstractCachingParser.d.ts.map +1 -1
  325. package/src/core/lang/reactive/AbstractCachingParser.js +1 -1
  326. package/src/core/localization/Localization.d.ts +2 -2
  327. package/src/core/localization/Localization.d.ts.map +1 -1
  328. package/src/core/localization/Localization.js +1 -1
  329. package/src/core/math/hash/hash_mix2.d.ts +21 -0
  330. package/src/core/math/hash/hash_mix2.d.ts.map +1 -0
  331. package/src/core/math/hash/hash_mix2.js +22 -0
  332. package/src/core/math/hash/hash_mix3.d.ts +16 -0
  333. package/src/core/math/hash/hash_mix3.d.ts.map +1 -0
  334. package/src/core/math/hash/hash_mix3.js +19 -0
  335. package/src/core/math/lookup/LUT_HEATMAP.d.ts +17 -0
  336. package/src/core/math/lookup/LUT_HEATMAP.d.ts.map +1 -0
  337. package/src/core/math/lookup/LUT_HEATMAP.js +30 -0
  338. package/src/core/math/noise/create_simplex_noise_2d.d.ts +2 -2
  339. package/src/core/math/noise/create_simplex_noise_2d.d.ts.map +1 -1
  340. package/src/core/math/noise/create_simplex_noise_2d.js +1 -1
  341. package/src/core/math/noise/curl_noise_3d.d.ts +6 -0
  342. package/src/core/math/noise/curl_noise_3d.d.ts.map +1 -1
  343. package/src/core/math/noise/curl_noise_3d.js +18 -27
  344. package/src/core/math/physics/mie/MIE_PARTICLES_STANDARD.js +1 -1
  345. package/src/core/math/physics/mie/compute_mie_particle_properties_rgb.d.ts +3 -3
  346. package/src/core/math/physics/mie/compute_mie_particle_properties_rgb.d.ts.map +1 -1
  347. package/src/core/math/physics/mie/compute_mie_particle_properties_rgb.js +2 -2
  348. package/src/core/math/random/seededRandom_Mulberry32.d.ts +3 -2
  349. package/src/core/math/random/seededRandom_Mulberry32.d.ts.map +1 -1
  350. package/src/core/math/random/seededRandom_Mulberry32.js +1 -1
  351. package/src/core/math/statistics/hammersley_sequence.d.ts +28 -16
  352. package/src/core/math/statistics/hammersley_sequence.d.ts.map +1 -1
  353. package/src/core/math/statistics/hammersley_sequence.js +53 -34
  354. package/src/core/model/ModuleRegistry.d.ts +2 -2
  355. package/src/core/model/ModuleRegistry.d.ts.map +1 -1
  356. package/src/core/model/ModuleRegistry.js +1 -1
  357. package/src/core/model/node-graph/json/serializeNodeGraphToJSON.d.ts +1 -1
  358. package/src/core/model/node-graph/json/serializeNodeGraphToJSON.js +2 -2
  359. package/src/core/model/object/objectDeepEquals.d.ts +2 -2
  360. package/src/core/model/object/objectDeepEquals.d.ts.map +1 -1
  361. package/src/core/model/object/objectDeepEquals.js +1 -1
  362. package/src/core/model/reactive/model/ReactiveExpression.d.ts +2 -2
  363. package/src/core/model/reactive/model/ReactiveExpression.d.ts.map +1 -1
  364. package/src/core/model/reactive/model/ReactiveExpression.js +1 -1
  365. package/src/core/model/validate_enum_schema.d.ts +2 -3
  366. package/src/core/model/validate_enum_schema.d.ts.map +1 -1
  367. package/src/core/model/validate_enum_schema.js +1 -1
  368. package/src/core/process/Future.d.ts +3 -3
  369. package/src/core/process/Future.d.ts.map +1 -1
  370. package/src/core/process/Future.js +1 -1
  371. package/src/core/process/task/Task.d.ts +3 -3
  372. package/src/core/process/task/Task.d.ts.map +1 -1
  373. package/src/core/process/task/Task.js +2 -2
  374. package/src/core/process/task/util/countTask.d.ts +2 -2
  375. package/src/core/process/task/util/countTask.d.ts.map +1 -1
  376. package/src/core/process/task/util/countTask.js +1 -1
  377. package/src/core/process/task/util/randomCountTask.d.ts +2 -2
  378. package/src/core/process/task/util/randomCountTask.d.ts.map +1 -1
  379. package/src/core/process/task/util/randomCountTask.js +1 -1
  380. package/src/core/science/units/MEASUREMENT_UNITS_SI.d.ts +3 -0
  381. package/src/core/science/units/MEASUREMENT_UNITS_SI.d.ts.map +1 -1
  382. package/src/core/science/units/MEASUREMENT_UNITS_SI.js +5 -16
  383. package/src/engine/animation/Animations.d.ts +4 -4
  384. package/src/engine/animation/Animations.d.ts.map +1 -1
  385. package/src/engine/animation/Animations.js +2 -2
  386. package/src/engine/animation/EntityAnimation.d.ts +5 -5
  387. package/src/engine/animation/EntityAnimation.d.ts.map +1 -1
  388. package/src/engine/animation/EntityAnimation.js +2 -2
  389. package/src/engine/animation/TransitionFunctions.d.ts +30 -2
  390. package/src/engine/animation/TransitionFunctions.d.ts.map +1 -1
  391. package/src/engine/animation/TransitionFunctions.js +45 -1
  392. package/src/engine/animation/Tween.d.ts +4 -4
  393. package/src/engine/animation/Tween.d.ts.map +1 -1
  394. package/src/engine/animation/Tween.js +2 -2
  395. package/src/engine/animation/curve/animation_curve_binary_codec.d.ts +29 -0
  396. package/src/engine/animation/curve/animation_curve_binary_codec.d.ts.map +1 -0
  397. package/src/engine/animation/curve/animation_curve_binary_codec.js +60 -0
  398. package/src/engine/animation/curve/draw/canvas_point_to_curve.d.ts +16 -0
  399. package/src/engine/animation/curve/draw/canvas_point_to_curve.d.ts.map +1 -0
  400. package/src/engine/animation/curve/draw/canvas_point_to_curve.js +22 -0
  401. package/src/engine/animation/curve/draw/curve_point_to_canvas.d.ts +27 -0
  402. package/src/engine/animation/curve/draw/curve_point_to_canvas.d.ts.map +1 -0
  403. package/src/engine/animation/curve/draw/curve_point_to_canvas.js +38 -0
  404. package/src/engine/animation/curve/draw/position_canvas_to_curve.d.ts +2 -0
  405. package/src/engine/animation/curve/draw/position_canvas_to_curve.d.ts.map +1 -1
  406. package/src/engine/animation/curve/draw/position_canvas_to_curve.js +22 -24
  407. package/src/engine/animation/curve/draw/position_curve_to_canvas.d.ts +2 -0
  408. package/src/engine/animation/curve/draw/position_curve_to_canvas.d.ts.map +1 -1
  409. package/src/engine/animation/curve/draw/position_curve_to_canvas.js +22 -25
  410. package/src/engine/animation/curve/editor/canvas2dDrawWorldAxisLabels.d.ts.map +1 -1
  411. package/src/engine/animation/curve/editor/canvas2dDrawWorldAxisLabels.js +3 -2
  412. package/src/engine/animation/curve/editor/canvas2dPlotCurvePoints.d.ts.map +1 -1
  413. package/src/engine/animation/curve/editor/canvas2dPlotCurvePoints.js +14 -14
  414. package/src/engine/animation/removeEntityWithMeshParticlesEffect.d.ts.map +1 -1
  415. package/src/engine/animation/removeEntityWithMeshParticlesEffect.js +5 -0
  416. package/src/engine/asset/AssetManager.d.ts +6 -6
  417. package/src/engine/asset/AssetManager.d.ts.map +1 -1
  418. package/src/engine/asset/AssetManager.js +1411 -1411
  419. package/src/engine/asset/AssetRequest.d.ts +4 -4
  420. package/src/engine/asset/AssetRequest.d.ts.map +1 -1
  421. package/src/engine/asset/AssetRequest.js +3 -3
  422. package/src/engine/asset/loaders/AssetLoader.d.ts +3 -3
  423. package/src/engine/asset/loaders/AssetLoader.d.ts.map +1 -1
  424. package/src/engine/asset/loaders/AssetLoader.js +2 -2
  425. package/src/engine/asset/loaders/GLTFAssetLoader.d.ts.map +1 -1
  426. package/src/engine/asset/loaders/GLTFAssetLoader.js +25 -51
  427. package/src/engine/asset/loaders/material/StaticMaterialCache.d.ts +3 -2
  428. package/src/engine/asset/loaders/material/StaticMaterialCache.d.ts.map +1 -1
  429. package/src/engine/asset/loaders/material/StaticMaterialCache.js +16 -55
  430. package/src/engine/asset/loaders/material/TextureCoalescer.d.ts +32 -0
  431. package/src/engine/asset/loaders/material/TextureCoalescer.d.ts.map +1 -0
  432. package/src/engine/asset/loaders/material/TextureCoalescer.js +68 -0
  433. package/src/engine/asset/loaders/material/traverseMaterialTextures.d.ts +10 -2
  434. package/src/engine/asset/loaders/material/traverseMaterialTextures.d.ts.map +1 -1
  435. package/src/engine/asset/loaders/material/traverseMaterialTextures.js +10 -2
  436. package/src/engine/control/first-person/FirstPersonPlayerControllerSystem.d.ts +0 -10
  437. package/src/engine/control/first-person/FirstPersonPlayerControllerSystem.d.ts.map +1 -1
  438. package/src/engine/control/first-person/abilities/Mantle.d.ts.map +1 -1
  439. package/src/engine/control/first-person/abilities/Mantle.js +10 -26
  440. package/src/engine/ecs/EntityComponentDataset.d.ts +6 -6
  441. package/src/engine/ecs/EntityComponentDataset.d.ts.map +1 -1
  442. package/src/engine/ecs/EntityComponentDataset.js +3 -3
  443. package/src/engine/ecs/EntityManager.d.ts +4 -4
  444. package/src/engine/ecs/EntityManager.js +4 -4
  445. package/src/engine/ecs/EntityObserver.d.ts +3 -3
  446. package/src/engine/ecs/EntityObserver.d.ts.map +1 -1
  447. package/src/engine/ecs/EntityObserver.js +2 -2
  448. package/src/engine/ecs/System.d.ts +4 -4
  449. package/src/engine/ecs/System.d.ts.map +1 -1
  450. package/src/engine/ecs/System.js +2 -2
  451. package/src/engine/ecs/dynamic_actions/DynamicActorSystem.d.ts +2 -3
  452. package/src/engine/ecs/dynamic_actions/DynamicActorSystem.d.ts.map +1 -1
  453. package/src/engine/ecs/dynamic_actions/DynamicActorSystem.js +1 -1
  454. package/src/engine/ecs/dynamic_actions/actions/definition/WeightedRandomActionDescription.d.ts.map +1 -1
  455. package/src/engine/ecs/dynamic_actions/actions/definition/WeightedRandomActionDescription.js +5 -0
  456. package/src/engine/ecs/evaluation/complex/PointFitnessGaussianBlur.d.ts +22 -2
  457. package/src/engine/ecs/evaluation/complex/PointFitnessGaussianBlur.d.ts.map +1 -1
  458. package/src/engine/ecs/evaluation/complex/PointFitnessGaussianBlur.js +92 -41
  459. package/src/engine/ecs/grid/pick.d.ts +4 -2
  460. package/src/engine/ecs/grid/pick.d.ts.map +1 -1
  461. package/src/engine/ecs/grid/pick.js +1 -1
  462. package/src/engine/ecs/gui/hud/HeadsUpDisplaySystem.d.ts +3 -1
  463. package/src/engine/ecs/gui/hud/HeadsUpDisplaySystem.d.ts.map +1 -1
  464. package/src/engine/ecs/gui/hud/HeadsUpDisplaySystem.js +14 -16
  465. package/src/engine/ecs/gui/parallax/GuiElementParallaxSystem.d.ts.map +1 -1
  466. package/src/engine/ecs/gui/parallax/GuiElementParallaxSystem.js +16 -29
  467. package/src/engine/ecs/ik/OneBoneSurfaceAlignmentSolver.d.ts.map +1 -1
  468. package/src/engine/ecs/ik/OneBoneSurfaceAlignmentSolver.js +12 -74
  469. package/src/engine/ecs/ik/TwoBoneInverseKinematicsSolver.d.ts.map +1 -1
  470. package/src/engine/ecs/ik/TwoBoneInverseKinematicsSolver.js +10 -73
  471. package/src/engine/ecs/ik/ik_probe_terrain_contact.d.ts +38 -0
  472. package/src/engine/ecs/ik/ik_probe_terrain_contact.d.ts.map +1 -0
  473. package/src/engine/ecs/ik/ik_probe_terrain_contact.js +119 -0
  474. package/src/engine/ecs/parent/EntityNode.d.ts +4 -4
  475. package/src/engine/ecs/parent/EntityNode.d.ts.map +1 -1
  476. package/src/engine/ecs/parent/EntityNode.js +2 -2
  477. package/src/engine/ecs/storage/binary/collection/BinaryCollectionDeSerializer.d.ts +2 -2
  478. package/src/engine/ecs/storage/binary/collection/BinaryCollectionDeSerializer.d.ts.map +1 -1
  479. package/src/engine/ecs/storage/binary/collection/BinaryCollectionDeSerializer.js +1 -1
  480. package/src/engine/ecs/storage/binary/collection/BinaryCollectionHeaderCodec.d.ts +1 -2
  481. package/src/engine/ecs/storage/binary/collection/BinaryCollectionHeaderCodec.d.ts.map +1 -1
  482. package/src/engine/ecs/systems/AnimationSystem.d.ts +0 -5
  483. package/src/engine/ecs/systems/AnimationSystem.d.ts.map +1 -1
  484. package/src/engine/ecs/terrain/ecs/TerrainSystem.d.ts +2 -2
  485. package/src/engine/ecs/terrain/ecs/TerrainSystem.d.ts.map +1 -1
  486. package/src/engine/ecs/terrain/ecs/TerrainSystem.js +1 -1
  487. package/src/engine/ecs/terrain/tiles/TerrainTileManager.d.ts +5 -5
  488. package/src/engine/ecs/terrain/tiles/TerrainTileManager.d.ts.map +1 -1
  489. package/src/engine/ecs/terrain/tiles/TerrainTileManager.js +3 -3
  490. package/src/engine/ecs/terrain/util/obtainTerrain.d.ts +2 -3
  491. package/src/engine/ecs/terrain/util/obtainTerrain.d.ts.map +1 -1
  492. package/src/engine/ecs/terrain/util/obtainTerrain.js +1 -1
  493. package/src/engine/ecs/terrain/util/paintTerrainOverlayViaLookupTable.d.ts +0 -1
  494. package/src/engine/ecs/terrain/util/paintTerrainOverlayViaLookupTable.d.ts.map +1 -1
  495. package/src/engine/ecs/terrain/util/paintTerrainOverlayViaLookupTable.js +2 -14
  496. package/src/engine/ecs/util/hideEntityGracefully.js +2 -2
  497. package/src/engine/graphics/FULL_SCREEN_QUAD_VERTEX_SHADER.d.ts +12 -1
  498. package/src/engine/graphics/FULL_SCREEN_QUAD_VERTEX_SHADER.d.ts.map +1 -1
  499. package/src/engine/graphics/FULL_SCREEN_QUAD_VERTEX_SHADER.js +14 -10
  500. package/src/engine/graphics/FrameRunner.d.ts +2 -2
  501. package/src/engine/graphics/FrameRunner.d.ts.map +1 -1
  502. package/src/engine/graphics/FrameRunner.js +1 -1
  503. package/src/engine/graphics/GraphicsEngine.d.ts +4 -2
  504. package/src/engine/graphics/GraphicsEngine.d.ts.map +1 -1
  505. package/src/engine/graphics/GraphicsEngine.js +1 -1
  506. package/src/engine/graphics/camera/CameraShake.d.ts +6 -6
  507. package/src/engine/graphics/camera/CameraShake.d.ts.map +1 -1
  508. package/src/engine/graphics/ecs/camera/CameraSystem.d.ts +2 -2
  509. package/src/engine/graphics/ecs/camera/CameraSystem.d.ts.map +1 -1
  510. package/src/engine/graphics/ecs/camera/CameraSystem.js +1 -1
  511. package/src/engine/graphics/ecs/camera/auto_set_camera_clipping_planes.d.ts.map +1 -1
  512. package/src/engine/graphics/ecs/camera/auto_set_camera_clipping_planes.js +7 -28
  513. package/src/engine/graphics/ecs/decal/v2/FPDecalSystem.d.ts +2 -3
  514. package/src/engine/graphics/ecs/decal/v2/FPDecalSystem.d.ts.map +1 -1
  515. package/src/engine/graphics/ecs/decal/v2/FPDecalSystem.js +1 -1
  516. package/src/engine/graphics/ecs/highlight/renderer/HighlightDecodeShader.d.ts +1 -2
  517. package/src/engine/graphics/ecs/highlight/renderer/HighlightDecodeShader.d.ts.map +1 -1
  518. package/src/engine/graphics/ecs/highlight/renderer/HighlightDecodeShader.js +4 -12
  519. package/src/engine/graphics/ecs/highlight/renderer/OutlineRenderer.d.ts.map +1 -1
  520. package/src/engine/graphics/ecs/highlight/renderer/OutlineRenderer.js +2 -11
  521. package/src/engine/graphics/ecs/highlight/renderer/makeBlurShader_9.d.ts +1 -2
  522. package/src/engine/graphics/ecs/highlight/renderer/makeBlurShader_9.d.ts.map +1 -1
  523. package/src/engine/graphics/ecs/highlight/renderer/makeBlurShader_9.js +3 -11
  524. package/src/engine/graphics/ecs/highlight/renderer/makeDilationShader.d.ts +1 -2
  525. package/src/engine/graphics/ecs/highlight/renderer/makeDilationShader.d.ts.map +1 -1
  526. package/src/engine/graphics/ecs/highlight/renderer/makeDilationShader.js +3 -11
  527. package/src/engine/graphics/ecs/highlight/renderer/make_screen_space_quad_material.d.ts +33 -0
  528. package/src/engine/graphics/ecs/highlight/renderer/make_screen_space_quad_material.d.ts.map +1 -0
  529. package/src/engine/graphics/ecs/highlight/renderer/make_screen_space_quad_material.js +44 -0
  530. package/src/engine/graphics/ecs/highlight/system/HighlightSystemBase.d.ts +55 -0
  531. package/src/engine/graphics/ecs/highlight/system/HighlightSystemBase.d.ts.map +1 -0
  532. package/src/engine/graphics/ecs/highlight/system/HighlightSystemBase.js +205 -0
  533. package/src/engine/graphics/ecs/highlight/system/MeshHighlightSystem.d.ts +4 -45
  534. package/src/engine/graphics/ecs/highlight/system/MeshHighlightSystem.d.ts.map +1 -1
  535. package/src/engine/graphics/ecs/highlight/system/MeshHighlightSystem.js +39 -162
  536. package/src/engine/graphics/ecs/highlight/system/RenderableHighlightSystem.d.ts +4 -51
  537. package/src/engine/graphics/ecs/highlight/system/RenderableHighlightSystem.d.ts.map +1 -1
  538. package/src/engine/graphics/ecs/highlight/system/RenderableHighlightSystem.js +34 -164
  539. package/src/engine/graphics/ecs/highlight/system/ShadedGeometryHighlightSystem.d.ts +5 -57
  540. package/src/engine/graphics/ecs/highlight/system/ShadedGeometryHighlightSystem.d.ts.map +1 -1
  541. package/src/engine/graphics/ecs/highlight/system/ShadedGeometryHighlightSystem.js +48 -175
  542. package/src/engine/graphics/ecs/light/shadow/extend_shadow_camera_near_for_casters.d.ts.map +1 -1
  543. package/src/engine/graphics/ecs/light/shadow/extend_shadow_camera_near_for_casters.js +7 -25
  544. package/src/engine/graphics/ecs/light/three/ThreeLightCache.d.ts +1 -1
  545. package/src/engine/graphics/ecs/light/three/ThreeLightCache.js +1 -1
  546. package/src/engine/graphics/ecs/make_bvh_depth_range_computer.d.ts +26 -0
  547. package/src/engine/graphics/ecs/make_bvh_depth_range_computer.d.ts.map +1 -0
  548. package/src/engine/graphics/ecs/make_bvh_depth_range_computer.js +33 -0
  549. package/src/engine/graphics/ecs/mesh/MeshSystem.d.ts.map +1 -1
  550. package/src/engine/graphics/ecs/mesh/MeshSystem.js +2 -5
  551. package/src/engine/graphics/ecs/mesh-v2/ShadedGeometrySystem.d.ts +4 -5
  552. package/src/engine/graphics/ecs/mesh-v2/ShadedGeometrySystem.d.ts.map +1 -1
  553. package/src/engine/graphics/ecs/mesh-v2/ShadedGeometrySystem.js +4 -7
  554. package/src/engine/graphics/ecs/render_layers_compute_depth_range.d.ts +35 -0
  555. package/src/engine/graphics/ecs/render_layers_compute_depth_range.d.ts.map +1 -0
  556. package/src/engine/graphics/ecs/render_layers_compute_depth_range.js +64 -0
  557. package/src/engine/graphics/ecs/trail2d/Trail2DSystem.d.ts.map +1 -1
  558. package/src/engine/graphics/ecs/trail2d/Trail2DSystem.js +2 -5
  559. package/src/engine/graphics/ecs/trail3d/Trail3DSystem.d.ts.map +1 -1
  560. package/src/engine/graphics/ecs/trail3d/Trail3DSystem.js +2 -5
  561. package/src/engine/graphics/ecs/water/WaterSystem.d.ts.map +1 -1
  562. package/src/engine/graphics/ecs/water/WaterSystem.js +2 -5
  563. package/src/engine/graphics/geometry/buffered/query/bvh32_geometry_nearest.d.ts.map +1 -1
  564. package/src/engine/graphics/geometry/buffered/query/bvh32_geometry_nearest.js +22 -94
  565. package/src/engine/graphics/geometry/buffered/query/bvh32_geometry_overlap_clipping_volume.d.ts.map +1 -1
  566. package/src/engine/graphics/geometry/buffered/query/bvh32_geometry_overlap_clipping_volume.js +17 -57
  567. package/src/engine/graphics/geometry/buffered/query/bvh32_geometry_raycast.d.ts.map +1 -1
  568. package/src/engine/graphics/geometry/buffered/query/bvh32_geometry_raycast.js +17 -57
  569. package/src/engine/graphics/geometry/buffered/query/nearest_point_on_triangle_record.d.ts +30 -0
  570. package/src/engine/graphics/geometry/buffered/query/nearest_point_on_triangle_record.d.ts.map +1 -0
  571. package/src/engine/graphics/geometry/buffered/query/nearest_point_on_triangle_record.js +87 -0
  572. package/src/engine/graphics/geometry/buffered/query/query_bvh_geometry_nearest.d.ts.map +1 -1
  573. package/src/engine/graphics/geometry/buffered/query/query_bvh_geometry_nearest.js +11 -55
  574. package/src/engine/graphics/geometry/buffered/read_triangle_vertices.d.ts +29 -0
  575. package/src/engine/graphics/geometry/buffered/read_triangle_vertices.d.ts.map +1 -0
  576. package/src/engine/graphics/geometry/buffered/read_triangle_vertices.js +102 -0
  577. package/src/engine/graphics/geometry/computeBoundingSphereFromVertexData.d.ts +2 -2
  578. package/src/engine/graphics/geometry/computeBoundingSphereFromVertexData.js +1 -1
  579. package/src/engine/graphics/geometry/instancing/InstancedMeshGroup.d.ts +2 -2
  580. package/src/engine/graphics/geometry/instancing/InstancedMeshGroup.d.ts.map +1 -1
  581. package/src/engine/graphics/geometry/instancing/InstancedMeshGroup.js +1 -1
  582. package/src/engine/graphics/geometry/ribbon/Ribbon.d.ts +2 -2
  583. package/src/engine/graphics/geometry/ribbon/Ribbon.d.ts.map +1 -1
  584. package/src/engine/graphics/geometry/ribbon/Ribbon.js +1 -1
  585. package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderDepthV0.d.ts.map +1 -1
  586. package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderDepthV0.js +17 -122
  587. package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderLitV0.d.ts.map +1 -1
  588. package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderLitV0.js +15 -194
  589. package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderNormalsV0.d.ts.map +1 -1
  590. package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderNormalsV0.js +12 -108
  591. package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderPerPixelV0.d.ts.map +1 -1
  592. package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderPerPixelV0.js +14 -183
  593. package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderV0.d.ts.map +1 -1
  594. package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderV0.js +12 -154
  595. package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderViewportDepthV0.d.ts.map +1 -1
  596. package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderViewportDepthV0.js +10 -94
  597. package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderWireframeV0.d.ts.map +1 -1
  598. package/src/engine/graphics/impostors/octahedral/shader/ImpostorShaderWireframeV0.js +8 -72
  599. package/src/engine/graphics/impostors/octahedral/shader/glsl/common.glsl +10 -0
  600. package/src/engine/graphics/impostors/voxel/bake/read_atlas_to_samples.d.ts.map +1 -1
  601. package/src/engine/graphics/impostors/voxel/bake/read_atlas_to_samples.js +79 -58
  602. package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderDepthV0.d.ts.map +1 -1
  603. package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderDepthV0.js +11 -22
  604. package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderLitV0.d.ts.map +1 -1
  605. package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderLitV0.js +7 -16
  606. package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderNormalsV0.d.ts.map +1 -1
  607. package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderNormalsV0.js +5 -9
  608. package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderV0.d.ts.map +1 -1
  609. package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderV0.js +4 -19
  610. package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderViewportDepthV0.d.ts.map +1 -1
  611. package/src/engine/graphics/impostors/voxel/shader/VoxelImpostorShaderViewportDepthV0.js +5 -9
  612. package/src/engine/graphics/material/SplatMaterial.d.ts.map +1 -1
  613. package/src/engine/graphics/material/SplatMaterial.js +2 -17
  614. package/src/engine/graphics/material/WaterMaterial.d.ts.map +1 -1
  615. package/src/engine/graphics/material/WaterMaterial.js +3 -18
  616. package/src/engine/graphics/material/manager/compilers/CoalesceTextures.d.ts +4 -4
  617. package/src/engine/graphics/material/manager/compilers/CoalesceTextures.d.ts.map +1 -1
  618. package/src/engine/graphics/material/manager/compilers/CoalesceTextures.js +25 -70
  619. package/src/engine/graphics/particles/ecs/ParticleEmitterSystem.d.ts.map +1 -1
  620. package/src/engine/graphics/particles/ecs/ParticleEmitterSystem.js +2 -5
  621. package/src/engine/graphics/particles/node-based/codegen/glsl/getTypeByteSize.d.ts +8 -11
  622. package/src/engine/graphics/particles/node-based/codegen/glsl/getTypeByteSize.d.ts.map +1 -1
  623. package/src/engine/graphics/particles/node-based/codegen/glsl/getTypeByteSize.js +20 -21
  624. package/src/engine/graphics/particles/node-based/nodes/particle_data_type_component_count.d.ts +39 -0
  625. package/src/engine/graphics/particles/node-based/nodes/particle_data_type_component_count.d.ts.map +1 -0
  626. package/src/engine/graphics/particles/node-based/nodes/particle_data_type_component_count.js +45 -0
  627. package/src/engine/graphics/particles/node-based/particle/ParticleAttributeSpecification.d.ts +6 -8
  628. package/src/engine/graphics/particles/node-based/particle/ParticleAttributeSpecification.d.ts.map +1 -1
  629. package/src/engine/graphics/particles/node-based/particle/ParticleAttributeSpecification.js +2 -13
  630. package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.d.ts +2 -2
  631. package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.d.ts.map +1 -1
  632. package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.js +1 -1
  633. package/src/engine/graphics/particles/particular/engine/emitter/computeEmissionFunction.d.ts +2 -2
  634. package/src/engine/graphics/particles/particular/engine/emitter/computeEmissionFunction.d.ts.map +1 -1
  635. package/src/engine/graphics/particles/particular/engine/emitter/computeEmissionFunction.js +1 -1
  636. package/src/engine/graphics/particles/particular/engine/utils/distributeParticlesOnObject3D.d.ts.map +1 -1
  637. package/src/engine/graphics/particles/particular/engine/utils/distributeParticlesOnObject3D.js +16 -78
  638. package/src/engine/graphics/particles/particular/engine/utils/distribute_points_on_indexed_triangles.d.ts +45 -0
  639. package/src/engine/graphics/particles/particular/engine/utils/distribute_points_on_indexed_triangles.d.ts.map +1 -0
  640. package/src/engine/graphics/particles/particular/engine/utils/distribute_points_on_indexed_triangles.js +168 -0
  641. package/src/engine/graphics/particles/particular/engine/utils/distrubuteParticlesOnMesh.d.ts +2 -2
  642. package/src/engine/graphics/particles/particular/engine/utils/distrubuteParticlesOnMesh.d.ts.map +1 -1
  643. package/src/engine/graphics/particles/particular/engine/utils/distrubuteParticlesOnMesh.js +12 -116
  644. package/src/engine/graphics/postprocess/threejs/shaders/CopyShader.d.ts +24 -16
  645. package/src/engine/graphics/postprocess/threejs/shaders/CopyShader.d.ts.map +1 -1
  646. package/src/engine/graphics/postprocess/threejs/shaders/CopyShader.js +15 -47
  647. package/src/engine/graphics/render/RendererPool.d.ts +4 -4
  648. package/src/engine/graphics/render/RendererPool.d.ts.map +1 -1
  649. package/src/engine/graphics/render/RendererPool.js +2 -2
  650. package/src/engine/graphics/render/buffer/simple-fx/ao/AmbientOcclusionPostProcessEffect.d.ts +4 -0
  651. package/src/engine/graphics/render/buffer/simple-fx/ao/AmbientOcclusionPostProcessEffect.d.ts.map +1 -1
  652. package/src/engine/graphics/render/buffer/simple-fx/ao/AmbientOcclusionPostProcessEffect.js +4 -0
  653. package/src/engine/graphics/render/frame_graph/FrameGraph.d.ts +5 -4
  654. package/src/engine/graphics/render/frame_graph/FrameGraph.d.ts.map +1 -1
  655. package/src/engine/graphics/render/frame_graph/FrameGraph.js +2 -2
  656. package/src/engine/graphics/render/layers/RenderLayer.d.ts +2 -2
  657. package/src/engine/graphics/render/layers/RenderLayer.d.ts.map +1 -1
  658. package/src/engine/graphics/render/layers/RenderLayer.js +1 -1
  659. package/src/engine/graphics/render/layers/RenderLayerUtils.js +1 -1
  660. package/src/engine/graphics/sh3/build_injected_shader.d.ts +51 -0
  661. package/src/engine/graphics/sh3/build_injected_shader.d.ts.map +1 -0
  662. package/src/engine/graphics/sh3/build_injected_shader.js +56 -0
  663. package/src/engine/graphics/sh3/gi/material/MaterialTransformer.d.ts.map +1 -1
  664. package/src/engine/graphics/sh3/gi/material/MaterialTransformer.js +10 -1
  665. package/src/engine/graphics/sh3/gi/material/chunk_lpv_get_irradiance_at.d.ts.map +1 -1
  666. package/src/engine/graphics/sh3/gi/material/chunk_lpv_get_irradiance_at.js +17 -0
  667. package/src/engine/graphics/sh3/gi/material/common.d.ts +1 -1
  668. package/src/engine/graphics/sh3/gi/material/common.js +6 -222
  669. package/src/engine/graphics/sh3/gi/material/space_fragment/build_fragment_shader.d.ts.map +1 -1
  670. package/src/engine/graphics/sh3/gi/material/space_fragment/build_fragment_shader.js +7 -11
  671. package/src/engine/graphics/sh3/gi/material/space_fragment/build_vertex_shader.d.ts.map +1 -1
  672. package/src/engine/graphics/sh3/gi/material/space_fragment/build_vertex_shader.js +27 -29
  673. package/src/engine/graphics/sh3/gi/material/space_vertex/build_fragment_shader.d.ts.map +1 -1
  674. package/src/engine/graphics/sh3/gi/material/space_vertex/build_fragment_shader.js +7 -11
  675. package/src/engine/graphics/sh3/gi/material/space_vertex/build_vertex_shader.d.ts.map +1 -1
  676. package/src/engine/graphics/sh3/gi/material/space_vertex/build_vertex_shader.js +7 -12
  677. package/src/engine/graphics/sh3/grid_dilate_average.d.ts +38 -0
  678. package/src/engine/graphics/sh3/grid_dilate_average.d.ts.map +1 -0
  679. package/src/engine/graphics/sh3/grid_dilate_average.js +175 -0
  680. package/src/engine/graphics/sh3/lightmap/bake_lightmap_for_scene.d.ts +3 -1
  681. package/src/engine/graphics/sh3/lightmap/bake_lightmap_for_scene.d.ts.map +1 -1
  682. package/src/engine/graphics/sh3/lightmap/bake_lightmap_for_scene.js +681 -681
  683. package/src/engine/graphics/sh3/lightmap/lightmap_dilate.d.ts +4 -0
  684. package/src/engine/graphics/sh3/lightmap/lightmap_dilate.d.ts.map +1 -1
  685. package/src/engine/graphics/sh3/lightmap/lightmap_dilate.js +7 -70
  686. package/src/engine/graphics/sh3/lightmap/lightmap_rasterize_triangle.d.ts +2 -2
  687. package/src/engine/graphics/sh3/lightmap/lightmap_rasterize_triangle.d.ts.map +1 -1
  688. package/src/engine/graphics/sh3/lightmap/lightmap_rasterize_triangle.js +145 -145
  689. package/src/engine/graphics/sh3/lpg/light_probe_grid_dilate.d.ts +6 -0
  690. package/src/engine/graphics/sh3/lpg/light_probe_grid_dilate.d.ts.map +1 -1
  691. package/src/engine/graphics/sh3/lpg/light_probe_grid_dilate.js +14 -113
  692. package/src/engine/graphics/sh3/lpg/material/chunk_lpg_get_irradiance_at.d.ts.map +1 -1
  693. package/src/engine/graphics/sh3/lpg/material/chunk_lpg_get_irradiance_at.js +7 -0
  694. package/src/engine/graphics/sh3/lpg/material/space_fragment/build_fragment_shader.d.ts.map +1 -1
  695. package/src/engine/graphics/sh3/lpg/material/space_fragment/build_fragment_shader.js +5 -8
  696. package/src/engine/graphics/sh3/lpg/material/space_fragment/build_vertex_shader.d.ts.map +1 -1
  697. package/src/engine/graphics/sh3/lpg/material/space_fragment/build_vertex_shader.js +5 -8
  698. package/src/engine/graphics/sh3/lpg/material/space_vertex/build_fragment_shader.d.ts.map +1 -1
  699. package/src/engine/graphics/sh3/lpg/material/space_vertex/build_fragment_shader.js +5 -8
  700. package/src/engine/graphics/sh3/lpg/material/space_vertex/build_vertex_shader.d.ts.map +1 -1
  701. package/src/engine/graphics/sh3/lpg/material/space_vertex/build_vertex_shader.js +5 -8
  702. package/src/engine/graphics/sh3/lpv/PathTracerProbeRenderer.d.ts +2 -1
  703. package/src/engine/graphics/sh3/lpv/PathTracerProbeRenderer.d.ts.map +1 -1
  704. package/src/engine/graphics/sh3/lpv/depth/chunk_probe_depth_sampling.d.ts +38 -0
  705. package/src/engine/graphics/sh3/lpv/depth/chunk_probe_depth_sampling.d.ts.map +1 -0
  706. package/src/engine/graphics/sh3/lpv/depth/chunk_probe_depth_sampling.js +265 -0
  707. package/src/engine/graphics/sh3/lpv/depth/octahedral/shader/visualize.frag.glsl +11 -0
  708. package/src/engine/graphics/sh3/lpv/depth/octahedral/v2/VLPDepthMapVisualisation.d.ts.map +1 -1
  709. package/src/engine/graphics/sh3/lpv/depth/octahedral/v2/VLPDepthMapVisualisation.js +5 -1
  710. package/src/engine/graphics/sh3/lpv/depth/octahedral/v2/visualise.frag.glsl +189 -419
  711. package/src/engine/graphics/sh3/shader/visualize.frag.d.ts +1 -1
  712. package/src/engine/graphics/sh3/shader/visualize.frag.js +7 -0
  713. package/src/engine/graphics/shaders/chunks/glsl_octahedral_impostor.d.ts +102 -0
  714. package/src/engine/graphics/shaders/chunks/glsl_octahedral_impostor.d.ts.map +1 -0
  715. package/src/engine/graphics/shaders/chunks/glsl_octahedral_impostor.js +277 -0
  716. package/src/engine/graphics/shaders/chunks/glsl_packing.d.ts +29 -0
  717. package/src/engine/graphics/shaders/chunks/glsl_packing.d.ts.map +1 -0
  718. package/src/engine/graphics/shaders/chunks/glsl_packing.js +30 -0
  719. package/src/engine/graphics/shaders/chunks/glsl_voxel_impostor_splat.d.ts +40 -0
  720. package/src/engine/graphics/shaders/chunks/glsl_voxel_impostor_splat.d.ts.map +1 -0
  721. package/src/engine/graphics/shaders/chunks/glsl_voxel_impostor_splat.js +57 -0
  722. package/src/engine/graphics/shaders/lib/make_clouds_uniforms.d.ts +22 -0
  723. package/src/engine/graphics/shaders/lib/make_clouds_uniforms.d.ts.map +1 -0
  724. package/src/engine/graphics/shaders/lib/make_clouds_uniforms.js +39 -0
  725. package/src/engine/graphics/texture/attribute_spec_to_three_format.d.ts +6 -0
  726. package/src/engine/graphics/texture/attribute_spec_to_three_format.d.ts.map +1 -1
  727. package/src/engine/graphics/texture/attribute_spec_to_three_format.js +9 -9
  728. package/src/engine/graphics/texture/channel_count_to_format_prefix.d.ts +14 -0
  729. package/src/engine/graphics/texture/channel_count_to_format_prefix.d.ts.map +1 -0
  730. package/src/engine/graphics/texture/channel_count_to_format_prefix.js +26 -0
  731. package/src/engine/graphics/texture/computeThreeTextureInternalFormatFromDataType.d.ts.map +1 -1
  732. package/src/engine/graphics/texture/computeThreeTextureInternalFormatFromDataType.js +2 -20
  733. package/src/engine/graphics/texture/normalized_internal_format.d.ts.map +1 -1
  734. package/src/engine/graphics/texture/normalized_internal_format.js +2 -20
  735. package/src/engine/graphics/texture/sampler/Sampler2D.d.ts +2 -2
  736. package/src/engine/graphics/texture/sampler/Sampler2D.d.ts.map +1 -1
  737. package/src/engine/graphics/texture/sampler/Sampler2D.js +1 -1
  738. package/src/engine/graphics/texture/sampler/convertTexture2Sampler2D.d.ts.map +1 -1
  739. package/src/engine/graphics/texture/sampler/convertTexture2Sampler2D.js +9 -3
  740. package/src/engine/graphics/texture/sampler/resize/sampler2d_scale_down_lanczos.d.ts +6 -3
  741. package/src/engine/graphics/texture/sampler/resize/sampler2d_scale_down_lanczos.d.ts.map +1 -1
  742. package/src/engine/graphics/texture/sampler/resize/sampler2d_scale_down_lanczos.js +6 -16
  743. package/src/engine/graphics/texture/sampler/sampler2d_combine.d.ts +2 -2
  744. package/src/engine/graphics/texture/sampler/sampler2d_combine.d.ts.map +1 -1
  745. package/src/engine/graphics/texture/sampler/sampler2d_combine.js +1 -1
  746. package/src/engine/graphics/texture/virtual/VirtualTextureTileLoader.d.ts +1 -1
  747. package/src/engine/graphics/texture/virtual/VirtualTextureTileLoader.js +2 -2
  748. package/src/engine/grid/obstacle/GridObstacle.d.ts +2 -2
  749. package/src/engine/grid/obstacle/GridObstacle.d.ts.map +1 -1
  750. package/src/engine/grid/obstacle/GridObstacle.js +1 -1
  751. package/src/engine/input/devices/gamepad/GamepadDeviceLayout.d.ts +54 -0
  752. package/src/engine/input/devices/gamepad/GamepadDeviceLayout.d.ts.map +1 -0
  753. package/src/engine/input/devices/gamepad/GamepadDeviceLayout.js +323 -0
  754. package/src/engine/input/devices/gamepad/GamepadHandle.d.ts +21 -2
  755. package/src/engine/input/devices/gamepad/GamepadHandle.d.ts.map +1 -1
  756. package/src/engine/input/devices/gamepad/GamepadHandle.js +39 -11
  757. package/src/engine/input/devices/gamepad/GamepadLayout.d.ts +128 -0
  758. package/src/engine/input/devices/gamepad/GamepadLayout.d.ts.map +1 -0
  759. package/src/engine/input/devices/gamepad/GamepadLayout.js +160 -0
  760. package/src/engine/input/devices/gamepad/GamepadStandardMapping.d.ts +10 -0
  761. package/src/engine/input/devices/gamepad/GamepadStandardMapping.d.ts.map +1 -1
  762. package/src/engine/input/devices/gamepad/GamepadStandardMapping.js +11 -0
  763. package/src/engine/input/devices/gamepad/GamepadStick.d.ts +5 -1
  764. package/src/engine/input/devices/gamepad/GamepadStick.d.ts.map +1 -1
  765. package/src/engine/input/devices/gamepad/GamepadStick.js +5 -1
  766. package/src/engine/input/devices/gamepad/gamepad_layout_database.d.ts +27 -0
  767. package/src/engine/input/devices/gamepad/gamepad_layout_database.d.ts.map +1 -0
  768. package/src/engine/input/devices/gamepad/gamepad_layout_database.js +144 -0
  769. package/src/engine/input/devices/gamepad/gamepad_read_hat_axis.d.ts +25 -0
  770. package/src/engine/input/devices/gamepad/gamepad_read_hat_axis.d.ts.map +1 -0
  771. package/src/engine/input/devices/gamepad/gamepad_read_hat_axis.js +61 -0
  772. package/src/engine/input/devices/gamepad/prototypeGamepadTester.d.ts +2 -0
  773. package/src/engine/input/devices/gamepad/prototypeGamepadTester.d.ts.map +1 -0
  774. package/src/engine/input/devices/gamepad/prototypeGamepadTester.js +2124 -0
  775. package/src/engine/input/ecs/util/TopDownCameraControllerHelper.d.ts.map +1 -1
  776. package/src/engine/input/ecs/util/TopDownCameraControllerHelper.js +3 -33
  777. package/src/engine/intelligence/behavior/ecs/BehaviorComponent.d.ts +2 -2
  778. package/src/engine/intelligence/behavior/ecs/BehaviorComponent.d.ts.map +1 -1
  779. package/src/engine/intelligence/behavior/ecs/BehaviorComponent.js +1 -1
  780. package/src/engine/intelligence/behavior/primitive/ActionBehavior.d.ts +3 -3
  781. package/src/engine/intelligence/behavior/primitive/ActionBehavior.d.ts.map +1 -1
  782. package/src/engine/intelligence/behavior/primitive/ActionBehavior.js +1 -1
  783. package/src/engine/intelligence/behavior/util/RandomDelayBehavior.d.ts +2 -1
  784. package/src/engine/intelligence/behavior/util/RandomDelayBehavior.d.ts.map +1 -1
  785. package/src/engine/intelligence/behavior/util/RandomDelayBehavior.js +5 -0
  786. package/src/engine/intelligence/blackboard/Blackboard.d.ts +4 -4
  787. package/src/engine/intelligence/blackboard/Blackboard.d.ts.map +1 -1
  788. package/src/engine/intelligence/blackboard/Blackboard.js +2 -2
  789. package/src/engine/intelligence/mcts/MonteCarlo.d.ts +17 -15
  790. package/src/engine/intelligence/mcts/MonteCarlo.d.ts.map +1 -1
  791. package/src/engine/intelligence/mcts/MonteCarlo.js +345 -345
  792. package/src/engine/intelligence/mcts/StateNode.d.ts +2 -2
  793. package/src/engine/intelligence/mcts/StateNode.d.ts.map +1 -1
  794. package/src/engine/intelligence/mcts/StateNode.js +364 -364
  795. package/src/engine/intelligence/optimization/RandomOptimizer.d.ts +3 -3
  796. package/src/engine/intelligence/optimization/RandomOptimizer.d.ts.map +1 -1
  797. package/src/engine/intelligence/optimization/RandomOptimizer.js +2 -2
  798. package/src/engine/intelligence/optimization/optimize_cyclic_sequence_pairwise.d.ts +2 -2
  799. package/src/engine/intelligence/optimization/optimize_cyclic_sequence_pairwise.d.ts.map +1 -1
  800. package/src/engine/intelligence/optimization/optimize_cyclic_sequence_pairwise.js +1 -1
  801. package/src/engine/knowledge/database/StaticKnowledgeDataTable.d.ts +4 -5
  802. package/src/engine/knowledge/database/StaticKnowledgeDataTable.d.ts.map +1 -1
  803. package/src/engine/knowledge/database/StaticKnowledgeDataTable.js +2 -2
  804. package/src/engine/navigation/ecs/path_following/PathFollowingSystem.d.ts +0 -5
  805. package/src/engine/navigation/ecs/path_following/PathFollowingSystem.d.ts.map +1 -1
  806. package/src/engine/network/adapters/QuaternionInterpolationAdapter.d.ts.map +1 -1
  807. package/src/engine/network/adapters/QuaternionInterpolationAdapter.js +18 -19
  808. package/src/engine/network/adapters/TransformInterpolationAdapter.d.ts.map +1 -1
  809. package/src/engine/network/adapters/TransformInterpolationAdapter.js +18 -13
  810. package/src/engine/network/orchestrator/NetworkPeer.d.ts.map +1 -1
  811. package/src/engine/network/orchestrator/NetworkPeer.js +2 -1
  812. package/src/engine/network/sim/ActionLog.d.ts +9 -6
  813. package/src/engine/network/sim/ActionLog.d.ts.map +1 -1
  814. package/src/engine/network/sim/ActionLog.js +43 -80
  815. package/src/engine/network/sim/SmoothingState.d.ts.map +1 -1
  816. package/src/engine/network/sim/SmoothingState.js +27 -28
  817. package/src/engine/network/state/FrameBufferRing.d.ts +84 -0
  818. package/src/engine/network/state/FrameBufferRing.d.ts.map +1 -0
  819. package/src/engine/network/state/FrameBufferRing.js +168 -0
  820. package/src/engine/network/state/InputRing.d.ts +14 -12
  821. package/src/engine/network/state/InputRing.d.ts.map +1 -1
  822. package/src/engine/network/state/InputRing.js +37 -76
  823. package/src/engine/network/transport/LoopbackTransport.d.ts.map +1 -1
  824. package/src/engine/network/transport/LoopbackTransport.js +10 -31
  825. package/src/engine/network/transport/Transport.d.ts +42 -2
  826. package/src/engine/network/transport/Transport.d.ts.map +1 -1
  827. package/src/engine/network/transport/Transport.js +87 -3
  828. package/src/engine/network/transport/adapters/NodeUDPTransport.d.ts.map +1 -1
  829. package/src/engine/network/transport/adapters/NodeUDPTransport.js +7 -33
  830. package/src/engine/network/transport/adapters/SimulatedTransport.d.ts.map +1 -1
  831. package/src/engine/network/transport/adapters/SimulatedTransport.js +17 -28
  832. package/src/engine/network/transport/adapters/WebRTCDataChannelTransport.d.ts.map +1 -1
  833. package/src/engine/network/transport/adapters/WebRTCDataChannelTransport.js +6 -32
  834. package/src/engine/network/transport/adapters/WebSocketTransport.d.ts.map +1 -1
  835. package/src/engine/network/transport/adapters/WebSocketTransport.js +6 -32
  836. package/src/engine/network/transport/adapters/WebTransportTransport.d.ts.map +1 -1
  837. package/src/engine/network/transport/adapters/WebTransportTransport.js +11 -22
  838. package/src/engine/physics/constraint/solve_constraints.d.ts.map +1 -1
  839. package/src/engine/physics/constraint/solve_constraints.js +18 -48
  840. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -8
  841. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts.map +1 -1
  842. package/src/engine/physics/fluid/ecs/FluidSystem.d.ts +3 -7
  843. package/src/engine/physics/fluid/ecs/FluidSystem.d.ts.map +1 -1
  844. package/src/engine/physics/fluid/solver/v3_grid_advect_maccormack_scalar.d.ts.map +1 -1
  845. package/src/engine/physics/fluid/solver/v3_grid_advect_maccormack_scalar.js +7 -0
  846. package/src/engine/physics/fluid/solver/v3_grid_advect_maccormack_velocity.d.ts.map +1 -1
  847. package/src/engine/physics/fluid/solver/v3_grid_advect_maccormack_velocity.js +11 -18
  848. package/src/engine/physics/fluid/solver/v3_grid_advect_sl_velocity.d.ts.map +1 -1
  849. package/src/engine/physics/fluid/solver/v3_grid_advect_sl_velocity.js +7 -0
  850. package/src/engine/physics/fluid/solver/v3_grid_apply_advection_forward.d.ts.map +1 -1
  851. package/src/engine/physics/fluid/solver/v3_grid_apply_advection_forward.js +15 -57
  852. package/src/engine/physics/fluid/solver/v3_grid_apply_scalar_advection.d.ts.map +1 -1
  853. package/src/engine/physics/fluid/solver/v3_grid_apply_scalar_advection.js +7 -0
  854. package/src/engine/physics/fluid/solver/v3_grid_limit8_at_indices.d.ts +28 -0
  855. package/src/engine/physics/fluid/solver/v3_grid_limit8_at_indices.d.ts.map +1 -0
  856. package/src/engine/physics/fluid/solver/v3_grid_limit8_at_indices.js +38 -0
  857. package/src/engine/physics/fluid/solver/v3_mac_advect_maccormack_velocity.d.ts.map +1 -1
  858. package/src/engine/physics/fluid/solver/v3_mac_advect_maccormack_velocity.js +12 -14
  859. package/src/engine/physics/fluid/solver/v3_mac_apply_vorticity_confinement.d.ts.map +1 -1
  860. package/src/engine/physics/fluid/solver/v3_mac_apply_vorticity_confinement.js +9 -0
  861. package/src/engine/physics/mls-mpm/MLS_MPM.d.ts +13 -1
  862. package/src/engine/physics/mls-mpm/MLS_MPM.d.ts.map +1 -1
  863. package/src/engine/physics/mls-mpm/MLS_MPM.js +15 -4
  864. package/src/engine/physics/narrowphase/box_triangle_contact.d.ts.map +1 -1
  865. package/src/engine/physics/narrowphase/box_triangle_contact.js +9 -0
  866. package/src/engine/physics/narrowphase/capsule_contacts.d.ts.map +1 -1
  867. package/src/engine/physics/narrowphase/capsule_contacts.js +10 -11
  868. package/src/engine/physics/narrowphase/sphere_triangle_contact.d.ts.map +1 -1
  869. package/src/engine/physics/narrowphase/sphere_triangle_contact.js +7 -12
  870. package/src/engine/physics/solver/apply_impulse_to_body.d.ts +36 -0
  871. package/src/engine/physics/solver/apply_impulse_to_body.d.ts.map +1 -0
  872. package/src/engine/physics/solver/apply_impulse_to_body.js +86 -0
  873. package/src/engine/physics/solver/solve_contacts.d.ts.map +1 -1
  874. package/src/engine/physics/solver/solve_contacts.js +1 -53
  875. package/src/engine/plugin/EnginePlugin.d.ts +3 -0
  876. package/src/engine/plugin/EnginePlugin.d.ts.map +1 -1
  877. package/src/engine/plugin/EnginePlugin.js +3 -0
  878. package/src/engine/save/GameStateLoader.d.ts +2 -2
  879. package/src/engine/save/GameStateLoader.d.ts.map +1 -1
  880. package/src/engine/save/GameStateLoader.js +1 -1
  881. package/src/engine/save/Storage.d.ts +4 -4
  882. package/src/engine/save/Storage.d.ts.map +1 -1
  883. package/src/engine/save/Storage.js +2 -2
  884. package/src/engine/save/storage/IndexedDBStorage.d.ts +1 -0
  885. package/src/engine/save/storage/IndexedDBStorage.d.ts.map +1 -1
  886. package/src/engine/save/storage/IndexedDBStorage.js +61 -60
  887. package/src/engine/sound/ecs/SoundControllerSystem.d.ts.map +1 -1
  888. package/src/engine/sound/ecs/SoundControllerSystem.js +2 -10
  889. package/src/engine/sound/simulation/AcousticSimulator.d.ts.map +1 -1
  890. package/src/engine/sound/simulation/AcousticSimulator.js +2 -1
  891. package/src/engine/sound/simulation/core/AcousticOccluderIndex.d.ts.map +1 -1
  892. package/src/engine/sound/simulation/core/AcousticOccluderIndex.js +4 -6
  893. package/src/engine/sound/simulation/core/OcclusionSolver.d.ts.map +1 -1
  894. package/src/engine/sound/simulation/core/OcclusionSolver.js +2 -9
  895. package/src/engine/sound/simulation/probe/ProbeVisibilityRecheck.d.ts.map +1 -1
  896. package/src/engine/sound/simulation/probe/ProbeVisibilityRecheck.js +9 -14
  897. package/src/engine/sound/simulation/probe/bakeReverbBands.d.ts.map +1 -1
  898. package/src/engine/sound/simulation/probe/bakeReverbBands.js +2 -6
  899. package/src/engine/sound/simulation/probe/bakeVisibility.d.ts.map +1 -1
  900. package/src/engine/sound/simulation/probe/bakeVisibility.js +4 -34
  901. package/src/engine/sound/simulation/probe/probe_densify_portals.d.ts.map +1 -1
  902. package/src/engine/sound/simulation/probe/probe_densify_portals.js +3 -6
  903. package/src/engine/sound/simulation/probe/probe_edge_key.d.ts +31 -0
  904. package/src/engine/sound/simulation/probe/probe_edge_key.d.ts.map +1 -0
  905. package/src/engine/sound/simulation/probe/probe_edge_key.js +38 -0
  906. package/src/engine/sound/simulation/probe/probe_sdf_grid.d.ts +10 -3
  907. package/src/engine/sound/simulation/probe/probe_sdf_grid.d.ts.map +1 -1
  908. package/src/engine/sound/simulation/probe/probe_sdf_grid.js +10 -22
  909. package/src/engine/sound/simulation/probe/probe_visibility_augment.d.ts.map +1 -1
  910. package/src/engine/sound/simulation/probe/probe_visibility_augment.js +12 -48
  911. package/src/engine/sound/simulation/probe/probe_visibility_bridge_components.d.ts.map +1 -1
  912. package/src/engine/sound/simulation/probe/probe_visibility_bridge_components.js +4 -3
  913. package/src/engine/sound/simulation/prototypeAcousticSolver.js +1652 -1652
  914. package/src/engine/sound/simulation/render/foaReverbImpulseResponse.d.ts +5 -4
  915. package/src/engine/sound/simulation/render/foaReverbImpulseResponse.d.ts.map +1 -1
  916. package/src/engine/sound/simulation/render/foaReverbImpulseResponse.js +23 -31
  917. package/src/engine/sound/simulation/render/reverbImpulseResponse.d.ts +1 -8
  918. package/src/engine/sound/simulation/render/reverbImpulseResponse.d.ts.map +1 -1
  919. package/src/engine/sound/simulation/render/reverbImpulseResponse.js +21 -31
  920. package/src/engine/sound/simulation/render/reverb_band_tails.d.ts +55 -0
  921. package/src/engine/sound/simulation/render/reverb_band_tails.d.ts.map +1 -0
  922. package/src/engine/sound/simulation/render/reverb_band_tails.js +93 -0
  923. package/src/engine/sound/sopra/definition/EventDescriptionSerializationAdapter.d.ts.map +1 -1
  924. package/src/engine/sound/sopra/definition/EventDescriptionSerializationAdapter.js +6 -22
  925. package/src/engine/sound/sopra/definition/clip/BlendContainerAudioClip.d.ts.map +1 -1
  926. package/src/engine/sound/sopra/definition/clip/BlendContainerAudioClip.js +7 -3
  927. package/src/engine/sound/sopra/definition/clip/BlendContainerAudioClipSerializationAdapter.d.ts.map +1 -1
  928. package/src/engine/sound/sopra/definition/clip/BlendContainerAudioClipSerializationAdapter.js +7 -22
  929. package/src/engine/sound/sopra/definition/clip/ContainerAudioClip.d.ts.map +1 -1
  930. package/src/engine/sound/sopra/definition/clip/ContainerAudioClip.js +28 -0
  931. package/src/engine/sound/sopra/definition/clip/RandomContainerAudioClip.d.ts.map +1 -1
  932. package/src/engine/sound/sopra/definition/clip/RandomContainerAudioClip.js +1 -5
  933. package/src/engine/sound/sopra/definition/clip/SequenceContainerAudioClip.d.ts.map +1 -1
  934. package/src/engine/sound/sopra/definition/clip/SequenceContainerAudioClip.js +1 -13
  935. package/src/engine/sound/sopra/definition/clip/SwitchContainerAudioClip.d.ts.map +1 -1
  936. package/src/engine/sound/sopra/definition/clip/SwitchContainerAudioClip.js +2 -8
  937. package/src/engine/sound/sopra/definition/effect/ReverbEffect.d.ts +3 -0
  938. package/src/engine/sound/sopra/definition/effect/ReverbEffect.d.ts.map +1 -1
  939. package/src/engine/sound/sopra/definition/effect/ReverbEffect.js +26 -14
  940. package/src/engine/sound/sopra/runtime/BusGraph.d.ts.map +1 -1
  941. package/src/engine/sound/sopra/runtime/BusGraph.js +21 -33
  942. package/src/engine/sound/sopra/runtime/EventInstance.js +1 -1
  943. package/src/engine/sound/sopra/util/buildAttenuationCurve.d.ts +2 -2
  944. package/src/engine/sound/sopra/util/buildAttenuationCurve.d.ts.map +1 -1
  945. package/src/engine/sound/sopra/util/buildAttenuationCurve.js +40 -40
  946. package/src/engine/ui/apply_pointer_tilt_3d.d.ts +25 -0
  947. package/src/engine/ui/apply_pointer_tilt_3d.d.ts.map +1 -0
  948. package/src/engine/ui/apply_pointer_tilt_3d.js +50 -0
  949. package/src/engine/ui/bindings/processors/DomElementProcessorTilt3D.d.ts.map +1 -1
  950. package/src/engine/ui/bindings/processors/DomElementProcessorTilt3D.js +9 -26
  951. package/src/engine/ui/notification/NotificationManager.d.ts +5 -5
  952. package/src/engine/ui/notification/NotificationManager.d.ts.map +1 -1
  953. package/src/engine/ui/notification/NotificationManager.js +4 -4
  954. package/src/engine/ui/tiles2d/TileGrid.d.ts +2 -2
  955. package/src/engine/ui/tiles2d/TileGrid.d.ts.map +1 -1
  956. package/src/engine/ui/tiles2d/TileGrid.js +1 -1
  957. package/src/generation/filtering/numeric/CellFilterCache.d.ts.map +1 -1
  958. package/src/generation/filtering/numeric/CellFilterCache.js +4 -21
  959. package/src/generation/filtering/numeric/complex/CellFilterSimplexNoise.d.ts +1 -1
  960. package/src/generation/filtering/numeric/complex/CellFilterSimplexNoise.js +1 -1
  961. package/src/generation/filtering/numeric/complex/CellFilterSobel.d.ts.map +1 -1
  962. package/src/generation/filtering/numeric/complex/CellFilterSobel.js +11 -20
  963. package/src/generation/filtering/numeric/math/CellFilterPower.d.ts +1 -1
  964. package/src/generation/filtering/numeric/math/CellFilterPower.d.ts.map +1 -1
  965. package/src/generation/filtering/numeric/math/CellFilterPower.js +1 -5
  966. package/src/generation/filtering/numeric/process/computeCellFilterGradient.d.ts.map +1 -1
  967. package/src/generation/filtering/numeric/process/computeCellFilterGradient.js +13 -15
  968. package/src/generation/filtering/numeric/process/computeCellFilterSobel.d.ts +20 -0
  969. package/src/generation/filtering/numeric/process/computeCellFilterSobel.d.ts.map +1 -0
  970. package/src/generation/filtering/numeric/process/computeCellFilterSobel.js +36 -0
  971. package/src/generation/filtering/numeric/util/CellFilterDisplaced.d.ts.map +1 -1
  972. package/src/generation/filtering/numeric/util/CellFilterDisplaced.js +11 -6
  973. package/src/generation/filtering/numeric/util/populateSampler2DFromCellFilter.d.ts.map +1 -1
  974. package/src/generation/filtering/numeric/util/populateSampler2DFromCellFilter.js +18 -36
  975. package/src/generation/filtering/numeric/util/write_cell_filter_to_sampler2d.d.ts +21 -0
  976. package/src/generation/filtering/numeric/util/write_cell_filter_to_sampler2d.d.ts.map +1 -0
  977. package/src/generation/filtering/numeric/util/write_cell_filter_to_sampler2d.js +47 -0
  978. package/src/generation/filtering/util/cell_filter_weights_pick.d.ts +25 -0
  979. package/src/generation/filtering/util/cell_filter_weights_pick.d.ts.map +1 -0
  980. package/src/generation/filtering/util/cell_filter_weights_pick.js +54 -0
  981. package/src/generation/grid/generation/discrete/GridTaskConnectRooms.d.ts.map +1 -1
  982. package/src/generation/grid/generation/discrete/GridTaskConnectRooms.js +14 -1
  983. package/src/generation/grid/generation/road/GridTaskGenerateRoads.js +2 -2
  984. package/src/generation/grid/generation/util/buildPathFromDistanceMap.d.ts +1 -1
  985. package/src/generation/grid/generation/util/buildPathFromDistanceMap.js +1 -1
  986. package/src/generation/markers/GridActionRuleSet.d.ts.map +1 -1
  987. package/src/generation/markers/GridActionRuleSet.js +10 -7
  988. package/src/generation/markers/GridCellActionPlaceMarker.d.ts.map +1 -1
  989. package/src/generation/markers/GridCellActionPlaceMarker.js +10 -12
  990. package/src/generation/markers/actions/placement/MarkerNodeEntityProcessorRandomRotation.d.ts +2 -1
  991. package/src/generation/markers/actions/placement/MarkerNodeEntityProcessorRandomRotation.d.ts.map +1 -1
  992. package/src/generation/markers/actions/probability/MarkerNodeActionSelectWeighted.d.ts +2 -1
  993. package/src/generation/markers/actions/probability/MarkerNodeActionSelectWeighted.d.ts.map +1 -1
  994. package/src/generation/markers/actions/probability/MarkerNodeActionSelectWeighted.js +7 -42
  995. package/src/generation/markers/transform/MarkerNodeTransformRotateRandom.d.ts +2 -1
  996. package/src/generation/markers/transform/MarkerNodeTransformRotateRandom.d.ts.map +1 -1
  997. package/src/generation/markers/transform/MarkerNodeTransformerOffsetPosition.d.ts.map +1 -1
  998. package/src/generation/markers/transform/MarkerNodeTransformerOffsetPosition.js +11 -6
  999. package/src/generation/markers/transform/MarkerNodeTransformerRecordPropertyClosure.d.ts +4 -3
  1000. package/src/generation/markers/transform/MarkerNodeTransformerRecordPropertyClosure.d.ts.map +1 -1
  1001. package/src/generation/markers/transform/MarkerNodeTransformerRecordPropertyClosure.js +1 -1
  1002. package/src/generation/markers/transform/MarkerNodeTransformerRecordUniqueRandomEnum.d.ts +2 -1
  1003. package/src/generation/markers/transform/MarkerNodeTransformerRecordUniqueRandomEnum.d.ts.map +1 -1
  1004. package/src/generation/placement/GridCellPlacementRule.d.ts.map +1 -1
  1005. package/src/generation/placement/GridCellPlacementRule.js +10 -7
  1006. package/src/generation/placement/action/GridCellActionPlaceTags.d.ts.map +1 -1
  1007. package/src/generation/placement/action/GridCellActionPlaceTags.js +10 -4
  1008. package/src/generation/placement/action/random/weighted/CellActionSelectWeightedRandom.d.ts.map +1 -1
  1009. package/src/generation/placement/action/random/weighted/CellActionSelectWeightedRandom.js +2 -38
  1010. package/src/generation/placement/action/util/GridCellDisplacedAction.d.ts.map +1 -1
  1011. package/src/generation/placement/action/util/GridCellDisplacedAction.js +11 -6
  1012. package/src/generation/rules/cell/CellMatcherGridPattern.d.ts.map +1 -1
  1013. package/src/generation/rules/cell/CellMatcherGridPattern.js +11 -4
  1014. package/src/generation/theme/ThemeEngine.d.ts.map +1 -1
  1015. package/src/generation/theme/ThemeEngine.js +7 -12
  1016. package/src/view/common/VirtualListView.d.ts +1 -1
  1017. package/src/view/common/VirtualListView.js +1 -1
  1018. package/src/view/elements/Group.d.ts +24 -3
  1019. package/src/view/elements/Group.d.ts.map +1 -1
  1020. package/src/view/elements/Group.js +56 -34
  1021. package/src/view/tooltip/gml/compiler/GMLReferenceCompiler.d.ts +2 -2
  1022. package/src/view/tooltip/gml/compiler/GMLReferenceCompiler.d.ts.map +1 -1
  1023. package/src/view/tooltip/gml/compiler/GMLReferenceCompiler.js +1 -1
@@ -1,47 +1,15 @@
1
- /**
2
- * @author alteredq / http://alteredqualia.com/
3
- *
4
- * Full-screen textured quad shader
5
- */
6
- const CopyShader = {
7
-
8
- uniforms: {
9
-
10
- "tDiffuse": { type: "t", value: null },
11
- "opacity": { type: "f", value: 1.0 }
12
-
13
- },
14
-
15
- vertexShader: [
16
-
17
- "varying vec2 vUv;",
18
-
19
- "void main() {",
20
-
21
- "vUv = uv;",
22
- "gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );",
23
-
24
- "}"
25
-
26
- ].join("\n"),
27
-
28
- fragmentShader: [
29
-
30
- "uniform float opacity;",
31
-
32
- "uniform sampler2D tDiffuse;",
33
-
34
- "varying vec2 vUv;",
35
-
36
- "void main() {",
37
-
38
- "vec4 texel = texture2D( tDiffuse, vUv );",
39
- "gl_FragColor = opacity * texel;",
40
-
41
- "}"
42
-
43
- ].join("\n")
44
-
45
- };
46
-
47
- export default CopyShader;
1
+ import CopyShaderFactory from "../../../shaders/CopyShader.js";
2
+
3
+ /**
4
+ * Full-screen textured quad shader.
5
+ *
6
+ * @author alteredq / http://alteredqualia.com/
7
+ *
8
+ * @deprecated this module used to be a byte-identical copy of `engine/graphics/shaders/CopyShader.js`
9
+ * - same uniforms, same vertex and fragment source, differing only in shape (frozen object here,
10
+ * zero-arg factory there). It is kept as a shared instance of the factory's output so existing
11
+ * importers keep working; use `engine/graphics/shaders/CopyShader.js` directly instead.
12
+ */
13
+ const CopyShader = CopyShaderFactory();
14
+
15
+ export default CopyShader;
@@ -11,16 +11,16 @@ export class WebGLRendererPool {
11
11
  /**
12
12
  * After callback returns, renderer is released back into the pool
13
13
  * @template T
14
- * @param {function(renderer:WebGLRenderer):T} callback
14
+ * @param {(renderer: WebGLRenderer) => T} callback
15
15
  * @param {*} [thisArg]
16
16
  */
17
- use<T>(callback: any, thisArg?: any): any;
17
+ use<T>(callback: (renderer: WebGLRenderer) => T, thisArg?: any): any;
18
18
  /**
19
19
  * @template T
20
- * @param {function(renderer:WebGLRenderer):Promise<T>} callback
20
+ * @param {(renderer: WebGLRenderer) => Promise<T>} callback
21
21
  * @param {*} [thisArg]
22
22
  */
23
- useAsync<T_1>(callback: any, thisArg?: any): Promise<void>;
23
+ useAsync<T_1>(callback: (renderer: WebGLRenderer) => Promise<T_1>, thisArg?: any): Promise<void>;
24
24
  }
25
25
  import { WebGLRenderer } from 'three';
26
26
  //# sourceMappingURL=RendererPool.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"RendererPool.d.ts","sourceRoot":"","sources":["../../../../../src/engine/graphics/render/RendererPool.js"],"names":[],"mappings":"AAGA;IAiFI,iCAAwC;IA/ExC,eAAiB;IAEjB,qBAcC;IAED;;;;OAIG;IACH,kBAHW,mBAAmB,GACjB,OAAO,CAcnB;IAED;;;;;OAKG;IACH,0CAkBC;IAED;;;;OAIG;IACH,2DASC;CAGJ;8BArF6B,OAAO"}
1
+ {"version":3,"file":"RendererPool.d.ts","sourceRoot":"","sources":["../../../../../src/engine/graphics/render/RendererPool.js"],"names":[],"mappings":"AAGA;IAiFI,iCAAwC;IA/ExC,eAAiB;IAEjB,qBAcC;IAED;;;;OAIG;IACH,kBAHW,mBAAmB,GACjB,OAAO,CAcnB;IAED;;;;;OAKG;IACH,4BAHsB,aAAa,4BAqBlC;IAED;;;;OAIG;IACH,mCAHsB,aAAa,iDAYlC;CAGJ;8BArF6B,OAAO"}
@@ -43,7 +43,7 @@ export class WebGLRendererPool {
43
43
  /**
44
44
  * After callback returns, renderer is released back into the pool
45
45
  * @template T
46
- * @param {function(renderer:WebGLRenderer):T} callback
46
+ * @param {(renderer: WebGLRenderer) => T} callback
47
47
  * @param {*} [thisArg]
48
48
  */
49
49
  use(callback, thisArg) {
@@ -68,7 +68,7 @@ export class WebGLRendererPool {
68
68
 
69
69
  /**
70
70
  * @template T
71
- * @param {function(renderer:WebGLRenderer):Promise<T>} callback
71
+ * @param {(renderer: WebGLRenderer) => Promise<T>} callback
72
72
  * @param {*} [thisArg]
73
73
  */
74
74
  async useAsync(callback, thisArg) {
@@ -1,3 +1,7 @@
1
+ /**
2
+ * @example
3
+ * await engine.plugins.acquire(AmbientOcclusionPostProcessEffect)
4
+ */
1
5
  export class AmbientOcclusionPostProcessEffect extends EnginePlugin {
2
6
  __material: ShaderMaterial;
3
7
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"AmbientOcclusionPostProcessEffect.d.ts","sourceRoot":"","sources":["../../../../../../../../src/engine/graphics/render/buffer/simple-fx/ao/AmbientOcclusionPostProcessEffect.js"],"names":[],"mappings":"AAoBA;IAQQ,2BAQE;IAyBF;;;;OAIG;IACH,sBAA0B;IAE1B;;;;OAIG;IACH,2BAA6B;IAG7B;;;;OAIG;IACH,yBAA4B;IAE5B;;;;OAIG;IACH,wBAA2B;IAE3B,8CAUE;IAEF;;;;OAIG;IACH,uBAAwB;IAExB;;;;;OAKG;IACH,2BASE;IAKF;;;;OAIG;IACH,0BAAwD;IAK5D;;;OAGG;IACH,2BAEC;IAED;;;OAGG;IACH,wBAEC;IAED;;;;OAIG;IACH,oBAeC;IAMD;;;;OAIG;IACH,2BA2CC;IAED,uBASC;IAED;;;OAGG;IACH,iBAwBC;IAED;;;OAGG;IACH,4BAFW,OAAO,QAiCjB;IAED;;;;OAIG;IACH,gCASC;IAED;;;;OAIG;IACH,mCAUC;IAED;;;;;OAKG;IACH,qCAQC;IAGD,oCAiBC;CAuEJ;6BArb4B,uCAAuC;+BAD7D,OAAO;6CAAP,OAAO"}
1
+ {"version":3,"file":"AmbientOcclusionPostProcessEffect.d.ts","sourceRoot":"","sources":["../../../../../../../../src/engine/graphics/render/buffer/simple-fx/ao/AmbientOcclusionPostProcessEffect.js"],"names":[],"mappings":"AAoBA;;;GAGG;AACH;IAQQ,2BAQE;IAyBF;;;;OAIG;IACH,sBAA0B;IAE1B;;;;OAIG;IACH,2BAA6B;IAG7B;;;;OAIG;IACH,yBAA4B;IAE5B;;;;OAIG;IACH,wBAA2B;IAE3B,8CAUE;IAEF;;;;OAIG;IACH,uBAAwB;IAExB;;;;;OAKG;IACH,2BASE;IAKF;;;;OAIG;IACH,0BAAwD;IAK5D;;;OAGG;IACH,2BAEC;IAED;;;OAGG;IACH,wBAEC;IAED;;;;OAIG;IACH,oBAeC;IAMD;;;;OAIG;IACH,2BA2CC;IAED,uBASC;IAED;;;OAGG;IACH,iBAwBC;IAED;;;OAGG;IACH,4BAFW,OAAO,QAiCjB;IAED;;;;OAIG;IACH,gCASC;IAED;;;;OAIG;IACH,mCAUC;IAED;;;;;OAKG;IACH,qCAQC;IAGD,oCAiBC;CAuEJ;6BAzb4B,uCAAuC;+BAD7D,OAAO;6CAAP,OAAO"}
@@ -18,6 +18,10 @@ import { generateHilbertNoiseTexture } from "./generateHilbertNoiseTexture.js";
18
18
  import { SAOShader } from "./SAOShader.js";
19
19
  import { SAOUpscaleShader } from "./SAOUpscaleShader.js";
20
20
 
21
+ /**
22
+ * @example
23
+ * await engine.plugins.acquire(AmbientOcclusionPostProcessEffect)
24
+ */
21
25
  export class AmbientOcclusionPostProcessEffect extends EnginePlugin {
22
26
  constructor() {
23
27
  super();
@@ -137,18 +137,18 @@ export class FrameGraph {
137
137
  * @template T
138
138
  * @param {string} name
139
139
  * @param {T} data
140
- * @param {function(data:T, resources: FramePassResources, context:IFrameGraphContext):void} execute
140
+ * @param {(data: T, resources: FramePassResources, context: IFrameGraphContext) => void} execute
141
141
  * @returns {FramePassBuilder}
142
142
  */
143
- add<T_3>(name: string, data: T_3, execute: any): FramePassBuilder;
143
+ add<T_3>(name: string, data: T_3, execute: (data: T_3, resources: FramePassResources, context: IFrameGraphContext) => void): FramePassBuilder;
144
144
  /**
145
145
  * Perform validation, useful for debugging
146
146
  * Typically done before compilation
147
- * @param {function(problem:string):*} problem_consumer
147
+ * @param {(problem: string) => *} problem_consumer
148
148
  * @param {*} [problem_consumer_context] thisArg for `problem_consumer`
149
149
  * @returns {boolean}
150
150
  */
151
- validate(problem_consumer: any, problem_consumer_context?: any): boolean;
151
+ validate(problem_consumer: (problem: string) => any, problem_consumer_context?: any): boolean;
152
152
  compile(): void;
153
153
  /**
154
154
  *
@@ -183,5 +183,6 @@ export class FrameGraph {
183
183
  }
184
184
  import { ResourceEntry } from "./ResourceEntry.js";
185
185
  import { ResourceNode } from "./ResourceNode.js";
186
+ import { FramePassResources } from "./FramePassResources.js";
186
187
  import { FramePassBuilder } from "./FramePassBuilder.js";
187
188
  //# sourceMappingURL=FrameGraph.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FrameGraph.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/render/frame_graph/FrameGraph.js"],"names":[],"mappings":"AAeA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH;IAmCI;;;OAGG;IACH,mBAFW,MAAM,EAOhB;IA3CD;;;;OAIG;IACH,MAFU,MAAM,CAEN;IAEV;;;OAGG;IACH,gBAA0B;IAE1B;;;;OAIG;IACH,qBAAkB;IAElB;;;;OAIG;IACH,yBAAsB;IAEtB;;;;OAIG;IACH,4BAAyB;IAazB;;;;OAIG;IACH,qBAHW,MAAM,sBAehB;IAED;;;;OAIG;IACH,oBAHW,MAAM,qBAehB;IAED;;;;OAIG;IACH,qBAHW,MAAM,KAKhB;IAED;;;;;OAKG;IACH,2BAJW,MAAM,oBAEJ,MAAM,CAWlB;IAED;;;;;OAKG;IACH,6BAYC;IAED;;;;;;OAMG;IACH,4BAeC;IAED;;;;OAIG;IACH,wBAHW,MAAM,GACJ,MAAM,CAkBlB;IAED;;;;;;OAMG;IACH,2BALW,MAAM,wDAGJ,MAAM,CAUlB;IAED;;;OAGG;IACH,4BAHa,OAAO,CAQnB;IAED;;;;;;;OAOG;IACH,eALW,MAAM,4BAGJ,gBAAgB,CA2B5B;IAED;;;;;;OAMG;IACH,iEAFa,OAAO,CAQnB;IAED,gBA6FC;IAED;;;OAGG;IACH,2CAuDC;IAED;;;;;;;OAOG;IACH;gBAFqB,EAAE;mBAAa,EAAE;MA2DrC;IAED;;;;;OAKG;IACH,eAFY,MAAM,CA0GjB;IAGL;;;;OAIG;IACH,uBAFU,OAAO,CAEgB;CAPhC;8BAxnB6B,oBAAoB;6BACrB,mBAAmB;iCAJf,uBAAuB"}
1
+ {"version":3,"file":"FrameGraph.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/render/frame_graph/FrameGraph.js"],"names":[],"mappings":"AAeA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH;IAmCI;;;OAGG;IACH,mBAFW,MAAM,EAOhB;IA3CD;;;;OAIG;IACH,MAFU,MAAM,CAEN;IAEV;;;OAGG;IACH,gBAA0B;IAE1B;;;;OAIG;IACH,qBAAkB;IAElB;;;;OAIG;IACH,yBAAsB;IAEtB;;;;OAIG;IACH,4BAAyB;IAazB;;;;OAIG;IACH,qBAHW,MAAM,sBAehB;IAED;;;;OAIG;IACH,oBAHW,MAAM,qBAehB;IAED;;;;OAIG;IACH,qBAHW,MAAM,KAKhB;IAED;;;;;OAKG;IACH,2BAJW,MAAM,oBAEJ,MAAM,CAWlB;IAED;;;;;OAKG;IACH,6BAYC;IAED;;;;;;OAMG;IACH,4BAeC;IAED;;;;OAIG;IACH,wBAHW,MAAM,GACJ,MAAM,CAkBlB;IAED;;;;;;OAMG;IACH,2BALW,MAAM,wDAGJ,MAAM,CAUlB;IAED;;;OAGG;IACH,4BAHa,OAAO,CAQnB;IAED;;;;;;;OAOG;IACH,eALW,MAAM,6CAEe,kBAAkB,kCAAkC,IAAI,GAC3E,gBAAgB,CA2B5B;IAED;;;;;;OAMG;IACH,qCAJqB,MAAM,2CAEd,OAAO,CAQnB;IAED,gBA6FC;IAED;;;OAGG;IACH,2CAuDC;IAED;;;;;;;OAOG;IACH;gBAFqB,EAAE;mBAAa,EAAE;MA2DrC;IAED;;;;;OAKG;IACH,eAFY,MAAM,CA0GjB;IAGL;;;;OAIG;IACH,uBAFU,OAAO,CAEgB;CAPhC;8BAxnB6B,oBAAoB;6BACrB,mBAAmB;mCAFb,yBAAyB;iCAF3B,uBAAuB"}
@@ -263,7 +263,7 @@ export class FrameGraph {
263
263
  * @template T
264
264
  * @param {string} name
265
265
  * @param {T} data
266
- * @param {function(data:T, resources: FramePassResources, context:IFrameGraphContext):void} execute
266
+ * @param {(data: T, resources: FramePassResources, context: IFrameGraphContext) => void} execute
267
267
  * @returns {FramePassBuilder}
268
268
  */
269
269
  add(name, data, execute) {
@@ -296,7 +296,7 @@ export class FrameGraph {
296
296
  /**
297
297
  * Perform validation, useful for debugging
298
298
  * Typically done before compilation
299
- * @param {function(problem:string):*} problem_consumer
299
+ * @param {(problem: string) => *} problem_consumer
300
300
  * @param {*} [problem_consumer_context] thisArg for `problem_consumer`
301
301
  * @returns {boolean}
302
302
  */
@@ -44,10 +44,10 @@ export class RenderLayer {
44
44
  * @param {Frustum} frustum
45
45
  * @param {number} near
46
46
  * @param {number} far
47
- * @param {function(near:number, far:number)} callback
47
+ * @param {(near: number, far: number) => void} callback
48
48
  * @param [thisArg]
49
49
  */
50
- computeNearFarClippingPlanes(frustum: Frustum, near: number, far: number, callback: any, thisArg?: any): void;
50
+ computeNearFarClippingPlanes(frustum: Frustum, near: number, far: number, callback: (near: number, far: number) => void, thisArg?: any): void;
51
51
  /**
52
52
  * @deprecated
53
53
  * @param {THREE.Object3D[]} destination
@@ -1 +1 @@
1
- {"version":3,"file":"RenderLayer.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/render/layers/RenderLayer.js"],"names":[],"mappings":"AAKA;IAEI;;;OAGG;IACH,OAFU,gBAAgB,CAEK;IAE/B;;;OAGG;IACH,MAFU,SAAO,IAAI,CAET;IAEZ;;;;OAIG;IACH,SAFU,OAAO,CAED;IAEhB;;;OAGG;IACH,2CAAgC;IAEhC;;;;;OAKG;IACH,YAFU,oBAAoB,MAAM,QAAQ,CAAC,CAEe;IAU5D;;;OAGG;IACH,0BAEC;IAdD;;;OAGG;IACH,uBAEC;IAUD;;;;;;;;;OASG;IACH,qDALW,MAAM,OACN,MAAM,sCAMhB;IAED;;;;;;OAMG;IACH,6BALW,MAAM,QAAQ,EAAE,sBAChB,MAAM,qBAEJ,MAAM,CAIlB;IAED;;;;;;;;;;;OAWG;IACH,8BAFmB;QAAC,IAAI,EAAC,MAAM,CAAC;QAAA,GAAG,EAAC,MAAM,CAAA;KAAC,WAAU,UAAU,MAAM,CAAC,kBAAiB,MAAM,kBAAiB,MAAM,kBAAiB,MAAM,kBAAiB,MAAM,KAAK,IAAI,CAEhJ;CAC9B;iCA3FgC,uBAAuB;oCADpB,sCAAsC"}
1
+ {"version":3,"file":"RenderLayer.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/render/layers/RenderLayer.js"],"names":[],"mappings":"AAKA;IAEI;;;OAGG;IACH,OAFU,gBAAgB,CAEK;IAE/B;;;OAGG;IACH,MAFU,SAAO,IAAI,CAET;IAEZ;;;;OAIG;IACH,SAFU,OAAO,CAED;IAEhB;;;OAGG;IACH,2CAAgC;IAEhC;;;;;OAKG;IACH,YAFU,oBAAoB,MAAM,QAAQ,CAAC,CAEe;IAU5D;;;OAGG;IACH,0BAEC;IAdD;;;OAGG;IACH,uBAEC;IAUD;;;;;;;;;OASG;IACH,qDALW,MAAM,OACN,MAAM,mBACC,MAAM,OAAO,MAAM,KAAK,IAAI,uBAK7C;IAED;;;;;;OAMG;IACH,6BALW,MAAM,QAAQ,EAAE,sBAChB,MAAM,qBAEJ,MAAM,CAIlB;IAED;;;;;;;;;;;OAWG;IACH,8BAFmB;QAAC,IAAI,EAAC,MAAM,CAAC;QAAA,GAAG,EAAC,MAAM,CAAA;KAAC,WAAU,UAAU,MAAM,CAAC,kBAAiB,MAAM,kBAAiB,MAAM,kBAAiB,MAAM,kBAAiB,MAAM,KAAK,IAAI,CAEhJ;CAC9B;iCA3FgC,uBAAuB;oCADpB,sCAAsC"}
@@ -61,7 +61,7 @@ export class RenderLayer {
61
61
  * @param {Frustum} frustum
62
62
  * @param {number} near
63
63
  * @param {number} far
64
- * @param {function(near:number, far:number)} callback
64
+ * @param {(near: number, far: number) => void} callback
65
65
  * @param [thisArg]
66
66
  */
67
67
  computeNearFarClippingPlanes(frustum, near, far, callback, thisArg) {
@@ -70,7 +70,7 @@ export function buildPlanarRenderLayerClipPlaneComputationMethod(traversePlanes,
70
70
  * @param {Frustum} frustum
71
71
  * @param {number} near
72
72
  * @param {number} far
73
- * @param {function(near:number, far:number)} visitor
73
+ * @param {(near: number, far: number) => void} visitor
74
74
  */
75
75
  return function (frustum, near, far, visitor, thisArg) {
76
76
 
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Prepend a preamble to a three.js-generated shader and splice a chunk in after
3
+ * a named anchor.
4
+ *
5
+ * WHY THIS EXISTS
6
+ *
7
+ * The LPV/GI and LPG material paths have eight shader builders between them
8
+ * (`space_fragment` and `space_vertex`, vertex and fragment, times two
9
+ * subsystems) and every one of them was the same three statements: concatenate
10
+ * the preambles ahead of the source, `insert_after` an anchor, return. What
11
+ * actually differs is data — which preamble, which anchor, which chunk.
12
+ *
13
+ * More importantly the two anchors were spelled out in eight separate string
14
+ * literals. They are three.js's own chunk include lines, and a mismatch fails
15
+ * *quietly* (a console warning and an unmodified shader), so having one
16
+ * definition each is worth more than the lines it saves.
17
+ *
18
+ * Shader assembly happens once per material compile, not per frame.
19
+ *
20
+ * @param {string} source shader source three.js handed to `onBeforeCompile`
21
+ * @param {string} preamble prepended verbatim, ahead of the source
22
+ * @param {string} anchor see {@link GLSL_ANCHOR_LIGHTS_FRAGMENT_BEGIN} / {@link GLSL_ANCHOR_FOG_VERTEX}
23
+ * @param {string} chunk GLSL spliced in directly after `anchor`
24
+ * @returns {string}
25
+ */
26
+ export function build_injected_shader(source: string, preamble: string, anchor: string, chunk: string): string;
27
+ /**
28
+ * three.js chunk marker after which a probe-field contribution is added to
29
+ * `irradiance` in the fragment stage.
30
+ *
31
+ * `<lights_fragment_begin>` is where three declares `irradiance` and has not yet
32
+ * consumed it, so anything added immediately after it participates in the
33
+ * lighting equations normally. The literal must match three's include line
34
+ * exactly — `insert_after` warns and silently returns the source unchanged when
35
+ * it does not find the term, which shows up as GI simply not appearing.
36
+ *
37
+ * @type {string}
38
+ */
39
+ export const GLSL_ANCHOR_LIGHTS_FRAGMENT_BEGIN: string;
40
+ /**
41
+ * three.js chunk marker after which per-vertex probe work is injected.
42
+ *
43
+ * `<fog_vertex>` is the last chunk in the standard vertex `main()`, so by that
44
+ * point `worldPosition` (when declared), `position` and `normal` are all
45
+ * available. Same exact-match requirement as
46
+ * {@link GLSL_ANCHOR_LIGHTS_FRAGMENT_BEGIN}.
47
+ *
48
+ * @type {string}
49
+ */
50
+ export const GLSL_ANCHOR_FOG_VERTEX: string;
51
+ //# sourceMappingURL=build_injected_shader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build_injected_shader.d.ts","sourceRoot":"","sources":["../../../../../src/engine/graphics/sh3/build_injected_shader.js"],"names":[],"mappings":"AA4BA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,8CANW,MAAM,YACN,MAAM,UACN,MAAM,SACN,MAAM,GACJ,MAAM,CAIlB;AArDD;;;;;;;;;;;GAWG;AACH,gDAFU,MAAM,CAEoE;AAEpF;;;;;;;;;GASG;AACH,qCAFU,MAAM,CAE8C"}
@@ -0,0 +1,56 @@
1
+ import { insert_after } from "../../../core/primitives/strings/insert_after.js";
2
+
3
+ /**
4
+ * three.js chunk marker after which a probe-field contribution is added to
5
+ * `irradiance` in the fragment stage.
6
+ *
7
+ * `<lights_fragment_begin>` is where three declares `irradiance` and has not yet
8
+ * consumed it, so anything added immediately after it participates in the
9
+ * lighting equations normally. The literal must match three's include line
10
+ * exactly — `insert_after` warns and silently returns the source unchanged when
11
+ * it does not find the term, which shows up as GI simply not appearing.
12
+ *
13
+ * @type {string}
14
+ */
15
+ export const GLSL_ANCHOR_LIGHTS_FRAGMENT_BEGIN = '#include <lights_fragment_begin>';
16
+
17
+ /**
18
+ * three.js chunk marker after which per-vertex probe work is injected.
19
+ *
20
+ * `<fog_vertex>` is the last chunk in the standard vertex `main()`, so by that
21
+ * point `worldPosition` (when declared), `position` and `normal` are all
22
+ * available. Same exact-match requirement as
23
+ * {@link GLSL_ANCHOR_LIGHTS_FRAGMENT_BEGIN}.
24
+ *
25
+ * @type {string}
26
+ */
27
+ export const GLSL_ANCHOR_FOG_VERTEX = '#include <fog_vertex>';
28
+
29
+ /**
30
+ * Prepend a preamble to a three.js-generated shader and splice a chunk in after
31
+ * a named anchor.
32
+ *
33
+ * WHY THIS EXISTS
34
+ *
35
+ * The LPV/GI and LPG material paths have eight shader builders between them
36
+ * (`space_fragment` and `space_vertex`, vertex and fragment, times two
37
+ * subsystems) and every one of them was the same three statements: concatenate
38
+ * the preambles ahead of the source, `insert_after` an anchor, return. What
39
+ * actually differs is data — which preamble, which anchor, which chunk.
40
+ *
41
+ * More importantly the two anchors were spelled out in eight separate string
42
+ * literals. They are three.js's own chunk include lines, and a mismatch fails
43
+ * *quietly* (a console warning and an unmodified shader), so having one
44
+ * definition each is worth more than the lines it saves.
45
+ *
46
+ * Shader assembly happens once per material compile, not per frame.
47
+ *
48
+ * @param {string} source shader source three.js handed to `onBeforeCompile`
49
+ * @param {string} preamble prepended verbatim, ahead of the source
50
+ * @param {string} anchor see {@link GLSL_ANCHOR_LIGHTS_FRAGMENT_BEGIN} / {@link GLSL_ANCHOR_FOG_VERTEX}
51
+ * @param {string} chunk GLSL spliced in directly after `anchor`
52
+ * @returns {string}
53
+ */
54
+ export function build_injected_shader(source, preamble, anchor, chunk) {
55
+ return insert_after(preamble + source, anchor, chunk);
56
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"MaterialTransformer.d.ts","sourceRoot":"","sources":["../../../../../../../src/engine/graphics/sh3/gi/material/MaterialTransformer.js"],"names":[],"mappings":";AAuBA;IA+II;;;;OAIG;IACH,kDAaC;IA3BD;;;OAGG;IACH,2BAEC;IAdD;;;OAGG;IACH,wBAEC;IA+BD,sBAIC;IAED,sBAiDC;IAED,eAgDC;IAED,4BA2BC;;CACJ;4CA1T2C,0DAA0D"}
1
+ {"version":3,"file":"MaterialTransformer.d.ts","sourceRoot":"","sources":["../../../../../../../src/engine/graphics/sh3/gi/material/MaterialTransformer.js"],"names":[],"mappings":";AAuBA;IA+II;;;;OAIG;IACH,kDAaC;IA3BD;;;OAGG;IACH,2BAEC;IAdD;;;OAGG;IACH,wBAEC;IA+BD,sBAIC;IAED,sBAiDC;IAED,eAgDC;IAED,4BAoCC;;CACJ;4CAnU2C,0DAA0D"}
@@ -308,7 +308,16 @@ export class MaterialTransformer extends AbstractMaterialTransformer {
308
308
 
309
309
  if (isLitMaterial(source)) {
310
310
 
311
- result.clone();
311
+ // NOTE: this transformer mutates the caller's material in place,
312
+ // matching LightProbeGridMaterialTransformer.transform. The
313
+ // Forward+ transformer
314
+ // (render/forward_plus/plugin/MaterialTransformer.js) instead works
315
+ // on `source.clone()`. This method used to carry a stray
316
+ // `result.clone();` — a discarded expression statement left over
317
+ // from copying the Forward+ version, which allocated a full
318
+ // material on every call and threw it away without ever changing
319
+ // what this method did. It is removed; which of the two policies is
320
+ // correct is a real open question and deliberately NOT decided here.
312
321
 
313
322
  result.onBeforeCompile = composeCompile(source.onBeforeCompile, this.#onBeforeCompile);
314
323
 
@@ -1 +1 @@
1
- {"version":3,"file":"chunk_lpv_get_irradiance_at.d.ts","sourceRoot":"","sources":["../../../../../../../src/engine/graphics/sh3/gi/material/chunk_lpv_get_irradiance_at.js"],"names":[],"mappings":"AAGA,g3BAsBC"}
1
+ {"version":3,"file":"chunk_lpv_get_irradiance_at.d.ts","sourceRoot":"","sources":["../../../../../../../src/engine/graphics/sh3/gi/material/chunk_lpv_get_irradiance_at.js"],"names":[],"mappings":"AAoBA,g3BAsBC"}
@@ -1,5 +1,22 @@
1
1
 
2
2
  // source: https://graphics.stanford.edu/papers/envmap/envmap.pdf
3
+ //
4
+ // SIGN-CONVENTION DIVERGENCE — there are four implementations of this
5
+ // cosine-lobe evaluator in the repository and they do NOT agree:
6
+ //
7
+ // this file coefficients 1,3,5,7 ADDED
8
+ // lpg/material/chunk_lpg_get_irradiance_at.js coefficients 1,3 ADDED
9
+ // sh3/shader/visualize.frag.js coefficients 1,3,5,7 SUBTRACTED
10
+ // core/geom/3d/sphere/harmonics/sh3_sample_irradiance_by_direction.js
11
+ // coefficients 1,3,5,7 SUBTRACTED
12
+ //
13
+ // The magic constants are identical in all four; only the signs of the odd-m
14
+ // basis functions differ. The subtracting pair follows three.js's
15
+ // SphericalHarmonics3 convention. Which one is right depends on the sign
16
+ // convention the corresponding BAKER projects with, so the four cannot simply
17
+ // be unified — doing so changes rendered output for at least one subsystem and
18
+ // needs a bake-vs-shader A/B first. Logged in REVIEW_2026_08_06/adv-gfx.md:359.
19
+ // Deliberately left divergent by the 2026-08-07 duplication pass.
3
20
  //language=GLSL
4
21
  export const chunk_lpv_get_irradiance_at = `
5
22
  vec3 lpv_get_irradiance_at(in vec3 normal, in vec3 shCoefficients[9]) {
@@ -1,3 +1,3 @@
1
- declare const _default: "\n#ifndef LPV_SHADER_CHUNK_COMMON\n#define LPV_SHADER_CHUNK_COMMON\n\n\nuniform usampler2D lpv_t_mesh_vertices;\nuniform usampler2D lpv_t_mesh_neighbours;\nuniform usampler3D lpv_t_mesh_lookup;\n\nuniform sampler2D lpv_t_probe_positions;\nuniform sampler2D lpv_t_probe_data;\n\nuniform sampler2D lpv_t_probe_depth;\nuniform uint lpv_u_probe_depth_resolution;\n\nuniform uint lpv_u_mesh_tet_count;\nuniform vec3 lpv_v3_bounds_min;\nuniform vec3 lpv_v3_bounds_max;\n\n\nconst float lpv_min_thickness = 0.03; // in Meters\nconst float lpv_max_thickness = 0.50; // in Meters\n\n\n#define SEARCH_STEP_LIMIT 32u\n#define INVALID_TET 1073741823u\n\n\n/** Slightly bump the location of the shadow test point away from the shadow casting surface.\n The shadow casting surface is the boundary for shadow, so the nearer an imprecise value is\n to it the more the light leaks.\n*/\n#define LPV_NORMAL_BIAS 0.0001f\n\nivec2 lpv_index_to_256_coordinate(uint index) {\n\n uint pixel_x = index % 256u;\n uint pixel_y = index / 256u;\n\n return ivec2(int(pixel_x), int(pixel_y));\n}\n\nuvec4 lpv_mesh_getVertices(uint tet_index) {\n ivec2 p = lpv_index_to_256_coordinate(tet_index);\n\n return texelFetch(lpv_t_mesh_vertices, p, 0);\n\n}\n\nuvec4 lpv_mesh_getNeighbours(uint tet_index) {\n ivec2 p = lpv_index_to_256_coordinate(tet_index);\n\n return texelFetch(lpv_t_mesh_neighbours, p, 0);\n}\n\nvec3[9] lpv_probe_getData(uint probe_index) {\n\n\n int slot = int(probe_index % 256u);\n int column = int(probe_index / 256u);\n\n int offset_x = int(slot * 9);\n\n vec3[9] result;\n\n for (int i = 0; i < 9; i++) {\n result[i] = texelFetch(lpv_t_probe_data, ivec2(offset_x + i, column), 0).rgb;\n }\n\n return result;\n}\n\nfloat sign_not_zero(float x) {\n return x >= 0.0 ? 1.0 : -1.0;\n}\n\nvec2 sign_not_zero(vec2 x) {\n return vec2(\n sign_not_zero(x.x),\n sign_not_zero(x.y)\n );\n}\n\nvec3 sign_not_zero(vec3 x) {\n return vec3(\n sign_not_zero(x.x),\n sign_not_zero(x.y),\n sign_not_zero(x.z)\n );\n}\n\nvec4 quadBlendWieghts(vec2 coords)\n{\n vec4 res;\n/* 0 0 0\n 0 0 0\n 1 0 0 */\n res.x = min(1.0f - coords.x, 1.0f - coords.y);\n/* 1 0 0\n 0 0 0\n 0 0 1 */\n res.y = abs(coords.x - coords.y);\n/* 0 0 1\n 0 0 0\n 0 0 0 */\n res.z = min(coords.x, coords.y);\n/* 0 0 0\n 0 0 1\n 0 1 1 */\n res.w = ceil(coords.x - coords.y);\n //res.xyz /= (res.x + res.y + res.z);\n return res;\n}\n\nvec2 VecToSphereOct(vec3 v)\n{\n float l1norm = abs(v.x) + abs(v.y) + abs(v.z);\n\n vec2 result = v.xz / l1norm;\n\n if (v.y < 0.0) {\n result = (1.0 - abs(result.yx)) * sign_not_zero(result.xy);\n }\n\n return result;\n}\n\nfloat SampleBlended(sampler2D tex, vec2 uv0, vec2 uv1, vec2 uv2, vec4 weights) {\n\n float samp0 = textureLod(tex, uv0, 0.0).r;\n float samp1 = textureLod(tex, uv1, 0.0).r;\n float samp2 = textureLod(tex, uv2, 0.0).r;\n\n return samp0 * weights.x + samp1 * weights.y + samp2 * weights.z;\n}\n\nvec2 lpv_probe_getDepthTriangular(uint probe_index, vec3 direction) {\n // get offset\n uint depth_tile_resolution = lpv_u_probe_depth_resolution;\n uvec2 atlas_size = uvec2(4096u);\n\n uint tiles_per_row = atlas_size.x / depth_tile_resolution;\n\n uint tile_x = probe_index % tiles_per_row;\n uint tile_y = probe_index / tiles_per_row;\n\n vec2 tile_offset = vec2(\n tile_x * depth_tile_resolution,\n tile_y * depth_tile_resolution\n );\n\n // convert direction to UV\n vec2 octahedral_uv = clamp(VecToSphereOct(direction) * 0.5 + 0.5, 0.0, 1.0);\n vec2 grid = octahedral_uv * vec2(depth_tile_resolution - 1u);\n\n vec2 gridFrac = fract(grid);\n vec2 gridFloor = floor(grid);\n\n vec4 weights = quadBlendWieghts(gridFrac);\n\n //3 nearest frames\n vec2 frame0 = gridFloor;\n vec2 frame1 = gridFloor + mix(vec2(0, 1), vec2(1, 0), weights.w);\n vec2 frame2 = gridFloor + vec2(1.0, 1.0);\n\n // move frames to atlas space\n frame0 += tile_offset;\n frame1 += tile_offset;\n frame2 += tile_offset;\n\n vec2 samp0 = texelFetch(lpv_t_probe_depth, ivec2(frame0), 0).rg;\n vec2 samp1 = texelFetch(lpv_t_probe_depth, ivec2(frame1), 0).rg;\n vec2 samp2 = texelFetch(lpv_t_probe_depth, ivec2(frame2), 0).rg;\n\n vec2 d0 = samp0 * weights.x;\n vec2 d1 = samp1 * weights.y;\n vec2 d2 = samp2 * weights.z;\n\n return (d0 + d1 + d2);\n}\n\nfloat lpv_bilinear_lerp(float v00, float v01, float v10, float v11, vec2 fraction) {\n\n float x0 = mix(v00, v01, fraction.x);\n float x1 = mix(v10, v11, fraction.x);\n\n return mix(x0, x1, fraction.y);\n}\n\nvec2 lpv_bilinear_lerp(vec2 v00, vec2 v01, vec2 v10, vec2 v11, vec2 fraction) {\n\n vec2 x0 = mix(v00, v01, fraction.x);\n vec2 x1 = mix(v10, v11, fraction.x);\n\n return mix(x0, x1, fraction.y);\n}\n\nvec2 lpv_sample_bilinear(sampler2D tex, ivec2 texel_position, vec2 fraction) {\n\n float texel_00 = texelFetch(tex, texel_position, 0).r;\n float texel_01 = texelFetch(tex, texel_position + ivec2(1, 0), 0).r;\n float texel_10 = texelFetch(tex, texel_position + ivec2(0, 1), 0).r;\n float texel_11 = texelFetch(tex, texel_position + ivec2(1, 1), 0).r;\n\n return vec2(\n lpv_bilinear_lerp(\n texel_00, texel_01,\n texel_10, texel_11,\n fraction\n ),\n lpv_bilinear_lerp(\n texel_00 * texel_00, texel_01 * texel_01,\n texel_10 * texel_10, texel_11 * texel_11,\n fraction\n )\n );\n}\n\nivec2 wrapOctahedralTexelCoordinates(const in ivec2 texel, const in int texture_size) {\n ivec2 wrapped = ((texel % texture_size) + texture_size) % texture_size;\n\n int fx = (abs(texel.x / texture_size) + int(texel.x < 0));\n int fy = (abs(texel.y / texture_size) + int(texel.y < 0));\n\n if (((fx ^ fy) & 1) != 0) {\n return (texture_size - (wrapped + ivec2(1)));\n return wrapped;\n } else {\n return wrapped;\n }\n}\n\nvec2 lpv_probe_getDepthBilinear(uint probe_index, vec3 direction) {\n // get offset\n int depth_tile_resolution = int(lpv_u_probe_depth_resolution);\n ivec2 tile_resolution = ivec2(depth_tile_resolution);\n const ivec2 atlas_size = ivec2(4096);\n\n int tiles_per_row = atlas_size.x / depth_tile_resolution;\n\n int tile_x = int(probe_index) % tiles_per_row;\n int tile_y = int(probe_index) / tiles_per_row;\n\n ivec2 tile_offset = ivec2(\n tile_x * depth_tile_resolution,\n tile_y * depth_tile_resolution\n );\n\n // convert direction to UV\n vec2 octahedral_uv = clamp(VecToSphereOct(direction) * 0.5 + 0.5, 0.0, 1.0);\n vec2 grid = octahedral_uv * vec2(depth_tile_resolution) - 0.5;\n\n vec2 gridFrac = fract(grid);\n\n ivec2 texel_position = ivec2(floor(grid));\n\n ivec2 tile_p_00;\n ivec2 tile_p_01;\n ivec2 tile_p_10;\n ivec2 tile_p_11;\n\n tile_p_00 = wrapOctahedralTexelCoordinates(texel_position, depth_tile_resolution);\n tile_p_01 = wrapOctahedralTexelCoordinates(texel_position + ivec2(1, 0), depth_tile_resolution);\n tile_p_10 = wrapOctahedralTexelCoordinates(texel_position + ivec2(0, 1), depth_tile_resolution);\n tile_p_11 = wrapOctahedralTexelCoordinates(texel_position + ivec2(1, 1), depth_tile_resolution);\n\n vec2 texel_00 = texelFetch(lpv_t_probe_depth, tile_offset + tile_p_00, 0).rg;\n vec2 texel_01 = texelFetch(lpv_t_probe_depth, tile_offset + tile_p_01, 0).rg;\n vec2 texel_10 = texelFetch(lpv_t_probe_depth, tile_offset + tile_p_10, 0).rg;\n vec2 texel_11 = texelFetch(lpv_t_probe_depth, tile_offset + tile_p_11, 0).rg;\n\n return lpv_bilinear_lerp(\n texel_00, texel_01,\n texel_10, texel_11,\n gridFrac\n );\n}\n\nvec3 lpv_probe_getPosition(uint probe_index) {\n return texelFetch(lpv_t_probe_positions, lpv_index_to_256_coordinate(probe_index), 0).rgb;\n}\n\nmat3 lpv_mesh_makeMatrix(vec3 p0, vec3 p1, vec3 p2, vec3 p3) {\n\n return inverse(\n mat3(\n p0 - p3,\n p1 - p3,\n p2 - p3\n )\n );\n\n}\n\nvec4 lpv_mesh_getBarycentricCoordinates(uint tet_index, vec3 position) {\n uvec4 vertices = lpv_mesh_getVertices(tet_index);\n\n vec3 p0 = lpv_probe_getPosition(vertices[0]);\n vec3 p1 = lpv_probe_getPosition(vertices[1]);\n vec3 p2 = lpv_probe_getPosition(vertices[2]);\n vec3 p3 = lpv_probe_getPosition(vertices[3]);\n\n mat3 matrix = lpv_mesh_makeMatrix(p0, p1, p2, p3);\n\n vec3 mult = matrix * (position - p3);\n\n return vec4(mult, 1.0 - mult.x - mult.y - mult.z);\n}\n\nvoid lpv_walk_to_tetrahedron(\nin vec3 position,\nin uint tet_guess,\nout uint tet_index,\nout vec4 weights\n) {\n tet_index = tet_guess;\n\n for (uint i = 0u; i < SEARCH_STEP_LIMIT; i++) {\n\n weights = lpv_mesh_getBarycentricCoordinates(tet_index, position);\n\n // Check if we're in the current \"best guess\" tetrahedron\n if (weights.x >= 0.0 && weights.y >= 0.0 && weights.z >= 0.0 && weights.w >= 0.0) {\n // success\n return;\n }\n\n uvec4 neighbors = lpv_mesh_getNeighbours(tet_index);\n\n uint next_tet;\n\n // Otherwise find the smallest barycentric coord and move in that direction\n if (weights.x < weights.y && weights.x < weights.z && weights.x < weights.w) {\n next_tet = neighbors[0];\n } else if (weights.y < weights.z && weights.y < weights.w) {\n next_tet = neighbors[1];\n } else if (weights.z < weights.w) {\n next_tet = neighbors[2];\n } else {\n next_tet = neighbors[3];\n }\n\n tet_index = next_tet;\n }\n\n tet_index = INVALID_TET;\n}\n\nfloat lpv_probe_getVisibilityMask(vec3 position, uint probe_index) {\n\n vec3 probe_position = lpv_probe_getPosition(probe_index);\n\n vec3 local_probe_offset = position - probe_position;\n\n float distToProbe = length(local_probe_offset);\n\n vec3 direction = local_probe_offset / distToProbe;\n\n vec2 temp = lpv_probe_getDepthBilinear(probe_index, direction);\n\n float mean = temp.x;\n float mean2 = temp.y; // mean of squared distances\n\n float variance = abs(mean * mean - mean2);\n\n // http://www.punkuser.net/vsm/vsm_paper.pdf; equation 5\n // Need the max in the denominator because biasing can cause a negative displacement\n float distance_delta = max(distToProbe - mean, 0.0);\n\n float chebyshevWeight = variance / (variance + distance_delta * distance_delta);\n\n // Increase contrast in the weight\n chebyshevWeight = max(chebyshevWeight * chebyshevWeight * chebyshevWeight, 0.0);\n\n return (distToProbe <= mean) ? 1.0 : chebyshevWeight;\n}\n\nvec4 lvp_mask_weights_by_visibility_by_depth(vec3 position, uint tet_index, vec4 weights) {\n\n uvec4 vertices = lpv_mesh_getVertices(tet_index);\n\n vec4 visibility = vec4(\n lpv_probe_getVisibilityMask(position, vertices[0]),\n lpv_probe_getVisibilityMask(position, vertices[1]),\n lpv_probe_getVisibilityMask(position, vertices[2]),\n lpv_probe_getVisibilityMask(position, vertices[3])\n );\n\n return visibility * weights;\n}\n\n\nvec4 lvp_mask_weights_by_visibility_by_normal(vec3 position, vec3 normal, uint tet_index, vec4 weights) {\n\n uvec4 vertices = lpv_mesh_getVertices(tet_index);\n\n vec4 visibility;\n\n for (int i = 0; i < 4; i++) {\n vec3 probe_position = lpv_probe_getPosition(vertices[i]);\n\n vec3 direction_to_probe = position - probe_position;\n\n visibility[i] = step(dot(direction_to_probe, normal), 0.0);\n }\n\n return visibility * weights;\n}\n\n\nvec4 lvp_mask_weights_by_visibility(in vec3 position, in vec3 normal, in vec3 view_direction, in uint tet_index, in vec4 barycentric) {\n\n uvec4 vertices = lpv_mesh_getVertices(tet_index);\n\n vec4 visibility;\n\n // Bias the position at which visibility is computed; this\n // avoids performing a shadow test *at* a surface, which is a\n // dangerous location because that is exactly the line between\n // shadowed and unshadowed. If the normal bias is too small,\n // there will be light and dark leaks. If it is too large,\n // then samples can pass through thin occluders to the other\n // side (this can only happen if there are MULTIPLE occluders\n // near each other, a wall surface won't pass through itself.)\n vec3 lookup_position = position + (normal - view_direction * 3.0) * LPV_NORMAL_BIAS;\n\n float weight_sum = 0.0;\n\n for (uint i = 0u; i < 4u; i++) {\n\n float weight = 1.0;\n\n uint probe_index = vertices[i];\n\n vec3 probe_position = lpv_probe_getPosition(probe_index);\n\n\n // Smooth backface test\n {\n\n // Computed without the biasing applied to the \"dir\" variable.\n // This test can cause reflection-map looking errors in the image\n // (stuff looks shiny) if the transition is poor.\n vec3 direction_to_probe = normalize(probe_position - position);\n\n // The naive soft backface weight would ignore a probe when\n // it is behind the surface. That's good for walls. But for small details inside of a\n // room, the normals on the details might rule out all of the probes that have mutual\n // visibility to the point. So, we instead use a \"wrap shading\" test below inspired by\n // NPR work.\n// float backface_term = max(0.0001, dot(direction_to_probe, normal));\n\n // The small offset at the end reduces the \"going to zero\" impact\n // where this is really close to exactly opposite\n float backface_term = max(0.0001, (dot(direction_to_probe, normal) + 1.0) * 0.5);\n weight *= backface_term * backface_term + 0.05;\n// weight *= backface_term;\n\n }\n\n // Moment visibility test (depth)\n {\n\n// weight *= lpv_probe_getVisibilityMask(lookup_position, probe_index);\n\n }\n\n\n // A tiny bit of light is really visible due to log perception, so\n // crush tiny weights but keep the curve continuous. This must be done\n // before the trilinear weights, because those should be preserved.\n const float crushThreshold = 0.2;\n\n if (weight < crushThreshold) {\n weight *= weight * weight * (1.0 / (crushThreshold * crushThreshold));\n }\n\n // Avoid zero weight\n weight = max(0.000001, weight);\n\n weight *= barycentric[i];\n\n weight_sum += weight;\n\n visibility[i] = weight;\n }\n\n // normalize\n visibility /= weight_sum;\n\n return visibility;\n}\n\nvec3[9] lpv_interpolate_probes(vec4 weights, uint tet_index) {\n\n uvec4 vertices = lpv_mesh_getVertices(tet_index);\n\n vec3[9] probe0 = lpv_probe_getData(vertices[0]);\n vec3[9] probe1 = lpv_probe_getData(vertices[1]);\n vec3[9] probe2 = lpv_probe_getData(vertices[2]);\n vec3[9] probe3 = lpv_probe_getData(vertices[3]);\n\n vec3[9] result;\n\n for (int i = 0; i < 9; i++) {\n\n result[i] = probe0[i] * weights[0]\n + probe1[i] * weights[1]\n + probe2[i] * weights[2]\n + probe3[i] * weights[3];\n\n }\n\n return result;\n}\n\nuint lpv_guess_initial_tet(vec3 position) {\n\n vec3 lpv_mesh_bounds_min = lpv_v3_bounds_min;\n vec3 lpv_mesh_bounds_max = lpv_v3_bounds_max;\n\n vec3 lookup_coordinates = (position - lpv_mesh_bounds_min) / (lpv_mesh_bounds_max - lpv_mesh_bounds_min);\n\n return textureLod(lpv_t_mesh_lookup, lookup_coordinates, 0.0).r;\n\n}\n\n\nvec3 lpv_get_irradiance_at(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\n\nvec4 lpv_renormalize_weights(in vec4 source) {\n\n float sum = source.x + source.y + source.z + source.w;\n\n if (sum <= 0.0001) {\n return vec4(0.0);\n }\n\n return source / sum;\n\n}\n\n\nvec3 lpv_mesh_interpolate_probe_irradiance(vec3 direction , vec4 weights, uint tet){\n\n uvec4 vertices = lpv_mesh_getVertices(tet);\n\n vec3[9] probe0 = lpv_probe_getData(vertices[0]);\n vec3[9] probe1 = lpv_probe_getData(vertices[1]);\n vec3[9] probe2 = lpv_probe_getData(vertices[2]);\n vec3[9] probe3 = lpv_probe_getData(vertices[3]);\n \n vec3 irradiance_0 = lpv_get_irradiance_at(direction, probe0);\n vec3 irradiance_1 = lpv_get_irradiance_at(direction, probe1);\n vec3 irradiance_2 = lpv_get_irradiance_at(direction, probe2);\n vec3 irradiance_3 = lpv_get_irradiance_at(direction, probe3);\n \n // move irradiance into preceptional space for interpolation\n vec3 irradiance_p_0 = sqrt(irradiance_0);\n vec3 irradiance_p_1 = sqrt(irradiance_1);\n vec3 irradiance_p_2 = sqrt(irradiance_2);\n vec3 irradiance_p_3 = sqrt(irradiance_3);\n\n vec3 interpolated_sqrt = irradiance_p_0 * weights[0]\n +irradiance_p_1 * weights[1]\n +irradiance_p_2 * weights[2]\n +irradiance_p_3 * weights[3]\n ;\n\n // convert back\n return interpolated_sqrt*interpolated_sqrt;\n}\n\nvec3 lpv_sample_irradiance(vec3 position, vec3 normal, vec3 view_direction) {\n\n // lookup nearby tet\n vec3 lpv_mesh_bounds_min = lpv_v3_bounds_min;\n vec3 lpv_mesh_bounds_max = lpv_v3_bounds_max;\n vec3 lookup_coordinates = (position - lpv_mesh_bounds_min) / (lpv_mesh_bounds_max - lpv_mesh_bounds_min);\n\n\n uint nearest_tet = lpv_guess_initial_tet(position);\n\n uint tet;\n vec4 barycentric_coordinates;\n lpv_walk_to_tetrahedron(position, nearest_tet, tet, barycentric_coordinates);\n\n // apply visibility term\n vec4 weights = lvp_mask_weights_by_visibility(position, normal, view_direction, tet, barycentric_coordinates);\n\n if (tet == INVALID_TET) {\n // do nothing\n return vec3(0.0);\n\n } else {\n\n vec3[9] lpv_values = lpv_interpolate_probes(weights, tet);\n\n vec3 irradiance = lpv_get_irradiance_at(normal, lpv_values);\n\n return irradiance;\n }\n}\n\n#endif\n";
1
+ declare const _default: "\n#ifndef LPV_SHADER_CHUNK_COMMON\n#define LPV_SHADER_CHUNK_COMMON\n\n// Octahedral probe-depth sampling, shared verbatim with the depth visualiser.\n// Declares lpv_t_probe_positions / lpv_t_probe_depth /\n// lpv_u_probe_depth_resolution, plus lpv_index_to_256_coordinate which the mesh\n// getters below depend on — so it has to come first.\n\n#ifndef LPV_SHADER_CHUNK_PROBE_DEPTH_SAMPLING\n#define LPV_SHADER_CHUNK_PROBE_DEPTH_SAMPLING\n\nuniform sampler2D lpv_t_probe_positions;\n\nuniform sampler2D lpv_t_probe_depth;\nuniform uint lpv_u_probe_depth_resolution;\n\nivec2 lpv_index_to_256_coordinate(uint index) {\n\n uint pixel_x = index % 256u;\n uint pixel_y = index / 256u;\n\n return ivec2(int(pixel_x), int(pixel_y));\n}\n\nfloat sign_not_zero(float x) {\n return x >= 0.0 ? 1.0 : -1.0;\n}\n\nvec2 sign_not_zero(vec2 x) {\n return vec2(\n sign_not_zero(x.x),\n sign_not_zero(x.y)\n );\n}\n\nvec3 sign_not_zero(vec3 x) {\n return vec3(\n sign_not_zero(x.x),\n sign_not_zero(x.y),\n sign_not_zero(x.z)\n );\n}\n\nvec4 quadBlendWieghts(vec2 coords)\n{\n vec4 res;\n/* 0 0 0\n 0 0 0\n 1 0 0 */\n res.x = min(1.0f - coords.x, 1.0f - coords.y);\n/* 1 0 0\n 0 0 0\n 0 0 1 */\n res.y = abs(coords.x - coords.y);\n/* 0 0 1\n 0 0 0\n 0 0 0 */\n res.z = min(coords.x, coords.y);\n/* 0 0 0\n 0 0 1\n 0 1 1 */\n res.w = ceil(coords.x - coords.y);\n //res.xyz /= (res.x + res.y + res.z);\n return res;\n}\n\nvec2 VecToSphereOct(vec3 v)\n{\n float l1norm = abs(v.x) + abs(v.y) + abs(v.z);\n\n vec2 result = v.xz / l1norm;\n\n if (v.y < 0.0) {\n result = (1.0 - abs(result.yx)) * sign_not_zero(result.xy);\n }\n\n return result;\n}\n\nfloat SampleBlended(sampler2D tex, vec2 uv0, vec2 uv1, vec2 uv2, vec4 weights) {\n\n float samp0 = textureLod(tex, uv0, 0.0).r;\n float samp1 = textureLod(tex, uv1, 0.0).r;\n float samp2 = textureLod(tex, uv2, 0.0).r;\n\n return samp0 * weights.x + samp1 * weights.y + samp2 * weights.z;\n}\n\nvec2 lpv_probe_getDepthTriangular(uint probe_index, vec3 direction) {\n // get offset\n uint depth_tile_resolution = lpv_u_probe_depth_resolution;\n uvec2 atlas_size = uvec2(4096u);\n\n uint tiles_per_row = atlas_size.x / depth_tile_resolution;\n\n uint tile_x = probe_index % tiles_per_row;\n uint tile_y = probe_index / tiles_per_row;\n\n vec2 tile_offset = vec2(\n tile_x * depth_tile_resolution,\n tile_y * depth_tile_resolution\n );\n\n // convert direction to UV\n vec2 octahedral_uv = clamp(VecToSphereOct(direction) * 0.5 + 0.5, 0.0, 1.0);\n vec2 grid = octahedral_uv * vec2(depth_tile_resolution - 1u);\n\n vec2 gridFrac = fract(grid);\n vec2 gridFloor = floor(grid);\n\n vec4 weights = quadBlendWieghts(gridFrac);\n\n //3 nearest frames\n vec2 frame0 = gridFloor;\n vec2 frame1 = gridFloor + mix(vec2(0, 1), vec2(1, 0), weights.w);\n vec2 frame2 = gridFloor + vec2(1.0, 1.0);\n\n // move frames to atlas space\n frame0 += tile_offset;\n frame1 += tile_offset;\n frame2 += tile_offset;\n\n vec2 samp0 = texelFetch(lpv_t_probe_depth, ivec2(frame0), 0).rg;\n vec2 samp1 = texelFetch(lpv_t_probe_depth, ivec2(frame1), 0).rg;\n vec2 samp2 = texelFetch(lpv_t_probe_depth, ivec2(frame2), 0).rg;\n\n vec2 d0 = samp0 * weights.x;\n vec2 d1 = samp1 * weights.y;\n vec2 d2 = samp2 * weights.z;\n\n return (d0 + d1 + d2);\n}\n\nfloat lpv_bilinear_lerp(float v00, float v01, float v10, float v11, vec2 fraction) {\n\n float x0 = mix(v00, v01, fraction.x);\n float x1 = mix(v10, v11, fraction.x);\n\n return mix(x0, x1, fraction.y);\n}\n\nvec2 lpv_bilinear_lerp(vec2 v00, vec2 v01, vec2 v10, vec2 v11, vec2 fraction) {\n\n vec2 x0 = mix(v00, v01, fraction.x);\n vec2 x1 = mix(v10, v11, fraction.x);\n\n return mix(x0, x1, fraction.y);\n}\n\nvec2 lpv_sample_bilinear(sampler2D tex, ivec2 texel_position, vec2 fraction) {\n\n float texel_00 = texelFetch(tex, texel_position, 0).r;\n float texel_01 = texelFetch(tex, texel_position + ivec2(1, 0), 0).r;\n float texel_10 = texelFetch(tex, texel_position + ivec2(0, 1), 0).r;\n float texel_11 = texelFetch(tex, texel_position + ivec2(1, 1), 0).r;\n\n return vec2(\n lpv_bilinear_lerp(\n texel_00, texel_01,\n texel_10, texel_11,\n fraction\n ),\n lpv_bilinear_lerp(\n texel_00 * texel_00, texel_01 * texel_01,\n texel_10 * texel_10, texel_11 * texel_11,\n fraction\n )\n );\n}\n\nivec2 wrapOctahedralTexelCoordinates(const in ivec2 texel, const in int texture_size) {\n ivec2 wrapped = ((texel % texture_size) + texture_size) % texture_size;\n\n int fx = (abs(texel.x / texture_size) + int(texel.x < 0));\n int fy = (abs(texel.y / texture_size) + int(texel.y < 0));\n\n if (((fx ^ fy) & 1) != 0) {\n return (texture_size - (wrapped + ivec2(1)));\n return wrapped;\n } else {\n return wrapped;\n }\n}\n\nvec2 lpv_probe_getDepthBilinear(uint probe_index, vec3 direction) {\n // get offset\n int depth_tile_resolution = int(lpv_u_probe_depth_resolution);\n ivec2 tile_resolution = ivec2(depth_tile_resolution);\n const ivec2 atlas_size = ivec2(4096);\n\n int tiles_per_row = atlas_size.x / depth_tile_resolution;\n\n int tile_x = int(probe_index) % tiles_per_row;\n int tile_y = int(probe_index) / tiles_per_row;\n\n ivec2 tile_offset = ivec2(\n tile_x * depth_tile_resolution,\n tile_y * depth_tile_resolution\n );\n\n // convert direction to UV\n vec2 octahedral_uv = clamp(VecToSphereOct(direction) * 0.5 + 0.5, 0.0, 1.0);\n vec2 grid = octahedral_uv * vec2(depth_tile_resolution) - 0.5;\n\n vec2 gridFrac = fract(grid);\n\n ivec2 texel_position = ivec2(floor(grid));\n\n ivec2 tile_p_00;\n ivec2 tile_p_01;\n ivec2 tile_p_10;\n ivec2 tile_p_11;\n\n tile_p_00 = wrapOctahedralTexelCoordinates(texel_position, depth_tile_resolution);\n tile_p_01 = wrapOctahedralTexelCoordinates(texel_position + ivec2(1, 0), depth_tile_resolution);\n tile_p_10 = wrapOctahedralTexelCoordinates(texel_position + ivec2(0, 1), depth_tile_resolution);\n tile_p_11 = wrapOctahedralTexelCoordinates(texel_position + ivec2(1, 1), depth_tile_resolution);\n\n vec2 texel_00 = texelFetch(lpv_t_probe_depth, tile_offset + tile_p_00, 0).rg;\n vec2 texel_01 = texelFetch(lpv_t_probe_depth, tile_offset + tile_p_01, 0).rg;\n vec2 texel_10 = texelFetch(lpv_t_probe_depth, tile_offset + tile_p_10, 0).rg;\n vec2 texel_11 = texelFetch(lpv_t_probe_depth, tile_offset + tile_p_11, 0).rg;\n\n return lpv_bilinear_lerp(\n texel_00, texel_01,\n texel_10, texel_11,\n gridFrac\n );\n}\n\nvec3 lpv_probe_getPosition(uint probe_index) {\n return texelFetch(lpv_t_probe_positions, lpv_index_to_256_coordinate(probe_index), 0).rgb;\n}\n\n#endif\n\n\nuniform usampler2D lpv_t_mesh_vertices;\nuniform usampler2D lpv_t_mesh_neighbours;\nuniform usampler3D lpv_t_mesh_lookup;\n\nuniform sampler2D lpv_t_probe_data;\n\nuniform uint lpv_u_mesh_tet_count;\nuniform vec3 lpv_v3_bounds_min;\nuniform vec3 lpv_v3_bounds_max;\n\n\nconst float lpv_min_thickness = 0.03; // in Meters\nconst float lpv_max_thickness = 0.50; // in Meters\n\n\n#define SEARCH_STEP_LIMIT 32u\n#define INVALID_TET 1073741823u\n\n\n/** Slightly bump the location of the shadow test point away from the shadow casting surface.\n The shadow casting surface is the boundary for shadow, so the nearer an imprecise value is\n to it the more the light leaks.\n*/\n#define LPV_NORMAL_BIAS 0.0001f\n\nuvec4 lpv_mesh_getVertices(uint tet_index) {\n ivec2 p = lpv_index_to_256_coordinate(tet_index);\n\n return texelFetch(lpv_t_mesh_vertices, p, 0);\n\n}\n\nuvec4 lpv_mesh_getNeighbours(uint tet_index) {\n ivec2 p = lpv_index_to_256_coordinate(tet_index);\n\n return texelFetch(lpv_t_mesh_neighbours, p, 0);\n}\n\nvec3[9] lpv_probe_getData(uint probe_index) {\n\n\n int slot = int(probe_index % 256u);\n int column = int(probe_index / 256u);\n\n int offset_x = int(slot * 9);\n\n vec3[9] result;\n\n for (int i = 0; i < 9; i++) {\n result[i] = texelFetch(lpv_t_probe_data, ivec2(offset_x + i, column), 0).rgb;\n }\n\n return result;\n}\n\nmat3 lpv_mesh_makeMatrix(vec3 p0, vec3 p1, vec3 p2, vec3 p3) {\n\n return inverse(\n mat3(\n p0 - p3,\n p1 - p3,\n p2 - p3\n )\n );\n\n}\n\nvec4 lpv_mesh_getBarycentricCoordinates(uint tet_index, vec3 position) {\n uvec4 vertices = lpv_mesh_getVertices(tet_index);\n\n vec3 p0 = lpv_probe_getPosition(vertices[0]);\n vec3 p1 = lpv_probe_getPosition(vertices[1]);\n vec3 p2 = lpv_probe_getPosition(vertices[2]);\n vec3 p3 = lpv_probe_getPosition(vertices[3]);\n\n mat3 matrix = lpv_mesh_makeMatrix(p0, p1, p2, p3);\n\n vec3 mult = matrix * (position - p3);\n\n return vec4(mult, 1.0 - mult.x - mult.y - mult.z);\n}\n\nvoid lpv_walk_to_tetrahedron(\nin vec3 position,\nin uint tet_guess,\nout uint tet_index,\nout vec4 weights\n) {\n tet_index = tet_guess;\n\n for (uint i = 0u; i < SEARCH_STEP_LIMIT; i++) {\n\n weights = lpv_mesh_getBarycentricCoordinates(tet_index, position);\n\n // Check if we're in the current \"best guess\" tetrahedron\n if (weights.x >= 0.0 && weights.y >= 0.0 && weights.z >= 0.0 && weights.w >= 0.0) {\n // success\n return;\n }\n\n uvec4 neighbors = lpv_mesh_getNeighbours(tet_index);\n\n uint next_tet;\n\n // Otherwise find the smallest barycentric coord and move in that direction\n if (weights.x < weights.y && weights.x < weights.z && weights.x < weights.w) {\n next_tet = neighbors[0];\n } else if (weights.y < weights.z && weights.y < weights.w) {\n next_tet = neighbors[1];\n } else if (weights.z < weights.w) {\n next_tet = neighbors[2];\n } else {\n next_tet = neighbors[3];\n }\n\n tet_index = next_tet;\n }\n\n tet_index = INVALID_TET;\n}\n\nfloat lpv_probe_getVisibilityMask(vec3 position, uint probe_index) {\n\n vec3 probe_position = lpv_probe_getPosition(probe_index);\n\n vec3 local_probe_offset = position - probe_position;\n\n float distToProbe = length(local_probe_offset);\n\n vec3 direction = local_probe_offset / distToProbe;\n\n vec2 temp = lpv_probe_getDepthBilinear(probe_index, direction);\n\n float mean = temp.x;\n float mean2 = temp.y; // mean of squared distances\n\n float variance = abs(mean * mean - mean2);\n\n // http://www.punkuser.net/vsm/vsm_paper.pdf; equation 5\n // Need the max in the denominator because biasing can cause a negative displacement\n float distance_delta = max(distToProbe - mean, 0.0);\n\n float chebyshevWeight = variance / (variance + distance_delta * distance_delta);\n\n // Increase contrast in the weight\n chebyshevWeight = max(chebyshevWeight * chebyshevWeight * chebyshevWeight, 0.0);\n\n return (distToProbe <= mean) ? 1.0 : chebyshevWeight;\n}\n\nvec4 lvp_mask_weights_by_visibility_by_depth(vec3 position, uint tet_index, vec4 weights) {\n\n uvec4 vertices = lpv_mesh_getVertices(tet_index);\n\n vec4 visibility = vec4(\n lpv_probe_getVisibilityMask(position, vertices[0]),\n lpv_probe_getVisibilityMask(position, vertices[1]),\n lpv_probe_getVisibilityMask(position, vertices[2]),\n lpv_probe_getVisibilityMask(position, vertices[3])\n );\n\n return visibility * weights;\n}\n\n\nvec4 lvp_mask_weights_by_visibility_by_normal(vec3 position, vec3 normal, uint tet_index, vec4 weights) {\n\n uvec4 vertices = lpv_mesh_getVertices(tet_index);\n\n vec4 visibility;\n\n for (int i = 0; i < 4; i++) {\n vec3 probe_position = lpv_probe_getPosition(vertices[i]);\n\n vec3 direction_to_probe = position - probe_position;\n\n visibility[i] = step(dot(direction_to_probe, normal), 0.0);\n }\n\n return visibility * weights;\n}\n\n\nvec4 lvp_mask_weights_by_visibility(in vec3 position, in vec3 normal, in vec3 view_direction, in uint tet_index, in vec4 barycentric) {\n\n uvec4 vertices = lpv_mesh_getVertices(tet_index);\n\n vec4 visibility;\n\n // Bias the position at which visibility is computed; this\n // avoids performing a shadow test *at* a surface, which is a\n // dangerous location because that is exactly the line between\n // shadowed and unshadowed. If the normal bias is too small,\n // there will be light and dark leaks. If it is too large,\n // then samples can pass through thin occluders to the other\n // side (this can only happen if there are MULTIPLE occluders\n // near each other, a wall surface won't pass through itself.)\n vec3 lookup_position = position + (normal - view_direction * 3.0) * LPV_NORMAL_BIAS;\n\n float weight_sum = 0.0;\n\n for (uint i = 0u; i < 4u; i++) {\n\n float weight = 1.0;\n\n uint probe_index = vertices[i];\n\n vec3 probe_position = lpv_probe_getPosition(probe_index);\n\n\n // Smooth backface test\n {\n\n // Computed without the biasing applied to the \"dir\" variable.\n // This test can cause reflection-map looking errors in the image\n // (stuff looks shiny) if the transition is poor.\n vec3 direction_to_probe = normalize(probe_position - position);\n\n // The naive soft backface weight would ignore a probe when\n // it is behind the surface. That's good for walls. But for small details inside of a\n // room, the normals on the details might rule out all of the probes that have mutual\n // visibility to the point. So, we instead use a \"wrap shading\" test below inspired by\n // NPR work.\n// float backface_term = max(0.0001, dot(direction_to_probe, normal));\n\n // The small offset at the end reduces the \"going to zero\" impact\n // where this is really close to exactly opposite\n float backface_term = max(0.0001, (dot(direction_to_probe, normal) + 1.0) * 0.5);\n weight *= backface_term * backface_term + 0.05;\n// weight *= backface_term;\n\n }\n\n // Moment visibility test (depth)\n {\n\n// weight *= lpv_probe_getVisibilityMask(lookup_position, probe_index);\n\n }\n\n\n // A tiny bit of light is really visible due to log perception, so\n // crush tiny weights but keep the curve continuous. This must be done\n // before the trilinear weights, because those should be preserved.\n const float crushThreshold = 0.2;\n\n if (weight < crushThreshold) {\n weight *= weight * weight * (1.0 / (crushThreshold * crushThreshold));\n }\n\n // Avoid zero weight\n weight = max(0.000001, weight);\n\n weight *= barycentric[i];\n\n weight_sum += weight;\n\n visibility[i] = weight;\n }\n\n // normalize\n visibility /= weight_sum;\n\n return visibility;\n}\n\nvec3[9] lpv_interpolate_probes(vec4 weights, uint tet_index) {\n\n uvec4 vertices = lpv_mesh_getVertices(tet_index);\n\n vec3[9] probe0 = lpv_probe_getData(vertices[0]);\n vec3[9] probe1 = lpv_probe_getData(vertices[1]);\n vec3[9] probe2 = lpv_probe_getData(vertices[2]);\n vec3[9] probe3 = lpv_probe_getData(vertices[3]);\n\n vec3[9] result;\n\n for (int i = 0; i < 9; i++) {\n\n result[i] = probe0[i] * weights[0]\n + probe1[i] * weights[1]\n + probe2[i] * weights[2]\n + probe3[i] * weights[3];\n\n }\n\n return result;\n}\n\nuint lpv_guess_initial_tet(vec3 position) {\n\n vec3 lpv_mesh_bounds_min = lpv_v3_bounds_min;\n vec3 lpv_mesh_bounds_max = lpv_v3_bounds_max;\n\n vec3 lookup_coordinates = (position - lpv_mesh_bounds_min) / (lpv_mesh_bounds_max - lpv_mesh_bounds_min);\n\n return textureLod(lpv_t_mesh_lookup, lookup_coordinates, 0.0).r;\n\n}\n\n\nvec3 lpv_get_irradiance_at(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\n\nvec4 lpv_renormalize_weights(in vec4 source) {\n\n float sum = source.x + source.y + source.z + source.w;\n\n if (sum <= 0.0001) {\n return vec4(0.0);\n }\n\n return source / sum;\n\n}\n\n\nvec3 lpv_mesh_interpolate_probe_irradiance(vec3 direction , vec4 weights, uint tet){\n\n uvec4 vertices = lpv_mesh_getVertices(tet);\n\n vec3[9] probe0 = lpv_probe_getData(vertices[0]);\n vec3[9] probe1 = lpv_probe_getData(vertices[1]);\n vec3[9] probe2 = lpv_probe_getData(vertices[2]);\n vec3[9] probe3 = lpv_probe_getData(vertices[3]);\n \n vec3 irradiance_0 = lpv_get_irradiance_at(direction, probe0);\n vec3 irradiance_1 = lpv_get_irradiance_at(direction, probe1);\n vec3 irradiance_2 = lpv_get_irradiance_at(direction, probe2);\n vec3 irradiance_3 = lpv_get_irradiance_at(direction, probe3);\n \n // move irradiance into preceptional space for interpolation\n vec3 irradiance_p_0 = sqrt(irradiance_0);\n vec3 irradiance_p_1 = sqrt(irradiance_1);\n vec3 irradiance_p_2 = sqrt(irradiance_2);\n vec3 irradiance_p_3 = sqrt(irradiance_3);\n\n vec3 interpolated_sqrt = irradiance_p_0 * weights[0]\n +irradiance_p_1 * weights[1]\n +irradiance_p_2 * weights[2]\n +irradiance_p_3 * weights[3]\n ;\n\n // convert back\n return interpolated_sqrt*interpolated_sqrt;\n}\n\nvec3 lpv_sample_irradiance(vec3 position, vec3 normal, vec3 view_direction) {\n\n // lookup nearby tet\n vec3 lpv_mesh_bounds_min = lpv_v3_bounds_min;\n vec3 lpv_mesh_bounds_max = lpv_v3_bounds_max;\n vec3 lookup_coordinates = (position - lpv_mesh_bounds_min) / (lpv_mesh_bounds_max - lpv_mesh_bounds_min);\n\n\n uint nearest_tet = lpv_guess_initial_tet(position);\n\n uint tet;\n vec4 barycentric_coordinates;\n lpv_walk_to_tetrahedron(position, nearest_tet, tet, barycentric_coordinates);\n\n // apply visibility term\n vec4 weights = lvp_mask_weights_by_visibility(position, normal, view_direction, tet, barycentric_coordinates);\n\n if (tet == INVALID_TET) {\n // do nothing\n return vec3(0.0);\n\n } else {\n\n vec3[9] lpv_values = lpv_interpolate_probes(weights, tet);\n\n vec3 irradiance = lpv_get_irradiance_at(normal, lpv_values);\n\n return irradiance;\n }\n}\n\n#endif\n";
2
2
  export default _default;
3
3
  //# sourceMappingURL=common.d.ts.map