@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
@@ -0,0 +1,35 @@
1
+ /**
2
+ * @abstract
3
+ */
4
+ export class ProbeRenderer {
5
+ /**
6
+ *
7
+ * @param {EntityComponentDataset} ecd
8
+ * @abstract
9
+ */
10
+ build_scene(ecd) {
11
+ }
12
+
13
+ /**
14
+ * @abstract
15
+ */
16
+ async bake_start() {
17
+ }
18
+
19
+ /**
20
+ * @abstract
21
+ */
22
+ bake_end() {
23
+ }
24
+
25
+ /**
26
+ *
27
+ * @param {number[]} position
28
+ * @param {number} position_offset
29
+ * @param {number[]} output
30
+ * @param {number} output_offset
31
+ * @abstract
32
+ */
33
+ bake(position, position_offset, output, output_offset) {
34
+ }
35
+ }
@@ -0,0 +1,27 @@
1
+ export class WebGLCubeProbeRenderer extends ProbeRenderer {
2
+ /**
3
+ *
4
+ * @type {THREE.WebGLRenderer|null}
5
+ * @private
6
+ */
7
+ private __renderer;
8
+ render_target: WebGLCubeRenderTarget;
9
+ /**
10
+ * Used to read out GPU memory for each face
11
+ * @type {Uint8Array}
12
+ * @private
13
+ */
14
+ private __cube_face_raw;
15
+ __cube_camera: CubeCamera;
16
+ /**
17
+ *
18
+ * @type {Scene}
19
+ * @private
20
+ */
21
+ private __scene;
22
+ bake_start(): void;
23
+ }
24
+ import { ProbeRenderer } from "./ProbeRenderer.js";
25
+ import { WebGLCubeRenderTarget } from "three";
26
+ import { CubeCamera } from "three";
27
+ //# sourceMappingURL=WebGLCubeProbeRenderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebGLCubeProbeRenderer.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/sh3/lpv/WebGLCubeProbeRenderer.js"],"names":[],"mappings":"AAuBA;IAIQ;;;;OAIG;IACH,mBAAsB;IAEtB,qCASE;IAEF;;;;OAIG;IACH,wBAA8F;IAG9F,0BAAiE;IAEjE;;;;OAIG;IACH,gBAA0B;IA8C9B,mBAMC;CA6CJ;8BAxI6B,oBAAoB;sCAZ3C,OAAO;2BAAP,OAAO"}
@@ -0,0 +1,158 @@
1
+ import {
2
+ CubeCamera,
3
+ LinearEncoding,
4
+ LinearFilter,
5
+ MeshStandardMaterial,
6
+ RGBAFormat,
7
+ Scene,
8
+ VSMShadowMap,
9
+ WebGLCubeRenderTarget
10
+ } from "three";
11
+ import { array_copy } from "../../../../core/collection/array/array_copy.js";
12
+ import { Transform } from "../../../ecs/transform/Transform.js";
13
+ import { three_set_shadow_resolution } from "../../ecs/light/binding/three/ThreeLightBinding.js";
14
+ import { threeMakeLight } from "../../ecs/light/binding/three/threeMakeLight.js";
15
+ import { Light } from "../../ecs/light/Light.js";
16
+ import { ThreeLightCache } from "../../ecs/light/three/ThreeLightCache.js";
17
+ import { build_three_object } from "../../ecs/mesh-v2/build_three_object.js";
18
+ import { ShadedGeometry } from "../../ecs/mesh-v2/ShadedGeometry.js";
19
+ import { applyTransformToThreeObject } from "../../ecs/mesh/applyTransformToThreeObject.js";
20
+ import { WebGLRendererPool } from "../../render/RendererPool.js";
21
+ import { fromCubeRenderTarget } from "../fromCubeRenderTarget.js";
22
+ import { ProbeRenderer } from "./ProbeRenderer.js";
23
+
24
+ export class WebGLCubeProbeRenderer extends ProbeRenderer {
25
+ constructor() {
26
+
27
+ super();
28
+ /**
29
+ *
30
+ * @type {THREE.WebGLRenderer|null}
31
+ * @private
32
+ */
33
+ this.__renderer = null;
34
+
35
+ this.render_target = new WebGLCubeRenderTarget(32, {
36
+ format: RGBAFormat,
37
+ minFilter: LinearFilter,
38
+ magFilter: LinearFilter,
39
+ depthBuffer: true,
40
+ scissorTest: false,
41
+ stencilBuffer: false,
42
+ generateMipmaps: false,
43
+ encoding: LinearEncoding
44
+ });
45
+
46
+ /**
47
+ * Used to read out GPU memory for each face
48
+ * @type {Uint8Array}
49
+ * @private
50
+ */
51
+ this.__cube_face_raw = new Uint8Array(this.render_target.width * this.render_target.width * 4);
52
+
53
+
54
+ this.__cube_camera = new CubeCamera(0.1, 100, this.render_target);
55
+
56
+ /**
57
+ *
58
+ * @type {Scene}
59
+ * @private
60
+ */
61
+ this.__scene = new Scene();
62
+ // this.__scene.autoUpdate = false;
63
+ // this.__scene.matrixAutoUpdate = false;
64
+ }
65
+
66
+ /**
67
+ *
68
+ * @param {EntityComponentDataset} ecd
69
+ */
70
+ build_scene(ecd) {
71
+ this.__scene.children.splice(0, this.__scene.children.length);
72
+ ecd.traverseEntities([ShadedGeometry, Transform], (sg, t, entity) => {
73
+ const object3D = build_three_object(sg);
74
+ const source_material = sg.material;
75
+ //
76
+ if (source_material.isMeshStandardMaterial === true) {
77
+ object3D.material = new MeshStandardMaterial({
78
+ map: source_material.map,
79
+ });
80
+ object3D.material.color.copy(source_material.color);
81
+ } else {
82
+ object3D.material = source_material.clone();
83
+ }
84
+ applyTransformToThreeObject(object3D, t);
85
+ array_copy(t.matrix, 0, object3D.matrixWorld.elements, 0, 16);
86
+ this.__scene.add(object3D);
87
+ });
88
+ const lightCache = new ThreeLightCache();
89
+ ecd.traverseEntities([Light, Transform], (light, t) => {
90
+ /**
91
+ *
92
+ * @type {DirectionalLight|SpotLight|PointLight|AmbientLight}
93
+ */
94
+ const object = threeMakeLight(light, lightCache);
95
+ applyTransformToThreeObject(object, t);
96
+ const shadow = object.shadow;
97
+ if (shadow !== undefined) {
98
+ shadow.radius = 1;
99
+ shadow.blurSamples = 8;
100
+ three_set_shadow_resolution(shadow, 2048);
101
+ }
102
+ this.__scene.add(object);
103
+ });
104
+ // this.__scene.add(this.__cube_camera);
105
+ }
106
+
107
+ bake_start() {
108
+ const renderer = WebGLRendererPool.global.get();
109
+ this.__renderer = renderer;
110
+ renderer.shadowMap.enabled = true;
111
+ renderer.shadowMap.type = VSMShadowMap;
112
+ // this.__renderer = this.ge.getRenderer();
113
+ }
114
+
115
+ bake_end() {
116
+ WebGLRendererPool.global.release(this.__renderer);
117
+ this.__renderer = null;
118
+ }
119
+
120
+ /**
121
+ *
122
+ * @param {number[]} position
123
+ * @param {number} position_offset
124
+ * @param {number[]} output
125
+ * @param {number} output_offset
126
+ */
127
+ bake(position, position_offset, output, output_offset) {
128
+ // console.warn(position_offset, output_offset);
129
+ // const ge = this.ge;
130
+ const renderer = this.__renderer;
131
+ const _rt = renderer.getRenderTarget();
132
+ const _rt_active_face = renderer.getActiveCubeFace();
133
+ const _acc = renderer.autoClearColor;
134
+ const _acd = renderer.autoClearDepth;
135
+ const _ac = renderer.autoClear;
136
+ const _outputEncoding = renderer.outputEncoding;
137
+ renderer.outputEncoding = LinearEncoding;
138
+ renderer.autoClearColor = true;
139
+ renderer.autoClearDepth = true;
140
+ renderer.autoClear = true;
141
+ this.__cube_camera.position.fromArray(position, position_offset);
142
+ this.__cube_camera.children.forEach(c => {
143
+ c.updateProjectionMatrix();
144
+ c.updateMatrix();
145
+ c.updateMatrixWorld(true);
146
+ });
147
+ this.__cube_camera.update(renderer, this.__scene);
148
+ // compute coefficients from renderer
149
+ const probe_coefficients = fromCubeRenderTarget(this.__cube_face_raw, renderer, this.render_target);
150
+ array_copy(probe_coefficients, 0, output, output_offset, 27);
151
+ // restore state
152
+ renderer.setRenderTarget(_rt, _rt_active_face);
153
+ renderer.autoClearColor = _acc;
154
+ renderer.autoClearDepth = _acd;
155
+ renderer.autoClear = _ac;
156
+ renderer.outputEncoding = _outputEncoding;
157
+ }
158
+ }
@@ -0,0 +1,11 @@
1
+ /**
2
+ *
3
+ * @param {Engine} engine
4
+ * @param {EntityComponentDataset} ecd
5
+ * @param {AABB3} bounds
6
+ * @param {number} [density]
7
+ * @returns {Promise<LightProbeVolume>}
8
+ */
9
+ export function build_probes_for_scene({ engine, ecd, bounds, density }: Engine): Promise<LightProbeVolume>;
10
+ import { LightProbeVolume } from "./LightProbeVolume.js";
11
+ //# sourceMappingURL=build_probes_for_scene.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build_probes_for_scene.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/sh3/lpv/build_probes_for_scene.js"],"names":[],"mappings":"AAUA;;;;;;;GAOG;AACH,kFAFa,QAAQ,gBAAgB,CAAC,CA8GrC;iCAtHgC,uBAAuB"}
@@ -0,0 +1,127 @@
1
+ import { AABB3 } from "../../../../core/geom/3d/aabb/AABB3.js";
2
+ import { make_justified_point_grid } from "../../../../core/geom/3d/util/make_justified_point_grid.js";
3
+ import Vector2 from "../../../../core/geom/Vector2.js";
4
+ import { delay } from "../../../../core/process/delay.js";
5
+ import Entity from "../../../ecs/Entity.js";
6
+ import GUIElement from "../../../ecs/gui/GUIElement.js";
7
+ import ViewportPosition from "../../../ecs/gui/position/ViewportPosition.js";
8
+ import { makeSimpleTaskProgressView } from "../../../makeSimpleTaskProgressView.js";
9
+ import { LightProbeVolume } from "./LightProbeVolume.js";
10
+
11
+ /**
12
+ *
13
+ * @param {Engine} engine
14
+ * @param {EntityComponentDataset} ecd
15
+ * @param {AABB3} bounds
16
+ * @param {number} [density]
17
+ * @returns {Promise<LightProbeVolume>}
18
+ */
19
+ export async function build_probes_for_scene(
20
+ {
21
+ engine,
22
+ ecd,
23
+ bounds,
24
+ density = 1000
25
+ }
26
+ ) {
27
+
28
+ const lpv = new LightProbeVolume();
29
+
30
+ // lpv.add_point(10, 5, 10);
31
+
32
+ // const desired_density = 8000;
33
+ const desired_frequency = Math.cbrt(density);
34
+
35
+
36
+ // const light_volume_bounds = new AABB3(-10, 0.5, -10, 10, 11, 10);
37
+ const probe_grid_spacing_dense = Math.min(bounds.getExtentsX(), bounds.getExtentsY(), bounds.getExtentsZ()) / desired_frequency;
38
+ const probe_grid_spacing_sparse = Math.max(bounds.getExtentsX(), bounds.getExtentsY(), bounds.getExtentsZ()) / desired_frequency;
39
+
40
+ const probe_grid_spacing = (probe_grid_spacing_sparse / probe_grid_spacing_dense) < 2 ? probe_grid_spacing_dense : probe_grid_spacing_sparse * 0.5;
41
+ //
42
+ // const probe_grid_spacing =desired_density/ (mesh_asset.boundingBox.getExtentsX()* mesh_asset.boundingBox.getExtentsY()* mesh_asset.boundingBox.getExtentsZ());
43
+
44
+ const model_bounds = new AABB3(-10, 0.5, -10, 10, 11, 10);
45
+ model_bounds.copy(bounds);
46
+ // model_bounds._translate(composition.transform.position.x, composition.transform.position.y, composition.transform.position.z);
47
+ model_bounds.grow(probe_grid_spacing * 1.05);
48
+
49
+
50
+ // sg_hierarchy_compute_bounding_box_via_parent_entity(light_volume_bounds, composition.entity.entity, ecd);
51
+
52
+ // for (let i = 0; i < 100; i++) {
53
+ // lpv.add_point(
54
+ // randomFloatBetween(random, light_volume_bounds.x0, light_volume_bounds.x1),
55
+ // randomFloatBetween(random, light_volume_bounds.y0, light_volume_bounds.y1),
56
+ // randomFloatBetween(random, light_volume_bounds.z0, light_volume_bounds.z1),
57
+ // );
58
+ // }
59
+
60
+ make_justified_point_grid(model_bounds, probe_grid_spacing, (x, y, z) => {
61
+ lpv.add_point(x, y, z);
62
+ });
63
+
64
+ // lpv.add_point(10, 1, -10);
65
+
66
+ await delay(2000);
67
+
68
+ //
69
+ // console.profile('lpv build');
70
+ //
71
+ const task = lpv.build(ecd);
72
+ // console.profileEnd('lpv build');
73
+
74
+ const progress = makeSimpleTaskProgressView({
75
+ task,
76
+ localization: engine.localization,
77
+ size: new Vector2(512, 64)
78
+ });
79
+
80
+ const progress_entity = new Entity();
81
+ progress_entity
82
+ .add(GUIElement.fromView(progress))
83
+ .add(ViewportPosition.fromJSON({
84
+ position: new Vector2(0, 1),
85
+ anchor: new Vector2(0, 1),
86
+ offset: new Vector2(16, -16)
87
+ }))
88
+ .build(ecd);
89
+
90
+ task.promise().finally(() => progress_entity.destroy())
91
+
92
+ engine.executor.runGroup(task);
93
+
94
+ // fill probes with random data
95
+ // for (let i = 0; i < lpv.__length * 27; i++) {
96
+ // lpv.__probe_data[i] = random();
97
+ // }
98
+
99
+ // for (let i = 0; i < lpv.__length; i++) {
100
+ //
101
+ // for (let j = 0; j < 9; j++) {
102
+ // lpv.__probe_data[(i * 9 + j) * 3] = max2(0, (lpv.__positions[i * 3] + 10) / 20);
103
+ // lpv.__probe_data[(i * 9 + j) * 3 + 1] = max2(0, (lpv.__positions[i * 3 + 1] - 0.5) / 10.5);
104
+ // lpv.__probe_data[(i * 9 + j) * 3 + 2] = max2(0, (lpv.__positions[i * 3 + 2] + 10) / 20);
105
+ // }
106
+ // }
107
+
108
+ // lpv.white_probe(0, [
109
+ // 0.7953949, 0.4405923, 0.5459412,
110
+ // 0.3981450, 0.3526911, 0.6097158,
111
+ // -0.3424573, -0.1838151, -0.2715583,
112
+ //
113
+ // -0.2944621, -0.0560606, 0.0095193,
114
+ // -0.1123051, -0.0513088, -0.1232869,
115
+ // -0.2645007, -0.2257996, -0.4785847,
116
+ //
117
+ // -0.1569444, -0.0954703, -0.1485053,
118
+ // 0.5646247, 0.2161586, 0.1402643,
119
+ // 0.2137442, -0.0547578, -0.3061700], 0);
120
+
121
+
122
+ console.log(lpv);
123
+
124
+ await task.promise();
125
+
126
+ return lpv;
127
+ }
@@ -0,0 +1,12 @@
1
+ /**
2
+ *
3
+ * @param {LightProbeVolume} lpv
4
+ */
5
+ export function probe_volume_to_textures(lpv: LightProbeVolume): {
6
+ mesh_vertices: AttributeDataTexture;
7
+ mesh_neighbours: AttributeDataTexture;
8
+ probe_positions: AttributeDataTexture;
9
+ probe_values: AttributeDataTexture;
10
+ };
11
+ import { AttributeDataTexture } from "../../texture/AttributeDataTexture.js";
12
+ //# sourceMappingURL=probe_volume_to_textures.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"probe_volume_to_textures.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/sh3/lpv/probe_volume_to_textures.js"],"names":[],"mappings":"AAMA;;;GAGG;AACH;;;;;EAuDC;qCA9DoC,uCAAuC"}
@@ -0,0 +1,89 @@
1
+ import { BinaryDataType } from "../../../../core/binary/type/BinaryDataType.js";
2
+ import { array_copy } from "../../../../core/collection/array/array_copy.js";
3
+ import { AttributeSpec } from "../../geometry/AttributeSpec.js";
4
+ import { AttributeDataTexture } from "../../texture/AttributeDataTexture.js";
5
+ import { tetrahedral_mesh_to_texture } from "../gi/tetrahedral_mesh_to_texture.js";
6
+
7
+ /**
8
+ *
9
+ * @param {LightProbeVolume} lpv
10
+ */
11
+ export function probe_volume_to_textures(lpv) {
12
+
13
+ const tex_vertices = new AttributeDataTexture(
14
+ AttributeSpec.fromJSON({
15
+ name: "vertex",
16
+ type: BinaryDataType.Uint16,
17
+ itemSize: 4,
18
+ normalized: false
19
+ }),
20
+ 256, 1
21
+ );
22
+
23
+ const tex_neighbours = new AttributeDataTexture(
24
+ AttributeSpec.fromJSON({
25
+ name: "neighbour",
26
+ type: BinaryDataType.Uint32,
27
+ itemSize: 4,
28
+ normalized: false
29
+ }),
30
+ 256, 1
31
+ );
32
+
33
+ const tex_positions = new AttributeDataTexture(
34
+ AttributeSpec.fromJSON({
35
+ name: "positions",
36
+ type: BinaryDataType.Float32,
37
+ itemSize: 3,
38
+ normalized: false
39
+ }),
40
+ 256, 1
41
+ );
42
+
43
+ const tex_harmonics = new AttributeDataTexture(
44
+ AttributeSpec.fromJSON({
45
+ name: "harmonics",
46
+ type: BinaryDataType.Float32,
47
+ itemSize: 3,
48
+ normalized: false
49
+ }),
50
+ 256, 9
51
+ );
52
+
53
+ vector_buffer_to_attribute_texture(tex_positions, lpv.points, lpv.count, 3);
54
+ vector_buffer_to_attribute_texture(tex_harmonics, lpv.harmonics, lpv.count * 9, 3);
55
+ tetrahedral_mesh_to_texture(
56
+ tex_vertices, tex_neighbours, lpv.mesh
57
+ );
58
+
59
+ return {
60
+ mesh_vertices: tex_vertices,
61
+ mesh_neighbours: tex_neighbours,
62
+
63
+ probe_positions: tex_positions,
64
+ probe_values: tex_harmonics
65
+ };
66
+ }
67
+
68
+ /**
69
+ *
70
+ * @param {AttributeDataTexture} target
71
+ * @param {number[]} points
72
+ * @param {number} point_count
73
+ * @param {number} dimensions
74
+ */
75
+ function vector_buffer_to_attribute_texture(
76
+ target,
77
+ points,
78
+ point_count,
79
+ dimensions = 3
80
+ ) {
81
+ if (target.spec.itemSize !== dimensions) {
82
+ throw new Error(`Expected spec.itemCount = ${dimensions} (number of dimensions), instead got ${target.spec.itemSize}`);
83
+ }
84
+
85
+ target.resize(point_count);
86
+ target.build();
87
+
88
+ array_copy(points, 0, target.data, 0, point_count * dimensions);
89
+ }
@@ -0,0 +1,90 @@
1
+ export class PathTracedScene {
2
+ /**
3
+ *
4
+ * @type {BVH}
5
+ */
6
+ bvh_top_level: BVH;
7
+ /**
8
+ *
9
+ * @type {Map<number, PathTracedMesh>}
10
+ */
11
+ meshes: Map<number, PathTracedMesh>;
12
+ /**
13
+ *
14
+ * @type {AbstractLight[]}
15
+ */
16
+ __lights: AbstractLight[];
17
+ /**
18
+ *
19
+ * @type {Map<THREE.BufferGeometry, GeometryBVHBatched>}
20
+ */
21
+ geo_cache: Map<THREE.BufferGeometry, GeometryBVHBatched>;
22
+ /**
23
+ * Maps {@link Texture.id} to relevant sampler
24
+ * @type {Map<number, Sampler2D>}
25
+ */
26
+ textures: Map<number, Sampler2D>;
27
+ /**
28
+ *
29
+ * @type {function}
30
+ * @private
31
+ */
32
+ private __background_sampler;
33
+ optimize(): void;
34
+ build(): Promise<void>;
35
+ /**
36
+ *
37
+ * @param {THREE.BufferGeometry} geo
38
+ * @return {GeometryBVHBatched}
39
+ */
40
+ obtainGeometryBVH(geo: THREE.BufferGeometry): GeometryBVHBatched;
41
+ /**
42
+ *
43
+ * @param {AbstractLight} light
44
+ */
45
+ addLight(light: AbstractLight): void;
46
+ /**
47
+ *
48
+ * @param {THREE.BufferGeometry} geo
49
+ * @param {THREE.Material} material
50
+ * @param {mat4|number[]} transform
51
+ */
52
+ addMesh(geo: THREE.BufferGeometry, material: THREE.Material, transform: mat4 | number[]): void;
53
+ /**
54
+ *
55
+ * @param {number[]} out [color_r, color_g, color_b, normal_x, normal_y, normal_z]
56
+ * @param {number[]} hit
57
+ */
58
+ sample_material(out: number[], hit: number[]): void;
59
+ /**
60
+ *
61
+ * @param {number[]} out
62
+ * @param {number[]} ray
63
+ * @param {number} min_distance
64
+ * @param {number} max_distance
65
+ * @return {number}
66
+ */
67
+ trace(out: number[], ray: number[], min_distance: number, max_distance: number): number;
68
+ /**
69
+ *
70
+ * @param {number[]} out
71
+ * @param {number} out_offset
72
+ * @param {number[]} direction
73
+ * @param {number} direction_offset
74
+ */
75
+ sample_background(out: number[], out_offset: number, direction: number[], direction_offset: number): void;
76
+ /**
77
+ *
78
+ * @param {number[]} out
79
+ * @param {number} out_offset
80
+ * @param {number[]} ray
81
+ * @param {number} ray_address
82
+ * @returns {boolean}
83
+ */
84
+ sample_lights(out: number[], out_offset: number, ray: number[], ray_address: number): boolean;
85
+ }
86
+ import { BVH } from "../../../../core/bvh2/bvh3/BVH.js";
87
+ import { PathTracedMesh } from "./PathTracedMesh.js";
88
+ import { AbstractLight } from "../../render/forward_plus/model/AbstractLight.js";
89
+ import { GeometryBVHBatched } from "./GeometryBVHBatched.js";
90
+ //# sourceMappingURL=PathTracedScene.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PathTracedScene.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/sh3/path_tracer/PathTracedScene.js"],"names":[],"mappings":"AAsBA;IAGI;;;OAGG;IACH,eAFU,GAAG,CAEa;IAE1B;;;OAGG;IACH,QAFU,IAAI,MAAM,EAAE,cAAc,CAAC,CAElB;IAEnB;;;OAGG;IACH,UAFU,aAAa,EAAE,CAEX;IAEd;;;OAGG;IACH,WAFU,IAAI,MAAM,cAAc,EAAE,kBAAkB,CAAC,CAEjC;IAEtB;;;OAGG;IACH,UAFU,IAAI,MAAM,YAAY,CAEX;IAGrB;;;;OAIG;IACH,6BAA6C;IAE7C,iBAGC;IAED,uBAoCC;IAED;;;;OAIG;IACH,uBAHW,MAAM,cAAc,GACnB,kBAAkB,CAgB7B;IAED;;;OAGG;IACH,gBAFW,aAAa,QAMvB;IAED;;;;;OAKG;IACH,aAJW,MAAM,cAAc,YACpB,MAAM,QAAQ,aACd,OAAK,MAAM,EAAE,QA6CvB;IAED;;;;OAIG;IACH,qBAHW,MAAM,EAAE,OACR,MAAM,EAAE,QAyBlB;IAED;;;;;;;OAOG;IACH,WANW,MAAM,EAAE,OACR,MAAM,EAAE,gBACR,MAAM,gBACN,MAAM,GACL,MAAM,CAwCjB;IAED;;;;;;OAMG;IACH,uBALW,MAAM,EAAE,cACR,MAAM,aACN,MAAM,EAAE,oBACR,MAAM,QAIhB;IAED;;;;;;;OAOG;IACH,mBANW,MAAM,EAAE,cACR,MAAM,OACN,MAAM,EAAE,eACR,MAAM,GACJ,OAAO,CAmEnB;CACJ;oBA9VmB,mCAAmC;+BAaxB,qBAAqB;8BALtB,kDAAkD;mCAG7C,yBAAyB"}