@woosh/meep-engine 2.164.0 → 2.165.1

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 (451) hide show
  1. package/README.md +137 -108
  2. package/build/bundle-worker-image-decoder.js +1 -1
  3. package/build/bundle-worker-terrain.js +1 -1
  4. package/package.json +1 -1
  5. package/samples/generation/SampleGenerator0.js +3 -3
  6. package/samples/generation/filters/SampleGroundMoistureFilter.js +63 -56
  7. package/samples/generation/filters/SampleNoise20_0.js +6 -1
  8. package/samples/generation/themes/SampleTheme0.js +47 -47
  9. package/src/core/binary/BitImage2.d.ts +91 -0
  10. package/src/core/binary/BitImage2.d.ts.map +1 -0
  11. package/src/core/binary/BitImage2.js +242 -0
  12. package/src/core/color/YCoCg/rgb_to_ycocg.d.ts +17 -0
  13. package/src/core/color/YCoCg/rgb_to_ycocg.d.ts.map +1 -0
  14. package/src/core/color/YCoCg/rgb_to_ycocg.js +20 -0
  15. package/src/core/color/YCoCg/ycocg_to_rgb.d.ts +14 -0
  16. package/src/core/color/YCoCg/ycocg_to_rgb.d.ts.map +1 -0
  17. package/src/core/color/YCoCg/ycocg_to_rgb.js +17 -0
  18. package/src/core/geom/2d/oriented-box/min_area_rect_2d.d.ts +22 -0
  19. package/src/core/geom/2d/oriented-box/min_area_rect_2d.d.ts.map +1 -0
  20. package/src/core/geom/2d/oriented-box/min_area_rect_2d.js +69 -0
  21. package/src/core/geom/2d/packing/skyline.d.ts +116 -0
  22. package/src/core/geom/2d/packing/skyline.d.ts.map +1 -0
  23. package/src/core/geom/2d/packing/skyline.js +258 -0
  24. package/src/core/geom/2d/triangle/tri2_rasterize_conservative.d.ts +18 -0
  25. package/src/core/geom/2d/triangle/tri2_rasterize_conservative.d.ts.map +1 -0
  26. package/src/core/geom/2d/triangle/tri2_rasterize_conservative.js +86 -0
  27. package/src/core/geom/3d/atlas/ATLAS_PORT_PLAN.md +486 -0
  28. package/src/core/geom/3d/atlas/BFF_PLAN.md +174 -0
  29. package/src/core/geom/3d/atlas/Chart.d.ts +58 -0
  30. package/src/core/geom/3d/atlas/Chart.d.ts.map +1 -0
  31. package/src/core/geom/3d/atlas/Chart.js +77 -0
  32. package/src/core/geom/3d/atlas/REVIEW_02.md +392 -0
  33. package/src/core/geom/3d/atlas/atlas_bench_lib.d.ts +73 -0
  34. package/src/core/geom/3d/atlas/atlas_bench_lib.d.ts.map +1 -0
  35. package/src/core/geom/3d/atlas/atlas_bench_lib.js +315 -0
  36. package/src/core/geom/3d/atlas/atlas_chart_type.d.ts +17 -0
  37. package/src/core/geom/3d/atlas/atlas_chart_type.d.ts.map +1 -0
  38. package/src/core/geom/3d/atlas/atlas_chart_type.js +16 -0
  39. package/src/core/geom/3d/atlas/atlas_compute_charts.d.ts +25 -0
  40. package/src/core/geom/3d/atlas/atlas_compute_charts.d.ts.map +1 -0
  41. package/src/core/geom/3d/atlas/atlas_compute_charts.js +188 -0
  42. package/src/core/geom/3d/atlas/atlas_extract_chart.d.ts +17 -0
  43. package/src/core/geom/3d/atlas/atlas_extract_chart.d.ts.map +1 -0
  44. package/src/core/geom/3d/atlas/atlas_extract_chart.js +107 -0
  45. package/src/core/geom/3d/atlas/atlas_generate.d.ts +39 -0
  46. package/src/core/geom/3d/atlas/atlas_generate.d.ts.map +1 -0
  47. package/src/core/geom/3d/atlas/atlas_generate.js +43 -0
  48. package/src/core/geom/3d/atlas/atlas_test_fixtures.d.ts +84 -0
  49. package/src/core/geom/3d/atlas/atlas_test_fixtures.d.ts.map +1 -0
  50. package/src/core/geom/3d/atlas/atlas_test_fixtures.js +266 -0
  51. package/src/core/geom/3d/atlas/atlas_write_chart_uvs.d.ts +25 -0
  52. package/src/core/geom/3d/atlas/atlas_write_chart_uvs.d.ts.map +1 -0
  53. package/src/core/geom/3d/atlas/atlas_write_chart_uvs.js +36 -0
  54. package/src/core/geom/3d/atlas/data/atlas_build_edge_dihedrals.d.ts +22 -0
  55. package/src/core/geom/3d/atlas/data/atlas_build_edge_dihedrals.d.ts.map +1 -0
  56. package/src/core/geom/3d/atlas/data/atlas_build_edge_dihedrals.js +62 -0
  57. package/src/core/geom/3d/atlas/data/atlas_build_edge_lengths.d.ts +9 -0
  58. package/src/core/geom/3d/atlas/data/atlas_build_edge_lengths.d.ts.map +1 -0
  59. package/src/core/geom/3d/atlas/data/atlas_build_edge_lengths.js +33 -0
  60. package/src/core/geom/3d/atlas/data/atlas_build_face_areas.d.ts +9 -0
  61. package/src/core/geom/3d/atlas/data/atlas_build_face_areas.d.ts.map +1 -0
  62. package/src/core/geom/3d/atlas/data/atlas_build_face_areas.js +50 -0
  63. package/src/core/geom/3d/atlas/io/atlas_mesh_weld_colocals.d.ts +27 -0
  64. package/src/core/geom/3d/atlas/io/atlas_mesh_weld_colocals.d.ts.map +1 -0
  65. package/src/core/geom/3d/atlas/io/atlas_mesh_weld_colocals.js +39 -0
  66. package/src/core/geom/3d/atlas/io/bt_loop_uv.d.ts +22 -0
  67. package/src/core/geom/3d/atlas/io/bt_loop_uv.d.ts.map +1 -0
  68. package/src/core/geom/3d/atlas/io/bt_loop_uv.js +57 -0
  69. package/src/core/geom/3d/atlas/pack/ChartPlacement.d.ts +36 -0
  70. package/src/core/geom/3d/atlas/pack/ChartPlacement.d.ts.map +1 -0
  71. package/src/core/geom/3d/atlas/pack/ChartPlacement.js +46 -0
  72. package/src/core/geom/3d/atlas/pack/atlas_pack_charts.d.ts +62 -0
  73. package/src/core/geom/3d/atlas/pack/atlas_pack_charts.d.ts.map +1 -0
  74. package/src/core/geom/3d/atlas/pack/atlas_pack_charts.js +551 -0
  75. package/src/core/geom/3d/atlas/param/atlas_chart_param_validity.d.ts +22 -0
  76. package/src/core/geom/3d/atlas/param/atlas_chart_param_validity.d.ts.map +1 -0
  77. package/src/core/geom/3d/atlas/param/atlas_chart_param_validity.js +73 -0
  78. package/src/core/geom/3d/atlas/param/atlas_chart_parameterize_bff.d.ts +37 -0
  79. package/src/core/geom/3d/atlas/param/atlas_chart_parameterize_bff.d.ts.map +1 -0
  80. package/src/core/geom/3d/atlas/param/atlas_chart_parameterize_bff.js +270 -0
  81. package/src/core/geom/3d/atlas/param/atlas_chart_parameterize_lscm.d.ts +23 -0
  82. package/src/core/geom/3d/atlas/param/atlas_chart_parameterize_lscm.d.ts.map +1 -0
  83. package/src/core/geom/3d/atlas/param/atlas_chart_parameterize_lscm.js +224 -0
  84. package/src/core/geom/3d/atlas/param/atlas_chart_parameterize_ortho.d.ts +14 -0
  85. package/src/core/geom/3d/atlas/param/atlas_chart_parameterize_ortho.d.ts.map +1 -0
  86. package/src/core/geom/3d/atlas/param/atlas_chart_parameterize_ortho.js +38 -0
  87. package/src/core/geom/3d/atlas/param/atlas_chart_stretch_metric.d.ts +22 -0
  88. package/src/core/geom/3d/atlas/param/atlas_chart_stretch_metric.d.ts.map +1 -0
  89. package/src/core/geom/3d/atlas/param/atlas_chart_stretch_metric.js +86 -0
  90. package/src/core/geom/3d/atlas/param/atlas_piecewise_resegment.d.ts +20 -0
  91. package/src/core/geom/3d/atlas/param/atlas_piecewise_resegment.d.ts.map +1 -0
  92. package/src/core/geom/3d/atlas/param/atlas_piecewise_resegment.js +183 -0
  93. package/src/core/geom/3d/atlas/param/fit_plane_basis.d.ts +27 -0
  94. package/src/core/geom/3d/atlas/param/fit_plane_basis.d.ts.map +1 -0
  95. package/src/core/geom/3d/atlas/param/fit_plane_basis.js +66 -0
  96. package/src/core/geom/3d/atlas/segment/RegionGraph.d.ts +31 -0
  97. package/src/core/geom/3d/atlas/segment/RegionGraph.d.ts.map +1 -0
  98. package/src/core/geom/3d/atlas/segment/RegionGraph.js +40 -0
  99. package/src/core/geom/3d/atlas/segment/atlas_build_region_graph.d.ts +23 -0
  100. package/src/core/geom/3d/atlas/segment/atlas_build_region_graph.d.ts.map +1 -0
  101. package/src/core/geom/3d/atlas/segment/atlas_build_region_graph.js +136 -0
  102. package/src/core/geom/3d/atlas/segment/atlas_compute_planar_regions.d.ts +24 -0
  103. package/src/core/geom/3d/atlas/segment/atlas_compute_planar_regions.d.ts.map +1 -0
  104. package/src/core/geom/3d/atlas/segment/atlas_compute_planar_regions.js +77 -0
  105. package/src/core/geom/3d/atlas/segment/atlas_merge_charts.d.ts +27 -0
  106. package/src/core/geom/3d/atlas/segment/atlas_merge_charts.d.ts.map +1 -0
  107. package/src/core/geom/3d/atlas/segment/atlas_merge_charts.js +113 -0
  108. package/src/core/geom/3d/atlas/segment/atlas_segment_charts.d.ts +44 -0
  109. package/src/core/geom/3d/atlas/segment/atlas_segment_charts.d.ts.map +1 -0
  110. package/src/core/geom/3d/atlas/segment/atlas_segment_charts.js +275 -0
  111. package/src/core/geom/3d/atlas/segment/atlas_segment_charts_atomic.d.ts +22 -0
  112. package/src/core/geom/3d/atlas/segment/atlas_segment_charts_atomic.d.ts.map +1 -0
  113. package/src/core/geom/3d/atlas/segment/atlas_segment_charts_atomic.js +199 -0
  114. package/src/core/geom/3d/line/line3_compute_point_segment_point_distance_unfolded.d.ts +32 -0
  115. package/src/core/geom/3d/line/line3_compute_point_segment_point_distance_unfolded.d.ts.map +1 -0
  116. package/src/core/geom/3d/line/line3_compute_point_segment_point_distance_unfolded.js +64 -0
  117. package/src/core/geom/3d/mat4/m4_from_rotation_translation_scale.d.ts +20 -0
  118. package/src/core/geom/3d/mat4/m4_from_rotation_translation_scale.d.ts.map +1 -0
  119. package/src/core/geom/3d/mat4/m4_from_rotation_translation_scale.js +66 -0
  120. package/src/core/geom/3d/sphere/harmonics/sh3_dering_optimize_positive.d.ts.map +1 -1
  121. package/src/core/geom/3d/sphere/harmonics/sh3_dering_optimize_positive.js +13 -11
  122. package/src/core/geom/3d/sphere/sphere_compute_bounding_of_2_spheres.d.ts.map +1 -1
  123. package/src/core/geom/3d/sphere/sphere_compute_bounding_of_2_spheres.js +4 -3
  124. package/src/core/geom/3d/topology/simplify/decimate_edge_collapse_snap.d.ts.map +1 -1
  125. package/src/core/geom/3d/topology/simplify/decimate_edge_collapse_snap.js +4 -3
  126. package/src/core/geom/3d/topology/simplify/quadratic/Quadric3.d.ts.map +1 -1
  127. package/src/core/geom/3d/topology/simplify/quadratic/Quadric3.js +4 -3
  128. package/src/core/geom/3d/topology/simplify/quadratic/apply_border_penalty_to_vertex_quadrics.d.ts.map +1 -1
  129. package/src/core/geom/3d/topology/simplify/quadratic/apply_border_penalty_to_vertex_quadrics.js +10 -6
  130. package/src/core/geom/3d/topology/struct/TopoMesh.js +2 -2
  131. package/src/core/geom/3d/topology/struct/TopoTriangle.d.ts +0 -2
  132. package/src/core/geom/3d/topology/struct/TopoTriangle.d.ts.map +1 -1
  133. package/src/core/geom/3d/topology/struct/TopoTriangle.js +2 -2
  134. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_face_find_path_polyanya.d.ts.map +1 -1
  135. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_face_find_path_polyanya.js +8 -27
  136. package/src/core/geom/vec3/v3_cotangent.d.ts +20 -0
  137. package/src/core/geom/vec3/v3_cotangent.d.ts.map +1 -0
  138. package/src/core/geom/vec3/v3_cotangent.js +29 -0
  139. package/src/core/geom/vec3/v3_matrix3_multiply.d.ts +19 -0
  140. package/src/core/geom/vec3/v3_matrix3_multiply.d.ts.map +1 -0
  141. package/src/core/geom/vec3/v3_matrix3_multiply.js +30 -0
  142. package/src/core/geom/vec3/v3_multiply.d.ts +16 -0
  143. package/src/core/geom/vec3/v3_multiply.d.ts.map +1 -0
  144. package/src/core/geom/vec3/v3_multiply.js +19 -0
  145. package/src/core/math/linalg/cg/cg_solve.d.ts +24 -0
  146. package/src/core/math/linalg/cg/cg_solve.d.ts.map +1 -0
  147. package/src/core/math/linalg/cg/cg_solve.js +106 -0
  148. package/src/core/math/linalg/cg/cg_solve_normal_equations.d.ts +21 -0
  149. package/src/core/math/linalg/cg/cg_solve_normal_equations.d.ts.map +1 -0
  150. package/src/core/math/linalg/cg/cg_solve_normal_equations.js +59 -0
  151. package/src/core/math/linalg/eigen/matrix_symmetric_3x3_eigen.d.ts +19 -0
  152. package/src/core/math/linalg/eigen/matrix_symmetric_3x3_eigen.d.ts.map +1 -0
  153. package/src/core/math/linalg/eigen/matrix_symmetric_3x3_eigen.js +117 -0
  154. package/src/core/math/linalg/sparse/SparseMatrixCSR.d.ts +50 -0
  155. package/src/core/math/linalg/sparse/SparseMatrixCSR.d.ts.map +1 -0
  156. package/src/core/math/linalg/sparse/SparseMatrixCSR.js +88 -0
  157. package/src/core/math/linalg/sparse/spm_matvec.d.ts +9 -0
  158. package/src/core/math/linalg/sparse/spm_matvec.d.ts.map +1 -0
  159. package/src/core/math/linalg/sparse/spm_matvec.js +22 -0
  160. package/src/core/math/linalg/sparse/spm_matvec_transpose.d.ts +12 -0
  161. package/src/core/math/linalg/sparse/spm_matvec_transpose.d.ts.map +1 -0
  162. package/src/core/math/linalg/sparse/spm_matvec_transpose.js +29 -0
  163. package/src/core/math/physics/mie/MIE_PARTICLES_STANDARD_PRECOMPUTED.d.ts +39 -0
  164. package/src/core/math/physics/mie/MIE_PARTICLES_STANDARD_PRECOMPUTED.js +22 -1
  165. package/src/core/math/physics/mie/compute_mie_particle_properties_rgb.d.ts.map +1 -1
  166. package/src/core/math/physics/mie/compute_mie_particle_properties_rgb.js +32 -9
  167. package/src/core/math/physics/mie/compute_mie_phase.d.ts +2 -3
  168. package/src/core/math/physics/mie/compute_mie_phase.d.ts.map +1 -1
  169. package/src/core/math/physics/mie/compute_mie_phase.js +1 -3
  170. package/src/core/math/physics/mie/lorenz_mie_coefs.d.ts +0 -1
  171. package/src/core/math/physics/mie/lorenz_mie_coefs.d.ts.map +1 -1
  172. package/src/core/math/physics/mie/lorenz_mie_coefs.js +0 -7
  173. package/src/engine/REVIEW_2026_07_03.md +211 -0
  174. package/src/engine/animation/curve/actionProcessorOperations/curveActions.d.ts.map +1 -1
  175. package/src/engine/animation/curve/actionProcessorOperations/curveActions.js +3 -2
  176. package/src/engine/animation/curve/compression/sample_animation_curve_to_float_array.js +1 -1
  177. package/src/engine/animation/keyed2/AnimationTrackPlayback.d.ts.map +1 -1
  178. package/src/engine/animation/keyed2/AnimationTrackPlayback.js +3 -1
  179. package/src/engine/asset/loaders/image/png/filter/png_filter_unFilterNone.js +2 -2
  180. package/src/engine/asset/preloader/AssetPreloader.d.ts.map +1 -1
  181. package/src/engine/asset/preloader/AssetPreloader.js +6 -0
  182. package/src/engine/control/first-person/sensors/FirstPersonSensorsSystem.d.ts.map +1 -1
  183. package/src/engine/control/first-person/sensors/FirstPersonSensorsSystem.js +5 -2
  184. package/src/engine/ecs/Entity.js +1 -1
  185. package/src/engine/ecs/EntityComponentDataset.d.ts.map +1 -1
  186. package/src/engine/ecs/EntityComponentDataset.js +1 -0
  187. package/src/engine/ecs/EntityManager.js +1 -1
  188. package/src/engine/ecs/EntityObserver.js +1 -1
  189. package/src/engine/ecs/animation/AnimationClip.js +1 -1
  190. package/src/engine/ecs/attachment/AttachmentSystem.js +2 -2
  191. package/src/engine/ecs/attachment/TransformAttachmentBinding.d.ts.map +1 -1
  192. package/src/engine/ecs/attachment/TransformAttachmentBinding.js +14 -3
  193. package/src/engine/ecs/fow/FogOfWar.js +2 -2
  194. package/src/engine/ecs/fow/shader/screenSpaceFogOfWarShader.d.ts.map +1 -1
  195. package/src/engine/ecs/fow/shader/screenSpaceFogOfWarShader.js +8 -0
  196. package/src/engine/ecs/gui/hud/HeadsUpDisplaySystem.js +3 -3
  197. package/src/engine/ecs/gui/position/ViewportPosition.d.ts +3 -1
  198. package/src/engine/ecs/gui/position/ViewportPosition.d.ts.map +1 -1
  199. package/src/engine/ecs/gui/position/ViewportPosition.js +4 -1
  200. package/src/engine/ecs/storage/binary/BinarySerializationRegistry.d.ts +10 -0
  201. package/src/engine/ecs/storage/binary/BinarySerializationRegistry.d.ts.map +1 -1
  202. package/src/engine/ecs/storage/binary/BinarySerializationRegistry.js +43 -0
  203. package/src/engine/ecs/storage/binary/object-v2/BinaryObjectDeSerializer.d.ts +93 -0
  204. package/src/engine/ecs/storage/binary/object-v2/BinaryObjectDeSerializer.d.ts.map +1 -0
  205. package/src/engine/ecs/storage/binary/object-v2/BinaryObjectDeSerializer.js +315 -0
  206. package/src/engine/ecs/storage/binary/object-v2/BinaryObjectSerializer.d.ts +48 -0
  207. package/src/engine/ecs/storage/binary/object-v2/BinaryObjectSerializer.d.ts.map +1 -0
  208. package/src/engine/ecs/storage/binary/object-v2/BinaryObjectSerializer.js +331 -0
  209. package/src/engine/ecs/storage/binary/object-v2/DESIGN.md +199 -0
  210. package/src/engine/ecs/storage/binary/object-v2/ObjectBinaryFormat.d.ts +53 -0
  211. package/src/engine/ecs/storage/binary/object-v2/ObjectBinaryFormat.d.ts.map +1 -0
  212. package/src/engine/ecs/storage/binary/object-v2/ObjectBinaryFormat.js +57 -0
  213. package/src/engine/ecs/storage/binary/object-v2/ObjectSerializationAdapter.d.ts +53 -0
  214. package/src/engine/ecs/storage/binary/object-v2/ObjectSerializationAdapter.d.ts.map +1 -0
  215. package/src/engine/ecs/storage/binary/object-v2/ObjectSerializationAdapter.js +56 -0
  216. package/src/engine/ecs/storage/binary/object-v2/README.md +110 -0
  217. package/src/engine/ecs/storage/binary/object-v2/objectStringCodec.d.ts +13 -0
  218. package/src/engine/ecs/storage/binary/object-v2/objectStringCodec.d.ts.map +1 -0
  219. package/src/engine/ecs/storage/binary/object-v2/objectStringCodec.js +48 -0
  220. package/src/engine/ecs/storage/binary/object-v2/serializerTestHarness.d.ts +29 -0
  221. package/src/engine/ecs/storage/binary/object-v2/serializerTestHarness.d.ts.map +1 -0
  222. package/src/engine/ecs/storage/binary/object-v2/serializerTestHarness.js +44 -0
  223. package/src/engine/ecs/terrain/ecs/Terrain.d.ts.map +1 -1
  224. package/src/engine/ecs/terrain/ecs/Terrain.js +4 -3
  225. package/src/engine/ecs/terrain/tiles/TerrainTile.js +2 -2
  226. package/src/engine/ecs/terrain/tiles/TerrainTileManager.d.ts.map +1 -1
  227. package/src/engine/ecs/terrain/tiles/TerrainTileManager.js +9 -8
  228. package/src/engine/graphics/GraphicsEngine.d.ts.map +1 -1
  229. package/src/engine/graphics/GraphicsEngine.js +2 -1
  230. package/src/engine/graphics/camera/makeScreenScissorFrustum.d.ts.map +1 -1
  231. package/src/engine/graphics/camera/makeScreenScissorFrustum.js +11 -10
  232. package/src/engine/graphics/canvas/canvas2d_draw_linear_scale.d.ts.map +1 -1
  233. package/src/engine/graphics/canvas/canvas2d_draw_linear_scale.js +3 -1
  234. package/src/engine/graphics/ecs/animation/animator/graph/definition/serialization/readAnimationGraphDefinitionFromJSON.d.ts +1 -1
  235. package/src/engine/graphics/ecs/animation/animator/graph/definition/serialization/readAnimationGraphDefinitionFromJSON.d.ts.map +1 -1
  236. package/src/engine/graphics/ecs/animation/animator/graph/definition/serialization/readAnimationGraphDefinitionFromJSON.js +2 -2
  237. package/src/engine/graphics/ecs/animation/animator/graph/definition/serialization/writeAnimationGraphDefinitionToJSON.d.ts.map +1 -1
  238. package/src/engine/graphics/ecs/animation/animator/graph/definition/serialization/writeAnimationGraphDefinitionToJSON.js +2 -0
  239. package/src/engine/graphics/ecs/camera/Camera.d.ts.map +1 -1
  240. package/src/engine/graphics/ecs/camera/Camera.js +4 -0
  241. package/src/engine/graphics/ecs/camera/auto_set_camera_clipping_planes.d.ts.map +1 -1
  242. package/src/engine/graphics/ecs/camera/auto_set_camera_clipping_planes.js +7 -2
  243. package/src/engine/graphics/ecs/camera/set_camera_aspect_ratio.js +1 -1
  244. package/src/engine/graphics/ecs/decal/v2/FPDecalSystem.js +2 -2
  245. package/src/engine/graphics/ecs/decal/v2/prototypeDecalSystem.js +2 -2
  246. package/src/engine/graphics/ecs/highlight/system/ShadedGeometryHighlightSystem.d.ts.map +1 -1
  247. package/src/engine/graphics/ecs/highlight/system/ShadedGeometryHighlightSystem.js +4 -1
  248. package/src/engine/graphics/ecs/light/binding/LightBinding.js +2 -2
  249. package/src/engine/graphics/ecs/mesh/MeshSystem.js +1 -1
  250. package/src/engine/graphics/ecs/mesh/SkeletonUtils.js +1 -1
  251. package/src/engine/graphics/ecs/mesh-v2/ShadedGeometry.js +2 -2
  252. package/src/engine/graphics/ecs/mesh-v2/ShadedGeometrySystem.d.ts.map +1 -1
  253. package/src/engine/graphics/ecs/mesh-v2/ShadedGeometrySystem.js +0 -1
  254. package/src/engine/graphics/ecs/mesh-v2/sg_hierarchy_compute_bounding_box_via_parent_entity.js +1 -1
  255. package/src/engine/graphics/ecs/path/tube/build/computeFrenetFrames.d.ts.map +1 -1
  256. package/src/engine/graphics/ecs/path/tube/build/computeFrenetFrames.js +8 -7
  257. package/src/engine/graphics/ecs/water/WaterSystem.d.ts +6 -0
  258. package/src/engine/graphics/ecs/water/WaterSystem.d.ts.map +1 -1
  259. package/src/engine/graphics/ecs/water/WaterSystem.js +12 -1
  260. package/src/engine/graphics/geometry/MikkT/AvgTSpace.d.ts.map +1 -1
  261. package/src/engine/graphics/geometry/MikkT/AvgTSpace.js +11 -6
  262. package/src/engine/graphics/geometry/MikkT/BuildNeighborsFast.d.ts.map +1 -1
  263. package/src/engine/graphics/geometry/MikkT/BuildNeighborsFast.js +2 -3
  264. package/src/engine/graphics/geometry/MikkT/CalcTexArea.d.ts.map +1 -1
  265. package/src/engine/graphics/geometry/MikkT/CalcTexArea.js +3 -4
  266. package/src/engine/graphics/geometry/MikkT/DegenEpilogue.js +4 -4
  267. package/src/engine/graphics/geometry/MikkT/EvalTspace.d.ts.map +1 -1
  268. package/src/engine/graphics/geometry/MikkT/EvalTspace.js +11 -8
  269. package/src/engine/graphics/geometry/MikkT/GenerateSharedVerticesIndexList.d.ts.map +1 -1
  270. package/src/engine/graphics/geometry/MikkT/GenerateSharedVerticesIndexList.js +7 -8
  271. package/src/engine/graphics/geometry/MikkT/GenerateTSpaces.js +8 -8
  272. package/src/engine/graphics/geometry/MikkT/InitTriInfo.d.ts.map +1 -1
  273. package/src/engine/graphics/geometry/MikkT/InitTriInfo.js +30 -25
  274. package/src/engine/graphics/geometry/MikkT/MikkTSpace.js +7 -7
  275. package/src/engine/graphics/geometry/MikkT/NormalizeSafe.d.ts +0 -1
  276. package/src/engine/graphics/geometry/MikkT/NormalizeSafe.d.ts.map +1 -1
  277. package/src/engine/graphics/geometry/MikkT/NormalizeSafe.js +6 -4
  278. package/src/engine/graphics/geometry/MikkT/STSpace.d.ts +0 -2
  279. package/src/engine/graphics/geometry/MikkT/STSpace.d.ts.map +1 -1
  280. package/src/engine/graphics/geometry/MikkT/STSpace.js +3 -3
  281. package/src/engine/graphics/geometry/MikkT/v3_scale_dot_sub_normalize.d.ts +0 -2
  282. package/src/engine/graphics/geometry/MikkT/v3_scale_dot_sub_normalize.d.ts.map +1 -1
  283. package/src/engine/graphics/geometry/MikkT/v3_scale_dot_sub_normalize.js +0 -1
  284. package/src/engine/graphics/geometry/buffered/ensureGeometryBoundingSphere.js +1 -1
  285. package/src/engine/graphics/geometry/buffered/query/bvh32_geometry_nearest.d.ts.map +1 -1
  286. package/src/engine/graphics/geometry/buffered/query/bvh32_geometry_nearest.js +0 -15
  287. package/src/engine/graphics/geometry/instancing/InstancedMeshGroup.js +10 -10
  288. package/src/engine/graphics/geometry/optimization/merge/merge_geometry_hierarchy.js +1 -1
  289. package/src/engine/graphics/impostors/octahedral/ImpostorBaker.d.ts +0 -2
  290. package/src/engine/graphics/impostors/octahedral/ImpostorBaker.d.ts.map +1 -1
  291. package/src/engine/graphics/impostors/octahedral/ImpostorBaker.js +4 -3
  292. package/src/engine/graphics/impostors/octahedral/grid/HemiOctahedralUvEncoder.js +2 -2
  293. package/src/engine/graphics/impostors/octahedral/grid/UvEncoder.d.ts +17 -7
  294. package/src/engine/graphics/impostors/voxel/VoxelImpostorBaker.js +2 -2
  295. package/src/engine/graphics/material/SplatMaterial.js +1 -1
  296. package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.d.ts.map +1 -1
  297. package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.js +3 -2
  298. package/src/engine/graphics/particles/particular/engine/emitter/ParticlePool.js +1 -1
  299. package/src/engine/graphics/particles/particular/engine/utils/volume/ParticleVolume.js +3 -3
  300. package/src/engine/graphics/particles/particular/engine/utils/volume/prototypeParticleVolume.js +4 -3
  301. package/src/engine/graphics/particles/particular/group/ParticleGroup.d.ts.map +1 -1
  302. package/src/engine/graphics/particles/particular/group/ParticleGroup.js +3 -2
  303. package/src/engine/graphics/render/forward_plus/LightManager.js +2 -2
  304. package/src/engine/graphics/render/forward_plus/model/Decal.d.ts +0 -2
  305. package/src/engine/graphics/render/forward_plus/model/Decal.d.ts.map +1 -1
  306. package/src/engine/graphics/render/forward_plus/model/Decal.js +3 -3
  307. package/src/engine/graphics/render/forward_plus/plugin/ForwardPlusRenderingPlugin.js +1 -1
  308. package/src/engine/graphics/render/forward_plus/prototype/prototypeLightManager.js +4 -3
  309. package/src/engine/graphics/render/visibility/hiz/prototypeHiZ.js +6 -4
  310. package/src/engine/graphics/sh3/gi/material/MaterialTransformer.d.ts +1 -8
  311. package/src/engine/graphics/sh3/gi/material/MaterialTransformer.d.ts.map +1 -1
  312. package/src/engine/graphics/sh3/gi/material/MaterialTransformer.js +2 -14
  313. package/src/engine/graphics/sh3/gi/material/ProbeResolutionStage.d.ts +9 -0
  314. package/src/engine/graphics/sh3/gi/material/ProbeResolutionStage.d.ts.map +1 -0
  315. package/src/engine/graphics/sh3/gi/material/ProbeResolutionStage.js +14 -0
  316. package/src/engine/graphics/sh3/lightmap/ARTIFACTS_PLAN.md +146 -0
  317. package/src/engine/graphics/sh3/lightmap/CODE_REVIEW.md +121 -0
  318. package/src/engine/graphics/sh3/lightmap/LIGHTMAPPER_REVIEW.md +183 -0
  319. package/src/engine/graphics/sh3/lightmap/bake_lightmap_for_scene.d.ts +90 -0
  320. package/src/engine/graphics/sh3/lightmap/bake_lightmap_for_scene.d.ts.map +1 -0
  321. package/src/engine/graphics/sh3/lightmap/bake_lightmap_for_scene.js +681 -0
  322. package/src/engine/graphics/sh3/lightmap/lightmap_build_geometry.d.ts +32 -0
  323. package/src/engine/graphics/sh3/lightmap/lightmap_build_geometry.d.ts.map +1 -0
  324. package/src/engine/graphics/sh3/lightmap/lightmap_build_geometry.js +155 -0
  325. package/src/engine/graphics/sh3/lightmap/lightmap_denoise.d.ts +49 -0
  326. package/src/engine/graphics/sh3/lightmap/lightmap_denoise.d.ts.map +1 -0
  327. package/src/engine/graphics/sh3/lightmap/lightmap_denoise.js +136 -0
  328. package/src/engine/graphics/sh3/lightmap/lightmap_dilate.d.ts +19 -0
  329. package/src/engine/graphics/sh3/lightmap/lightmap_dilate.d.ts.map +1 -0
  330. package/src/engine/graphics/sh3/lightmap/lightmap_dilate.js +89 -0
  331. package/src/engine/graphics/sh3/lightmap/lightmap_gather.d.ts +54 -0
  332. package/src/engine/graphics/sh3/lightmap/lightmap_gather.d.ts.map +1 -0
  333. package/src/engine/graphics/sh3/lightmap/lightmap_gather.js +168 -0
  334. package/src/engine/graphics/sh3/lightmap/lightmap_rasterize_triangle.d.ts +30 -0
  335. package/src/engine/graphics/sh3/lightmap/lightmap_rasterize_triangle.d.ts.map +1 -0
  336. package/src/engine/graphics/sh3/lightmap/lightmap_rasterize_triangle.js +145 -0
  337. package/src/engine/graphics/sh3/lightmap/lightmap_seam_fix.d.ts +38 -0
  338. package/src/engine/graphics/sh3/lightmap/lightmap_seam_fix.d.ts.map +1 -0
  339. package/src/engine/graphics/sh3/lightmap/lightmap_seam_fix.js +152 -0
  340. package/src/engine/graphics/sh3/lightmap/prototypeLightmapBaker.d.ts +2 -0
  341. package/src/engine/graphics/sh3/lightmap/prototypeLightmapBaker.d.ts.map +1 -0
  342. package/src/engine/graphics/sh3/lightmap/prototypeLightmapBaker.js +186 -0
  343. package/src/engine/graphics/sh3/lpg/LightProbeGrid.d.ts +69 -0
  344. package/src/engine/graphics/sh3/lpg/LightProbeGrid.d.ts.map +1 -0
  345. package/src/engine/graphics/sh3/lpg/LightProbeGrid.js +173 -0
  346. package/src/engine/graphics/sh3/lpg/LightProbeGridBaker.d.ts +24 -0
  347. package/src/engine/graphics/sh3/lpg/LightProbeGridBaker.d.ts.map +1 -0
  348. package/src/engine/graphics/sh3/lpg/LightProbeGridBaker.js +88 -0
  349. package/src/engine/graphics/sh3/lpg/build_light_probe_grid_for_scene.d.ts +20 -0
  350. package/src/engine/graphics/sh3/lpg/build_light_probe_grid_for_scene.d.ts.map +1 -0
  351. package/src/engine/graphics/sh3/lpg/build_light_probe_grid_for_scene.js +79 -0
  352. package/src/engine/graphics/sh3/lpg/light_probe_grid_obtain_storage_cached.d.ts +11 -0
  353. package/src/engine/graphics/sh3/lpg/light_probe_grid_obtain_storage_cached.d.ts.map +1 -0
  354. package/src/engine/graphics/sh3/lpg/light_probe_grid_obtain_storage_cached.js +84 -0
  355. package/src/engine/graphics/sh3/lpg/light_probe_grid_textures.d.ts +29 -0
  356. package/src/engine/graphics/sh3/lpg/light_probe_grid_textures.d.ts.map +1 -0
  357. package/src/engine/graphics/sh3/lpg/light_probe_grid_textures.js +160 -0
  358. package/src/engine/graphics/sh3/lpg/material/LightProbeGridMaterialTransformer.d.ts +23 -0
  359. package/src/engine/graphics/sh3/lpg/material/LightProbeGridMaterialTransformer.d.ts.map +1 -0
  360. package/src/engine/graphics/sh3/lpg/material/LightProbeGridMaterialTransformer.js +228 -0
  361. package/src/engine/graphics/sh3/lpg/material/chunk_lpg_get_irradiance_at.d.ts +2 -0
  362. package/src/engine/graphics/sh3/lpg/material/chunk_lpg_get_irradiance_at.d.ts.map +1 -0
  363. package/src/engine/graphics/sh3/lpg/material/chunk_lpg_get_irradiance_at.js +24 -0
  364. package/src/engine/graphics/sh3/lpg/material/common.d.ts +3 -0
  365. package/src/engine/graphics/sh3/lpg/material/common.d.ts.map +1 -0
  366. package/src/engine/graphics/sh3/lpg/material/common.js +73 -0
  367. package/src/engine/graphics/sh3/lpg/material/space_fragment/build_fragment_shader.d.ts +6 -0
  368. package/src/engine/graphics/sh3/lpg/material/space_fragment/build_fragment_shader.d.ts.map +1 -0
  369. package/src/engine/graphics/sh3/lpg/material/space_fragment/build_fragment_shader.js +42 -0
  370. package/src/engine/graphics/sh3/lpg/material/space_fragment/build_vertex_shader.d.ts +6 -0
  371. package/src/engine/graphics/sh3/lpg/material/space_fragment/build_vertex_shader.d.ts.map +1 -0
  372. package/src/engine/graphics/sh3/lpg/material/space_fragment/build_vertex_shader.js +49 -0
  373. package/src/engine/graphics/sh3/lpg/material/space_fragment/space_fragment_transform_shader.d.ts +9 -0
  374. package/src/engine/graphics/sh3/lpg/material/space_fragment/space_fragment_transform_shader.d.ts.map +1 -0
  375. package/src/engine/graphics/sh3/lpg/material/space_fragment/space_fragment_transform_shader.js +12 -0
  376. package/src/engine/graphics/sh3/lpg/material/space_vertex/build_fragment_shader.d.ts +6 -0
  377. package/src/engine/graphics/sh3/lpg/material/space_vertex/build_fragment_shader.d.ts.map +1 -0
  378. package/src/engine/graphics/sh3/lpg/material/space_vertex/build_fragment_shader.js +30 -0
  379. package/src/engine/graphics/sh3/lpg/material/space_vertex/build_vertex_shader.d.ts +6 -0
  380. package/src/engine/graphics/sh3/lpg/material/space_vertex/build_vertex_shader.d.ts.map +1 -0
  381. package/src/engine/graphics/sh3/lpg/material/space_vertex/build_vertex_shader.js +41 -0
  382. package/src/engine/graphics/sh3/lpg/material/space_vertex/preamble.frag.d.ts +3 -0
  383. package/src/engine/graphics/sh3/lpg/material/space_vertex/preamble.frag.d.ts.map +1 -0
  384. package/src/engine/graphics/sh3/lpg/material/space_vertex/preamble.frag.js +15 -0
  385. package/src/engine/graphics/sh3/lpg/material/space_vertex/preamble.vert.d.ts +3 -0
  386. package/src/engine/graphics/sh3/lpg/material/space_vertex/preamble.vert.d.ts.map +1 -0
  387. package/src/engine/graphics/sh3/lpg/material/space_vertex/preamble.vert.js +9 -0
  388. package/src/engine/graphics/sh3/lpg/material/space_vertex/space_vertex_transform_shader.d.ts +9 -0
  389. package/src/engine/graphics/sh3/lpg/material/space_vertex/space_vertex_transform_shader.d.ts.map +1 -0
  390. package/src/engine/graphics/sh3/lpg/material/space_vertex/space_vertex_transform_shader.js +12 -0
  391. package/src/engine/graphics/sh3/lpg/serialization/LightProbeGridSerializationAdapter.d.ts +20 -0
  392. package/src/engine/graphics/sh3/lpg/serialization/LightProbeGridSerializationAdapter.d.ts.map +1 -0
  393. package/src/engine/graphics/sh3/lpg/serialization/LightProbeGridSerializationAdapter.js +59 -0
  394. package/src/engine/graphics/sh3/path_tracer/PathTracedMesh.d.ts.map +1 -1
  395. package/src/engine/graphics/sh3/path_tracer/PathTracedMesh.js +2 -2
  396. package/src/engine/graphics/sh3/path_tracer/PathTracer.js +2 -2
  397. package/src/engine/graphics/sh3/path_tracer/material/MaterialConverter.d.ts.map +1 -1
  398. package/src/engine/graphics/sh3/path_tracer/material/MaterialConverter.js +8 -0
  399. package/src/engine/graphics/sh3/path_tracer/prepare_scene_gltf.d.ts.map +1 -1
  400. package/src/engine/graphics/sh3/path_tracer/prepare_scene_gltf.js +6 -4
  401. package/src/engine/graphics/sh3/path_tracer/prototypePathTracer.js +3 -3
  402. package/src/engine/graphics/sh3/path_tracer/texture/sample_material.d.ts.map +1 -1
  403. package/src/engine/graphics/sh3/path_tracer/texture/sample_material.js +5 -4
  404. package/src/engine/graphics/sh3/prototypeLightProbeGrid.d.ts +2 -0
  405. package/src/engine/graphics/sh3/prototypeLightProbeGrid.d.ts.map +1 -0
  406. package/src/engine/graphics/sh3/prototypeLightProbeGrid.js +170 -0
  407. package/src/engine/graphics/sh3/sky/hosek/prototype_hosek.js +2 -2
  408. package/src/engine/graphics/texture/atlas/AtlasLookupTexture.js +1 -1
  409. package/src/engine/graphics/texture/atlas/CachingTextureAtlas.js +1 -1
  410. package/src/engine/graphics/texture/sampler/resize/sampler2d_scale_down_lanczos.js +1 -1
  411. package/src/engine/graphics/texture/sampler/sampler2d_copy_with_margins.js +3 -3
  412. package/src/engine/graphics/util/build_max_height_pyramid.d.ts.map +1 -1
  413. package/src/engine/graphics/util/build_max_height_pyramid.js +5 -2
  414. package/src/engine/grid/transform2grid/Transform2GridPositionSystem.js +1 -1
  415. package/src/engine/input/devices/KeyboardDevice.d.ts +61 -14
  416. package/src/engine/input/devices/KeyboardDevice.d.ts.map +1 -1
  417. package/src/engine/input/devices/KeyboardDevice.js +41 -15
  418. package/src/engine/input/devices/isHTMLElementFocusable.d.ts.map +1 -1
  419. package/src/engine/input/devices/isHTMLElementFocusable.js +2 -9
  420. package/src/engine/input/ecs/components/InputBinding.d.ts +7 -1
  421. package/src/engine/input/ecs/components/InputBinding.d.ts.map +1 -1
  422. package/src/engine/input/ecs/components/InputBinding.js +8 -1
  423. package/src/engine/input/ecs/systems/InputControllerSystem.js +1 -1
  424. package/src/engine/intelligence/behavior/decorator/OverrideContextBehavior.d.ts +2 -1
  425. package/src/engine/intelligence/behavior/decorator/OverrideContextBehavior.d.ts.map +1 -1
  426. package/src/engine/intelligence/behavior/decorator/OverrideContextBehavior.js +6 -2
  427. package/src/engine/intelligence/behavior/selector/WeightedElement.js +1 -1
  428. package/src/engine/knowledge/database/StaticKnowledgeDatabase.d.ts.map +1 -1
  429. package/src/engine/knowledge/database/StaticKnowledgeDatabase.js +2 -4
  430. package/src/engine/logging/elastic/ElasticSearchLogger.d.ts +1 -2
  431. package/src/engine/logging/elastic/ElasticSearchLogger.d.ts.map +1 -1
  432. package/src/engine/logging/elastic/ElasticSearchLogger.js +14 -10
  433. package/src/engine/navigation/ecs/path_following/PathFollower.js +1 -1
  434. package/src/engine/navigation/grid/find_path_on_grid_astar.d.ts.map +1 -1
  435. package/src/engine/navigation/grid/find_path_on_grid_astar.js +5 -2
  436. package/src/engine/network/orchestrator/ServerAuthoritativeServer.d.ts +1 -1
  437. package/src/engine/network/orchestrator/ServerAuthoritativeServer.d.ts.map +1 -1
  438. package/src/engine/network/orchestrator/ServerAuthoritativeServer.js +17 -0
  439. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
  440. package/src/engine/physics/fluid/ecs/FluidSystem.d.ts +3 -3
  441. package/src/engine/scene/SceneManager.d.ts.map +1 -1
  442. package/src/engine/scene/SceneManager.js +4 -2
  443. package/src/engine/simulation/Ticker.d.ts.map +1 -1
  444. package/src/engine/simulation/Ticker.js +9 -0
  445. package/src/engine/sound/ecs/emitter/SoundEmitterSystem.d.ts.map +1 -1
  446. package/src/engine/sound/ecs/emitter/SoundEmitterSystem.js +6 -1
  447. package/src/engine/sound/material/concrete/json/serializeSoundMaterialToJSON.js +1 -1
  448. package/src/engine/sound/simulation/prototypeAcousticSolver.js +261 -143
  449. package/src/generation/theme/ThemeEngine.d.ts +9 -0
  450. package/src/generation/theme/ThemeEngine.d.ts.map +1 -1
  451. package/src/generation/theme/ThemeEngine.js +37 -2
