@woosh/meep-engine 2.109.0 → 2.109.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 (311) hide show
  1. package/build/meep.cjs +150 -199
  2. package/build/meep.min.js +1 -1
  3. package/build/meep.module.js +150 -199
  4. package/package.json +1 -1
  5. package/src/core/binary/BitSet.d.ts +6 -0
  6. package/src/core/binary/BitSet.d.ts.map +1 -1
  7. package/src/core/binary/BitSet.js +14 -42
  8. package/src/core/binary/align_32.d.ts +7 -0
  9. package/src/core/binary/align_32.d.ts.map +1 -0
  10. package/src/core/binary/align_32.js +8 -0
  11. package/src/core/binary/align_32.spec.d.ts +2 -0
  12. package/src/core/binary/align_32.spec.d.ts.map +1 -0
  13. package/src/core/binary/align_32.spec.js +11 -0
  14. package/src/core/binary/align_4.js +2 -1
  15. package/src/core/binary/ctz32.d.ts.map +1 -1
  16. package/src/core/binary/ctz32.js +12 -11
  17. package/src/core/binary/lsb_32.d.ts +9 -0
  18. package/src/core/binary/lsb_32.d.ts.map +1 -0
  19. package/src/core/binary/lsb_32.js +12 -0
  20. package/src/core/binary/msb_32.d.ts +2 -0
  21. package/src/core/binary/msb_32.d.ts.map +1 -0
  22. package/src/core/binary/msb_32.js +20 -0
  23. package/src/core/binary/msb_lut_de_bruijn.d.ts +7 -0
  24. package/src/core/binary/msb_lut_de_bruijn.d.ts.map +1 -0
  25. package/src/core/binary/msb_lut_de_bruijn.js +9 -0
  26. package/src/core/binary/reinterpret_int32_as_float32.d.ts +7 -0
  27. package/src/core/binary/reinterpret_int32_as_float32.d.ts.map +1 -0
  28. package/src/core/binary/reinterpret_int32_as_float32.js +14 -0
  29. package/src/core/binary/reverse_bits_uint32.d.ts +8 -0
  30. package/src/core/binary/reverse_bits_uint32.d.ts.map +1 -0
  31. package/src/core/binary/reverse_bits_uint32.js +17 -0
  32. package/src/core/binary/reverse_bits_uint32.spec.d.ts +2 -0
  33. package/src/core/binary/reverse_bits_uint32.spec.d.ts.map +1 -0
  34. package/src/core/binary/reverse_bits_uint32.spec.js +18 -0
  35. package/src/core/bvh2/bvh3/BVH.d.ts.map +1 -1
  36. package/src/core/bvh2/bvh3/BVH.js +13 -18
  37. package/src/core/bvh2/bvh3/ebvh_build_for_geometry_incremental.d.ts.map +1 -1
  38. package/src/core/bvh2/bvh3/ebvh_build_for_geometry_incremental.js +3 -1
  39. package/src/core/bvh2/bvh3/ebvh_build_for_geometry_morton.d.ts.map +1 -1
  40. package/src/core/bvh2/bvh3/ebvh_build_for_geometry_morton.js +6 -7
  41. package/src/core/bvh2/bvh3/ebvh_build_hierarchy.d.ts.map +1 -1
  42. package/src/core/bvh2/bvh3/ebvh_build_hierarchy.js +4 -0
  43. package/src/core/bvh2/bvh3/query/backtracking/bvh_backtracking_query_leaves_ray.d.ts +16 -0
  44. package/src/core/bvh2/bvh3/query/backtracking/bvh_backtracking_query_leaves_ray.d.ts.map +1 -0
  45. package/src/core/bvh2/bvh3/query/backtracking/bvh_backtracking_query_leaves_ray.js +130 -0
  46. package/src/core/bvh2/bvh3/query/cache/BVH_QUERY_CACHE_SIZE.d.ts +2 -0
  47. package/src/core/bvh2/bvh3/query/cache/BVH_QUERY_CACHE_SIZE.d.ts.map +1 -0
  48. package/src/core/bvh2/bvh3/query/cache/BVH_QUERY_CACHE_SIZE.js +1 -0
  49. package/src/core/bvh2/bvh3/query/cache/bvh_query_cache_hash_v3.d.ts +9 -0
  50. package/src/core/bvh2/bvh3/query/cache/bvh_query_cache_hash_v3.d.ts.map +1 -0
  51. package/src/core/bvh2/bvh3/query/cache/bvh_query_cache_hash_v3.js +31 -0
  52. package/src/core/collection/array/array_quick_sort_by_lookup_map.d.ts +9 -0
  53. package/src/core/collection/array/array_quick_sort_by_lookup_map.d.ts.map +1 -0
  54. package/src/core/collection/array/array_quick_sort_by_lookup_map.js +79 -0
  55. package/src/core/collection/array/array_quick_sort_by_lookup_uint.d.ts +8 -0
  56. package/src/core/collection/array/array_quick_sort_by_lookup_uint.d.ts.map +1 -0
  57. package/src/core/collection/array/{array_quick_sort_by_lookup.js → array_quick_sort_by_lookup_uint.js} +1 -1
  58. package/src/core/collection/array/array_shuffle.js +1 -1
  59. package/src/core/collection/array/array_swap_one.d.ts.map +1 -1
  60. package/src/core/collection/array/array_swap_one.js +6 -0
  61. package/src/core/events/signal/Signal.d.ts.map +1 -1
  62. package/src/core/events/signal/Signal.js +10 -10
  63. package/src/core/geom/2d/compute_triangle_area_2d.d.ts.map +1 -1
  64. package/src/core/geom/2d/compute_triangle_area_2d.js +5 -3
  65. package/src/core/geom/3d/Ray3.d.ts +6 -0
  66. package/src/core/geom/3d/Ray3.d.ts.map +1 -1
  67. package/src/core/geom/3d/Ray3.js +24 -0
  68. package/src/core/geom/3d/aabb/aabb3_compute_distance_above_plane_min.d.ts +16 -0
  69. package/src/core/geom/3d/aabb/aabb3_compute_distance_above_plane_min.d.ts.map +1 -0
  70. package/src/core/geom/3d/aabb/aabb3_compute_distance_above_plane_min.js +29 -0
  71. package/src/core/geom/3d/aabb/aabb3_from_v3_array_transformed.d.ts +2 -2
  72. package/src/core/geom/3d/aabb/aabb3_from_v3_array_transformed.d.ts.map +1 -1
  73. package/src/core/geom/3d/aabb/aabb3_from_v3_array_transformed.js +6 -6
  74. package/src/core/geom/3d/aabb/aabb3_overlaps_ray_segment.d.ts +11 -0
  75. package/src/core/geom/3d/aabb/aabb3_overlaps_ray_segment.d.ts.map +1 -0
  76. package/src/core/geom/3d/aabb/aabb3_overlaps_ray_segment.js +61 -0
  77. package/src/core/geom/3d/eulerAnglesFromMatrix.d.ts +2 -2
  78. package/src/core/geom/3d/eulerAnglesFromMatrix.d.ts.map +1 -1
  79. package/src/core/geom/3d/eulerAnglesFromMatrix.js +28 -25
  80. package/src/core/geom/3d/morton/v3_morton_encode_bounded.d.ts +2 -2
  81. package/src/core/geom/3d/morton/v3_morton_encode_bounded.d.ts.map +1 -1
  82. package/src/core/geom/3d/morton/v3_morton_encode_bounded.js +1 -1
  83. package/src/core/geom/3d/normal/octahedron/decode_octahedron_to_unit.d.ts +2 -2
  84. package/src/core/geom/3d/normal/octahedron/decode_octahedron_to_unit.d.ts.map +1 -1
  85. package/src/core/geom/3d/normal/octahedron/decode_octahedron_to_unit.js +1 -1
  86. package/src/core/geom/3d/ray/ray3_shift_origin_along_direction.js +2 -2
  87. package/src/core/geom/3d/sphere/harmonics/sh3_convolve_with_cosine_kernel.js +2 -1
  88. package/src/core/geom/3d/sphere/harmonics/sh3_vector_accumulate.d.ts +12 -0
  89. package/src/core/geom/3d/sphere/harmonics/sh3_vector_accumulate.d.ts.map +1 -0
  90. package/src/core/geom/3d/sphere/harmonics/sh3_vector_accumulate.js +40 -0
  91. package/src/core/geom/3d/sphere/harmonics/sh3_vector_accumulate.spec.d.ts +2 -0
  92. package/src/core/geom/3d/sphere/harmonics/sh3_vector_accumulate.spec.d.ts.map +1 -0
  93. package/src/core/geom/3d/sphere/harmonics/sh3_vector_accumulate.spec.js +27 -0
  94. package/src/core/geom/3d/sphere/sphere_intersects_ray.js +1 -1
  95. package/src/core/geom/3d/tetrahedra/tetrahedron_compute_circumsphere.d.ts.map +1 -1
  96. package/src/core/geom/3d/tetrahedra/tetrahedron_compute_circumsphere.js +24 -188
  97. package/src/core/geom/3d/tetrahedra/triangle/prototype.js +1 -1
  98. package/src/core/geom/3d/tetrahedra/visualize_tetrahedral_mesh.d.ts +11 -0
  99. package/src/core/geom/3d/tetrahedra/visualize_tetrahedral_mesh.d.ts.map +1 -0
  100. package/src/core/geom/3d/tetrahedra/visualize_tetrahedral_mesh.js +42 -0
  101. package/src/core/geom/3d/topology/samples/sampleFloodFill.js +2 -2
  102. package/src/core/geom/3d/topology/tm_face_area.js +2 -2
  103. package/src/core/geom/3d/triangle/{computeTriangleSurfaceArea.d.ts → compute_triangle_area_3d.d.ts} +2 -2
  104. package/src/core/geom/3d/triangle/compute_triangle_area_3d.d.ts.map +1 -0
  105. package/src/core/geom/3d/triangle/{computeTriangleSurfaceArea.js → compute_triangle_area_3d.js} +2 -4
  106. package/src/core/geom/Quaternion.d.ts.map +1 -1
  107. package/src/core/geom/Quaternion.js +13 -102
  108. package/src/core/geom/Quaternion.spec.js +2 -2
  109. package/src/core/geom/Vector1.d.ts.map +1 -1
  110. package/src/core/geom/Vector1.js +14 -6
  111. package/src/core/geom/vec/vector_copy.d.ts +10 -0
  112. package/src/core/geom/vec/vector_copy.d.ts.map +1 -0
  113. package/src/core/geom/vec/vector_copy.js +13 -0
  114. package/src/core/{math/vector_nd_dot.d.ts → geom/vec/vector_dot.d.ts} +2 -2
  115. package/src/core/geom/vec/vector_dot.d.ts.map +1 -0
  116. package/src/core/{math/vector_nd_dot.js → geom/vec/vector_dot.js} +1 -1
  117. package/src/core/{math/vector_nd_normalize.d.ts → geom/vec/vector_normalize.d.ts} +2 -2
  118. package/src/core/geom/vec/vector_normalize.d.ts.map +1 -0
  119. package/src/core/{math/vector_nd_normalize.js → geom/vec/vector_normalize.js} +1 -1
  120. package/src/core/geom/vec/vector_normalize.spec.d.ts +2 -0
  121. package/src/core/geom/vec/vector_normalize.spec.d.ts.map +1 -0
  122. package/src/core/{math/vector_nd_normalize.spec.js → geom/vec/vector_normalize.spec.js} +3 -3
  123. package/src/core/geom/vec/vector_scale_array.d.ts +11 -0
  124. package/src/core/geom/vec/vector_scale_array.d.ts.map +1 -0
  125. package/src/core/geom/vec/vector_scale_array.js +31 -0
  126. package/src/core/geom/vec3/v3_array_displace_in_direction.d.ts +14 -0
  127. package/src/core/geom/vec3/v3_array_displace_in_direction.d.ts.map +1 -0
  128. package/src/core/geom/vec3/{v3_shift_along_direction.js → v3_array_displace_in_direction.js} +1 -1
  129. package/src/core/geom/vec3/v3_displace_in_direction.d.ts +7 -7
  130. package/src/core/geom/vec3/v3_displace_in_direction.d.ts.map +1 -1
  131. package/src/core/geom/vec3/v3_displace_in_direction.js +20 -17
  132. package/src/core/geom/vec3/v3_displace_in_direction.spec.d.ts +2 -0
  133. package/src/core/geom/vec3/v3_displace_in_direction.spec.d.ts.map +1 -0
  134. package/src/core/geom/vec3/v3_displace_in_direction.spec.js +80 -0
  135. package/src/core/geom/vec3/v3_dot_array_array.js +2 -0
  136. package/src/core/geom/vec4/v4_length.d.ts +10 -0
  137. package/src/core/geom/vec4/v4_length.d.ts.map +1 -0
  138. package/src/core/geom/vec4/v4_length.js +13 -0
  139. package/src/core/geom/vec4/v4_length_sqr.js +2 -1
  140. package/src/core/graph/eigen/matrix_eigenvalues_in_place.spec.js +31 -1
  141. package/src/core/math/FLT_EPSILON_64.d.ts +6 -0
  142. package/src/core/math/FLT_EPSILON_64.d.ts.map +1 -0
  143. package/src/core/math/FLT_EPSILON_64.js +5 -0
  144. package/src/core/math/gaussian.d.ts +2 -2
  145. package/src/core/math/gaussian.js +2 -2
  146. package/src/core/math/linalg/README.md +1 -0
  147. package/src/core/math/linalg/lu_factor_linear_system.d.ts +13 -0
  148. package/src/core/math/linalg/lu_factor_linear_system.d.ts.map +1 -0
  149. package/src/core/math/linalg/lu_factor_linear_system.js +112 -0
  150. package/src/core/math/linalg/lu_solve_linear_system.d.ts +14 -0
  151. package/src/core/math/linalg/lu_solve_linear_system.d.ts.map +1 -0
  152. package/src/core/math/linalg/lu_solve_linear_system.js +51 -0
  153. package/src/core/math/linalg/solve_linear_system.d.ts +14 -0
  154. package/src/core/math/linalg/solve_linear_system.d.ts.map +1 -0
  155. package/src/core/math/linalg/solve_linear_system.js +52 -0
  156. package/src/core/math/linalg/solve_linear_system.spec.d.ts +2 -0
  157. package/src/core/math/linalg/solve_linear_system.spec.d.ts.map +1 -0
  158. package/src/core/math/linalg/solve_linear_system.spec.js +70 -0
  159. package/src/core/math/linalg/solve_linear_system_GEPP_2x2.d.ts +10 -0
  160. package/src/core/math/linalg/solve_linear_system_GEPP_2x2.d.ts.map +1 -0
  161. package/src/core/math/linalg/solve_linear_system_GEPP_2x2.js +91 -0
  162. package/src/core/math/solveQuadratic.d.ts.map +1 -1
  163. package/src/core/math/solveQuadratic.js +2 -0
  164. package/src/core/math/statistics/gaussian_amplitude.d.ts +8 -0
  165. package/src/core/math/statistics/gaussian_amplitude.d.ts.map +1 -0
  166. package/src/core/math/statistics/gaussian_amplitude.js +13 -0
  167. package/src/core/math/statistics/halton_sequence.js +3 -3
  168. package/src/core/math/statistics/halton_sequence.spec.js +18 -0
  169. package/src/core/math/statistics/hammersley_sequence.d.ts +9 -0
  170. package/src/core/math/statistics/hammersley_sequence.d.ts.map +1 -0
  171. package/src/core/math/statistics/hammersley_sequence.js +25 -0
  172. package/src/core/math/statistics/hammersley_sequence_2d.d.ts +9 -0
  173. package/src/core/math/statistics/hammersley_sequence_2d.d.ts.map +1 -0
  174. package/src/core/math/statistics/hammersley_sequence_2d.js +17 -0
  175. package/src/core/math/statistics/radical_inverse_VdC_base_2.d.ts +8 -0
  176. package/src/core/math/statistics/radical_inverse_VdC_base_2.d.ts.map +1 -0
  177. package/src/core/math/statistics/radical_inverse_VdC_base_2.js +15 -0
  178. package/src/core/math/statistics/radical_inverse_VdC_base_2.spec.d.ts +2 -0
  179. package/src/core/math/statistics/radical_inverse_VdC_base_2.spec.d.ts.map +1 -0
  180. package/src/core/math/statistics/radical_inverse_VdC_base_2.spec.js +9 -0
  181. package/src/core/model/node-graph/node/NodeInstance.d.ts.map +1 -1
  182. package/src/core/model/node-graph/node/NodeInstance.js +44 -12
  183. package/src/core/model/node-graph/node/NodeInstance.spec.d.ts +2 -0
  184. package/src/core/model/node-graph/node/NodeInstance.spec.d.ts.map +1 -0
  185. package/src/core/model/node-graph/node/NodeInstance.spec.js +82 -0
  186. package/src/core/model/node-graph/node/NodeInstancePortReference.d.ts.map +1 -1
  187. package/src/core/model/node-graph/node/NodeInstancePortReference.js +9 -0
  188. package/src/core/model/node-graph/node/NodeInstancePortReference.spec.js +20 -0
  189. package/src/core/model/node-graph/node/Port.d.ts.map +1 -1
  190. package/src/core/model/node-graph/node/Port.js +5 -12
  191. package/src/core/model/node-graph/node/PortDirection.d.ts.map +1 -1
  192. package/src/core/model/node-graph/node/PortDirection.js +7 -1
  193. package/src/engine/asset/CORS/CrossOriginConfig.d.ts.map +1 -1
  194. package/src/engine/asset/CORS/CrossOriginConfig.js +6 -4
  195. package/src/engine/graphics/geometry/computeMeshSurfaceArea.js +2 -2
  196. package/src/engine/graphics/impostors/octahedral/grid/OctahedralUvEncoder.d.ts.map +1 -1
  197. package/src/engine/graphics/impostors/octahedral/grid/OctahedralUvEncoder.js +33 -3
  198. package/src/engine/graphics/impostors/octahedral/prototypeBaker.js +9 -7
  199. package/src/engine/graphics/particles/particular/engine/parameter/sample/RGB_LUT_INFERNO.d.ts +6 -0
  200. package/src/engine/graphics/particles/particular/engine/parameter/sample/RGB_LUT_INFERNO.d.ts.map +1 -0
  201. package/src/engine/graphics/particles/particular/engine/parameter/sample/RGB_LUT_INFERNO.js +18 -0
  202. package/src/engine/graphics/particles/particular/engine/parameter/sample/RGB_LUT_TURBO.d.ts +6 -0
  203. package/src/engine/graphics/particles/particular/engine/parameter/sample/RGB_LUT_TURBO.d.ts.map +1 -0
  204. package/src/engine/graphics/particles/particular/engine/parameter/sample/RGB_LUT_TURBO.js +266 -0
  205. package/src/engine/graphics/particles/particular/engine/parameter/sample/RGB_LUT_VIRIDIS.d.ts +7 -0
  206. package/src/engine/graphics/particles/particular/engine/parameter/sample/RGB_LUT_VIRIDIS.d.ts.map +1 -0
  207. package/src/engine/graphics/particles/particular/engine/parameter/sample/RGB_LUT_VIRIDIS.js +19 -0
  208. package/src/engine/graphics/sh3/SH3VisualisationMaterial.js +9 -9
  209. package/src/engine/graphics/sh3/fromCubeRenderTarget.d.ts.map +1 -1
  210. package/src/engine/graphics/sh3/fromCubeRenderTarget.js +14 -17
  211. package/src/engine/graphics/sh3/gi/material/MaterialTransformer.d.ts.map +1 -1
  212. package/src/engine/graphics/sh3/gi/material/MaterialTransformer.js +0 -2
  213. package/src/engine/graphics/sh3/lpv/LightProbeVolume.d.ts +7 -29
  214. package/src/engine/graphics/sh3/lpv/LightProbeVolume.d.ts.map +1 -1
  215. package/src/engine/graphics/sh3/lpv/LightProbeVolume.js +52 -164
  216. package/src/engine/graphics/sh3/lpv/LightProbeVolumeBaker.d.ts +13 -0
  217. package/src/engine/graphics/sh3/lpv/LightProbeVolumeBaker.d.ts.map +1 -0
  218. package/src/engine/graphics/sh3/lpv/LightProbeVolumeBaker.js +63 -0
  219. package/src/engine/graphics/sh3/lpv/PathTracerProbeRenderer.d.ts +1 -0
  220. package/src/engine/graphics/sh3/lpv/PathTracerProbeRenderer.d.ts.map +1 -1
  221. package/src/engine/graphics/sh3/lpv/PathTracerProbeRenderer.js +33 -16
  222. package/src/engine/graphics/sh3/lpv/build_probes_for_scene.d.ts.map +1 -1
  223. package/src/engine/graphics/sh3/lpv/build_probes_for_scene.js +4 -29
  224. package/src/engine/graphics/sh3/lpv/{LightProbeVolumeSerializationAdapter.d.ts → serialization/LightProbeVolumeSerializationAdapter.d.ts} +2 -2
  225. package/src/engine/graphics/sh3/lpv/serialization/LightProbeVolumeSerializationAdapter.d.ts.map +1 -0
  226. package/src/engine/graphics/sh3/lpv/{LightProbeVolumeSerializationAdapter.js → serialization/LightProbeVolumeSerializationAdapter.js} +2 -2
  227. package/src/engine/graphics/sh3/lpv/sh3_bake_depth.d.ts +13 -0
  228. package/src/engine/graphics/sh3/lpv/sh3_bake_depth.d.ts.map +1 -0
  229. package/src/engine/graphics/sh3/lpv/sh3_bake_depth.js +71 -0
  230. package/src/engine/graphics/sh3/lpv/worker/lpv_build_worker.d.ts +2 -0
  231. package/src/engine/graphics/sh3/lpv/worker/lpv_build_worker.d.ts.map +1 -0
  232. package/src/engine/graphics/sh3/lpv/worker/lpv_build_worker.js +38 -0
  233. package/src/engine/graphics/sh3/path_tracer/BufferedGeometryBVH.d.ts +1 -7
  234. package/src/engine/graphics/sh3/path_tracer/BufferedGeometryBVH.d.ts.map +1 -1
  235. package/src/engine/graphics/sh3/path_tracer/BufferedGeometryBVH.js +58 -147
  236. package/src/engine/graphics/sh3/path_tracer/PathTracedMesh.d.ts +13 -9
  237. package/src/engine/graphics/sh3/path_tracer/PathTracedMesh.d.ts.map +1 -1
  238. package/src/engine/graphics/sh3/path_tracer/PathTracedMesh.js +74 -54
  239. package/src/engine/graphics/sh3/path_tracer/PathTracedScene.d.ts +23 -5
  240. package/src/engine/graphics/sh3/path_tracer/PathTracedScene.d.ts.map +1 -1
  241. package/src/engine/graphics/sh3/path_tracer/PathTracedScene.js +211 -59
  242. package/src/engine/graphics/sh3/path_tracer/PathTracer.js +1 -1
  243. package/src/engine/graphics/sh3/path_tracer/build_bvh_nodes_distances_along_ray.d.ts +15 -0
  244. package/src/engine/graphics/sh3/path_tracer/build_bvh_nodes_distances_along_ray.d.ts.map +1 -0
  245. package/src/engine/graphics/sh3/path_tracer/build_bvh_nodes_distances_along_ray.js +46 -0
  246. package/src/engine/graphics/sh3/path_tracer/build_bvh_nodes_distances_sqr_to_point.d.ts +14 -0
  247. package/src/engine/graphics/sh3/path_tracer/build_bvh_nodes_distances_sqr_to_point.d.ts.map +1 -0
  248. package/src/engine/graphics/sh3/path_tracer/build_bvh_nodes_distances_sqr_to_point.js +43 -0
  249. package/src/engine/graphics/sh3/path_tracer/geometry/compute_triangle_group_aabb3.d.ts.map +1 -0
  250. package/src/engine/graphics/sh3/path_tracer/{compute_triangle_group_aabb3.js → geometry/compute_triangle_group_aabb3.js} +2 -2
  251. package/src/engine/graphics/sh3/path_tracer/geometry/construct_ray_hit_from_geometry.d.ts +12 -0
  252. package/src/engine/graphics/sh3/path_tracer/geometry/construct_ray_hit_from_geometry.d.ts.map +1 -0
  253. package/src/engine/graphics/sh3/path_tracer/geometry/construct_ray_hit_from_geometry.js +72 -0
  254. package/src/engine/graphics/sh3/path_tracer/geometry/sample_triangle_attribute.d.ts.map +1 -0
  255. package/src/engine/graphics/sh3/path_tracer/geometry/sort_triangles_by_distance_to_point.d.ts +13 -0
  256. package/src/engine/graphics/sh3/path_tracer/geometry/sort_triangles_by_distance_to_point.d.ts.map +1 -0
  257. package/src/engine/graphics/sh3/path_tracer/geometry/sort_triangles_by_distance_to_point.js +48 -0
  258. package/src/engine/graphics/sh3/path_tracer/material/StandardMaterial.d.ts +1 -0
  259. package/src/engine/graphics/sh3/path_tracer/material/StandardMaterial.d.ts.map +1 -1
  260. package/src/engine/graphics/sh3/path_tracer/material/StandardMaterial.js +4 -0
  261. package/src/engine/graphics/sh3/path_tracer/material/StandardTexture.d.ts +1 -0
  262. package/src/engine/graphics/sh3/path_tracer/material/StandardTexture.d.ts.map +1 -1
  263. package/src/engine/graphics/sh3/path_tracer/material/StandardTexture.js +8 -5
  264. package/src/engine/graphics/sh3/path_tracer/prototypePathTracer.js +24 -18
  265. package/src/engine/graphics/sh3/path_tracer/ray_hit_apply_transform.d.ts +2 -2
  266. package/src/engine/graphics/sh3/path_tracer/ray_hit_apply_transform.d.ts.map +1 -1
  267. package/src/engine/graphics/sh3/path_tracer/ray_hit_apply_transform.js +1 -1
  268. package/src/engine/graphics/sh3/path_tracer/sampling/getBiasedNormalSample.d.ts.map +1 -0
  269. package/src/engine/graphics/sh3/path_tracer/{getBiasedNormalSample.js → sampling/getBiasedNormalSample.js} +1 -1
  270. package/src/engine/graphics/sh3/path_tracer/sampling/random_in_hemisphere.d.ts.map +1 -0
  271. package/src/engine/graphics/sh3/path_tracer/{random_in_hemisphere.js → sampling/random_in_hemisphere.js} +1 -1
  272. package/src/engine/graphics/sh3/path_tracer/sort_bvh_nodes_by_distance_to_point.d.ts +12 -0
  273. package/src/engine/graphics/sh3/path_tracer/sort_bvh_nodes_by_distance_to_point.d.ts.map +1 -0
  274. package/src/engine/graphics/sh3/path_tracer/sort_bvh_nodes_by_distance_to_point.js +46 -0
  275. package/src/engine/graphics/sh3/path_tracer/texture/sample_material.js +2 -2
  276. package/src/engine/graphics/sh3/path_tracer/three_object_to_path_traced_scene.d.ts +7 -0
  277. package/src/engine/graphics/sh3/path_tracer/three_object_to_path_traced_scene.d.ts.map +1 -0
  278. package/src/engine/graphics/sh3/path_tracer/three_object_to_path_traced_scene.js +69 -0
  279. package/src/engine/graphics/sh3/prototypeSH3Probe.js +45 -7
  280. package/src/engine/graphics/sh3/visualise_spherical_harmonic_sphere.d.ts +11 -1
  281. package/src/engine/graphics/sh3/visualise_spherical_harmonic_sphere.d.ts.map +1 -1
  282. package/src/engine/graphics/sh3/visualise_spherical_harmonic_sphere.js +33 -16
  283. package/src/engine/graphics/texture/formatToChannelCount.d.ts.map +1 -1
  284. package/src/engine/graphics/texture/formatToChannelCount.js +14 -1
  285. package/src/engine/graphics/three/three_object_replace_materials.d.ts +7 -0
  286. package/src/engine/graphics/three/three_object_replace_materials.d.ts.map +1 -0
  287. package/src/engine/graphics/three/three_object_replace_materials.js +13 -0
  288. package/src/engine/sound/material/detector/terrain/TerrainSoundMaterialSurfaceDetector.d.ts.map +1 -1
  289. package/src/engine/sound/material/detector/terrain/TerrainSoundMaterialSurfaceDetector.js +6 -6
  290. package/src/core/collection/array/array_quick_sort_by_lookup.d.ts +0 -8
  291. package/src/core/collection/array/array_quick_sort_by_lookup.d.ts.map +0 -1
  292. package/src/core/geom/3d/triangle/computeTriangleSurfaceArea.d.ts.map +0 -1
  293. package/src/core/geom/vec3/v3_shift_along_direction.d.ts +0 -14
  294. package/src/core/geom/vec3/v3_shift_along_direction.d.ts.map +0 -1
  295. package/src/core/math/vector_nd_dot.d.ts.map +0 -1
  296. package/src/core/math/vector_nd_normalize.d.ts.map +0 -1
  297. package/src/core/math/vector_nd_normalize.spec.d.ts +0 -2
  298. package/src/core/math/vector_nd_normalize.spec.d.ts.map +0 -1
  299. package/src/engine/graphics/filter/FlipArrayViaCanvas.d.ts +0 -2
  300. package/src/engine/graphics/filter/FlipArrayViaCanvas.d.ts.map +0 -1
  301. package/src/engine/graphics/filter/FlipArrayViaCanvas.js +0 -13
  302. package/src/engine/graphics/sh3/lpv/LightProbeVolumeSerializationAdapter.d.ts.map +0 -1
  303. package/src/engine/graphics/sh3/path_tracer/compute_triangle_group_aabb3.d.ts.map +0 -1
  304. package/src/engine/graphics/sh3/path_tracer/getBiasedNormalSample.d.ts.map +0 -1
  305. package/src/engine/graphics/sh3/path_tracer/random_in_hemisphere.d.ts.map +0 -1
  306. package/src/engine/graphics/sh3/path_tracer/sample_triangle_attribute.d.ts.map +0 -1
  307. /package/src/engine/graphics/sh3/path_tracer/{compute_triangle_group_aabb3.d.ts → geometry/compute_triangle_group_aabb3.d.ts} +0 -0
  308. /package/src/engine/graphics/sh3/path_tracer/{sample_triangle_attribute.d.ts → geometry/sample_triangle_attribute.d.ts} +0 -0
  309. /package/src/engine/graphics/sh3/path_tracer/{sample_triangle_attribute.js → geometry/sample_triangle_attribute.js} +0 -0
  310. /package/src/engine/graphics/sh3/path_tracer/{getBiasedNormalSample.d.ts → sampling/getBiasedNormalSample.d.ts} +0 -0
  311. /package/src/engine/graphics/sh3/path_tracer/{random_in_hemisphere.d.ts → sampling/random_in_hemisphere.d.ts} +0 -0
