@woosh/meep-engine 2.107.0 → 2.108.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 (315) hide show
  1. package/build/bundle-worker-image-decoder.js +1 -1
  2. package/build/meep.cjs +255 -172
  3. package/build/meep.min.js +1 -1
  4. package/build/meep.module.js +255 -173
  5. package/editor/tools/paint/TerrainHeightPaintTool.js +5 -5
  6. package/package.json +1 -1
  7. package/src/core/binary/float_to_uint8.d.ts +7 -0
  8. package/src/core/binary/float_to_uint8.d.ts.map +1 -0
  9. package/src/core/binary/{float2uint8.js → float_to_uint8.js} +1 -1
  10. package/src/core/binary/int32_to_binary_string.d.ts +3 -2
  11. package/src/core/binary/int32_to_binary_string.d.ts.map +1 -1
  12. package/src/core/binary/int32_to_binary_string.js +18 -14
  13. package/src/core/binary/split_by_3.spec.d.ts +2 -0
  14. package/src/core/binary/split_by_3.spec.d.ts.map +1 -0
  15. package/src/core/binary/split_by_3.spec.js +22 -0
  16. package/src/core/binary/to_half_float_uint16.d.ts.map +1 -1
  17. package/src/core/binary/to_half_float_uint16.js +7 -5
  18. package/src/core/binary/uint8_to_float.d.ts +7 -0
  19. package/src/core/binary/uint8_to_float.d.ts.map +1 -0
  20. package/src/core/binary/{uint82float.js → uint8_to_float.js} +1 -1
  21. package/src/core/binary/uint8_to_float.spec.d.ts +2 -0
  22. package/src/core/binary/uint8_to_float.spec.d.ts.map +1 -0
  23. package/src/core/binary/uint8_to_float.spec.js +7 -0
  24. package/src/core/codegen/codeToBlob.d.ts +8 -0
  25. package/src/core/codegen/codeToBlob.d.ts.map +1 -0
  26. package/src/core/codegen/codeToBlob.js +36 -0
  27. package/src/core/codegen/codeToURL.d.ts +8 -0
  28. package/src/core/codegen/codeToURL.d.ts.map +1 -0
  29. package/src/core/codegen/codeToURL.js +22 -0
  30. package/src/core/collection/array/array_shuffle.d.ts +8 -0
  31. package/src/core/collection/array/array_shuffle.d.ts.map +1 -0
  32. package/src/core/collection/array/array_shuffle.js +22 -0
  33. package/src/core/collection/array/array_shuffle.spec.d.ts +2 -0
  34. package/src/core/collection/array/array_shuffle.spec.d.ts.map +1 -0
  35. package/src/core/collection/array/{randomizeArrayElementOrder.spec.js → array_shuffle.spec.js} +4 -4
  36. package/src/core/collection/array/isArrayEqualStrict.d.ts.map +1 -1
  37. package/src/core/collection/array/isArrayEqualStrict.js +2 -2
  38. package/src/core/collection/array/iterator/ArrayIteratorRandom.js +2 -2
  39. package/src/core/collection/array/randomMultipleFromArray.js +2 -2
  40. package/src/core/color/Color.d.ts.map +1 -1
  41. package/src/core/color/Color.js +16 -11
  42. package/src/core/color/hsv/hsv2rgb.js +4 -4
  43. package/src/core/color/hsv/rgb2hsv.d.ts +3 -3
  44. package/src/core/color/hsv/rgb2hsv.d.ts.map +1 -1
  45. package/src/core/color/hsv/rgb2hsv.js +11 -18
  46. package/src/core/color/rgb2uint24.js +4 -4
  47. package/src/core/color/rgb_to_luminance.d.ts +9 -0
  48. package/src/core/color/rgb_to_luminance.d.ts.map +1 -0
  49. package/src/core/color/rgb_to_luminance.js +10 -0
  50. package/src/core/color/sRGB/linear_to_sRGB.d.ts +1 -0
  51. package/src/core/color/sRGB/linear_to_sRGB.d.ts.map +1 -1
  52. package/src/core/color/sRGB/linear_to_sRGB.js +4 -4
  53. package/src/core/geom/3d/aabb/AABB3.d.ts.map +1 -1
  54. package/src/core/geom/3d/aabb/AABB3.js +4 -1
  55. package/src/core/geom/3d/aabb/aabb3_intersects_ray.js +3 -3
  56. package/src/core/geom/3d/shape/UnitSphereShape3D.d.ts.map +1 -1
  57. package/src/core/geom/3d/shape/UnitSphereShape3D.js +14 -14
  58. package/src/core/geom/3d/sphere/harmonics/README.md +16 -2
  59. package/src/core/geom/3d/sphere/harmonics/SH3_COEFFICIENTS.d.ts +6 -0
  60. package/src/core/geom/3d/sphere/harmonics/SH3_COEFFICIENTS.d.ts.map +1 -0
  61. package/src/core/geom/3d/sphere/harmonics/SH3_COEFFICIENTS.js +17 -0
  62. package/src/core/geom/3d/sphere/harmonics/sh3_basis_at.d.ts.map +1 -1
  63. package/src/core/geom/3d/sphere/harmonics/sh3_basis_at.js +21 -9
  64. package/src/core/geom/3d/sphere/harmonics/sh3_dering_optimize_positive.d.ts +3 -3
  65. package/src/core/geom/3d/sphere/harmonics/sh3_dering_optimize_positive.d.ts.map +1 -1
  66. package/src/core/geom/3d/sphere/harmonics/sh3_dering_optimize_positive.js +35 -206
  67. package/src/core/geom/3d/sphere/harmonics/sh3_rotate.d.ts +8 -0
  68. package/src/core/geom/3d/sphere/harmonics/sh3_rotate.d.ts.map +1 -0
  69. package/src/core/geom/3d/sphere/harmonics/sh3_rotate.js +29 -0
  70. package/src/core/geom/3d/sphere/harmonics/sh3_sample_by_direction.js +10 -10
  71. package/src/core/geom/3d/sphere/harmonics/sh_index.d.ts +8 -0
  72. package/src/core/geom/3d/sphere/harmonics/sh_index.d.ts.map +1 -0
  73. package/src/core/geom/3d/sphere/harmonics/sh_index.js +9 -0
  74. package/src/core/geom/3d/sphere/harmonics/sh_rotate_band1.d.ts +8 -0
  75. package/src/core/geom/3d/sphere/harmonics/sh_rotate_band1.d.ts.map +1 -0
  76. package/src/core/geom/3d/sphere/harmonics/sh_rotate_band1.js +44 -0
  77. package/src/core/geom/3d/sphere/harmonics/sh_rotate_band2.d.ts +8 -0
  78. package/src/core/geom/3d/sphere/harmonics/sh_rotate_band2.d.ts.map +1 -0
  79. package/src/core/geom/3d/sphere/harmonics/sh_rotate_band2.js +86 -0
  80. package/src/core/geom/3d/sphere/in_sphere3d_robust.d.ts.map +1 -1
  81. package/src/core/geom/3d/sphere/in_sphere3d_robust.js +2 -1
  82. package/src/core/geom/3d/tetrahedra/TetrahedralMesh.d.ts +20 -1
  83. package/src/core/geom/3d/tetrahedra/TetrahedralMesh.d.ts.map +1 -1
  84. package/src/core/geom/3d/tetrahedra/TetrahedralMesh.js +53 -7
  85. package/src/core/geom/3d/tetrahedra/TetrahedralMesh.spec.js +2 -2
  86. package/src/core/geom/3d/tetrahedra/build_tetrahedral_mesh_buffer_geometry.d.ts +1 -1
  87. package/src/core/geom/3d/tetrahedra/build_tetrahedral_mesh_buffer_geometry.d.ts.map +1 -1
  88. package/src/core/geom/3d/tetrahedra/build_tetrahedral_mesh_buffer_geometry.js +12 -7
  89. package/src/core/geom/3d/tetrahedra/delaunay/tetrahedral_mesh_build_from_grid.d.ts +13 -0
  90. package/src/core/geom/3d/tetrahedra/delaunay/tetrahedral_mesh_build_from_grid.d.ts.map +1 -0
  91. package/src/core/geom/3d/tetrahedra/delaunay/tetrahedral_mesh_build_from_grid.js +135 -0
  92. package/src/core/geom/3d/tetrahedra/prototypeTetrahedraBuilder.js +38 -24
  93. package/src/core/geom/3d/tetrahedra/{compute_circumsphere.d.ts → tetrahedron_compute_circumsphere.d.ts} +3 -5
  94. package/src/core/geom/3d/tetrahedra/tetrahedron_compute_circumsphere.d.ts.map +1 -0
  95. package/src/core/geom/3d/tetrahedra/{compute_circumsphere.js → tetrahedron_compute_circumsphere.js} +2 -4
  96. package/src/core/geom/3d/tetrahedra/tetrahedron_compute_signed_volume.d.ts.map +1 -1
  97. package/src/core/geom/3d/tetrahedra/tetrahedron_compute_signed_volume.js +3 -1
  98. package/src/core/geom/Vector3.d.ts.map +1 -1
  99. package/src/core/geom/Vector3.js +4 -3
  100. package/src/core/geom/mat3/m3_multiply_vec3.d.ts +8 -0
  101. package/src/core/geom/mat3/m3_multiply_vec3.d.ts.map +1 -0
  102. package/src/core/geom/mat3/m3_multiply_vec3.js +21 -0
  103. package/src/core/geom/random/randomPointInSphere.d.ts +1 -1
  104. package/src/core/geom/random/randomPointInSphere.js +2 -2
  105. package/src/core/geom/random/randomPointOnSphere.d.ts +3 -3
  106. package/src/core/geom/random/randomPointOnSphere.d.ts.map +1 -1
  107. package/src/core/geom/random/randomPointOnSphere.js +5 -9
  108. package/src/core/geom/vec2/v2_cross_product.d.ts +15 -0
  109. package/src/core/geom/vec2/v2_cross_product.d.ts.map +1 -0
  110. package/src/core/geom/vec2/v2_cross_product.js +21 -0
  111. package/src/core/geom/vec3/v3_slerp.d.ts +1 -0
  112. package/src/core/geom/vec3/v3_slerp.d.ts.map +1 -1
  113. package/src/core/geom/vec3/v3_slerp.js +1 -0
  114. package/src/core/graph/MultiNode.d.ts +1 -1
  115. package/src/core/graph/MultiNode.js +1 -1
  116. package/src/core/graph/WeightedEdge.d.ts +6 -4
  117. package/src/core/graph/WeightedEdge.d.ts.map +1 -1
  118. package/src/core/graph/WeightedEdge.js +3 -0
  119. package/src/core/graph/coloring/colorizeGraph.js +19 -19
  120. package/src/core/graph/convert_graph_to_dot_string.d.ts +1 -1
  121. package/src/core/graph/convert_graph_to_dot_string.d.ts.map +1 -1
  122. package/src/core/graph/convert_graph_to_dot_string.js +10 -6
  123. package/src/core/graph/graph_compute_adjacency_matrix.d.ts +9 -0
  124. package/src/core/graph/graph_compute_adjacency_matrix.d.ts.map +1 -0
  125. package/src/core/graph/{graph_adjacency_matrix.js → graph_compute_adjacency_matrix.js} +1 -2
  126. package/src/core/graph/graph_compute_degree_matrix.d.ts +10 -0
  127. package/src/core/graph/graph_compute_degree_matrix.d.ts.map +1 -0
  128. package/src/core/graph/graph_compute_degree_matrix.js +23 -0
  129. package/src/core/graph/graph_compute_distance_matrix.d.ts +13 -0
  130. package/src/core/graph/graph_compute_distance_matrix.d.ts.map +1 -0
  131. package/src/core/graph/graph_compute_distance_matrix.js +103 -0
  132. package/src/core/graph/{graph_laplacian_matrix.d.ts → graph_compute_laplacian_matrix.d.ts} +2 -2
  133. package/src/core/graph/graph_compute_laplacian_matrix.d.ts.map +1 -0
  134. package/src/core/graph/{graph_laplacian_matrix.js → graph_compute_laplacian_matrix.js} +6 -6
  135. package/src/core/graph/graph_k_means_cluster.d.ts.map +1 -1
  136. package/src/core/graph/graph_k_means_cluster.js +4 -119
  137. package/src/core/graph/{coarsen_graph.d.ts → mn_graph_coarsen.d.ts} +2 -2
  138. package/src/core/graph/mn_graph_coarsen.d.ts.map +1 -0
  139. package/src/core/graph/{coarsen_graph.js → mn_graph_coarsen.js} +1 -1
  140. package/src/core/graph/mn_graph_coarsen.spec.d.ts +2 -0
  141. package/src/core/graph/mn_graph_coarsen.spec.d.ts.map +1 -0
  142. package/src/core/graph/{coarsen_graph.spec.js → mn_graph_coarsen.spec.js} +4 -4
  143. package/src/core/graph/mn_graph_collapse_weighted_edge.d.ts +1 -0
  144. package/src/core/graph/mn_graph_collapse_weighted_edge.d.ts.map +1 -1
  145. package/src/core/graph/mn_graph_collapse_weighted_edge.js +7 -1
  146. package/src/core/math/physics/brdf/brdf_burley.d.ts.map +1 -1
  147. package/src/core/math/physics/brdf/brdf_burley.js +9 -1
  148. package/src/core/math/physics/brdf/{D_GGX.d.ts → diffuse_GGX.d.ts} +2 -2
  149. package/src/core/math/physics/brdf/diffuse_GGX.d.ts.map +1 -0
  150. package/src/core/math/physics/brdf/{D_GGX.js → diffuse_GGX.js} +1 -1
  151. package/src/core/math/physics/brdf/fresnel_Schlick.d.ts +3 -0
  152. package/src/core/math/physics/brdf/fresnel_Schlick.d.ts.map +1 -0
  153. package/src/core/math/physics/brdf/fresnel_Schlick.js +3 -0
  154. package/src/core/math/physics/brdf/fresnel_Schlick_optimized.d.ts +9 -0
  155. package/src/core/math/physics/brdf/fresnel_Schlick_optimized.d.ts.map +1 -0
  156. package/src/core/math/physics/brdf/fresnel_Schlick_optimized.js +12 -0
  157. package/src/core/math/physics/brdf/fresnel_Schlick_original.d.ts +9 -0
  158. package/src/core/math/physics/brdf/fresnel_Schlick_original.d.ts.map +1 -0
  159. package/src/core/math/physics/brdf/fresnel_Schlick_original.js +10 -0
  160. package/src/core/math/physics/bsdf/bsdf_schlick.d.ts.map +1 -1
  161. package/src/core/math/physics/bsdf/bsdf_schlick.js +3 -11
  162. package/src/core/math/physics/ior_to_reflectivity.d.ts +7 -0
  163. package/src/core/math/physics/ior_to_reflectivity.d.ts.map +1 -0
  164. package/src/core/math/physics/ior_to_reflectivity.js +9 -0
  165. package/src/core/math/physics/pdf/README.md +1 -0
  166. package/src/core/math/physics/pdf/pdf_GGX.d.ts +16 -0
  167. package/src/core/math/physics/pdf/pdf_GGX.d.ts.map +1 -0
  168. package/src/core/math/physics/pdf/pdf_GGX.js +25 -0
  169. package/src/core/math/physics/reflectivity_to_ior.d.ts +7 -0
  170. package/src/core/math/physics/reflectivity_to_ior.d.ts.map +1 -0
  171. package/src/core/math/physics/reflectivity_to_ior.js +8 -0
  172. package/src/core/process/task/util/randomCountTask.js +3 -3
  173. package/src/core/process/worker/WorkerBuilder.d.ts.map +1 -1
  174. package/src/core/process/worker/WorkerBuilder.js +5 -35
  175. package/src/engine/EngineHarness.d.ts +10 -1
  176. package/src/engine/EngineHarness.d.ts.map +1 -1
  177. package/src/engine/EngineHarness.js +22 -11
  178. package/src/engine/asset/loaders/ArrayBufferLoader.d.ts.map +1 -1
  179. package/src/engine/asset/loaders/ArrayBufferLoader.js +17 -10
  180. package/src/engine/asset/loaders/image/png/PNGReader.d.ts +25 -11
  181. package/src/engine/asset/loaders/image/png/PNGReader.d.ts.map +1 -1
  182. package/src/engine/asset/loaders/image/png/PNGReader.js +38 -24
  183. package/src/engine/asset/loaders/material/TextureAttachmensByMaterialType.d.ts.map +1 -1
  184. package/src/engine/asset/loaders/material/TextureAttachmensByMaterialType.js +5 -0
  185. package/src/engine/ecs/terrain/overlay/TerrainOverlay.js +4 -4
  186. package/src/engine/graphics/GraphicsEngine.js +1 -1
  187. package/src/engine/graphics/ecs/camera/topdown/TopDownCameraController.d.ts.map +1 -1
  188. package/src/engine/graphics/ecs/camera/topdown/TopDownCameraController.js +4 -0
  189. package/src/engine/graphics/ecs/light/LightSystem.d.ts.map +1 -1
  190. package/src/engine/graphics/ecs/light/LightSystem.js +2 -3
  191. package/src/engine/graphics/ecs/light/binding/three/ThreeLightBinding.d.ts +6 -0
  192. package/src/engine/graphics/ecs/light/binding/three/ThreeLightBinding.d.ts.map +1 -1
  193. package/src/engine/graphics/ecs/light/binding/three/ThreeLightBinding.js +22 -11
  194. package/src/engine/graphics/ecs/sprite/SpriteSystemPE.d.ts.map +1 -1
  195. package/src/engine/graphics/ecs/sprite/SpriteSystemPE.js +7 -7
  196. package/src/engine/graphics/impostors/octahedral/bake/prepare_bake_material.js +3 -3
  197. package/src/engine/graphics/render/forward_plus/model/DirectionalLight.d.ts.map +1 -1
  198. package/src/engine/graphics/render/forward_plus/model/DirectionalLight.js +25 -25
  199. package/src/engine/graphics/sh3/SH3VisualisationMaterial.d.ts.map +1 -1
  200. package/src/engine/graphics/sh3/SH3VisualisationMaterial.js +9 -6
  201. package/src/engine/graphics/sh3/fromCubeRenderTarget.d.ts +9 -0
  202. package/src/engine/graphics/sh3/fromCubeRenderTarget.d.ts.map +1 -0
  203. package/src/engine/graphics/sh3/fromCubeRenderTarget.js +145 -0
  204. package/src/engine/graphics/sh3/gi/tetrahedral_mesh_to_texture.d.ts +8 -0
  205. package/src/engine/graphics/sh3/gi/tetrahedral_mesh_to_texture.d.ts.map +1 -0
  206. package/src/engine/graphics/sh3/gi/tetrahedral_mesh_to_texture.js +51 -0
  207. package/src/engine/graphics/sh3/{LightProbeVolume.d.ts → lpv/LightProbeVolume.d.ts} +18 -7
  208. package/src/engine/graphics/sh3/lpv/LightProbeVolume.d.ts.map +1 -0
  209. package/src/engine/graphics/sh3/lpv/LightProbeVolume.js +340 -0
  210. package/src/engine/graphics/sh3/lpv/LightProbeVolumeSerializationAdapter.d.ts +18 -0
  211. package/src/engine/graphics/sh3/lpv/LightProbeVolumeSerializationAdapter.d.ts.map +1 -0
  212. package/src/engine/graphics/sh3/lpv/LightProbeVolumeSerializationAdapter.js +44 -0
  213. package/src/engine/graphics/sh3/lpv/PathTracerProbeRenderer.d.ts +12 -0
  214. package/src/engine/graphics/sh3/lpv/PathTracerProbeRenderer.d.ts.map +1 -0
  215. package/src/engine/graphics/sh3/lpv/PathTracerProbeRenderer.js +122 -0
  216. package/src/engine/graphics/sh3/lpv/ProbeRenderer.d.ts +29 -0
  217. package/src/engine/graphics/sh3/lpv/ProbeRenderer.d.ts.map +1 -0
  218. package/src/engine/graphics/sh3/lpv/ProbeRenderer.js +35 -0
  219. package/src/engine/graphics/sh3/lpv/WebGLCubeProbeRenderer.d.ts +27 -0
  220. package/src/engine/graphics/sh3/lpv/WebGLCubeProbeRenderer.d.ts.map +1 -0
  221. package/src/engine/graphics/sh3/lpv/WebGLCubeProbeRenderer.js +158 -0
  222. package/src/engine/graphics/sh3/lpv/build_probes_for_scene.d.ts +11 -0
  223. package/src/engine/graphics/sh3/lpv/build_probes_for_scene.d.ts.map +1 -0
  224. package/src/engine/graphics/sh3/lpv/build_probes_for_scene.js +127 -0
  225. package/src/engine/graphics/sh3/lpv/probe_volume_to_textures.d.ts +12 -0
  226. package/src/engine/graphics/sh3/lpv/probe_volume_to_textures.d.ts.map +1 -0
  227. package/src/engine/graphics/sh3/lpv/probe_volume_to_textures.js +89 -0
  228. package/src/engine/graphics/sh3/path_tracer/PathTracedScene.d.ts +90 -0
  229. package/src/engine/graphics/sh3/path_tracer/PathTracedScene.d.ts.map +1 -0
  230. package/src/engine/graphics/sh3/path_tracer/PathTracedScene.js +352 -0
  231. package/src/engine/graphics/sh3/path_tracer/PathTracer.d.ts +5 -91
  232. package/src/engine/graphics/sh3/path_tracer/PathTracer.d.ts.map +1 -1
  233. package/src/engine/graphics/sh3/path_tracer/PathTracer.js +41 -477
  234. package/src/engine/graphics/sh3/path_tracer/make_one_vector3.d.ts +1 -0
  235. package/src/engine/graphics/sh3/path_tracer/make_one_vector3.d.ts.map +1 -1
  236. package/src/engine/graphics/sh3/path_tracer/make_one_vector3.js +6 -3
  237. package/src/engine/graphics/sh3/path_tracer/prototypePathTracer.js +38 -62
  238. package/src/engine/graphics/sh3/path_tracer/random_in_hemisphere.d.ts.map +1 -1
  239. package/src/engine/graphics/sh3/path_tracer/random_in_hemisphere.js +7 -1
  240. package/src/engine/graphics/sh3/path_tracer/sample_triangle_attribute.d.ts +2 -2
  241. package/src/engine/graphics/sh3/path_tracer/sample_triangle_attribute.d.ts.map +1 -1
  242. package/src/engine/graphics/sh3/path_tracer/sample_triangle_attribute.js +1 -1
  243. package/src/engine/graphics/sh3/path_tracer/sampling/generate_stratified_samples.d.ts +10 -0
  244. package/src/engine/graphics/sh3/path_tracer/sampling/generate_stratified_samples.d.ts.map +1 -0
  245. package/src/engine/graphics/sh3/path_tracer/sampling/generate_stratified_samples.js +20 -0
  246. package/src/engine/graphics/sh3/path_tracer/sampling/generate_stratified_samples_2d.d.ts +10 -0
  247. package/src/engine/graphics/sh3/path_tracer/sampling/generate_stratified_samples_2d.d.ts.map +1 -0
  248. package/src/engine/graphics/sh3/path_tracer/sampling/generate_stratified_samples_2d.js +31 -0
  249. package/src/engine/graphics/sh3/path_tracer/sampling/make_stratified_sample.d.ts +9 -0
  250. package/src/engine/graphics/sh3/path_tracer/sampling/make_stratified_sample.d.ts.map +1 -0
  251. package/src/engine/graphics/sh3/path_tracer/sampling/make_stratified_sample.js +21 -0
  252. package/src/engine/graphics/sh3/path_tracer/texture/SoftwareTextureCache.d.ts +3 -0
  253. package/src/engine/graphics/sh3/path_tracer/texture/SoftwareTextureCache.d.ts.map +1 -0
  254. package/src/engine/graphics/sh3/path_tracer/texture/SoftwareTextureCache.js +3 -0
  255. package/src/engine/graphics/sh3/path_tracer/texture/apply_texture_clamping_to_coordinate.d.ts.map +1 -0
  256. package/src/engine/graphics/sh3/path_tracer/{apply_texture_clamping_to_coordinate.js → texture/apply_texture_clamping_to_coordinate.js} +2 -2
  257. package/src/engine/graphics/sh3/path_tracer/texture/sample_material.d.ts +11 -0
  258. package/src/engine/graphics/sh3/path_tracer/texture/sample_material.d.ts.map +1 -0
  259. package/src/engine/graphics/sh3/path_tracer/texture/sample_material.js +86 -0
  260. package/src/engine/graphics/sh3/path_tracer/texture/sample_texture.d.ts +10 -0
  261. package/src/engine/graphics/sh3/path_tracer/texture/sample_texture.d.ts.map +1 -0
  262. package/src/engine/graphics/sh3/path_tracer/texture/sample_texture.js +55 -0
  263. package/src/engine/graphics/sh3/path_tracer/vec3_uint8_to_float.js +4 -4
  264. package/src/engine/graphics/sh3/prototypeSH3Probe.js +145 -185
  265. package/src/engine/graphics/sh3/sky/hosek/sky_hosek_compute_irradiance_by_direction.d.ts +5 -5
  266. package/src/engine/graphics/sh3/sky/hosek/sky_hosek_compute_irradiance_by_direction.d.ts.map +1 -1
  267. package/src/engine/graphics/sh3/sky/hosek/sky_hosek_compute_irradiance_by_direction.js +8 -8
  268. package/src/engine/graphics/sh3/visualise_spherical_harmonic_sphere.d.ts +13 -0
  269. package/src/engine/graphics/sh3/visualise_spherical_harmonic_sphere.d.ts.map +1 -0
  270. package/src/engine/graphics/sh3/visualise_spherical_harmonic_sphere.js +54 -0
  271. package/src/engine/graphics/texture/AttributeDataTexture.d.ts +2 -2
  272. package/src/engine/graphics/texture/AttributeDataTexture.d.ts.map +1 -1
  273. package/src/engine/graphics/texture/AttributeDataTexture.js +11 -11
  274. package/src/engine/graphics/texture/sampler/Sampler2D.d.ts.map +1 -1
  275. package/src/engine/graphics/texture/sampler/Sampler2D.js +2 -2
  276. package/src/engine/input/ecs/systems/InputControllerSystem.js +1 -1
  277. package/src/engine/network/convertPathToURL.d.ts +3 -1
  278. package/src/engine/network/convertPathToURL.d.ts.map +1 -1
  279. package/src/engine/network/convertPathToURL.js +68 -51
  280. package/src/engine/physics/fluid/SliceVisualiser.d.ts.map +1 -1
  281. package/src/engine/physics/fluid/SliceVisualiser.js +4 -4
  282. package/src/generation/filtering/numeric/CellFilterCache.d.ts.map +1 -1
  283. package/src/generation/filtering/numeric/CellFilterCache.js +1 -0
  284. package/src/view/elements/ColorPickerView.d.ts.map +1 -1
  285. package/src/view/elements/ColorPickerView.js +7 -7
  286. package/src/core/binary/float2uint8.d.ts +0 -7
  287. package/src/core/binary/float2uint8.d.ts.map +0 -1
  288. package/src/core/binary/uint82float.d.ts +0 -7
  289. package/src/core/binary/uint82float.d.ts.map +0 -1
  290. package/src/core/binary/uint82float.spec.d.ts +0 -2
  291. package/src/core/binary/uint82float.spec.d.ts.map +0 -1
  292. package/src/core/binary/uint82float.spec.js +0 -7
  293. package/src/core/collection/array/randomizeArrayElementOrder.d.ts +0 -8
  294. package/src/core/collection/array/randomizeArrayElementOrder.d.ts.map +0 -1
  295. package/src/core/collection/array/randomizeArrayElementOrder.js +0 -24
  296. package/src/core/collection/array/randomizeArrayElementOrder.spec.d.ts +0 -2
  297. package/src/core/collection/array/randomizeArrayElementOrder.spec.d.ts.map +0 -1
  298. package/src/core/geom/3d/tetrahedra/compute_circumsphere.d.ts.map +0 -1
  299. package/src/core/graph/coarsen_graph.d.ts.map +0 -1
  300. package/src/core/graph/coarsen_graph.spec.d.ts +0 -2
  301. package/src/core/graph/coarsen_graph.spec.d.ts.map +0 -1
  302. package/src/core/graph/graph_adjacency_matrix.d.ts +0 -9
  303. package/src/core/graph/graph_adjacency_matrix.d.ts.map +0 -1
  304. package/src/core/graph/graph_degree_matrix.d.ts +0 -9
  305. package/src/core/graph/graph_degree_matrix.d.ts.map +0 -1
  306. package/src/core/graph/graph_degree_matrix.js +0 -18
  307. package/src/core/graph/graph_laplacian_matrix.d.ts.map +0 -1
  308. package/src/core/math/physics/brdf/D_GGX.d.ts.map +0 -1
  309. package/src/engine/graphics/sh3/LightProbeVolume.d.ts.map +0 -1
  310. package/src/engine/graphics/sh3/LightProbeVolume.js +0 -609
  311. package/src/engine/graphics/sh3/path_tracer/apply_texture_clamping_to_coordinate.d.ts.map +0 -1
  312. package/src/engine/graphics/sh3/visualise_probe.d.ts +0 -12
  313. package/src/engine/graphics/sh3/visualise_probe.d.ts.map +0 -1
  314. package/src/engine/graphics/sh3/visualise_probe.js +0 -40
  315. /package/src/engine/graphics/sh3/path_tracer/{apply_texture_clamping_to_coordinate.d.ts → texture/apply_texture_clamping_to_coordinate.d.ts} +0 -0