@@ -0,0 +1,84 @@
1
+ import { BinaryBuffer } from "../../../../core/binary/BinaryBuffer.js";
2
+ import { AABB3 } from "../../../../core/geom/3d/aabb/AABB3.js";
3
+ import { number_pretty_print } from "../../../../core/primitives/numbers/number_pretty_print.js";
4
+ import { Transform } from "../../../ecs/transform/Transform.js";
5
+ import { ShadedGeometry } from "../../ecs/mesh-v2/ShadedGeometry.js";
6
+ import { build_light_probe_grid_for_scene } from "./build_light_probe_grid_for_scene.js";
7
+ import { LightProbeGrid } from "./LightProbeGrid.js";
8
+ import { LightProbeGridSerializationAdapter } from "./serialization/LightProbeGridSerializationAdapter.js";
9
+
10
+ /**
11
+ *
12
+ * @param {Engine} engine
13
+ * @param {string} path
14
+ * @param {LightProbeGrid} [grid]
15
+ * @param {number} [spacing] only used when building, if loading this parameter is ignored
16
+ * @return {Promise<LightProbeGrid>}
17
+ */
18
+ export async function light_probe_grid_obtain_storage_cached({
19
+ engine,
20
+ path,
21
+ grid = new LightProbeGrid(),
22
+ spacing = 1
23
+ }) {
24
+
25
+ grid.clear();
26
+
27
+ const key = `lpg:${path}`;
28
+
29
+ const adapter = new LightProbeGridSerializationAdapter();
30
+
31
+ if (await engine.storage.promiseContains(key)) {
32
+ const data = await engine.storage.promiseLoadBinary(key);
33
+
34
+ console.log(`LPG data size ${number_pretty_print(data.byteLength)} bytes`);
35
+
36
+ const buffer = BinaryBuffer.fromArrayBuffer(data);
37
+
38
+ adapter.deserialize(buffer, grid);
39
+
40
+ return grid;
41
+ }
42
+
43
+
44
+ const ecd = engine.entityManager.dataset;
45
+
46
+ // build bounding box for the scene
47
+ const mesh_bounds = new AABB3();
48
+ mesh_bounds.setNegativelyInfiniteBounds();
49
+
50
+ ecd.traverseEntities([ShadedGeometry, Transform],
51
+ /**
52
+ *
53
+ * @param {ShadedGeometry} sg
54
+ * @param transform
55
+ * @param entity
56
+ */
57
+ (sg, transform, entity) => {
58
+
59
+ const box = new AABB3();
60
+
61
+ sg.getBoundingBox(box);
62
+
63
+ mesh_bounds.union(box);
64
+
65
+ });
66
+
67
+ await build_light_probe_grid_for_scene({
68
+ grid,
69
+ engine,
70
+ ecd,
71
+ bounds: mesh_bounds,
72
+ spacing
73
+ });
74
+
75
+ const buffer = new BinaryBuffer();
76
+
77
+ adapter.serialize(buffer, grid);
78
+
79
+ buffer.trim();
80
+
81
+ engine.storage.promiseStoreBinary(key, buffer.data)
82
+
83
+ return grid;
84
+ }
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Create the half-float luminance volume of a {@link LightProbeGrid}. Each texel holds the 4 SH2 Y coefficients in RGBA.
3
+ * @param {number} resolution_x
4
+ * @param {number} resolution_y
5
+ * @param {number} resolution_z
6
+ * @returns {DataTexture3D}
7
+ */
8
+ export function make_light_probe_grid_luma_texture(resolution_x: number, resolution_y: number, resolution_z: number): DataTexture3D;
9
+ /**
10
+ * Create an 8-bit chrominance volume (one of Co / Cg) of a {@link LightProbeGrid}. Each texel holds the 4 SH2
11
+ * coefficients of that chroma channel in RGBA.
12
+ * @param {number} resolution_x
13
+ * @param {number} resolution_y
14
+ * @param {number} resolution_z
15
+ * @returns {DataTexture3D}
16
+ */
17
+ export function make_light_probe_grid_chroma_texture(resolution_x: number, resolution_y: number, resolution_z: number): DataTexture3D;
18
+ /**
19
+ * Write probe data of a grid into the YCoCg textures created by {@link make_light_probe_grid_luma_texture} and
20
+ * {@link make_light_probe_grid_chroma_texture}. Texture dimensions must match the grid resolution.
21
+ * @param {LightProbeGrid} grid
22
+ * @param {DataTexture3D} texture_y luminance, half-float
23
+ * @param {DataTexture3D} texture_co chroma-orange, 8-bit
24
+ * @param {DataTexture3D} texture_cg chroma-green, 8-bit
25
+ */
26
+ export function light_probe_grid_write_textures(grid: LightProbeGrid, texture_y: DataTexture3D, texture_co: DataTexture3D, texture_cg: DataTexture3D): void;
27
+ export const LPG_CHROMA_SCALE: 0.25;
28
+ import { DataTexture3D } from "three";
29
+ //# sourceMappingURL=light_probe_grid_textures.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"light_probe_grid_textures.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/sh3/lpg/light_probe_grid_textures.js"],"names":[],"mappings":"AA+BA;;;;;;GAMG;AACH,iEALW,MAAM,gBACN,MAAM,gBACN,MAAM,GACJ,aAAa,CA+BzB;AAED;;;;;;;GAOG;AACH,mEALW,MAAM,gBACN,MAAM,gBACN,MAAM,GACJ,aAAa,CA+BzB;AAUD;;;;;;;GAOG;AACH,iFAJW,aAAa,cACb,aAAa,cACb,aAAa,QAqCvB;AAtID,oCAAqC;8BAlB9B,OAAO"}
@@ -0,0 +1,160 @@
1
+ import {
2
+ ClampToEdgeWrapping,
3
+ DataTexture3D,
4
+ HalfFloatType,
5
+ LinearFilter,
6
+ RGBAFormat,
7
+ UnsignedByteType
8
+ } from "three";
9
+ import { to_half_float_uint16 } from "../../../../core/binary/to_half_float_uint16.js";
10
+ import { clamp } from "../../../../core/math/clamp.js";
11
+ import { rgb_to_ycocg } from "../../../../core/color/YCoCg/rgb_to_ycocg.js";
12
+
13
+ /*
14
+ YCoCg irradiance storage, after "Cross-Platform GI in Metro Exodus" (4A Games).
15
+ Luminance (Y) carries the HDR range and most of the perceptible detail, so it keeps half-float precision.
16
+ Chrominance (Co, Cg) is perceptually low-frequency and is dropped to 8-bit UNORM.
17
+
18
+ The 8-bit chroma is stored via a global affine map `stored = chroma * LPG_CHROMA_SCALE + 0.5` (decoded on the GPU
19
+ as `(stored - 0.5) / LPG_CHROMA_SCALE`). Because YCoCg is linear and this map is a global scale+bias, hardware
20
+ trilinear filtering of the three textures followed by reconstruction is exactly equivalent to filtering the
21
+ original RGB — the encoding does not disturb filtering.
22
+
23
+ Representable chroma range is +/- 0.5 / LPG_CHROMA_SCALE; chroma beyond it clips (a colored, very saturated probe
24
+ desaturates) while luminance, and therefore brightness, is preserved.
25
+ */
26
+ export const LPG_CHROMA_SCALE = 0.25;
27
+
28
+ const LPG_CHROMA_BIAS = 0.5;
29
+
30
+ const __ycocg = new Float32Array(3);
31
+
32
+ /**
33
+ * Create the half-float luminance volume of a {@link LightProbeGrid}. Each texel holds the 4 SH2 Y coefficients in RGBA.
34
+ * @param {number} resolution_x
35
+ * @param {number} resolution_y
36
+ * @param {number} resolution_z
37
+ * @returns {DataTexture3D}
38
+ */
39
+ export function make_light_probe_grid_luma_texture(resolution_x, resolution_y, resolution_z) {
40
+
41
+ const texture = new DataTexture3D(
42
+ new Uint16Array(resolution_x * resolution_y * resolution_z * 4),
43
+ resolution_x,
44
+ resolution_y,
45
+ resolution_z
46
+ );
47
+
48
+ texture.name = "Light Probe Grid SH2 Y";
49
+
50
+ texture.flipY = false;
51
+ texture.generateMipmaps = false;
52
+ texture.magFilter = LinearFilter;
53
+ texture.minFilter = LinearFilter;
54
+
55
+ texture.wrapS = ClampToEdgeWrapping;
56
+ texture.wrapT = ClampToEdgeWrapping;
57
+ texture.wrapR = ClampToEdgeWrapping;
58
+
59
+ texture.type = HalfFloatType;
60
+ texture.format = RGBAFormat;
61
+ texture.internalFormat = "RGBA16F";
62
+
63
+ texture.unpackAlignment = 4;
64
+
65
+ texture.needsUpdate = true;
66
+
67
+ return texture;
68
+ }
69
+
70
+ /**
71
+ * Create an 8-bit chrominance volume (one of Co / Cg) of a {@link LightProbeGrid}. Each texel holds the 4 SH2
72
+ * coefficients of that chroma channel in RGBA.
73
+ * @param {number} resolution_x
74
+ * @param {number} resolution_y
75
+ * @param {number} resolution_z
76
+ * @returns {DataTexture3D}
77
+ */
78
+ export function make_light_probe_grid_chroma_texture(resolution_x, resolution_y, resolution_z) {
79
+
80
+ const texture = new DataTexture3D(
81
+ new Uint8Array(resolution_x * resolution_y * resolution_z * 4),
82
+ resolution_x,
83
+ resolution_y,
84
+ resolution_z
85
+ );
86
+
87
+ texture.name = "Light Probe Grid SH2 chroma";
88
+
89
+ texture.flipY = false;
90
+ texture.generateMipmaps = false;
91
+ texture.magFilter = LinearFilter;
92
+ texture.minFilter = LinearFilter;
93
+
94
+ texture.wrapS = ClampToEdgeWrapping;
95
+ texture.wrapT = ClampToEdgeWrapping;
96
+ texture.wrapR = ClampToEdgeWrapping;
97
+
98
+ texture.type = UnsignedByteType;
99
+ texture.format = RGBAFormat;
100
+ texture.internalFormat = "RGBA8";
101
+
102
+ texture.unpackAlignment = 4;
103
+
104
+ texture.needsUpdate = true;
105
+
106
+ return texture;
107
+ }
108
+
109
+ /**
110
+ * @param {number} chroma
111
+ * @returns {number} 8-bit UNORM byte
112
+ */
113
+ function encode_chroma_byte(chroma) {
114
+ return clamp(Math.round((chroma * LPG_CHROMA_SCALE + LPG_CHROMA_BIAS) * 255), 0, 255);
115
+ }
116
+
117
+ /**
118
+ * Write probe data of a grid into the YCoCg textures created by {@link make_light_probe_grid_luma_texture} and
119
+ * {@link make_light_probe_grid_chroma_texture}. Texture dimensions must match the grid resolution.
120
+ * @param {LightProbeGrid} grid
121
+ * @param {DataTexture3D} texture_y luminance, half-float
122
+ * @param {DataTexture3D} texture_co chroma-orange, 8-bit
123
+ * @param {DataTexture3D} texture_cg chroma-green, 8-bit
124
+ */
125
+ export function light_probe_grid_write_textures(grid, texture_y, texture_co, texture_cg) {
126
+
127
+ const harmonics = grid.harmonics;
128
+ const count = grid.count;
129
+
130
+ const data_y = texture_y.image.data;
131
+ const data_co = texture_co.image.data;
132
+ const data_cg = texture_cg.image.data;
133
+
134
+ for (let i = 0; i < count; i++) {
135
+
136
+ const source_offset = i * 12;
137
+ const target_offset = i * 4;
138
+
139
+ for (let coefficient = 0; coefficient < 4; coefficient++) {
140
+
141
+ const source_address = source_offset + coefficient * 3;
142
+ const target_address = target_offset + coefficient;
143
+
144
+ rgb_to_ycocg(
145
+ __ycocg, 0,
146
+ harmonics[source_address],
147
+ harmonics[source_address + 1],
148
+ harmonics[source_address + 2]
149
+ );
150
+
151
+ data_y[target_address] = to_half_float_uint16(__ycocg[0]);
152
+ data_co[target_address] = encode_chroma_byte(__ycocg[1]);
153
+ data_cg[target_address] = encode_chroma_byte(__ycocg[2]);
154
+ }
155
+ }
156
+
157
+ texture_y.needsUpdate = true;
158
+ texture_co.needsUpdate = true;
159
+ texture_cg.needsUpdate = true;
160
+ }
@@ -0,0 +1,23 @@
1
+ export class LightProbeGridMaterialTransformer extends AbstractMaterialTransformer {
2
+ /**
3
+ *
4
+ * @param {LightProbeGrid} grid
5
+ * @param {number|ProbeResolutionStage} stage Vertex sampling is faster but less accurate, fragment is more expensive and precise
6
+ */
7
+ constructor({ grid, stage, }: LightProbeGrid);
8
+ /**
9
+ *
10
+ * @param {number} v
11
+ */
12
+ set intensity(arg: number);
13
+ /**
14
+ *
15
+ * @return {number}
16
+ */
17
+ get intensity(): number;
18
+ update(): void;
19
+ transform(source: any): any;
20
+ #private;
21
+ }
22
+ import { AbstractMaterialTransformer } from "../../../material/manager/AbstractMaterialTransformer.js";
23
+ //# sourceMappingURL=LightProbeGridMaterialTransformer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LightProbeGridMaterialTransformer.d.ts","sourceRoot":"","sources":["../../../../../../../src/engine/graphics/sh3/lpg/material/LightProbeGridMaterialTransformer.js"],"names":[],"mappings":"AAgBA;IA2FI;;;;OAIG;IACH,8CAYC;IAzBD;;;OAGG;IACH,2BAEC;IAdD;;;OAGG;IACH,wBAEC;IAiED,eA0CC;IAED,4BAoBC;;CACJ;4CAhO2C,0DAA0D"}
@@ -0,0 +1,228 @@
1
+ import { Vector3 } from "three";
2
+ import { assert } from "../../../../../core/assert.js";
3
+ import { composeCompile } from "../../../material/composeCompile.js";
4
+ import { AbstractMaterialTransformer } from "../../../material/manager/AbstractMaterialTransformer.js";
5
+ import { isLitMaterial } from "../../../render/forward_plus/plugin/isLitMaterial.js";
6
+ import { ProbeResolutionStage } from "../../gi/material/ProbeResolutionStage.js";
7
+ import {
8
+ light_probe_grid_write_textures,
9
+ make_light_probe_grid_chroma_texture,
10
+ make_light_probe_grid_luma_texture
11
+ } from "../light_probe_grid_textures.js";
12
+ import { space_fragment_transform_shader } from "./space_fragment/space_fragment_transform_shader.js";
13
+ import { space_vertex_transform_shader } from "./space_vertex/space_vertex_transform_shader.js";
14
+
15
+ const PROPERTY_TRANSFORMER_MARKER = '@light-probe-grid-material-transformer';
16
+
17
+ export class LightProbeGridMaterialTransformer extends AbstractMaterialTransformer {
18
+
19
+ /**
20
+ *
21
+ * @type {LightProbeGrid}
22
+ */
23
+ #grid;
24
+
25
+ /**
26
+ *
27
+ * @type {ProbeResolutionStage|number}
28
+ */
29
+ #sampling_stage = ProbeResolutionStage.Fragment;
30
+
31
+ #textures = {
32
+ sh_y: make_light_probe_grid_luma_texture(1, 1, 1),
33
+ sh_co: make_light_probe_grid_chroma_texture(1, 1, 1),
34
+ sh_cg: make_light_probe_grid_chroma_texture(1, 1, 1)
35
+ };
36
+
37
+ #uniforms = {
38
+ lpg_t_sh_y: {
39
+ type: "t",
40
+ value: this.#textures.sh_y
41
+ },
42
+ lpg_t_sh_co: {
43
+ type: "t",
44
+ value: this.#textures.sh_co
45
+ },
46
+ lpg_t_sh_cg: {
47
+ type: "t",
48
+ value: this.#textures.sh_cg
49
+ },
50
+ lpg_v3_bounds_min: {
51
+ value: new Vector3()
52
+ },
53
+ lpg_v3_bounds_max: {
54
+ value: new Vector3()
55
+ },
56
+ lpg_v3_uvw_scale: {
57
+ value: new Vector3()
58
+ },
59
+ lpg_v3_uvw_offset: {
60
+ value: new Vector3()
61
+ },
62
+ lpg_f_intensity: {
63
+ value: 1
64
+ }
65
+ };
66
+
67
+ /**
68
+ *
69
+ * @type {number}
70
+ */
71
+ #uniform_version = -1;
72
+
73
+ /**
74
+ *
75
+ * @param {{uniforms, glslVersion, defines, vertexShader, fragmentShader}} shader
76
+ */
77
+ #onBeforeCompile = (shader) => {
78
+ Object.assign(shader.uniforms, this.#uniforms);
79
+
80
+ switch (this.#sampling_stage) {
81
+ case ProbeResolutionStage.Vertex:
82
+ space_vertex_transform_shader(shader);
83
+ break;
84
+ case ProbeResolutionStage.Fragment:
85
+ space_fragment_transform_shader(shader);
86
+ break;
87
+ default:
88
+ throw new Error(`Unsupported resolution space ${this.#sampling_stage}`);
89
+ }
90
+ };
91
+
92
+ /**
93
+ *
94
+ * @return {number}
95
+ */
96
+ get intensity() {
97
+ return this.#uniforms.lpg_f_intensity.value;
98
+ }
99
+
100
+ /**
101
+ *
102
+ * @param {number} v
103
+ */
104
+ set intensity(v) {
105
+ this.#uniforms.lpg_f_intensity.value = v;
106
+ }
107
+
108
+ /**
109
+ *
110
+ * @param {LightProbeGrid} grid
111
+ * @param {number|ProbeResolutionStage} stage Vertex sampling is faster but less accurate, fragment is more expensive and precise
112
+ */
113
+ constructor({
114
+ grid,
115
+ stage = ProbeResolutionStage.Vertex,
116
+ }) {
117
+
118
+ super();
119
+
120
+ assert.defined(grid, 'grid');
121
+ assert.enum(stage, ProbeResolutionStage, 'stage');
122
+
123
+ this.#grid = grid;
124
+ this.#sampling_stage = stage;
125
+ }
126
+
127
+ /**
128
+ * Re-create channel textures when the grid resolution changes.
129
+ * Uniform objects are shared by reference with every compiled shader, so re-assigning their values is
130
+ * picked up by all transformed materials.
131
+ * @param {number} resolution_x
132
+ * @param {number} resolution_y
133
+ * @param {number} resolution_z
134
+ */
135
+ #ensure_texture_dimensions(resolution_x, resolution_y, resolution_z) {
136
+ const textures = this.#textures;
137
+
138
+ const image = textures.sh_y.image;
139
+
140
+ if (
141
+ image.width === resolution_x
142
+ && image.height === resolution_y
143
+ && image.depth === resolution_z
144
+ ) {
145
+ return;
146
+ }
147
+
148
+ textures.sh_y.dispose();
149
+ textures.sh_co.dispose();
150
+ textures.sh_cg.dispose();
151
+
152
+ textures.sh_y = make_light_probe_grid_luma_texture(resolution_x, resolution_y, resolution_z);
153
+ textures.sh_co = make_light_probe_grid_chroma_texture(resolution_x, resolution_y, resolution_z);
154
+ textures.sh_cg = make_light_probe_grid_chroma_texture(resolution_x, resolution_y, resolution_z);
155
+
156
+ const uniforms = this.#uniforms;
157
+
158
+ uniforms.lpg_t_sh_y.value = textures.sh_y;
159
+ uniforms.lpg_t_sh_co.value = textures.sh_co;
160
+ uniforms.lpg_t_sh_cg.value = textures.sh_cg;
161
+ }
162
+
163
+ update() {
164
+ const grid = this.#grid;
165
+
166
+ if (this.#uniform_version === grid.version) {
167
+ // up to date
168
+ return;
169
+ }
170
+
171
+ if (grid.count === 0) {
172
+ // nothing baked yet
173
+ return;
174
+ }
175
+
176
+ const resolution_x = grid.resolution_x;
177
+ const resolution_y = grid.resolution_y;
178
+ const resolution_z = grid.resolution_z;
179
+
180
+ this.#ensure_texture_dimensions(resolution_x, resolution_y, resolution_z);
181
+
182
+ const textures = this.#textures;
183
+
184
+ light_probe_grid_write_textures(grid, textures.sh_y, textures.sh_co, textures.sh_cg);
185
+
186
+ const uniforms = this.#uniforms;
187
+
188
+ const bounds = grid.bounds;
189
+
190
+ uniforms.lpg_v3_bounds_min.value.set(bounds.x0, bounds.y0, bounds.z0);
191
+ uniforms.lpg_v3_bounds_max.value.set(bounds.x1, bounds.y1, bounds.z1);
192
+
193
+ uniforms.lpg_v3_uvw_scale.value.set(
194
+ (resolution_x - 1) / resolution_x,
195
+ (resolution_y - 1) / resolution_y,
196
+ (resolution_z - 1) / resolution_z
197
+ );
198
+ uniforms.lpg_v3_uvw_offset.value.set(
199
+ 0.5 / resolution_x,
200
+ 0.5 / resolution_y,
201
+ 0.5 / resolution_z
202
+ );
203
+
204
+ this.#uniform_version = grid.version;
205
+ }
206
+
207
+ transform(source) {
208
+ if (source.hasOwnProperty(PROPERTY_TRANSFORMER_MARKER)) {
209
+ // already transformed
210
+
211
+ if (source[PROPERTY_TRANSFORMER_MARKER] !== this) {
212
+ throw new Error('The material is already transformed, but is associated with a different transformer instance');
213
+ } else {
214
+ return source;
215
+ }
216
+
217
+ }
218
+
219
+ if (isLitMaterial(source)) {
220
+
221
+ source.onBeforeCompile = composeCompile(source.onBeforeCompile, this.#onBeforeCompile);
222
+
223
+ source[PROPERTY_TRANSFORMER_MARKER] = this;
224
+ }
225
+
226
+ return source;
227
+ }
228
+ }
@@ -0,0 +1,2 @@
1
+ export const chunk_lpg_get_irradiance_at: "\n#ifndef LPG_CHUNK_GET_IRRADIANCE_AT\n#define LPG_CHUNK_GET_IRRADIANCE_AT\n\nvec3 lpg_get_irradiance_at(in vec3 normal, in vec3 shCoefficients[4]) {\n // normal is assumed to have unit length\n\n // band 0\n vec3 result = shCoefficients[0] * 0.8862269254527579;\n\n // band 1\n result += shCoefficients[1] * 1.0233267079464885 * normal.y;\n result += shCoefficients[2] * 1.0233267079464885 * normal.z;\n result += shCoefficients[3] * 1.0233267079464885 * normal.x;\n\n return result;\n}\n\n#endif\n";
2
+ //# sourceMappingURL=chunk_lpg_get_irradiance_at.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunk_lpg_get_irradiance_at.d.ts","sourceRoot":"","sources":["../../../../../../../src/engine/graphics/sh3/lpg/material/chunk_lpg_get_irradiance_at.js"],"names":[],"mappings":"AAIA,wjBAmBC"}
@@ -0,0 +1,24 @@
1
+
2
+ // source: https://graphics.stanford.edu/papers/envmap/envmap.pdf
3
+ // first two bands of chunk_lpv_get_irradiance_at, constants include the cosine-lobe convolution
4
+ //language=GLSL
5
+ export const chunk_lpg_get_irradiance_at = `
6
+ #ifndef LPG_CHUNK_GET_IRRADIANCE_AT
7
+ #define LPG_CHUNK_GET_IRRADIANCE_AT
8
+
9
+ vec3 lpg_get_irradiance_at(in vec3 normal, in vec3 shCoefficients[4]) {
10
+ // normal is assumed to have unit length
11
+
12
+ // band 0
13
+ vec3 result = shCoefficients[0] * 0.8862269254527579;
14
+
15
+ // band 1
16
+ result += shCoefficients[1] * 1.0233267079464885 * normal.y;
17
+ result += shCoefficients[2] * 1.0233267079464885 * normal.z;
18
+ result += shCoefficients[3] * 1.0233267079464885 * normal.x;
19
+
20
+ return result;
21
+ }
22
+
23
+ #endif
24
+ `
@@ -0,0 +1,3 @@
1
+ declare const _default: string;
2
+ export default _default;
3
+ //# sourceMappingURL=common.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../../../../../src/engine/graphics/sh3/lpg/material/common.js"],"names":[],"mappings":""}
@@ -0,0 +1,73 @@
1
+ import { chunk_lpg_get_irradiance_at } from "./chunk_lpg_get_irradiance_at.js";
2
+ import { LPG_CHROMA_SCALE } from "../light_probe_grid_textures.js";
3
+
4
+ // decode multiplier for the 8-bit chroma textures (see light_probe_grid_textures.js)
5
+ const LPG_CHROMA_DECODE = 1 / LPG_CHROMA_SCALE;
6
+
7
+ // language=GLSL
8
+ export default `
9
+ #ifndef LPG_SHADER_CHUNK_COMMON
10
+ #define LPG_SHADER_CHUNK_COMMON
11
+
12
+ precision highp sampler3D;
13
+
14
+ uniform sampler3D lpg_t_sh_y;
15
+ uniform sampler3D lpg_t_sh_co;
16
+ uniform sampler3D lpg_t_sh_cg;
17
+
18
+ uniform vec3 lpg_v3_bounds_min;
19
+ uniform vec3 lpg_v3_bounds_max;
20
+
21
+ /*
22
+ Probes sit on the bounds faces, texels do not: the first and the last probe layer of an axis with N layers map
23
+ to texel centers 0.5/N and 1 - 0.5/N. uvw = normalized * (N-1)/N + 0.5/N re-aligns hardware trilinear filtering
24
+ with the probe lattice; scale and offset are precomputed per-axis on the CPU.
25
+ */
26
+ uniform vec3 lpg_v3_uvw_scale;
27
+ uniform vec3 lpg_v3_uvw_offset;
28
+
29
+ /*
30
+ Irradiance is stored as YCoCg (Metro Exodus): half-float luminance + two 8-bit chroma volumes. The chroma
31
+ encoding stored = chroma * LPG_CHROMA_SCALE + 0.5 is a global scale+bias, so hardware trilinear filtering of all
32
+ three volumes stays exactly equivalent to filtering RGB; we simply decode after the fetch.
33
+ */
34
+ const float lpg_chroma_decode = ${LPG_CHROMA_DECODE.toFixed(8)};
35
+
36
+ ${ chunk_lpg_get_irradiance_at }
37
+
38
+ vec3 lpg_compute_uvw(in vec3 position) {
39
+ vec3 normalized = (position - lpg_v3_bounds_min) / (lpg_v3_bounds_max - lpg_v3_bounds_min);
40
+
41
+ return normalized * lpg_v3_uvw_scale + lpg_v3_uvw_offset;
42
+ }
43
+
44
+ vec3[4] lpg_fetch_sh(in vec3 position) {
45
+ vec3 uvw = lpg_compute_uvw(position);
46
+
47
+ // positions outside the bounds clamp to the nearest edge probe
48
+ vec4 y = texture(lpg_t_sh_y, uvw);
49
+ vec4 co = (texture(lpg_t_sh_co, uvw) - 0.5) * lpg_chroma_decode;
50
+ vec4 cg = (texture(lpg_t_sh_cg, uvw) - 0.5) * lpg_chroma_decode;
51
+
52
+ // reconstruct RGB per coefficient: R = Y + Co - Cg, G = Y + Cg, B = Y - Co - Cg
53
+ vec4 r = y + co - cg;
54
+ vec4 g = y + cg;
55
+ vec4 b = y - co - cg;
56
+
57
+ return vec3[4](
58
+ vec3(r.x, g.x, b.x),
59
+ vec3(r.y, g.y, b.y),
60
+ vec3(r.z, g.z, b.z),
61
+ vec3(r.w, g.w, b.w)
62
+ );
63
+ }
64
+
65
+ vec3 lpg_sample_irradiance(in vec3 position, in vec3 normal) {
66
+
67
+ vec3[4] sh = lpg_fetch_sh(position);
68
+
69
+ return lpg_get_irradiance_at(normal, sh);
70
+ }
71
+
72
+ #endif
73
+ `
@@ -0,0 +1,6 @@
1
+ /**
2
+ *
3
+ * @param {string} source
4
+ */
5
+ export function build_fragment_shader(source: string): string;
6
+ //# sourceMappingURL=build_fragment_shader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build_fragment_shader.d.ts","sourceRoot":"","sources":["../../../../../../../../src/engine/graphics/sh3/lpg/material/space_fragment/build_fragment_shader.js"],"names":[],"mappings":"AA0BA;;;GAGG;AACH,8CAFW,MAAM,UAahB"}