@@ -28,6 +28,8 @@ export function solveQuadratic(result, result_offset, a, b, c) {
28
28
  return 2;
29
29
  }
30
30
  } else {
31
+ // 2 root solution
32
+
31
33
  const disc_sqr = b * b - 4 * a * c;
32
34
 
33
35
  if (disc_sqr >= 0) {
@@ -0,0 +1,8 @@
1
+ /**
2
+ *
3
+ * @param {number} variance
4
+ * @param {number} distance_from_mean
5
+ * @returns {number}
6
+ */
7
+ export function gaussian_amplitude(variance: number, distance_from_mean: number): number;
8
+ //# sourceMappingURL=gaussian_amplitude.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gaussian_amplitude.d.ts","sourceRoot":"","sources":["../../../../../src/core/math/statistics/gaussian_amplitude.js"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,6CAJW,MAAM,sBACN,MAAM,GACJ,MAAM,CAMlB"}
@@ -0,0 +1,13 @@
1
+ import { gaussian } from "../gaussian.js";
2
+
3
+ /**
4
+ *
5
+ * @param {number} variance
6
+ * @param {number} distance_from_mean
7
+ * @returns {number}
8
+ */
9
+ export function gaussian_amplitude(variance, distance_from_mean) {
10
+ // Adapted from https://github.com/Kitware/VTK/blob/af928016f4041ad8a6a193d032355b909721fc95/Common/Core/vtkMath.cxx#L339
11
+
12
+ return 1.0 / Math.sqrt(2.0 * Math.PI * variance) * gaussian(variance, distance_from_mean);
13
+ }
@@ -17,9 +17,9 @@ export function halton_sequence(base, index) {
17
17
  let i = index;
18
18
 
19
19
  while (i > 0) {
20
- f /= base;
21
- result += f * (i % base);
22
- i = Math.floor(i / base);
20
+ f = f / base;
21
+ result = result + f * (i % base);
22
+ i = (i / base) >>> 0;
23
23
  }
24
24
 
25
25
  return result;
@@ -1,5 +1,23 @@
1
1
  import { halton_sequence } from "./halton_sequence.js";
2
2
 
3
+ test("first 10 values in base 3", () => {
4
+
5
+ //
6
+
7
+ expect(halton_sequence(3, 0)).toEqual(0);
8
+ expect(halton_sequence(3, 1)).toBeCloseTo(1 / 3);
9
+ expect(halton_sequence(3, 2)).toBeCloseTo(2 / 3);
10
+ expect(halton_sequence(3, 3)).toBeCloseTo(1 / 9);
11
+ expect(halton_sequence(3, 4)).toBeCloseTo(4 / 9);
12
+ expect(halton_sequence(3, 5)).toBeCloseTo(7 / 9);
13
+ expect(halton_sequence(3, 6)).toBeCloseTo(2 / 9);
14
+ expect(halton_sequence(3, 7)).toBeCloseTo(5 / 9);
15
+ expect(halton_sequence(3, 8)).toBeCloseTo(8 / 9);
16
+ expect(halton_sequence(3, 9)).toBeCloseTo(1 / 27);
17
+ expect(halton_sequence(3, 10)).toBeCloseTo(10 / 27);
18
+
19
+ });
20
+
3
21
  test("unique values in base 10", () => {
4
22
 
5
23
  const values = [];
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Low discrepancy sequence
3
+ * @param {number} i index of sequence element
4
+ * @param {number} R a prime number
5
+ * @param {number} count how many elements in the sequence
6
+ * @returns {number}
7
+ */
8
+ export function hammersley_sequence(i: number, R: number, count: number): number;
9
+ //# sourceMappingURL=hammersley_sequence.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hammersley_sequence.d.ts","sourceRoot":"","sources":["../../../../../src/core/math/statistics/hammersley_sequence.js"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,uCALW,MAAM,KACN,MAAM,SACN,MAAM,GACJ,MAAM,CAkBlB"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Low discrepancy sequence
3
+ * @param {number} i index of sequence element
4
+ * @param {number} R a prime number
5
+ * @param {number} count how many elements in the sequence
6
+ * @returns {number}
7
+ */
8
+ export function hammersley_sequence(i, R, count) {
9
+
10
+ let t = i / count;
11
+
12
+ for (let j = 0; j < i; j++) {
13
+ const x = 1 - t;
14
+ let y = 1 / R;
15
+
16
+ while (x <= y) {
17
+ y = y / R;
18
+ }
19
+
20
+ t += (R + 1) * y - 1;
21
+ }
22
+
23
+ return t;
24
+ }
25
+
@@ -0,0 +1,9 @@
1
+ /**
2
+ *
3
+ * @param {number[]|Float32Array|Float64Array} output
4
+ * @param {number} output_offset
5
+ * @param {number} i
6
+ * @param {number} N sequence size
7
+ */
8
+ export function hammersley_sequence_2d(output: number[] | Float32Array | Float64Array, output_offset: number, i: number, N: number): void;
9
+ //# sourceMappingURL=hammersley_sequence_2d.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hammersley_sequence_2d.d.ts","sourceRoot":"","sources":["../../../../../src/core/math/statistics/hammersley_sequence_2d.js"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,+CALW,MAAM,EAAE,GAAC,YAAY,GAAC,YAAY,iBAClC,MAAM,KACN,MAAM,KACN,MAAM,QAShB"}
@@ -0,0 +1,17 @@
1
+ import { radical_inverse_VdC_base_2 } from "./radical_inverse_VdC_base_2.js";
2
+
3
+ /**
4
+ *
5
+ * @param {number[]|Float32Array|Float64Array} output
6
+ * @param {number} output_offset
7
+ * @param {number} i
8
+ * @param {number} N sequence size
9
+ */
10
+ export function hammersley_sequence_2d(
11
+ output, output_offset,
12
+ i, N
13
+ ) {
14
+
15
+ output[output_offset] = i / N;
16
+ output[output_offset + 1] = radical_inverse_VdC_base_2(i);
17
+ }
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Base-2 radical inverse Van der Corput
3
+ * @see [warren01] Hacker's Delight, Henry S. Warren, 2001, ISBN:0201914654
4
+ * @param {number} i
5
+ * @returns {number}
6
+ */
7
+ export function radical_inverse_VdC_base_2(i: number): number;
8
+ //# sourceMappingURL=radical_inverse_VdC_base_2.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"radical_inverse_VdC_base_2.d.ts","sourceRoot":"","sources":["../../../../../src/core/math/statistics/radical_inverse_VdC_base_2.js"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,8CAHW,MAAM,GACJ,MAAM,CAQlB"}
@@ -0,0 +1,15 @@
1
+ import { reverse_bits_uint32 } from "../../binary/reverse_bits_uint32.js";
2
+
3
+ /**
4
+ * Base-2 radical inverse Van der Corput
5
+ * @see [warren01] Hacker's Delight, Henry S. Warren, 2001, ISBN:0201914654
6
+ * @param {number} i
7
+ * @returns {number}
8
+ */
9
+ export function radical_inverse_VdC_base_2(i) {
10
+ const reverse_int32 = reverse_bits_uint32(i) >>> 0;
11
+
12
+
13
+ // / 0x100000000 or / 4294967296
14
+ return reverse_int32 * 2.3283064365386963e-10;
15
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=radical_inverse_VdC_base_2.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"radical_inverse_VdC_base_2.spec.d.ts","sourceRoot":"","sources":["../../../../../src/core/math/statistics/radical_inverse_VdC_base_2.spec.js"],"names":[],"mappings":""}
@@ -0,0 +1,9 @@
1
+ import { radical_inverse_VdC_base_2 } from "./radical_inverse_VdC_base_2.js";
2
+
3
+ test("sample values",()=>{
4
+
5
+ expect(radical_inverse_VdC_base_2(31)).toBeCloseTo(31/32);
6
+ expect(radical_inverse_VdC_base_2(32)).toBeCloseTo(1/64);
7
+ expect(radical_inverse_VdC_base_2(33)).toBeCloseTo(33/64);
8
+
9
+ });
@@ -1 +1 @@
1
- {"version":3,"file":"NodeInstance.d.ts","sourceRoot":"","sources":["../../../../../../src/core/model/node-graph/node/NodeInstance.js"],"names":[],"mappings":"AAcA;;;;GAIG;AACH;IAEI;;;;OAIG;IACH,aAFU,MAAM,CAEE;IAElB;;;OAGG;IACH,6BAAmB;IAEnB;;;OAGG;IACH,WAFU,yBAAyB,EAAE,CAEtB;IAEf;;;OAGG;IACH,gBAAgB;IAEhB;;;OAGG;IACH,qBAAmB;IAEnB;;;OAGG;IACH,aAFU,gBAAgB,CAED;IAEzB;;;;;;OAMG;IACH,wBAFU,MAAM,CAEE;IAElB;;OAEG;IACH;QACI;;;WAGG;mCADO,OAAO,MAAM,WAAO;QAG9B;;;WAGG;iCADO,OAAO,MAAM,MAAI;QAG3B;;;WAGG;mCADO,OAAO,MAAM,MAAI;QAI3B;;;;WAIG;qCADO,yCAAyC,YAAY,CAAC;MAGlE;IAEF;;;;;;OAMG;IACH,yBALW,MAAM,aACN,aAAa,UACb,YAAY,GACV,MAAM,CAsBlB;IAED;;;OAGG;IACH,gDAEC;IAED;;;OAGG;IACH,+CAEC;IAGD;;;OAGG;IACH,mCAEC;IAED;;;;OAIG;IACH,kCAEC;IAED;;;;OAIG;IACH,mBAHW,MAAM,oBAKhB;IAED;;;;OAIG;IACH,mBAHW,MAAM,OAKhB;IAED;;;;OAIG;IACH,yBAHW,MAAM,KAOhB;IAED;;;;OAIG;IACH,2BAHW,MAAM,oBAmChB;IAED;;;;OAIG;IACH,oBAHW,MAAM,GACJ,OAAO,CAkBnB;IAED;;;OAGG;IACH,uCAQC;IAED,wBAIC;IAED;;;OAGG;IACH,mDA+BC;IAED;;;;OAIG;IACH,qBAHW,MAAM,GACJ,yBAAyB,GAAC,SAAS,CAoB/C;IAED,eAEC;IAED;;;;OAIG;IACH,cAHW,YAAY,GACV,OAAO,CAQnB;IAED,mBAEC;IAIL;;;OAGG;IACH,yBAFU,OAAO,CAEoB;CAPpC;0CA1VyC,gCAAgC;iBAHzD,kCAAkC;mBAChC,kCAAkC;8BAGvB,oBAAoB"}
1
+ {"version":3,"file":"NodeInstance.d.ts","sourceRoot":"","sources":["../../../../../../src/core/model/node-graph/node/NodeInstance.js"],"names":[],"mappings":"AAcA;;;;GAIG;AACH;IAEI;;;;OAIG;IACH,aAFU,MAAM,CAEE;IAElB;;;OAGG;IACH,6BAAmB;IAEnB;;;OAGG;IACH,WAFU,yBAAyB,EAAE,CAEtB;IAEf;;;OAGG;IACH,gBAAgB;IAEhB;;;OAGG;IACH,qBAAmB;IAEnB;;;OAGG;IACH,sBAFU,gBAAgB,CAED;IAEzB;;;;;;OAMG;IACH,wBAFU,MAAM,CAEE;IAElB;;OAEG;IACH;QACI;;;WAGG;mCADO,OAAO,MAAM,WAAO;QAG9B;;;WAGG;iCADO,OAAO,MAAM,MAAI;QAG3B;;;WAGG;mCADO,OAAO,MAAM,MAAI;QAI3B;;;;WAIG;qCADO,yCAAyC,YAAY,CAAC;MAGlE;IAEF;;;;;;OAMG;IACH,8BALW,MAAM,aACN,aAAa,UACb,YAAY,GACV,MAAM,CAsBlB;IAED;;;OAGG;IACH,gDAEC;IAED;;;OAGG;IACH,+CAEC;IAGD;;;OAGG;IACH,mCAEC;IAED;;;;OAIG;IACH,kCAEC;IAED;;;;OAIG;IACH,mBAHW,MAAM,oBAKhB;IAED;;;;OAIG;IACH,mBAHW,MAAM,OAKhB;IAED;;;;OAIG;IACH,yBAHW,MAAM,KAOhB;IAED;;;;OAIG;IACH,2BAHW,MAAM,oBAmChB;IAED;;;;OAIG;IACH,iBAHW,MAAM,GACJ,OAAO,CAInB;IAED;;;;OAIG;IACH,oBAHW,MAAM,GACJ,OAAO,CAkBnB;IAED;;;OAGG;IACH,uCAQC;IAED,wBAIC;IAED;;;OAGG;IACH,mDAoCC;IAED;;;;OAIG;IACH,qBAHW,MAAM,GACJ,yBAAyB,GAAC,SAAS,CAoB/C;IAED;;;;OAIG;IACH,6BAHW,MAAM,GACJ,SAAS,GAAC,yBAAyB,CAa/C;IAED,eAEC;IAED;;;;OAIG;IACH,cAHW,YAAY,GACV,OAAO,CAQnB;IAED,mBAEC;IAIL;;;OAGG;IACH,yBAFU,OAAO,CAEoB;CAPpC;0CA1XyC,gCAAgC;iBAHzD,kCAAkC;mBAChC,kCAAkC;8BAGvB,oBAAoB"}
@@ -51,7 +51,7 @@ export class NodeInstance {
51
51
  outputsValues = [];
52
52
 
53
53
  /**
54
- *
54
+ * @readonly
55
55
  * @type {List<Connection>}
56
56
  */
57
57
  connections = new List();
@@ -95,12 +95,12 @@ export class NodeInstance {
95
95
 
96
96
  /**
97
97
  *
98
- * @param {number} id
98
+ * @param {number} port_id
99
99
  * @param {PortDirection} direction
100
100
  * @param {Connection[]} result
101
101
  * @returns {number} number of connections matched
102
102
  */
103
- getConnectionsByPort(id, direction, result) {
103
+ getConnectionsByPort(port_id, direction, result) {
104
104
  let count = 0;
105
105
 
106
106
  const connections = this.connections;
@@ -110,8 +110,8 @@ export class NodeInstance {
110
110
  const connection = connections.get(i);
111
111
 
112
112
  if (
113
- (direction === PortDirection.In && connection.target.port.id === id)
114
- || (direction === PortDirection.Out && connection.source.port.id === id)
113
+ (direction === PortDirection.In && connection.target.port.id === port_id)
114
+ || (direction === PortDirection.Out && connection.source.port.id === port_id)
115
115
  ) {
116
116
  result[count] = connection;
117
117
 
@@ -224,6 +224,15 @@ export class NodeInstance {
224
224
  this.on.parameterChanged.send3(id, value, old_value);
225
225
  }
226
226
 
227
+ /**
228
+ *
229
+ * @param {string} id
230
+ * @returns {boolean}
231
+ */
232
+ hasParameter(id) {
233
+ return this.parameters.hasOwnProperty(id)
234
+ }
235
+
227
236
  /**
228
237
  *
229
238
  * @param {string} id
@@ -232,12 +241,12 @@ export class NodeInstance {
232
241
  deleteParameter(id) {
233
242
  assert.isString(id, 'id');
234
243
 
235
- const parameters = this.parameters;
236
-
237
- if (!parameters.hasOwnProperty(id)) {
244
+ if (!this.hasParameter(id)) {
238
245
  return false;
239
246
  }
240
247
 
248
+ const parameters = this.parameters;
249
+
241
250
  const existing = parameters[id];
242
251
 
243
252
  delete parameters[id];
@@ -287,10 +296,15 @@ export class NodeInstance {
287
296
  description.configureNode(this);
288
297
 
289
298
  //generate endpoints
290
- this.endpoints = description.getPorts()
291
- .map((port, port_index) => {
292
- return NodeInstancePortReference.from(this, port);
293
- });
299
+ const ports = description.getPorts();
300
+ const port_count = ports.length;
301
+ this.endpoints = new Array(port_count);
302
+
303
+ for (let i = 0; i < port_count; i++) {
304
+ const port = ports[i];
305
+
306
+ this.endpoints[i] = NodeInstancePortReference.from(this, port);
307
+ }
294
308
 
295
309
  //clear parameters
296
310
  this.clearParameters();
@@ -329,6 +343,24 @@ export class NodeInstance {
329
343
  return undefined;
330
344
  }
331
345
 
346
+ /**
347
+ *
348
+ * @param {string} name
349
+ * @returns {undefined|NodeInstancePortReference}
350
+ */
351
+ getFirstEndpointByName(name) {
352
+ assert.isString(name, 'name');
353
+
354
+ const ports = this.description.getPortsByName(name);
355
+
356
+ if (ports.length === 0) {
357
+ return undefined;
358
+ }
359
+
360
+ return this.getEndpoint(ports[0].id);
361
+
362
+ }
363
+
332
364
  hash() {
333
365
  return this.id;
334
366
  }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=NodeInstance.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NodeInstance.spec.d.ts","sourceRoot":"","sources":["../../../../../../src/core/model/node-graph/node/NodeInstance.spec.js"],"names":[],"mappings":""}
@@ -0,0 +1,82 @@
1
+ import { jest } from "@jest/globals";
2
+ import { DataType } from "../DataType.js";
3
+ import { NodeGraph } from "../NodeGraph.js";
4
+ import { NodeDescription } from "./NodeDescription.js";
5
+ import { NodeInstance } from "./NodeInstance.js";
6
+ import { PortDirection } from "./PortDirection.js";
7
+
8
+
9
+ test("getConnectionsByPort", () => {
10
+ const type = DataType.from(7, "x");
11
+
12
+ const graph = new NodeGraph();
13
+
14
+ const description = new NodeDescription();
15
+
16
+ const p_in = description.createPort(type, "in", PortDirection.In);
17
+ const p_out = description.createPort(type, "out", PortDirection.Out);
18
+
19
+ const n_0 = graph.createNode(description);
20
+ const n_1 = graph.createNode(description);
21
+
22
+ const c_id = graph.createConnection(n_0, p_out, n_1, p_in);
23
+
24
+ /**
25
+ *
26
+ * @type {Connection[]}
27
+ */
28
+ const connections = [];
29
+
30
+ const result_count = graph.getNode(n_0).getConnectionsByPort(p_out, PortDirection.Out, connections);
31
+
32
+ expect(result_count).toEqual(result_count);
33
+ expect(connections).toEqual([
34
+ graph.getConnection(c_id)
35
+ ]);
36
+ });
37
+
38
+ test("setParameterValue", () => {
39
+
40
+ const instance = new NodeInstance();
41
+
42
+ const cb_added = jest.fn();
43
+ const cb_changed = jest.fn();
44
+
45
+ instance.on.parameterAdded.add(cb_added);
46
+ instance.on.parameterChanged.add(cb_changed);
47
+
48
+ instance.setParameterValue("x", 42);
49
+
50
+ expect(instance.hasParameter("x")).toBe(true);
51
+
52
+ expect(instance.getParameterValue("x")).toEqual(42);
53
+
54
+ expect(cb_added).toHaveBeenCalledTimes(1);
55
+ expect(cb_added).toHaveBeenLastCalledWith("x", 42);
56
+
57
+ expect(cb_changed).toHaveBeenCalledTimes(1);
58
+ expect(cb_changed).toHaveBeenLastCalledWith("x", 42, undefined);
59
+ });
60
+
61
+ test("deleteParameter", () => {
62
+
63
+ const instance = new NodeInstance();
64
+
65
+ const cb_deleted = jest.fn();
66
+
67
+ instance.on.parameterRemoved.add(cb_deleted);
68
+
69
+ expect(instance.deleteParameter("x")).toEqual(false);
70
+
71
+ expect(cb_deleted).not.toHaveBeenCalled();
72
+
73
+ instance.setParameterValue("x", 42);
74
+
75
+ expect(instance.deleteParameter("x")).toEqual(true);
76
+
77
+ expect(cb_deleted).toHaveBeenCalledTimes(1);
78
+ expect(cb_deleted).toHaveBeenLastCalledWith("x", 42);
79
+
80
+ expect(instance.hasParameter("x")).toBe(false);
81
+
82
+ });
@@ -1 +1 @@
1
- {"version":3,"file":"NodeInstancePortReference.d.ts","sourceRoot":"","sources":["../../../../../../src/core/model/node-graph/node/NodeInstancePortReference.js"],"names":[],"mappings":"AASA;;GAEG;AACH;IAyEI;;;;;OAKG;IACH,iDAFa,yBAAyB,CAkBrC;IA7FD;;;OAGG;IACH,aAFU,MAAM,CAEE;IAElB;;;OAGG;IACH,gCAAgB;IAEhB;;;OAGG;IACH,oBAAY;IAEZ;;;;;OAKG;IACH,sBAFU,YAAY,CAEL;IAEjB;;;OAGG;IACH,mCAEC;IAED;;;OAGG;IACH,kCAEC;IAED;;;OAGG;IACH,kBAFY,OAAO,CAIlB;IAED;;;;OAIG;IACH,oCAHW,MAAM,GACJ,OAAO,CAenB;IA2BD;;;;OAIG;IACH,8CASC;IAED,eAKC;IAED;;;;OAIG;IACH,cAHW,yBAAyB,GACvB,OAAO,CAMnB;IAED,mBAEC;IAGL;;;OAGG;IACH,sCAFU,OAAO,CAE8C;CAN9D"}
1
+ {"version":3,"file":"NodeInstancePortReference.d.ts","sourceRoot":"","sources":["../../../../../../src/core/model/node-graph/node/NodeInstancePortReference.js"],"names":[],"mappings":"AASA;;GAEG;AACH;IAgFI;;;;;OAKG;IACH,iDAFa,yBAAyB,CAkBrC;IApGD;;;OAGG;IACH,aAFU,MAAM,CAEE;IAElB;;;OAGG;IACH,gCAAgB;IAEhB;;;OAGG;IACH,oBAAY;IAEZ;;;;;OAKG;IACH,sBAFU,YAAY,CAEL;IAEjB;;;OAGG;IACH,mCAEC;IAED;;;OAGG;IACH,kCAEC;IAED;;;OAGG;IACH,kBAFY,OAAO,CAIlB;IAED;;;;;OAKG;IACH,oCAHW,MAAM,GACJ,OAAO,CAqBnB;IA2BD;;;;OAIG;IACH,8CAWC;IAED,eAKC;IAED;;;;OAIG;IACH,cAHW,yBAAyB,GACvB,OAAO,CAMnB;IAED,mBAEC;IAGL;;;OAGG;IACH,sCAFU,OAAO,CAE8C;CAN9D"}
@@ -64,10 +64,17 @@ export class NodeInstancePortReference {
64
64
 
65
65
  /**
66
66
  * Checks if a connection exists from this endpoint to a specific node instance
67
+ * Also returns true when parameter refers to instance that the port is attached to
67
68
  * @param {number} node_instance_id
68
69
  * @returns {boolean}
69
70
  */
70
71
  isConnectedToNode(node_instance_id) {
72
+ assert.isNonNegativeInteger(node_instance_id, 'node_instance_id');
73
+
74
+ if (this.instance.id === node_instance_id) {
75
+ return true;
76
+ }
77
+
71
78
  const connections = this.connections;
72
79
  const connection_count = connections.length;
73
80
 
@@ -115,9 +122,11 @@ export class NodeInstancePortReference {
115
122
  set(instance, port) {
116
123
  assert.defined(instance, 'instance');
117
124
  assert.notNull(instance, 'instance');
125
+ assert.equal(instance.isNodeInstance, true, 'instance.isNodeInstance !== true');
118
126
 
119
127
  assert.defined(port, 'port');
120
128
  assert.notNull(port, 'port');
129
+ assert.equal(port.isPort, true, 'port.isPort !== true');
121
130
 
122
131
  this.instance = instance;
123
132
  this.port = port;
@@ -49,6 +49,26 @@ test("incoming connections", () => {
49
49
  expect(port_b_ref.inConnections).toEqual([connection]);
50
50
  });
51
51
 
52
+ test("isConnectedToNode", () => {
53
+ const nd = new NodeDescription();
54
+
55
+ const port_in_id = nd.createPort(DUMMY_TYPE, "in", PortDirection.In);
56
+ const port_out_id = nd.createPort(DUMMY_TYPE, "out", PortDirection.Out);
57
+
58
+ const graph = new NodeGraph();
59
+ const node_a_id = graph.createNode(nd);
60
+ const node_b_id = graph.createNode(nd);
61
+
62
+ const endpoint_a_out = graph.getNode(node_a_id).getEndpoint(port_out_id);
63
+
64
+ expect(endpoint_a_out.isConnectedToNode(node_a_id)).toBe(true);
65
+ expect(endpoint_a_out.isConnectedToNode(node_b_id)).toBe(false);
66
+
67
+ graph.createConnection(node_a_id, port_out_id, node_b_id, port_in_id);
68
+
69
+ expect(endpoint_a_out.isConnectedToNode(node_b_id)).toBe(true);
70
+
71
+ });
52
72
 
53
73
  /**
54
74
  *
@@ -1 +1 @@
1
- {"version":3,"file":"Port.d.ts","sourceRoot":"","sources":["../../../../../../src/core/model/node-graph/node/Port.js"],"names":[],"mappings":"AAYA;IAwHI;;;;;OAKG;IACH,iDAFa,IAAI,CAQhB;IAnID;;;OAGG;IACH,aAAU;IAEV;;;OAGG;IACH,IAFU,MAAM,CAEE;IAElB;;;OAGG;IACH,WAFU,aAAa,GAAC,MAAM,CAEQ;IAEtC;;;OAGG;IACH,UAFU,QAAQ,CAEF;IAEhB;;;OAGG;IACH,UAFU,MAAM,CAEF;IAEd,eAWC;IAED;;;;OAIG;IACH,cAHW,IAAI,GACF,OAAO,CAenB;IAED,mBAEC;IAED;;;;;MAOC;IAED;;;;;;;OAOG;IACH,4CANW,MAAM,iCAuChB;IAiBL;;;OAGG;IACH,iBAFU,OAAO,CAEI;CANpB;8BA5I6B,oBAAoB;yBADzB,gBAAgB"}
1
+ {"version":3,"file":"Port.d.ts","sourceRoot":"","sources":["../../../../../../src/core/model/node-graph/node/Port.js"],"names":[],"mappings":"AAUA;IAmHI;;;;;OAKG;IACH,iDAFa,IAAI,CAQhB;IA9HD;;;OAGG;IACH,aAAU;IAEV;;;OAGG;IACH,IAFU,MAAM,CAEE;IAElB;;;OAGG;IACH,WAFU,aAAa,GAAC,MAAM,CAEQ;IAEtC;;;OAGG;IACH,UAFU,QAAQ,CAEF;IAEhB;;;OAGG;IACH,UAFU,MAAM,CAEF;IAEd;;;OAGG;IACH,QAFa,MAAM,CAIlB;IAED;;;;OAIG;IACH,cAHW,IAAI,GACF,OAAO,CAenB;IAED,mBAEC;IAED;;;;;MAOC;IAED;;;;;;;OAOG;IACH,4CANW,MAAM,iCAuChB;IAiBL;;;OAGG;IACH,iBAFU,OAAO,CAEI;CANpB;8BAvI6B,oBAAoB;yBADzB,gBAAgB"}
@@ -1,6 +1,4 @@
1
1
  import { assert } from "../../../assert.js";
2
- import { computeHashIntegerArray } from "../../../collection/array/computeHashIntegerArray.js";
3
- import { computeStringHash } from "../../../primitives/strings/computeStringHash.js";
4
2
  import { objectKeyByValue } from "../../object/objectKeyByValue.js";
5
3
  import { DataType } from "../DataType.js";
6
4
  import { PortDirection } from "./PortDirection.js";
@@ -41,17 +39,12 @@ export class Port {
41
39
  */
42
40
  metadata = {};
43
41
 
42
+ /**
43
+ *
44
+ * @returns {number}
45
+ */
44
46
  hash() {
45
- const dataType = this.dataType;
46
-
47
- const type_hash = dataType !== null ? dataType.id : 0;
48
-
49
- return computeHashIntegerArray(
50
- computeStringHash(this.name),
51
- this.id,
52
- this.direction,
53
- type_hash
54
- );
47
+ return this.id;
55
48
  }
56
49
 
57
50
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"PortDirection.d.ts","sourceRoot":"","sources":["../../../../../../src/core/model/node-graph/node/PortDirection.js"],"names":[],"mappings":""}
1
+ {"version":3,"file":"PortDirection.d.ts","sourceRoot":"","sources":["../../../../../../src/core/model/node-graph/node/PortDirection.js"],"names":[],"mappings":"4BAEU,MAAM"}
@@ -1,9 +1,15 @@
1
1
  /**
2
2
  * @readonly
3
- * @enum
3
+ * @enum {number}
4
4
  */
5
5
  export const PortDirection = {
6
+ /**
7
+ * Incoming (Input)
8
+ */
6
9
  In: 0,
10
+ /**
11
+ * Outgoing (Output)
12
+ */
7
13
  Out: 1,
8
14
  Unspecified: 2
9
15
  };
@@ -1 +1 @@
1
- {"version":3,"file":"CrossOriginConfig.d.ts","sourceRoot":"","sources":["../../../../../src/engine/asset/CORS/CrossOriginConfig.js"],"names":[],"mappings":"AAEA;IAEQ,sBAAqC;CAG5C;;;;;gCAP+B,sBAAsB"}
1
+ {"version":3,"file":"CrossOriginConfig.d.ts","sourceRoot":"","sources":["../../../../../src/engine/asset/CORS/CrossOriginConfig.js"],"names":[],"mappings":"AAEA;IACI,sBAAiC;CACpC;;kBAMS,SAAS,iBAAiB,CAAC;;;gCAVL,sBAAsB"}
@@ -1,11 +1,13 @@
1
1
  import { CrossOriginKind } from "./CrossOriginKind.js";
2
2
 
3
3
  export class CrossOriginConfig {
4
- constructor() {
5
- this.kind = CrossOriginKind.Anonymous;
6
- }
7
-
4
+ kind = CrossOriginKind.Anonymous;
8
5
  }
9
6
 
10
7
  const default_coc = new CrossOriginConfig();
8
+
9
+ /**
10
+ * @readonly
11
+ * @type {Readonly<CrossOriginConfig>}
12
+ */
11
13
  CrossOriginConfig.default = Object.freeze(default_coc);
@@ -1,5 +1,5 @@
1
1
  import { assert } from "../../../core/assert.js";
2
- import { computeTriangleSurfaceArea } from "../../../core/geom/3d/triangle/computeTriangleSurfaceArea.js";
2
+ import { compute_triangle_area_3d } from "../../../core/geom/3d/triangle/compute_triangle_area_3d.js";
3
3
 
4
4
  /**
5
5
  *
@@ -40,7 +40,7 @@ export function computeMeshSurfaceArea(result, points, indices, polygon_count =
40
40
  const y2 = points[c3 + 2];
41
41
  const z2 = points[c3 + 2];
42
42
 
43
- const area = computeTriangleSurfaceArea(x0, y0, z0, x1, y1, z1, x2, y2, z2);
43
+ const area = compute_triangle_area_3d(x0, y0, z0, x1, y1, z1, x2, y2, z2);
44
44
 
45
45
  assert.notNaN(area, "area");
46
46
 
@@ -1 +1 @@
1
- {"version":3,"file":"OctahedralUvEncoder.d.ts","sourceRoot":"","sources":["../../../../../../../src/engine/graphics/impostors/octahedral/grid/OctahedralUvEncoder.js"],"names":[],"mappings":"AAGA;IACI,0CAkBC;CAEJ;0BAxByB,gBAAgB"}
1
+ {"version":3,"file":"OctahedralUvEncoder.d.ts","sourceRoot":"","sources":["../../../../../../../src/engine/graphics/impostors/octahedral/grid/OctahedralUvEncoder.js"],"names":[],"mappings":"AAKA;IACI,0CAkBC;IAED,0CA2BC;CACJ;0BAnDyB,gBAAgB"}
@@ -1,5 +1,7 @@
1
- import { UvEncoder } from "./UvEncoder.js";
2
1
  import { vec3 } from "gl-matrix";
2
+ import { v3_dot } from "../../../../../core/geom/vec3/v3_dot.js";
3
+ import { sign } from "../../../../../core/math/sign.js";
4
+ import { UvEncoder } from "./UvEncoder.js";
3
5
 
4
6
  export class OctahedralUvEncoder extends UvEncoder {
5
7
  uv_to_unit(output, input) {
@@ -11,8 +13,8 @@ export class OctahedralUvEncoder extends UvEncoder {
11
13
  const py = 1 - abs_x - abs_z;
12
14
 
13
15
  if (py < 0) {
14
- px = (px > 0 ? 1 : -1) * (1 - abs_z);
15
- pz = (pz > 0 ? 1 : -1) * (1 - abs_x);
16
+ px = sign(px) * (1 - abs_z);
17
+ pz = sign(pz) * (1 - abs_x);
16
18
  }
17
19
 
18
20
  output[0] = px;
@@ -22,4 +24,32 @@ export class OctahedralUvEncoder extends UvEncoder {
22
24
  vec3.normalize(output, output);
23
25
  }
24
26
 
27
+ unit_to_uv(output, input) {
28
+
29
+ const input_x = input[0];
30
+ const input_y = input[1];
31
+ const input_z = input[2];
32
+
33
+ const octant_x = sign(input_x);
34
+ const octant_y = sign(input_y);
35
+ const octant_z = sign(input_z);
36
+
37
+ // |x| + |y| + |z| = 1
38
+ const sum = v3_dot(input_x, input_y, input_z, octant_x, octant_y, octant_z);
39
+
40
+ let octahedron_x = input_x / sum;
41
+ const octahedron_y = input_y / sum;
42
+ let octahedron_z = input_z / sum;
43
+
44
+ if (octahedron_y < 0) {
45
+ const absolute_x = Math.abs(octahedron_x);
46
+ const absolute_z = Math.abs(octahedron_z);
47
+
48
+ octahedron_x = octant_x * (1 - absolute_z);
49
+ octahedron_z = octant_z * (1 - absolute_x);
50
+ }
51
+
52
+ output[0] = octahedron_x;
53
+ output[1] = octahedron_z;
54
+ }
25
55
  }