@@ -1,609 +0,0 @@
1
- import {
2
- CubeCamera,
3
- LinearEncoding,
4
- LinearFilter,
5
- LineBasicMaterial,
6
- MeshStandardMaterial,
7
- RGBAFormat,
8
- Scene,
9
- WebGLCubeRenderTarget
10
- } from "three";
11
- import { array_copy } from "../../../core/collection/array/array_copy.js";
12
- import { sh3_basis_at } from "../../../core/geom/3d/sphere/harmonics/sh3_basis_at.js";
13
- import { sh3_dering_optimize_positive } from "../../../core/geom/3d/sphere/harmonics/sh3_dering_optimize_positive.js";
14
- import { SurfacePoint3 } from "../../../core/geom/3d/SurfacePoint3.js";
15
- import {
16
- build_tetrahedral_mesh_buffer_geometry
17
- } from "../../../core/geom/3d/tetrahedra/build_tetrahedral_mesh_buffer_geometry.js";
18
- import {
19
- compute_delaunay_tetrahedral_mesh
20
- } from "../../../core/geom/3d/tetrahedra/delaunay/compute_delaunay_tetrahedral_mesh.js";
21
- import { TetrahedralMesh } from "../../../core/geom/3d/tetrahedra/TetrahedralMesh.js";
22
- import { v3_length_sqr } from "../../../core/geom/vec3/v3_length_sqr.js";
23
- import TaskGroup from "../../../core/process/task/TaskGroup.js";
24
- import { actionTask } from "../../../core/process/task/util/actionTask.js";
25
- import { countTask } from "../../../core/process/task/util/countTask.js";
26
- import Entity from "../../ecs/Entity.js";
27
- import { Transform } from "../../ecs/transform/Transform.js";
28
- import { threeMakeLight } from "../ecs/light/binding/three/threeMakeLight.js";
29
- import { Light } from "../ecs/light/Light.js";
30
- import { ThreeLightCache } from "../ecs/light/three/ThreeLightCache.js";
31
- import { build_three_object } from "../ecs/mesh-v2/build_three_object.js";
32
- import { DrawMode } from "../ecs/mesh-v2/DrawMode.js";
33
- import { ShadedGeometry } from "../ecs/mesh-v2/ShadedGeometry.js";
34
- import { ShadedGeometryFlags } from "../ecs/mesh-v2/ShadedGeometryFlags.js";
35
- import { applyTransformToThreeObject } from "../ecs/mesh/applyTransformToThreeObject.js";
36
- import { visualise_probe } from "./visualise_probe.js";
37
-
38
- const TEMP_CONTACT = new SurfacePoint3();
39
-
40
- /**
41
- *
42
- * @param {Uint8Array} data
43
- * @param {THREE.WebGLRenderer} renderer
44
- * @param {THREE.WebGLCubeRenderTarget} cubeRenderTarget
45
- * @return {Float64Array}
46
- */
47
- function fromCubeRenderTarget(data, renderer, cubeRenderTarget) {
48
-
49
- // The renderTarget must be set to RGBA in order to make readRenderTargetPixels works
50
- let total_weight = 0;
51
-
52
- const __shared_buffer = new ArrayBuffer((27 + 9) * 8);
53
-
54
- const sh_basis = new Float64Array(__shared_buffer, 0, 9);
55
- const coefficients = new Float64Array(__shared_buffer, 9 * 8, 27);
56
-
57
- const image_size = cubeRenderTarget.width;
58
-
59
- const pixel_size = 2 / image_size;
60
-
61
- let normal_x = 0, normal_y = 0, normal_z = 0;
62
-
63
- for (let faceIndex = 0; faceIndex < 6; faceIndex++) {
64
-
65
- renderer.readRenderTargetPixels(cubeRenderTarget, 0, 0, image_size, image_size, data, faceIndex);
66
-
67
- // RGBA assumed
68
-
69
- for (let i = 0, il = data.length; i < il; i += 4) {
70
-
71
-
72
- // pixel coordinate on unit cube
73
-
74
- const pixelIndex = i / 4;
75
-
76
- const col = -1 + (pixelIndex % image_size + 0.5) * pixel_size;
77
-
78
- const row = 1 - (Math.floor(pixelIndex / image_size) + 0.5) * pixel_size;
79
-
80
-
81
- switch (faceIndex) {
82
-
83
- case 0:
84
- normal_x = 1;
85
- normal_y = row;
86
- normal_z = -col;
87
- break;
88
-
89
- case 1:
90
- normal_x = -1;
91
- normal_y = row;
92
- normal_z = col;
93
- break;
94
-
95
- case 2:
96
- normal_x = col;
97
- normal_y = 1;
98
- normal_z = -row;
99
- break;
100
-
101
- case 3:
102
- normal_x = col;
103
- normal_y = -1;
104
- normal_z = row;
105
- break;
106
-
107
- case 4:
108
- normal_x = col;
109
- normal_y = row;
110
- normal_z = 1;
111
- break;
112
-
113
- case 5:
114
- normal_x = -col;
115
- normal_y = row;
116
- normal_z = -1;
117
- break;
118
-
119
- }
120
-
121
- // weight assigned to this pixel
122
-
123
- const length_squared = v3_length_sqr(normal_x, normal_y, normal_z);
124
-
125
- const length = Math.sqrt(length_squared);
126
-
127
- const weight = 4 / (length * length_squared);
128
-
129
- total_weight += weight;
130
-
131
- // direction vector to this pixel
132
- normal_x /= length;
133
- normal_y /= length;
134
- normal_z /= length;
135
-
136
- // evaluate SH basis functions in direction dir
137
- sh3_basis_at(normal_x, normal_y, normal_z, sh_basis);
138
-
139
- // pixel color, already in linear space so no sRGB->Linear conversion necessary
140
-
141
- // 0.003921 constant value is 1/255, a conversion value from UINT8 to normalized float
142
- const weight_conv = weight * 0.00392156862745098;
143
-
144
- const color_r = data[i] * weight_conv;
145
- const color_g = data[i + 1] * weight_conv;
146
- const color_b = data[i + 2] * weight_conv;
147
-
148
- // accumulate
149
- for (let j = 0; j < 9; j++) {
150
-
151
- coefficients[j * 3] += sh_basis[j] * color_r;
152
- coefficients[j * 3 + 1] += sh_basis[j] * color_g;
153
- coefficients[j * 3 + 2] += sh_basis[j] * color_b;
154
-
155
- }
156
-
157
- }
158
-
159
- }
160
-
161
- // normalize
162
- const norm = (4 * Math.PI) / total_weight;
163
-
164
- for (let j = 0; j < 27; j++) {
165
-
166
- coefficients[j] *= norm;
167
-
168
- }
169
-
170
- sh3_dering_optimize_positive(coefficients, 0, coefficients, 0, 3);
171
-
172
- return coefficients;
173
-
174
- }
175
-
176
-
177
- class CubeRenderer {
178
- constructor() {
179
- /**
180
- *
181
- * @type {GraphicsEngine|null}
182
- */
183
- this.ge = null;
184
-
185
- /**
186
- *
187
- * @type {THREE.WebGLRenderer|null}
188
- * @private
189
- */
190
- this.__renderer = null;
191
-
192
- this.render_target = new WebGLCubeRenderTarget(32, {
193
- format: RGBAFormat,
194
- minFilter: LinearFilter,
195
- magFilter: LinearFilter,
196
- depthBuffer: true,
197
- scissorTest: false,
198
- stencilBuffer: false,
199
- generateMipmaps: false,
200
- encoding: LinearEncoding
201
- });
202
-
203
- /**
204
- * Used to read out GPU memory for each face
205
- * @type {Uint8Array}
206
- * @private
207
- */
208
- this.__cube_face_raw = new Uint8Array(this.render_target.width * this.render_target.width * 4);
209
-
210
-
211
- this.__cube_camera = new CubeCamera(0.1, 100, this.render_target);
212
-
213
- /**
214
- *
215
- * @type {Scene}
216
- * @private
217
- */
218
- this.__scene = new Scene();
219
- // this.__scene.autoUpdate = false;
220
- // this.__scene.matrixAutoUpdate = false;
221
- }
222
-
223
- /**
224
- *
225
- * @param {EntityComponentDataset} ecd
226
- */
227
- build_scene(ecd) {
228
- this.__scene.children.splice(0, this.__scene.children.length);
229
-
230
- ecd.traverseEntities([ShadedGeometry, Transform], (sg, t, entity) => {
231
- const object3D = build_three_object(sg);
232
-
233
- const source_material = sg.material;
234
-
235
- //
236
- if (source_material.isMeshStandardMaterial === true) {
237
- object3D.material = new MeshStandardMaterial({
238
- map: source_material.map,
239
- });
240
-
241
- object3D.material.color.copy(source_material.color);
242
- } else {
243
- object3D.material = source_material.clone();
244
- }
245
-
246
- applyTransformToThreeObject(object3D, t);
247
-
248
- array_copy(t.matrix, 0, object3D.matrixWorld.elements, 0, 16);
249
-
250
- this.__scene.add(object3D);
251
- });
252
-
253
- const lightCache = new ThreeLightCache();
254
-
255
- ecd.traverseEntities([Light, Transform], (light, t) => {
256
-
257
- const object = threeMakeLight(light, lightCache);
258
- applyTransformToThreeObject(object, t);
259
-
260
- this.__scene.add(object);
261
- });
262
-
263
- // this.__scene.add(this.__cube_camera);
264
- }
265
-
266
- bake_start() {
267
- // this.__renderer = WebGLRendererPool.global.get();
268
-
269
- this.__renderer = this.ge.getRenderer();
270
- }
271
-
272
- bake_end() {
273
- // WebGLRendererPool.global.release(this.__renderer);
274
-
275
- this.__renderer = null;
276
- }
277
-
278
- /**
279
- *
280
- * @param {number[]} position
281
- * @param {number} position_offset
282
- * @param {number[]} output
283
- * @param {number} output_offset
284
- */
285
- bake(position, position_offset, output, output_offset) {
286
- // console.warn(position_offset, output_offset);
287
-
288
- // const ge = this.ge;
289
- const renderer = this.__renderer;
290
-
291
- const _rt = renderer.getRenderTarget();
292
- const _rt_active_face = renderer.getActiveCubeFace();
293
- const _acc = renderer.autoClearColor;
294
- const _acd = renderer.autoClearDepth;
295
- const _ac = renderer.autoClear;
296
- const _outputEncoding = renderer.outputEncoding;
297
-
298
- renderer.outputEncoding = LinearEncoding;
299
-
300
- renderer.autoClearColor = true;
301
- renderer.autoClearDepth = true;
302
- renderer.autoClear = true;
303
-
304
- this.__cube_camera.position.fromArray(position, position_offset);
305
-
306
- this.__cube_camera.children.forEach(c => {
307
- c.updateProjectionMatrix();
308
- c.updateMatrix();
309
- c.updateMatrixWorld(true);
310
- });
311
-
312
- this.__cube_camera.update(renderer, this.__scene);
313
-
314
-
315
- // compute coefficients from renderer
316
- const probe_coefficients = fromCubeRenderTarget(this.__cube_face_raw, renderer, this.render_target);
317
-
318
- array_copy(probe_coefficients, 0, output, output_offset, 27);
319
-
320
- // restore state
321
- renderer.setRenderTarget(_rt, _rt_active_face);
322
- renderer.autoClearColor = _acc;
323
- renderer.autoClearDepth = _acd;
324
- renderer.autoClear = _ac;
325
- renderer.outputEncoding = _outputEncoding;
326
- }
327
- }
328
-
329
- class Baker {
330
- constructor() {
331
- /**
332
- *
333
- * @type {EntityComponentDataset|null}
334
- * @private
335
- */
336
- this.__ecd = null;
337
-
338
- /**
339
- *
340
- * @type {BVH|null}
341
- * @private
342
- */
343
- this.__bvh = null;
344
-
345
- this.__min_bounce_count = 3;
346
- this.__max_bounce_count = 100;
347
-
348
- this._ren = new CubeRenderer();
349
- }
350
-
351
- /**
352
- * @param {BVH} bvh
353
- */
354
- set_bvh(bvh) {
355
- this.__bvh = bvh;
356
- }
357
-
358
- build_spatial() {
359
-
360
- }
361
-
362
- /**
363
- *
364
- * @param {number[]} irradiance RGB irradiance result is written here
365
- * @param {number} bounce_count number of reflections before this trace
366
- * @param {number} origin_x
367
- * @param {number} origin_y
368
- * @param {number} origin_z
369
- * @param {number} direction_x
370
- * @param {number} direction_y
371
- * @param {number} direction_z
372
- */
373
- trace_ray(irradiance, bounce_count,
374
- origin_x, origin_y, origin_z,
375
- direction_x, direction_y, direction_z) {
376
-
377
- //
378
-
379
- if (!this.ray_cast(TEMP_CONTACT, origin_x, origin_y, origin_z, direction_x, direction_y, direction_z)) {
380
- // no hit, assume irradiance is zeroed - black
381
-
382
- return;
383
- }
384
-
385
- // record irradiance
386
-
387
- // reflect ray around normal
388
- // TODO apply BDRF to compute reflected ray
389
-
390
- if (bounce_count > this.__max_bounce_count) {
391
- // terminate
392
- }
393
-
394
- }
395
-
396
- /**
397
- *
398
- * @param contact
399
- * @param origin_x
400
- * @param origin_y
401
- * @param origin_z
402
- * @param direction_x
403
- * @param direction_y
404
- * @param direction_z
405
- * @returns {boolean}
406
- */
407
- ray_cast(contact,
408
- origin_x, origin_y, origin_z,
409
- direction_x, direction_y, direction_z
410
- ) {
411
-
412
- }
413
-
414
- prepare_scene() {
415
-
416
- }
417
-
418
- /**
419
- *
420
- * @param {number[]} position
421
- * @param {number} position_offset
422
- * @param {number[]} output
423
- * @param {number} output_offset
424
- */
425
- bake_sh3_cube(
426
- position, position_offset,
427
- output, output_offset
428
- ) {
429
-
430
- this._ren.bake(position, position_offset, output, output_offset);
431
-
432
- }
433
-
434
- /**
435
- *
436
- * @param {Engine} engine
437
- */
438
- prepare(engine) {
439
- this._ren.ge = engine.graphics;
440
-
441
- this._ren.build_scene(engine.entityManager.dataset);
442
-
443
- this._ren.bake_start();
444
- }
445
-
446
- finish() {
447
- this._ren.bake_end();
448
- }
449
- }
450
-
451
- export class LightProbeVolume {
452
- constructor() {
453
- this.__positions = [];
454
-
455
- this.__mesh = new TetrahedralMesh();
456
-
457
- this.__probe_data = [];
458
-
459
- this.__length = 0;
460
- }
461
-
462
- /**
463
- *
464
- * @param {number} x
465
- * @param {number} y
466
- * @param {number} z
467
- */
468
- add_point(x, y, z) {
469
- const i = this.__length;
470
-
471
- this.__positions[i * 3] = x;
472
- this.__positions[i * 3 + 1] = y;
473
- this.__positions[i * 3 + 2] = z;
474
-
475
- for (let j = 0; j < 9 * 3; j++) {
476
- this.__probe_data[i * 9 * 3 + j] = 1; // fill with white
477
- }
478
-
479
- this.__length++;
480
- }
481
-
482
- /**
483
- *
484
- * @param {number} index
485
- * @param {number[]} source
486
- * @param {number} source_offset
487
- */
488
- white_probe(index, source, source_offset) {
489
- array_copy(source, source_offset, this.__probe_data, index * 9 * 3, 9 * 3);
490
- }
491
-
492
- /**
493
- * Build tetrahedral mesh
494
- */
495
- build_mesh() {
496
-
497
- const t0 = performance.now();
498
- compute_delaunay_tetrahedral_mesh(this.__mesh, this.__positions, this.__length);
499
-
500
- const t1 = performance.now();
501
-
502
- // optional step to improve memory utilization
503
- this.__mesh.compact();
504
-
505
- const t2 = performance.now();
506
-
507
- console.log(`Tetrahedral mesh (${this.__length} points, ${this.__mesh.size()} tets) build took ${t2 - t0}ms`);
508
- }
509
-
510
-
511
- /**
512
- * Bake light probes
513
- * @param {Engine} engine
514
- * @returns {TaskGroup}
515
- */
516
- bake(engine) {
517
- const baker = new Baker();
518
- // baker.set_bvh(entityManager.getSystem(ShadedGeometrySystem).__bvh_binary);
519
-
520
-
521
- const tPrepare = actionTask(() => {
522
- baker.prepare(engine);
523
- });
524
-
525
-
526
- const probe_count = this.__length;
527
- const tBake = countTask(0, probe_count, (i) => {
528
-
529
- baker.bake_sh3_cube(
530
- this.__positions, i * 3,
531
- this.__probe_data, i * 9 * 3
532
- );
533
-
534
- });
535
-
536
- tBake.promise().then(()=>{
537
-
538
- const duration =tBake.__executedCpuTime;
539
-
540
- console.log(`Baked ${probe_count} probes in ${duration}ms, ~${(duration / probe_count).toFixed(2)}ms per probe`);
541
-
542
- })
543
-
544
- const tFinish = actionTask(() => {
545
- baker.finish();
546
- });
547
-
548
- tFinish.addDependency(tBake);
549
- tBake.addDependency(tPrepare);
550
-
551
- return new TaskGroup([
552
- tPrepare, tBake, tFinish
553
- ]);
554
- }
555
-
556
- /**
557
- *
558
- * @param {EntityComponentDataset} ecd
559
- * @param {number} size
560
- * @param {boolean} shadow
561
- */
562
- visualize_probes({ ecd, size = 0.2, shadow = false }) {
563
- for (let i = 0; i < this.__length; i++) {
564
- visualise_probe({
565
- size,
566
- position: this.__positions,
567
- position_offset: i * 3,
568
- sh: this.__probe_data,
569
- sh_offset: i * 3 * 9,
570
- shadow: shadow
571
- }).build(ecd);
572
- }
573
- }
574
-
575
- /**
576
- *
577
- * @param {EntityComponentDataset} ecd
578
- * @param {string|number} color CSS color definition
579
- */
580
- visualize_mesh({ ecd, color = '#FF00FF' }) {
581
-
582
- const geometry = build_tetrahedral_mesh_buffer_geometry(this.__mesh, this.__positions);
583
-
584
- const sg = ShadedGeometry.from(geometry, new LineBasicMaterial({
585
- color: color,
586
- transparent: true,
587
- opacity: 0.35,
588
- depthWrite: false
589
- }), DrawMode.LineSegments);
590
-
591
- sg.clearFlag(ShadedGeometryFlags.CastShadow);
592
- sg.clearFlag(ShadedGeometryFlags.ReceiveShadow);
593
-
594
- new Entity()
595
- .add(sg)
596
- .add(new Transform())
597
- .build(ecd);
598
- }
599
-
600
- /**
601
- *
602
- * @param {Engine} engine
603
- * @returns {TaskGroup}
604
- */
605
- build(engine) {
606
- this.build_mesh();
607
- return this.bake(engine);
608
- }
609
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"apply_texture_clamping_to_coordinate.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/sh3/path_tracer/apply_texture_clamping_to_coordinate.js"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,+DAJW,MAAM,KACN,MAAM,GACL,MAAM,CAcjB"}
@@ -1,12 +0,0 @@
1
- /**
2
- *
3
- * @param {number} [size]
4
- * @param position
5
- * @param position_offset
6
- * @param sh
7
- * @param sh_offset
8
- * @return {Entity}
9
- */
10
- export function visualise_probe({ size, shadow, position, position_offset, sh, sh_offset }?: number): Entity;
11
- import Entity from "../../ecs/Entity.js";
12
- //# sourceMappingURL=visualise_probe.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"visualise_probe.d.ts","sourceRoot":"","sources":["../../../../../src/engine/graphics/sh3/visualise_probe.js"],"names":[],"mappings":"AAOA;;;;;;;;GAQG;AACH,6FAPW,MAAM,GAKL,MAAM,CAyBjB;mBAtCkB,qBAAqB"}
@@ -1,40 +0,0 @@
1
- import { SH3VisualisationMaterial } from "./SH3VisualisationMaterial.js";
2
- import Entity from "../../ecs/Entity.js";
3
- import { Transform } from "../../ecs/transform/Transform.js";
4
- import { ShadedGeometry } from "../ecs/mesh-v2/ShadedGeometry.js";
5
- import { OctahedronBufferGeometry } from "three";
6
- import { ShadedGeometryFlags } from "../ecs/mesh-v2/ShadedGeometryFlags.js";
7
-
8
- /**
9
- *
10
- * @param {number} [size]
11
- * @param position
12
- * @param position_offset
13
- * @param sh
14
- * @param sh_offset
15
- * @return {Entity}
16
- */
17
- export function visualise_probe({ size = 1,shadow=false, position, position_offset = 0, sh, sh_offset = 0 }) {
18
-
19
- const mat = new SH3VisualisationMaterial();
20
-
21
- for (let i = 0; i < 9; i++) {
22
- mat.uniforms.sh.value[i].fromArray(sh, sh_offset + i * 3);
23
- }
24
-
25
- const shadedGeometry = ShadedGeometry.from(new OctahedronBufferGeometry(1, 5), mat);
26
-
27
- shadedGeometry.writeFlag(ShadedGeometryFlags.ReceiveShadow,shadow);
28
- shadedGeometry.writeFlag(ShadedGeometryFlags.CastShadow,shadow);
29
-
30
- return new Entity()
31
- .add(Transform.fromJSON({
32
- position: {
33
- x: position[position_offset],
34
- y: position[position_offset + 1],
35
- z: position[position_offset + 2],
36
- },
37
- scale: size
38
- }))
39
- .add(shadedGeometry);
40
- }