@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
@@ -35,10 +35,10 @@ function inflate(encoded_chunk) {
35
35
  * @return {number}
36
36
  */
37
37
  function readUInt32(buffer, offset) {
38
- return (buffer[offset] << 24) +
39
- (buffer[offset + 1] << 16) +
40
- (buffer[offset + 2] << 8) +
41
- (buffer[offset + 3]);
38
+ return (buffer[offset] << 24)
39
+ | (buffer[offset + 1] << 16)
40
+ | (buffer[offset + 2] << 8)
41
+ | (buffer[offset + 3]);
42
42
  }
43
43
 
44
44
 
@@ -58,15 +58,30 @@ function readUInt8(buffer, offset) {
58
58
  * @constructor
59
59
  */
60
60
  export function PNGReader(bytes) {
61
- // current pointer
61
+ /**
62
+ * current pointer
63
+ * @type {number}
64
+ */
62
65
  this.i = 0;
63
- // bytes buffer
66
+
67
+ /**
68
+ * bytes buffer
69
+ * @type {Uint8Array}
70
+ */
64
71
  this.bytes = new Uint8Array(bytes);
65
- // Output object
72
+
73
+ /**
74
+ * Output object
75
+ * @type {PNG}
76
+ */
66
77
  this.png = new PNG();
67
78
 
68
79
  this.dataChunks = [];
69
80
 
81
+ /**
82
+ *
83
+ * @type {BinaryBuffer}
84
+ */
70
85
  this.buffer = new BinaryBuffer();
71
86
  this.buffer.fromArrayBuffer(bytes);
72
87
 
@@ -75,6 +90,12 @@ export function PNGReader(bytes) {
75
90
  * @type {boolean}
76
91
  */
77
92
  this.crc_enabled = false;
93
+
94
+ /**
95
+ *
96
+ * @type {Uint8Array}
97
+ */
98
+ this.header = new Uint8Array(8);
78
99
  }
79
100
 
80
101
  /**
@@ -101,7 +122,7 @@ PNGReader.prototype.decodeHeader = function () {
101
122
 
102
123
  const buffer = this.buffer;
103
124
 
104
- const header = new Uint8Array(8);
125
+ const header = this.header;
105
126
 
106
127
  buffer.readBytes(header, 0, 8)
107
128
 
@@ -110,7 +131,6 @@ PNGReader.prototype.decodeHeader = function () {
110
131
  throw new Error('invalid PNGReader file (bad signature)');
111
132
  }
112
133
 
113
- this.header = header;
114
134
 
115
135
  };
116
136
 
@@ -426,6 +446,9 @@ PNGReader.prototype.decodePixels = function () {
426
446
 
427
447
  // Different interlace methods
428
448
 
449
+ /**
450
+ * @param {Uint8Array} data
451
+ */
429
452
  PNGReader.prototype.interlaceNone = function (data) {
430
453
 
431
454
  const png = this.png;
@@ -674,34 +697,25 @@ PNGReader.prototype.unFilterPaeth = function (scanline, scanline_offset, pixels,
674
697
 
675
698
  /**
676
699
  * Parse the PNG file
677
- *
678
- * reader.parse(options, callback)
679
- * OR
680
- * reader.parse(callback)
681
- *
682
- * OPTIONS:
683
- * option | type | default
684
- * ----------------------------
685
- * data boolean true should it read the pixel data
686
700
  * @returns {PNG}
687
701
  */
688
702
  PNGReader.prototype.parse = function () {
689
703
 
690
704
  this.decodeHeader();
691
705
 
692
- while (this.buffer.position < this.buffer.length) {
706
+ for (; ;) {
707
+
693
708
  const type = this.decodeChunk();
694
- // stop after IHDR chunk, or after IEND
695
- // if (type === 'IHDR' && options.data === false || type === 'IEND') break;
709
+
696
710
  if (type === 'IEND') {
711
+ // reached the end
697
712
  break;
698
713
  }
699
- }
700
714
 
701
- const png = this.png;
715
+ }
702
716
 
703
717
  this.decodePixels();
704
718
 
705
- return png;
719
+ return this.png;
706
720
 
707
721
  };
@@ -1 +1 @@
1
- {"version":3,"file":"TextureAttachmensByMaterialType.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/asset/loaders/material/TextureAttachmensByMaterialType.js"],"names":[],"mappings":"AAmCA;;;GAGG;AACH,mDA2FE"}
1
+ {"version":3,"file":"TextureAttachmensByMaterialType.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/asset/loaders/material/TextureAttachmensByMaterialType.js"],"names":[],"mappings":"AAmCA;;;GAGG;AACH,mDA8FE"}
@@ -43,6 +43,9 @@ export const TextureAttachmentsByMaterialType = {
43
43
  taDisplacement,
44
44
  taAlphaMap
45
45
  ],
46
+ MeshBasicMaterial: [
47
+ taDiffuse
48
+ ],
46
49
  MeshStandardMaterial: [
47
50
  taDiffuse,
48
51
  taAlphaMap,
@@ -129,3 +132,5 @@ export const TextureAttachmentsByMaterialType = {
129
132
  })
130
133
  ]
131
134
  };
135
+
136
+ TextureAttachmentsByMaterialType.MeshPhysicalMaterial = TextureAttachmentsByMaterialType.MeshStandardMaterial;
@@ -1,7 +1,7 @@
1
1
  import { ClampToEdgeWrapping, DataTexture, NearestFilter } from "three";
2
2
  import { assert } from "../../../../core/assert.js";
3
- import { float2uint8 } from "../../../../core/binary/float2uint8.js";
4
- import { uint82float } from "../../../../core/binary/uint82float.js";
3
+ import { float_to_uint8 } from "../../../../core/binary/float_to_uint8.js";
4
+ import { uint8_to_float } from "../../../../core/binary/uint8_to_float.js";
5
5
  import { array_copy } from "../../../../core/collection/array/array_copy.js";
6
6
  import { isTypedArray } from "../../../../core/collection/array/typed/isTypedArray.js";
7
7
  import Vector1 from "../../../../core/geom/Vector1.js";
@@ -203,7 +203,7 @@ export class TerrainOverlay {
203
203
  for (let i = 0; i < 4; i++) {
204
204
  const v = this.sampler.readChannel(x, y, i);
205
205
 
206
- result[i] = uint82float(v);
206
+ result[i] = uint8_to_float(v);
207
207
  }
208
208
  }
209
209
 
@@ -250,7 +250,7 @@ export class TerrainOverlay {
250
250
  paintPoint(x, y, vec4) {
251
251
  for (let i = 0; i < 4; i++) {
252
252
 
253
- this.sampler.writeChannel(x, y, i, float2uint8(vec4[i]));
253
+ this.sampler.writeChannel(x, y, i, float_to_uint8(vec4[i]));
254
254
 
255
255
  }
256
256
 
@@ -573,7 +573,7 @@ export class GraphicsEngine {
573
573
  const camera = this.camera;
574
574
 
575
575
  if (scene.children.indexOf(camera) < 0) {
576
- console.log("added camera");
576
+ // console.log("added camera");
577
577
  scene.add(camera);
578
578
  }
579
579
 
@@ -1 +1 @@
1
- {"version":3,"file":"TopDownCameraController.d.ts","sourceRoot":"","sources":["../../../../../../../src/engine/graphics/ecs/camera/topdown/TopDownCameraController.js"],"names":[],"mappings":"AAaA;;;;;;GAMG;AACH,iDALW,MAAM,kBACN,MAAM,SACN,uBAAuB,UACvB,uBAAuB,QAejC;;AAiED;IAgJI,iDAMC;IArJD,0BAeC;IAdG,gBAA2B;IAE3B,cAAc;IACd,YAAY;IACZ,aAAa;IAEb,iBAAiB;IACjB,oBAAoB;IACpB,oBAAsB;IAQ1B;;;;;OAKG;IACH,yBAJW,OAAO,UACP,OAAO,OACP,OAAO,QAmBjB;IAED;;;;OAIG;IACH,cAHW,uBAAuB,GACrB,OAAO,CAWnB;IAED;;;OAGG;IACH,YAFW,uBAAuB,QAYjC;IAED;;;OAGG;IACH,SAFa,uBAAuB,CAQnC;IAED;;;;;OAKG;IACH,QAJW,uBAAuB,KACvB,uBAAuB,KACvB,MAAM,QAahB;IAED;;;;;;;;MAYC;IAED;;;;;;;;aAsBC;CASJ;;;;;;oBArPmB,qCAAqC;AAsEzD;;;;;;;;;GASG;AACH,gEANW,OAAO,kBACP,MAAM,OACN,MAAM,UACN,OAAO,eACP,OAAO,QAajB"}
1
+ {"version":3,"file":"TopDownCameraController.d.ts","sourceRoot":"","sources":["../../../../../../../src/engine/graphics/ecs/camera/topdown/TopDownCameraController.js"],"names":[],"mappings":"AAcA;;;;;;GAMG;AACH,iDALW,MAAM,kBACN,MAAM,SACN,uBAAuB,UACvB,uBAAuB,QAejC;;AAiED;IAmJI,iDAMC;IAxJD,0BAeC;IAdG,gBAA2B;IAE3B,cAAc;IACd,YAAY;IACZ,aAAa;IAEb,iBAAiB;IACjB,oBAAoB;IACpB,oBAAsB;IAQ1B;;;;;OAKG;IACH,yBAJW,OAAO,UACP,OAAO,OACP,OAAO,QAsBjB;IAED;;;;OAIG;IACH,cAHW,uBAAuB,GACrB,OAAO,CAWnB;IAED;;;OAGG;IACH,YAFW,uBAAuB,QAYjC;IAED;;;OAGG;IACH,SAFa,uBAAuB,CAQnC;IAED;;;;;OAKG;IACH,QAJW,uBAAuB,KACvB,uBAAuB,KACvB,MAAM,QAahB;IAED;;;;;;;;MAYC;IAED;;;;;;;;aAsBC;CASJ;;;;;;oBAzPmB,qCAAqC;AAuEzD;;;;;;;;;GASG;AACH,gEANW,OAAO,kBACP,MAAM,OACN,MAAM,UACN,OAAO,eACP,OAAO,QAajB"}
@@ -4,6 +4,7 @@ import { eulerAnglesFromMatrix } from "../../../../../core/geom/3d/eulerAnglesFr
4
4
  import { normalize_angle_rad } from "../../../../../core/geom/normalize_angle_rad.js";
5
5
  import Vector3 from '../../../../../core/geom/Vector3.js';
6
6
  import { lerp } from "../../../../../core/math/lerp.js";
7
+ import { max2 } from "../../../../../core/math/max2.js";
7
8
 
8
9
  const m4 = new Matrix4();
9
10
  const angles = [];
@@ -136,6 +137,9 @@ class TopDownCameraController {
136
137
 
137
138
  this.distance = eye.distanceTo(target);
138
139
 
140
+ // ensure we can maintain this distance
141
+ this.distanceMax = max2(this.distance, this.distanceMax);
142
+
139
143
  this.target.copy(target);
140
144
  }
141
145
 
@@ -1 +1 @@
1
- {"version":3,"file":"LightSystem.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/ecs/light/LightSystem.js"],"names":[],"mappings":";AAiBA;IACI;;;;;OAKG;IACH,2CAsFC;IA1EG,kDAAsC;IAGtC,6DAEC;IAGD,eAAoB;IACpB,WAA2B;IAC3B,aAAwB;IAExB;;;;OAIG;IACH,mBAA0B;IAE1B;;;;OAIG;IACH,wBAA2B;IAE3B,gBAAkB;IAElB;;;;OAIG;IACH,kBAAoC;IAGpC;;;;OAIG;IACH,2BAA8B;IAC9B;;;;OAIG;IACH,iBAAoB;IAGpB;;;;OAIG;IACH,4BAAgD;IAqBpD,mCAEC;IAED;;;;OAIG;IACH,uBAHW,MAAM,SACN,MAAM,GAAC,MAAM,GAAC,OAAO,QAkB/B;IAED;;;;OAIG;IACH,4BAHW,KAAK,UACL,MAAM,QAMhB;IAED,mFASC;IAED,2EAWC;IAGD,4CAOC;IAED;;;;;OAKG;IACH,wCAmCC;IAED;;;;;;OAMG;IACH,sCAwBC;CACJ;sCA/PqC,8CAA8C;0BAC1D,qCAAqC;sBAKzC,YAAY;4CAPU,uDAAuD"}
1
+ {"version":3,"file":"LightSystem.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/ecs/light/LightSystem.js"],"names":[],"mappings":"AAuQA;;;;;GAKG;AACH,2DAHW,MAAM,SACN,KAAK,QAwCf;;uBA5SsB,qBAAqB;sBAGtB,YAAY;AAOlC;IACI;;;;;OAKG;IACH,2CAsFC;IA1EG,kDAAsC;IAGtC,6DAEC;IAGD,eAAoB;IACpB,WAA2B;IAC3B,aAAwB;IAExB;;;;OAIG;IACH,mBAA0B;IAE1B;;;;OAIG;IACH,wBAA2B;IAE3B,gBAAkB;IAElB;;;;OAIG;IACH,kBAAoC;IAGpC;;;;OAIG;IACH,2BAA8B;IAC9B;;;;OAIG;IACH,iBAAoB;IAGpB;;;;OAIG;IACH,4BAAgD;IAqBpD,mCAEC;IAED;;;;OAIG;IACH,uBAHW,MAAM,SACN,MAAM,GAAC,MAAM,GAAC,OAAO,QAkB/B;IAED;;;;OAIG;IACH,4BAHW,KAAK,UACL,MAAM,QAMhB;IAED,mFASC;IAED,2EAWC;IAGD,4CAOC;IAED;;;;;OAKG;IACH,wCAmCC;IAED;;;;;;OAMG;IACH,sCAwBC;CACJ;sCA/PqC,8CAA8C;0BAC1D,qCAAqC;4CAFnB,uDAAuD"}
@@ -215,7 +215,7 @@ class LightSystem extends AbstractContextSystem {
215
215
 
216
216
  l.castShadow = true;
217
217
 
218
- updateShadowMap(this.__camera_object, l, this.__graphics);
218
+ three_update_shadow_camera_extents(this.__camera_object, l, this.__graphics);
219
219
 
220
220
  } else {
221
221
 
@@ -266,9 +266,8 @@ const scratch_aabb3 = new AABB3();
266
266
  * @author Alex Goldring 02.06.2016 (Komrade)
267
267
  * @param {Camera} camera
268
268
  * @param {Light} light
269
- * @param {GraphicsEngine} graphics
270
269
  */
271
- function updateShadowMap(camera, light, graphics) {
270
+ export function three_update_shadow_camera_extents(camera, light) {
272
271
 
273
272
 
274
273
  // Fit shadow camera's ortho frustum to camera frustum
@@ -1,3 +1,9 @@
1
+ /**
2
+ *
3
+ * @param {LightShadow} shadow
4
+ * @param {number} resolution
5
+ */
6
+ export function three_set_shadow_resolution(shadow: LightShadow, resolution: number): void;
1
7
  export class ThreeLightBinding extends LightBinding {
2
8
  /**
3
9
  *
@@ -1 +1 @@
1
- {"version":3,"file":"ThreeLightBinding.d.ts","sourceRoot":"","sources":["../../../../../../../../src/engine/graphics/ecs/light/binding/three/ThreeLightBinding.js"],"names":[],"mappings":"AAwEA;IAKQ;;;;OAIG;IACH,iBAAoB;IAEpB;;;;OAIG;IACH,qBAAwB;IAExB;;;;OAIG;IACH,qBAAiC;IAGrC,qBAYC;IAED,uBAcC;IAED;;;;OAIG;IACH,yBAEC;IAYD,+BAEC;IAUD,yBAuBC;IAED,2BAgBC;IAED,iCA0BC;IAGD,2BA0CC;IA8CD,mCA6BC;CAEJ;6BAzV4B,oBAAoB"}
1
+ {"version":3,"file":"ThreeLightBinding.d.ts","sourceRoot":"","sources":["../../../../../../../../src/engine/graphics/ecs/light/binding/three/ThreeLightBinding.js"],"names":[],"mappings":"AAwEA;;;;GAIG;AACH,6EAFW,MAAM,QAgBhB;AAED;IAKQ;;;;OAIG;IACH,iBAAoB;IAEpB;;;;OAIG;IACH,qBAAwB;IAExB;;;;OAIG;IACH,qBAAiC;IAGrC,qBAYC;IAED,uBAcC;IAED;;;;OAIG;IACH,yBAEC;IAYD,+BAEC;IAUD,yBAuBC;IAED,2BAgBC;IAED,iCA0BC;IAGD,2BA0CC;IA8CD,mCAmBC;CAEJ;6BApW4B,oBAAoB"}
@@ -70,6 +70,27 @@ function scene_object_filter(object3D) {
70
70
  return true;
71
71
  }
72
72
 
73
+ /**
74
+ *
75
+ * @param {LightShadow} shadow
76
+ * @param {number} resolution
77
+ */
78
+ export function three_set_shadow_resolution(shadow, resolution) {
79
+ const mapSize = shadow.mapSize;
80
+
81
+ if (mapSize.width !== resolution || mapSize.height !== resolution) {
82
+
83
+ mapSize.width = mapSize.height = resolution;
84
+
85
+ //destroy old map
86
+ if (shadow.map !== null) {
87
+ shadow.map.dispose(); // important
88
+ shadow.map = null;
89
+ }
90
+
91
+ }
92
+ }
93
+
73
94
  export class ThreeLightBinding extends LightBinding {
74
95
 
75
96
  constructor() {
@@ -334,17 +355,7 @@ export class ThreeLightBinding extends LightBinding {
334
355
  shadow.radius = 1;
335
356
  shadow.blurSamples = 8;
336
357
 
337
- if (shadow.mapSize.width !== resolution || shadow.mapSize.height !== resolution) {
338
-
339
- shadow.mapSize.width = shadow.mapSize.height = resolution;
340
-
341
- //destroy old map
342
- if (shadow.map !== null) {
343
- shadow.map.dispose(); // important
344
- shadow.map = null;
345
- }
346
-
347
- }
358
+ three_set_shadow_resolution(shadow, resolution);
348
359
 
349
360
  }
350
361
  }
@@ -1 +1 @@
1
- {"version":3,"file":"SpriteSystemPE.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/ecs/sprite/SpriteSystemPE.js"],"names":[],"mappings":"AA6HA;IACI,cAKC;IADG,mDAAuC;CAE9C;sCA/HqC,8CAA8C;0BAF1D,qCAAqC;uBAIxC,aAAa"}
1
+ {"version":3,"file":"SpriteSystemPE.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/ecs/sprite/SpriteSystemPE.js"],"names":[],"mappings":"AA6HA;IACI,cAKC;IADG,mDAAuC;CAE9C;sCAjIqC,8CAA8C;0BAE1D,qCAAqC;uBAQxC,aAAa"}
@@ -1,17 +1,17 @@
1
- import { ParticleEmitter } from "../../particles/particular/engine/emitter/ParticleEmitter.js";
2
- import { ParticleLayer } from "../../particles/particular/engine/emitter/ParticleLayer.js";
3
- import Entity from "../../../ecs/Entity.js";
4
- import { Transform } from "../../../ecs/transform/Transform.js";
1
+ import { float_to_uint8 } from "../../../../core/binary/float_to_uint8.js";
5
2
  import { SerializationMetadata } from "../../../ecs/components/SerializationMetadata.js";
3
+ import Entity from "../../../ecs/Entity.js";
6
4
  import { AbstractContextSystem } from "../../../ecs/system/AbstractContextSystem.js";
7
5
  import { SystemEntityContext } from "../../../ecs/system/SystemEntityContext.js";
8
- import { Sprite } from "./Sprite.js";
6
+ import { Transform } from "../../../ecs/transform/Transform.js";
9
7
  import {
10
8
  PARTICLE_ATTRIBUTE_COLOR,
11
9
  PARTICLE_ATTRIBUTE_POSITION
12
10
  } from "../../particles/particular/engine/emitter/PARTICLE_ATTRIBUTES.js";
11
+ import { ParticleEmitter } from "../../particles/particular/engine/emitter/ParticleEmitter.js";
13
12
  import { ParticleEmitterFlag } from "../../particles/particular/engine/emitter/ParticleEmitterFlag.js";
14
- import { float2uint8 } from "../../../../core/binary/float2uint8.js";
13
+ import { ParticleLayer } from "../../particles/particular/engine/emitter/ParticleLayer.js";
14
+ import { Sprite } from "./Sprite.js";
15
15
 
16
16
  class Context extends SystemEntityContext {
17
17
  constructor() {
@@ -92,7 +92,7 @@ class Context extends SystemEntityContext {
92
92
 
93
93
  emitter.particles?.writeAttributeVector4(
94
94
  0, PARTICLE_ATTRIBUTE_COLOR,
95
- float2uint8(sprite.color.r), float2uint8(sprite.color.g), float2uint8(sprite.color.b), float2uint8(sprite.opacity.getValue())
95
+ float_to_uint8(sprite.color.r), float_to_uint8(sprite.color.g), float_to_uint8(sprite.color.b), float_to_uint8(sprite.opacity.getValue())
96
96
  );
97
97
 
98
98
 
@@ -1,4 +1,4 @@
1
- import { float2uint8 } from "../../../../../core/binary/float2uint8.js";
1
+ import { float_to_uint8 } from "../../../../../core/binary/float_to_uint8.js";
2
2
  import { clamp01 } from "../../../../../core/math/clamp01.js";
3
3
  import { makeOnePixelTexture } from "../../../texture/makeOnePixelTexture.js";
4
4
 
@@ -38,12 +38,12 @@ export function prepare_bake_material({
38
38
 
39
39
 
40
40
  if (texture_metalness === null) {
41
- const m = float2uint8(clamp01(source_material.metalness));
41
+ const m = float_to_uint8(clamp01(source_material.metalness));
42
42
  texture_metalness = makeOnePixelTexture([m, m, m, 255], cleanup_signal);
43
43
  }
44
44
 
45
45
  if (texture_roughness === null) {
46
- const r = float2uint8(clamp01(source_material.roughness));
46
+ const r = float_to_uint8(clamp01(source_material.roughness));
47
47
 
48
48
  texture_roughness = makeOnePixelTexture([r, r, r, 255], cleanup_signal);
49
49
  }
@@ -1 +1 @@
1
- {"version":3,"file":"DirectionalLight.d.ts","sourceRoot":"","sources":["../../../../../../../src/engine/graphics/render/forward_plus/model/DirectionalLight.js"],"names":[],"mappings":"AAKA;IAII;;;OAGG;IACH,UAFU,OAAO,CAEY;IAE7B;;;OAGG;IACH,WAFU,OAAO,CAEa;IAE9B;;;OAGG;IACH,gBAFU,KAAK,CAEgB;IAE/B;;;OAGG;IACH,WAFU,OAAO,CAEc;IAInC;;;OAGG;IACH,6BAFU,OAAO,CAE4B;CAN5C;8BAjC6B,oBAAoB;oBAC9B,qCAAqC;sBACnC,oCAAoC;oBACtC,qCAAqC"}
1
+ {"version":3,"file":"DirectionalLight.d.ts","sourceRoot":"","sources":["../../../../../../../src/engine/graphics/render/forward_plus/model/DirectionalLight.js"],"names":[],"mappings":"AAKA;IAIQ;;;OAGG;IACH,UAFU,OAAO,CAEY;IAE7B;;;OAGG;IACH,WAFU,OAAO,CAEa;IAE9B;;;OAGG;IACH,gBAFU,KAAK,CAEgB;IAE/B;;;OAGG;IACH,WAFU,OAAO,CAEc;IAIvC;;;OAGG;IACH,6BAFU,OAAO,CAE4B;CAN5C;8BA9B6B,oBAAoB;oBAD9B,qCAAqC;sBAFnC,oCAAoC;oBACtC,qCAAqC"}
@@ -1,36 +1,36 @@
1
- import { AbstractLight } from "./AbstractLight.js";
2
- import Vector3 from "../../../../../core/geom/Vector3.js";
3
1
  import { Color } from "../../../../../core/color/Color.js";
4
2
  import Vector1 from "../../../../../core/geom/Vector1.js";
3
+ import Vector3 from "../../../../../core/geom/Vector3.js";
4
+ import { AbstractLight } from "./AbstractLight.js";
5
5
 
6
6
  export class DirectionalLight extends AbstractLight {
7
- constructor() {
8
- super();
7
+ constructor() {
8
+ super();
9
9
 
10
- /**
11
- *
12
- * @type {Vector3}
13
- */
14
- this.position = new Vector3();
10
+ /**
11
+ *
12
+ * @type {Vector3}
13
+ */
14
+ this.position = new Vector3();
15
15
 
16
- /**
17
- *
18
- * @type {Vector3}
19
- */
20
- this.direction = new Vector3();
16
+ /**
17
+ *
18
+ * @type {Vector3}
19
+ */
20
+ this.direction = new Vector3();
21
21
 
22
- /**
23
- * @readonly
24
- * @type {Color}
25
- */
26
- this.color = new Color(1, 1, 1);
22
+ /**
23
+ * @readonly
24
+ * @type {Color}
25
+ */
26
+ this.color = new Color(1, 1, 1);
27
27
 
28
- /**
29
- *
30
- * @type {Vector1}
31
- */
32
- this.intensity = new Vector1(1);
33
- }
28
+ /**
29
+ *
30
+ * @type {Vector1}
31
+ */
32
+ this.intensity = new Vector1(1);
33
+ }
34
34
  }
35
35
 
36
36
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"SH3VisualisationMaterial.d.ts","sourceRoot":"","sources":["../../../../../src/engine/graphics/sh3/SH3VisualisationMaterial.js"],"names":[],"mappings":"AAuDA;IAEI,cAoBC;CAEJ;+BA/EuC,OAAO"}
1
+ {"version":3,"file":"SH3VisualisationMaterial.d.ts","sourceRoot":"","sources":["../../../../../src/engine/graphics/sh3/SH3VisualisationMaterial.js"],"names":[],"mappings":"AA0DA;IAEI,cAoBC;CAEJ;+BAlFuC,OAAO"}
@@ -24,17 +24,20 @@ vec3 inverseTransformDirection( in vec3 normal, in mat4 matrix ) {
24
24
  vec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {
25
25
  // normal is assumed to have unit length
26
26
  float x = normal.x, y = normal.y, z = normal.z;
27
+
27
28
  // band 0
28
29
  vec3 result = shCoefficients[ 0 ] * 0.886227;
30
+
29
31
  // band 1
30
- result += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;
32
+ result -= shCoefficients[ 1 ] * 2.0 * 0.511664 * y;
31
33
  result += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;
32
- result += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;
34
+ result -= shCoefficients[ 3 ] * 2.0 * 0.511664 * x;
35
+
33
36
  // band 2
34
37
  result += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;
35
- result += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;
38
+ result -= shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;
36
39
  result += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );
37
- result += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;
40
+ result -= shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;
38
41
  result += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );
39
42
 
40
43
  return result;
@@ -46,9 +49,9 @@ varying vec3 vNormal;
46
49
 
47
50
  void main() {
48
51
  vec3 normal = normalize( vNormal );
49
- vec3 worldNormal = inverseTransformDirection( normal, viewMatrix );
52
+ vec3 worldNormal = normalize(inverseTransformDirection( normal, viewMatrix ));
50
53
  vec3 irradiance = shGetIrradianceAt( worldNormal, sh );
51
- vec3 outgoingLight = RECIPROCAL_PI * irradiance * intensity;
54
+ vec3 outgoingLight = 1.0 * irradiance * intensity;
52
55
  gl_FragColor = linearToOutputTexel( vec4( outgoingLight, 1.0 ) );
53
56
  }
54
57
  `;
@@ -0,0 +1,9 @@
1
+ /**
2
+ *
3
+ * @param {Uint8Array} data
4
+ * @param {THREE.WebGLRenderer} renderer
5
+ * @param {THREE.WebGLCubeRenderTarget} cubeRenderTarget
6
+ * @return {Float64Array}
7
+ */
8
+ export function fromCubeRenderTarget(data: Uint8Array, renderer: THREE.WebGLRenderer, cubeRenderTarget: THREE.WebGLCubeRenderTarget): Float64Array;
9
+ //# sourceMappingURL=fromCubeRenderTarget.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fromCubeRenderTarget.d.ts","sourceRoot":"","sources":["../../../../../src/engine/graphics/sh3/fromCubeRenderTarget.js"],"names":[],"mappings":"AAIA;;;;;;GAMG;AACH,2CALW,UAAU,YACV,MAAM,aAAa,oBACnB,MAAM,qBAAqB,GAC1B,YAAY,CAuIvB"}
@@ -0,0 +1,145 @@
1
+ import { sh3_basis_at } from "../../../core/geom/3d/sphere/harmonics/sh3_basis_at.js";
2
+ import { sh3_dering_optimize_positive } from "../../../core/geom/3d/sphere/harmonics/sh3_dering_optimize_positive.js";
3
+ import { v3_length_sqr } from "../../../core/geom/vec3/v3_length_sqr.js";
4
+
5
+ /**
6
+ *
7
+ * @param {Uint8Array} data
8
+ * @param {THREE.WebGLRenderer} renderer
9
+ * @param {THREE.WebGLCubeRenderTarget} cubeRenderTarget
10
+ * @return {Float64Array}
11
+ */
12
+ export function fromCubeRenderTarget(
13
+ data,
14
+ renderer,
15
+ cubeRenderTarget
16
+ ) {
17
+
18
+ // The renderTarget must be set to RGBA in order to make readRenderTargetPixels works
19
+ let total_weight = 0;
20
+
21
+ const __shared_buffer = new ArrayBuffer((27 + 9) * 8);
22
+
23
+ const sh_basis = new Float64Array(__shared_buffer, 0, 9);
24
+ const coefficients = new Float64Array(__shared_buffer, 9 * 8, 27);
25
+
26
+ const image_size = cubeRenderTarget.width;
27
+
28
+ const pixel_size = 2 / image_size;
29
+
30
+ let normal_x = 0, normal_y = 0, normal_z = 0;
31
+
32
+ for (let faceIndex = 0; faceIndex < 6; faceIndex++) {
33
+
34
+ renderer.readRenderTargetPixels(cubeRenderTarget, 0, 0, image_size, image_size, data, faceIndex);
35
+
36
+ // RGBA assumed
37
+
38
+ for (let i = 0, il = data.length; i < il; i += 4) {
39
+
40
+
41
+ // pixel coordinate on unit cube
42
+
43
+ const pixelIndex = i / 4;
44
+
45
+ const col = -1 + (pixelIndex % image_size + 0.5) * pixel_size;
46
+
47
+ const row = 1 - (Math.floor(pixelIndex / image_size) + 0.5) * pixel_size;
48
+
49
+
50
+ switch (faceIndex) {
51
+
52
+ case 0:
53
+ normal_x = 1;
54
+ normal_y = row;
55
+ normal_z = -col;
56
+ break;
57
+
58
+ case 1:
59
+ normal_x = -1;
60
+ normal_y = row;
61
+ normal_z = col;
62
+ break;
63
+
64
+ case 2:
65
+ normal_x = col;
66
+ normal_y = 1;
67
+ normal_z = -row;
68
+ break;
69
+
70
+ case 3:
71
+ normal_x = col;
72
+ normal_y = -1;
73
+ normal_z = row;
74
+ break;
75
+
76
+ case 4:
77
+ normal_x = col;
78
+ normal_y = row;
79
+ normal_z = 1;
80
+ break;
81
+
82
+ case 5:
83
+ normal_x = -col;
84
+ normal_y = row;
85
+ normal_z = -1;
86
+ break;
87
+
88
+ }
89
+
90
+ // weight assigned to this pixel
91
+
92
+ const length_squared = v3_length_sqr(normal_x, normal_y, normal_z);
93
+
94
+ const length = Math.sqrt(length_squared);
95
+
96
+ const weight = 4 / (length * length_squared);
97
+
98
+ total_weight += weight;
99
+
100
+ // direction vector to this pixel
101
+ normal_x /= length;
102
+ normal_y /= length;
103
+ normal_z /= length;
104
+
105
+ // evaluate SH basis functions in direction dir
106
+ sh3_basis_at(normal_x, normal_y, normal_z, sh_basis);
107
+
108
+ // pixel color, already in linear space so no sRGB->Linear conversion necessary
109
+
110
+ // 0.003921 constant value is 1/255, a conversion value from UINT8 to normalized float
111
+ const weight_conv = weight * 0.00392156862745098;
112
+
113
+ const color_r = data[i] * weight_conv;
114
+ const color_g = data[i + 1] * weight_conv;
115
+ const color_b = data[i + 2] * weight_conv;
116
+
117
+ // accumulate
118
+ for (let j = 0; j < 9; j++) {
119
+
120
+ const j3 = j * 3;
121
+
122
+ coefficients[j3] += sh_basis[j] * color_r;
123
+ coefficients[j3 + 1] += sh_basis[j] * color_g;
124
+ coefficients[j3 + 2] += sh_basis[j] * color_b;
125
+
126
+ }
127
+
128
+ }
129
+
130
+ }
131
+
132
+ // normalize
133
+ const norm = (4 * Math.PI) / total_weight;
134
+
135
+ for (let j = 0; j < 27; j++) {
136
+
137
+ coefficients[j] *= norm;
138
+
139
+ }
140
+
141
+ sh3_dering_optimize_positive(coefficients, 0, coefficients, 0, 3);
142
+
143
+ return coefficients;
144
+
145
+ }
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Assumes that the mesh is compacted
3
+ * @param {AttributeDataTexture} vertices
4
+ * @param {AttributeDataTexture} neighbours
5
+ * @param {TetrahedralMesh} mesh
6
+ */
7
+ export function tetrahedral_mesh_to_texture(vertices: AttributeDataTexture, neighbours: AttributeDataTexture, mesh: TetrahedralMesh): void;
8
+ //# sourceMappingURL=tetrahedral_mesh_to_texture.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tetrahedral_mesh_to_texture.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/sh3/gi/tetrahedral_mesh_to_texture.js"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,2IA0CC"}