@woosh/meep-engine 2.107.0 → 2.108.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (315) hide show
  1. package/build/bundle-worker-image-decoder.js +1 -1
  2. package/build/meep.cjs +255 -172
  3. package/build/meep.min.js +1 -1
  4. package/build/meep.module.js +255 -173
  5. package/editor/tools/paint/TerrainHeightPaintTool.js +5 -5
  6. package/package.json +1 -1
  7. package/src/core/binary/float_to_uint8.d.ts +7 -0
  8. package/src/core/binary/float_to_uint8.d.ts.map +1 -0
  9. package/src/core/binary/{float2uint8.js → float_to_uint8.js} +1 -1
  10. package/src/core/binary/int32_to_binary_string.d.ts +3 -2
  11. package/src/core/binary/int32_to_binary_string.d.ts.map +1 -1
  12. package/src/core/binary/int32_to_binary_string.js +18 -14
  13. package/src/core/binary/split_by_3.spec.d.ts +2 -0
  14. package/src/core/binary/split_by_3.spec.d.ts.map +1 -0
  15. package/src/core/binary/split_by_3.spec.js +22 -0
  16. package/src/core/binary/to_half_float_uint16.d.ts.map +1 -1
  17. package/src/core/binary/to_half_float_uint16.js +7 -5
  18. package/src/core/binary/uint8_to_float.d.ts +7 -0
  19. package/src/core/binary/uint8_to_float.d.ts.map +1 -0
  20. package/src/core/binary/{uint82float.js → uint8_to_float.js} +1 -1
  21. package/src/core/binary/uint8_to_float.spec.d.ts +2 -0
  22. package/src/core/binary/uint8_to_float.spec.d.ts.map +1 -0
  23. package/src/core/binary/uint8_to_float.spec.js +7 -0
  24. package/src/core/codegen/codeToBlob.d.ts +8 -0
  25. package/src/core/codegen/codeToBlob.d.ts.map +1 -0
  26. package/src/core/codegen/codeToBlob.js +36 -0
  27. package/src/core/codegen/codeToURL.d.ts +8 -0
  28. package/src/core/codegen/codeToURL.d.ts.map +1 -0
  29. package/src/core/codegen/codeToURL.js +22 -0
  30. package/src/core/collection/array/array_shuffle.d.ts +8 -0
  31. package/src/core/collection/array/array_shuffle.d.ts.map +1 -0
  32. package/src/core/collection/array/array_shuffle.js +22 -0
  33. package/src/core/collection/array/array_shuffle.spec.d.ts +2 -0
  34. package/src/core/collection/array/array_shuffle.spec.d.ts.map +1 -0
  35. package/src/core/collection/array/{randomizeArrayElementOrder.spec.js → array_shuffle.spec.js} +4 -4
  36. package/src/core/collection/array/isArrayEqualStrict.d.ts.map +1 -1
  37. package/src/core/collection/array/isArrayEqualStrict.js +2 -2
  38. package/src/core/collection/array/iterator/ArrayIteratorRandom.js +2 -2
  39. package/src/core/collection/array/randomMultipleFromArray.js +2 -2
  40. package/src/core/color/Color.d.ts.map +1 -1
  41. package/src/core/color/Color.js +16 -11
  42. package/src/core/color/hsv/hsv2rgb.js +4 -4
  43. package/src/core/color/hsv/rgb2hsv.d.ts +3 -3
  44. package/src/core/color/hsv/rgb2hsv.d.ts.map +1 -1
  45. package/src/core/color/hsv/rgb2hsv.js +11 -18
  46. package/src/core/color/rgb2uint24.js +4 -4
  47. package/src/core/color/rgb_to_luminance.d.ts +9 -0
  48. package/src/core/color/rgb_to_luminance.d.ts.map +1 -0
  49. package/src/core/color/rgb_to_luminance.js +10 -0
  50. package/src/core/color/sRGB/linear_to_sRGB.d.ts +1 -0
  51. package/src/core/color/sRGB/linear_to_sRGB.d.ts.map +1 -1
  52. package/src/core/color/sRGB/linear_to_sRGB.js +4 -4
  53. package/src/core/geom/3d/aabb/AABB3.d.ts.map +1 -1
  54. package/src/core/geom/3d/aabb/AABB3.js +4 -1
  55. package/src/core/geom/3d/aabb/aabb3_intersects_ray.js +3 -3
  56. package/src/core/geom/3d/shape/UnitSphereShape3D.d.ts.map +1 -1
  57. package/src/core/geom/3d/shape/UnitSphereShape3D.js +14 -14
  58. package/src/core/geom/3d/sphere/harmonics/README.md +16 -2
  59. package/src/core/geom/3d/sphere/harmonics/SH3_COEFFICIENTS.d.ts +6 -0
  60. package/src/core/geom/3d/sphere/harmonics/SH3_COEFFICIENTS.d.ts.map +1 -0
  61. package/src/core/geom/3d/sphere/harmonics/SH3_COEFFICIENTS.js +17 -0
  62. package/src/core/geom/3d/sphere/harmonics/sh3_basis_at.d.ts.map +1 -1
  63. package/src/core/geom/3d/sphere/harmonics/sh3_basis_at.js +21 -9
  64. package/src/core/geom/3d/sphere/harmonics/sh3_dering_optimize_positive.d.ts +3 -3
  65. package/src/core/geom/3d/sphere/harmonics/sh3_dering_optimize_positive.d.ts.map +1 -1
  66. package/src/core/geom/3d/sphere/harmonics/sh3_dering_optimize_positive.js +35 -206
  67. package/src/core/geom/3d/sphere/harmonics/sh3_rotate.d.ts +8 -0
  68. package/src/core/geom/3d/sphere/harmonics/sh3_rotate.d.ts.map +1 -0
  69. package/src/core/geom/3d/sphere/harmonics/sh3_rotate.js +29 -0
  70. package/src/core/geom/3d/sphere/harmonics/sh3_sample_by_direction.js +10 -10
  71. package/src/core/geom/3d/sphere/harmonics/sh_index.d.ts +8 -0
  72. package/src/core/geom/3d/sphere/harmonics/sh_index.d.ts.map +1 -0
  73. package/src/core/geom/3d/sphere/harmonics/sh_index.js +9 -0
  74. package/src/core/geom/3d/sphere/harmonics/sh_rotate_band1.d.ts +8 -0
  75. package/src/core/geom/3d/sphere/harmonics/sh_rotate_band1.d.ts.map +1 -0
  76. package/src/core/geom/3d/sphere/harmonics/sh_rotate_band1.js +44 -0
  77. package/src/core/geom/3d/sphere/harmonics/sh_rotate_band2.d.ts +8 -0
  78. package/src/core/geom/3d/sphere/harmonics/sh_rotate_band2.d.ts.map +1 -0
  79. package/src/core/geom/3d/sphere/harmonics/sh_rotate_band2.js +86 -0
  80. package/src/core/geom/3d/sphere/in_sphere3d_robust.d.ts.map +1 -1
  81. package/src/core/geom/3d/sphere/in_sphere3d_robust.js +2 -1
  82. package/src/core/geom/3d/tetrahedra/TetrahedralMesh.d.ts +20 -1
  83. package/src/core/geom/3d/tetrahedra/TetrahedralMesh.d.ts.map +1 -1
  84. package/src/core/geom/3d/tetrahedra/TetrahedralMesh.js +53 -7
  85. package/src/core/geom/3d/tetrahedra/TetrahedralMesh.spec.js +2 -2
  86. package/src/core/geom/3d/tetrahedra/build_tetrahedral_mesh_buffer_geometry.d.ts +1 -1
  87. package/src/core/geom/3d/tetrahedra/build_tetrahedral_mesh_buffer_geometry.d.ts.map +1 -1
  88. package/src/core/geom/3d/tetrahedra/build_tetrahedral_mesh_buffer_geometry.js +12 -7
  89. package/src/core/geom/3d/tetrahedra/delaunay/tetrahedral_mesh_build_from_grid.d.ts +13 -0
  90. package/src/core/geom/3d/tetrahedra/delaunay/tetrahedral_mesh_build_from_grid.d.ts.map +1 -0
  91. package/src/core/geom/3d/tetrahedra/delaunay/tetrahedral_mesh_build_from_grid.js +135 -0
  92. package/src/core/geom/3d/tetrahedra/prototypeTetrahedraBuilder.js +38 -24
  93. package/src/core/geom/3d/tetrahedra/{compute_circumsphere.d.ts → tetrahedron_compute_circumsphere.d.ts} +3 -5
  94. package/src/core/geom/3d/tetrahedra/tetrahedron_compute_circumsphere.d.ts.map +1 -0
  95. package/src/core/geom/3d/tetrahedra/{compute_circumsphere.js → tetrahedron_compute_circumsphere.js} +2 -4
  96. package/src/core/geom/3d/tetrahedra/tetrahedron_compute_signed_volume.d.ts.map +1 -1
  97. package/src/core/geom/3d/tetrahedra/tetrahedron_compute_signed_volume.js +3 -1
  98. package/src/core/geom/Vector3.d.ts.map +1 -1
  99. package/src/core/geom/Vector3.js +4 -3
  100. package/src/core/geom/mat3/m3_multiply_vec3.d.ts +8 -0
  101. package/src/core/geom/mat3/m3_multiply_vec3.d.ts.map +1 -0
  102. package/src/core/geom/mat3/m3_multiply_vec3.js +21 -0
  103. package/src/core/geom/random/randomPointInSphere.d.ts +1 -1
  104. package/src/core/geom/random/randomPointInSphere.js +2 -2
  105. package/src/core/geom/random/randomPointOnSphere.d.ts +3 -3
  106. package/src/core/geom/random/randomPointOnSphere.d.ts.map +1 -1
  107. package/src/core/geom/random/randomPointOnSphere.js +5 -9
  108. package/src/core/geom/vec2/v2_cross_product.d.ts +15 -0
  109. package/src/core/geom/vec2/v2_cross_product.d.ts.map +1 -0
  110. package/src/core/geom/vec2/v2_cross_product.js +21 -0
  111. package/src/core/geom/vec3/v3_slerp.d.ts +1 -0
  112. package/src/core/geom/vec3/v3_slerp.d.ts.map +1 -1
  113. package/src/core/geom/vec3/v3_slerp.js +1 -0
  114. package/src/core/graph/MultiNode.d.ts +1 -1
  115. package/src/core/graph/MultiNode.js +1 -1
  116. package/src/core/graph/WeightedEdge.d.ts +6 -4
  117. package/src/core/graph/WeightedEdge.d.ts.map +1 -1
  118. package/src/core/graph/WeightedEdge.js +3 -0
  119. package/src/core/graph/coloring/colorizeGraph.js +19 -19
  120. package/src/core/graph/convert_graph_to_dot_string.d.ts +1 -1
  121. package/src/core/graph/convert_graph_to_dot_string.d.ts.map +1 -1
  122. package/src/core/graph/convert_graph_to_dot_string.js +10 -6
  123. package/src/core/graph/graph_compute_adjacency_matrix.d.ts +9 -0
  124. package/src/core/graph/graph_compute_adjacency_matrix.d.ts.map +1 -0
  125. package/src/core/graph/{graph_adjacency_matrix.js → graph_compute_adjacency_matrix.js} +1 -2
  126. package/src/core/graph/graph_compute_degree_matrix.d.ts +10 -0
  127. package/src/core/graph/graph_compute_degree_matrix.d.ts.map +1 -0
  128. package/src/core/graph/graph_compute_degree_matrix.js +23 -0
  129. package/src/core/graph/graph_compute_distance_matrix.d.ts +13 -0
  130. package/src/core/graph/graph_compute_distance_matrix.d.ts.map +1 -0
  131. package/src/core/graph/graph_compute_distance_matrix.js +103 -0
  132. package/src/core/graph/{graph_laplacian_matrix.d.ts → graph_compute_laplacian_matrix.d.ts} +2 -2
  133. package/src/core/graph/graph_compute_laplacian_matrix.d.ts.map +1 -0
  134. package/src/core/graph/{graph_laplacian_matrix.js → graph_compute_laplacian_matrix.js} +6 -6
  135. package/src/core/graph/graph_k_means_cluster.d.ts.map +1 -1
  136. package/src/core/graph/graph_k_means_cluster.js +4 -119
  137. package/src/core/graph/{coarsen_graph.d.ts → mn_graph_coarsen.d.ts} +2 -2
  138. package/src/core/graph/mn_graph_coarsen.d.ts.map +1 -0
  139. package/src/core/graph/{coarsen_graph.js → mn_graph_coarsen.js} +1 -1
  140. package/src/core/graph/mn_graph_coarsen.spec.d.ts +2 -0
  141. package/src/core/graph/mn_graph_coarsen.spec.d.ts.map +1 -0
  142. package/src/core/graph/{coarsen_graph.spec.js → mn_graph_coarsen.spec.js} +4 -4
  143. package/src/core/graph/mn_graph_collapse_weighted_edge.d.ts +1 -0
  144. package/src/core/graph/mn_graph_collapse_weighted_edge.d.ts.map +1 -1
  145. package/src/core/graph/mn_graph_collapse_weighted_edge.js +7 -1
  146. package/src/core/math/physics/brdf/brdf_burley.d.ts.map +1 -1
  147. package/src/core/math/physics/brdf/brdf_burley.js +9 -1
  148. package/src/core/math/physics/brdf/{D_GGX.d.ts → diffuse_GGX.d.ts} +2 -2
  149. package/src/core/math/physics/brdf/diffuse_GGX.d.ts.map +1 -0
  150. package/src/core/math/physics/brdf/{D_GGX.js → diffuse_GGX.js} +1 -1
  151. package/src/core/math/physics/brdf/fresnel_Schlick.d.ts +3 -0
  152. package/src/core/math/physics/brdf/fresnel_Schlick.d.ts.map +1 -0
  153. package/src/core/math/physics/brdf/fresnel_Schlick.js +3 -0
  154. package/src/core/math/physics/brdf/fresnel_Schlick_optimized.d.ts +9 -0
  155. package/src/core/math/physics/brdf/fresnel_Schlick_optimized.d.ts.map +1 -0
  156. package/src/core/math/physics/brdf/fresnel_Schlick_optimized.js +12 -0
  157. package/src/core/math/physics/brdf/fresnel_Schlick_original.d.ts +9 -0
  158. package/src/core/math/physics/brdf/fresnel_Schlick_original.d.ts.map +1 -0
  159. package/src/core/math/physics/brdf/fresnel_Schlick_original.js +10 -0
  160. package/src/core/math/physics/bsdf/bsdf_schlick.d.ts.map +1 -1
  161. package/src/core/math/physics/bsdf/bsdf_schlick.js +3 -11
  162. package/src/core/math/physics/ior_to_reflectivity.d.ts +7 -0
  163. package/src/core/math/physics/ior_to_reflectivity.d.ts.map +1 -0
  164. package/src/core/math/physics/ior_to_reflectivity.js +9 -0
  165. package/src/core/math/physics/pdf/README.md +1 -0
  166. package/src/core/math/physics/pdf/pdf_GGX.d.ts +16 -0
  167. package/src/core/math/physics/pdf/pdf_GGX.d.ts.map +1 -0
  168. package/src/core/math/physics/pdf/pdf_GGX.js +25 -0
  169. package/src/core/math/physics/reflectivity_to_ior.d.ts +7 -0
  170. package/src/core/math/physics/reflectivity_to_ior.d.ts.map +1 -0
  171. package/src/core/math/physics/reflectivity_to_ior.js +8 -0
  172. package/src/core/process/task/util/randomCountTask.js +3 -3
  173. package/src/core/process/worker/WorkerBuilder.d.ts.map +1 -1
  174. package/src/core/process/worker/WorkerBuilder.js +5 -35
  175. package/src/engine/EngineHarness.d.ts +10 -1
  176. package/src/engine/EngineHarness.d.ts.map +1 -1
  177. package/src/engine/EngineHarness.js +22 -11
  178. package/src/engine/asset/loaders/ArrayBufferLoader.d.ts.map +1 -1
  179. package/src/engine/asset/loaders/ArrayBufferLoader.js +17 -10
  180. package/src/engine/asset/loaders/image/png/PNGReader.d.ts +25 -11
  181. package/src/engine/asset/loaders/image/png/PNGReader.d.ts.map +1 -1
  182. package/src/engine/asset/loaders/image/png/PNGReader.js +38 -24
  183. package/src/engine/asset/loaders/material/TextureAttachmensByMaterialType.d.ts.map +1 -1
  184. package/src/engine/asset/loaders/material/TextureAttachmensByMaterialType.js +5 -0
  185. package/src/engine/ecs/terrain/overlay/TerrainOverlay.js +4 -4
  186. package/src/engine/graphics/GraphicsEngine.js +1 -1
  187. package/src/engine/graphics/ecs/camera/topdown/TopDownCameraController.d.ts.map +1 -1
  188. package/src/engine/graphics/ecs/camera/topdown/TopDownCameraController.js +4 -0
  189. package/src/engine/graphics/ecs/light/LightSystem.d.ts.map +1 -1
  190. package/src/engine/graphics/ecs/light/LightSystem.js +2 -3
  191. package/src/engine/graphics/ecs/light/binding/three/ThreeLightBinding.d.ts +6 -0
  192. package/src/engine/graphics/ecs/light/binding/three/ThreeLightBinding.d.ts.map +1 -1
  193. package/src/engine/graphics/ecs/light/binding/three/ThreeLightBinding.js +22 -11
  194. package/src/engine/graphics/ecs/sprite/SpriteSystemPE.d.ts.map +1 -1
  195. package/src/engine/graphics/ecs/sprite/SpriteSystemPE.js +7 -7
  196. package/src/engine/graphics/impostors/octahedral/bake/prepare_bake_material.js +3 -3
  197. package/src/engine/graphics/render/forward_plus/model/DirectionalLight.d.ts.map +1 -1
  198. package/src/engine/graphics/render/forward_plus/model/DirectionalLight.js +25 -25
  199. package/src/engine/graphics/sh3/SH3VisualisationMaterial.d.ts.map +1 -1
  200. package/src/engine/graphics/sh3/SH3VisualisationMaterial.js +9 -6
  201. package/src/engine/graphics/sh3/fromCubeRenderTarget.d.ts +9 -0
  202. package/src/engine/graphics/sh3/fromCubeRenderTarget.d.ts.map +1 -0
  203. package/src/engine/graphics/sh3/fromCubeRenderTarget.js +145 -0
  204. package/src/engine/graphics/sh3/gi/tetrahedral_mesh_to_texture.d.ts +8 -0
  205. package/src/engine/graphics/sh3/gi/tetrahedral_mesh_to_texture.d.ts.map +1 -0
  206. package/src/engine/graphics/sh3/gi/tetrahedral_mesh_to_texture.js +51 -0
  207. package/src/engine/graphics/sh3/{LightProbeVolume.d.ts → lpv/LightProbeVolume.d.ts} +18 -7
  208. package/src/engine/graphics/sh3/lpv/LightProbeVolume.d.ts.map +1 -0
  209. package/src/engine/graphics/sh3/lpv/LightProbeVolume.js +340 -0
  210. package/src/engine/graphics/sh3/lpv/LightProbeVolumeSerializationAdapter.d.ts +18 -0
  211. package/src/engine/graphics/sh3/lpv/LightProbeVolumeSerializationAdapter.d.ts.map +1 -0
  212. package/src/engine/graphics/sh3/lpv/LightProbeVolumeSerializationAdapter.js +44 -0
  213. package/src/engine/graphics/sh3/lpv/PathTracerProbeRenderer.d.ts +12 -0
  214. package/src/engine/graphics/sh3/lpv/PathTracerProbeRenderer.d.ts.map +1 -0
  215. package/src/engine/graphics/sh3/lpv/PathTracerProbeRenderer.js +122 -0
  216. package/src/engine/graphics/sh3/lpv/ProbeRenderer.d.ts +29 -0
  217. package/src/engine/graphics/sh3/lpv/ProbeRenderer.d.ts.map +1 -0
  218. package/src/engine/graphics/sh3/lpv/ProbeRenderer.js +35 -0
  219. package/src/engine/graphics/sh3/lpv/WebGLCubeProbeRenderer.d.ts +27 -0
  220. package/src/engine/graphics/sh3/lpv/WebGLCubeProbeRenderer.d.ts.map +1 -0
  221. package/src/engine/graphics/sh3/lpv/WebGLCubeProbeRenderer.js +158 -0
  222. package/src/engine/graphics/sh3/lpv/build_probes_for_scene.d.ts +11 -0
  223. package/src/engine/graphics/sh3/lpv/build_probes_for_scene.d.ts.map +1 -0
  224. package/src/engine/graphics/sh3/lpv/build_probes_for_scene.js +127 -0
  225. package/src/engine/graphics/sh3/lpv/probe_volume_to_textures.d.ts +12 -0
  226. package/src/engine/graphics/sh3/lpv/probe_volume_to_textures.d.ts.map +1 -0
  227. package/src/engine/graphics/sh3/lpv/probe_volume_to_textures.js +89 -0
  228. package/src/engine/graphics/sh3/path_tracer/PathTracedScene.d.ts +90 -0
  229. package/src/engine/graphics/sh3/path_tracer/PathTracedScene.d.ts.map +1 -0
  230. package/src/engine/graphics/sh3/path_tracer/PathTracedScene.js +352 -0
  231. package/src/engine/graphics/sh3/path_tracer/PathTracer.d.ts +5 -91
  232. package/src/engine/graphics/sh3/path_tracer/PathTracer.d.ts.map +1 -1
  233. package/src/engine/graphics/sh3/path_tracer/PathTracer.js +41 -477
  234. package/src/engine/graphics/sh3/path_tracer/make_one_vector3.d.ts +1 -0
  235. package/src/engine/graphics/sh3/path_tracer/make_one_vector3.d.ts.map +1 -1
  236. package/src/engine/graphics/sh3/path_tracer/make_one_vector3.js +6 -3
  237. package/src/engine/graphics/sh3/path_tracer/prototypePathTracer.js +38 -62
  238. package/src/engine/graphics/sh3/path_tracer/random_in_hemisphere.d.ts.map +1 -1
  239. package/src/engine/graphics/sh3/path_tracer/random_in_hemisphere.js +7 -1
  240. package/src/engine/graphics/sh3/path_tracer/sample_triangle_attribute.d.ts +2 -2
  241. package/src/engine/graphics/sh3/path_tracer/sample_triangle_attribute.d.ts.map +1 -1
  242. package/src/engine/graphics/sh3/path_tracer/sample_triangle_attribute.js +1 -1
  243. package/src/engine/graphics/sh3/path_tracer/sampling/generate_stratified_samples.d.ts +10 -0
  244. package/src/engine/graphics/sh3/path_tracer/sampling/generate_stratified_samples.d.ts.map +1 -0
  245. package/src/engine/graphics/sh3/path_tracer/sampling/generate_stratified_samples.js +20 -0
  246. package/src/engine/graphics/sh3/path_tracer/sampling/generate_stratified_samples_2d.d.ts +10 -0
  247. package/src/engine/graphics/sh3/path_tracer/sampling/generate_stratified_samples_2d.d.ts.map +1 -0
  248. package/src/engine/graphics/sh3/path_tracer/sampling/generate_stratified_samples_2d.js +31 -0
  249. package/src/engine/graphics/sh3/path_tracer/sampling/make_stratified_sample.d.ts +9 -0
  250. package/src/engine/graphics/sh3/path_tracer/sampling/make_stratified_sample.d.ts.map +1 -0
  251. package/src/engine/graphics/sh3/path_tracer/sampling/make_stratified_sample.js +21 -0
  252. package/src/engine/graphics/sh3/path_tracer/texture/SoftwareTextureCache.d.ts +3 -0
  253. package/src/engine/graphics/sh3/path_tracer/texture/SoftwareTextureCache.d.ts.map +1 -0
  254. package/src/engine/graphics/sh3/path_tracer/texture/SoftwareTextureCache.js +3 -0
  255. package/src/engine/graphics/sh3/path_tracer/texture/apply_texture_clamping_to_coordinate.d.ts.map +1 -0
  256. package/src/engine/graphics/sh3/path_tracer/{apply_texture_clamping_to_coordinate.js → texture/apply_texture_clamping_to_coordinate.js} +2 -2
  257. package/src/engine/graphics/sh3/path_tracer/texture/sample_material.d.ts +11 -0
  258. package/src/engine/graphics/sh3/path_tracer/texture/sample_material.d.ts.map +1 -0
  259. package/src/engine/graphics/sh3/path_tracer/texture/sample_material.js +86 -0
  260. package/src/engine/graphics/sh3/path_tracer/texture/sample_texture.d.ts +10 -0
  261. package/src/engine/graphics/sh3/path_tracer/texture/sample_texture.d.ts.map +1 -0
  262. package/src/engine/graphics/sh3/path_tracer/texture/sample_texture.js +55 -0
  263. package/src/engine/graphics/sh3/path_tracer/vec3_uint8_to_float.js +4 -4
  264. package/src/engine/graphics/sh3/prototypeSH3Probe.js +145 -185
  265. package/src/engine/graphics/sh3/sky/hosek/sky_hosek_compute_irradiance_by_direction.d.ts +5 -5
  266. package/src/engine/graphics/sh3/sky/hosek/sky_hosek_compute_irradiance_by_direction.d.ts.map +1 -1
  267. package/src/engine/graphics/sh3/sky/hosek/sky_hosek_compute_irradiance_by_direction.js +8 -8
  268. package/src/engine/graphics/sh3/visualise_spherical_harmonic_sphere.d.ts +13 -0
  269. package/src/engine/graphics/sh3/visualise_spherical_harmonic_sphere.d.ts.map +1 -0
  270. package/src/engine/graphics/sh3/visualise_spherical_harmonic_sphere.js +54 -0
  271. package/src/engine/graphics/texture/AttributeDataTexture.d.ts +2 -2
  272. package/src/engine/graphics/texture/AttributeDataTexture.d.ts.map +1 -1
  273. package/src/engine/graphics/texture/AttributeDataTexture.js +11 -11
  274. package/src/engine/graphics/texture/sampler/Sampler2D.d.ts.map +1 -1
  275. package/src/engine/graphics/texture/sampler/Sampler2D.js +2 -2
  276. package/src/engine/input/ecs/systems/InputControllerSystem.js +1 -1
  277. package/src/engine/network/convertPathToURL.d.ts +3 -1
  278. package/src/engine/network/convertPathToURL.d.ts.map +1 -1
  279. package/src/engine/network/convertPathToURL.js +68 -51
  280. package/src/engine/physics/fluid/SliceVisualiser.d.ts.map +1 -1
  281. package/src/engine/physics/fluid/SliceVisualiser.js +4 -4
  282. package/src/generation/filtering/numeric/CellFilterCache.d.ts.map +1 -1
  283. package/src/generation/filtering/numeric/CellFilterCache.js +1 -0
  284. package/src/view/elements/ColorPickerView.d.ts.map +1 -1
  285. package/src/view/elements/ColorPickerView.js +7 -7
  286. package/src/core/binary/float2uint8.d.ts +0 -7
  287. package/src/core/binary/float2uint8.d.ts.map +0 -1
  288. package/src/core/binary/uint82float.d.ts +0 -7
  289. package/src/core/binary/uint82float.d.ts.map +0 -1
  290. package/src/core/binary/uint82float.spec.d.ts +0 -2
  291. package/src/core/binary/uint82float.spec.d.ts.map +0 -1
  292. package/src/core/binary/uint82float.spec.js +0 -7
  293. package/src/core/collection/array/randomizeArrayElementOrder.d.ts +0 -8
  294. package/src/core/collection/array/randomizeArrayElementOrder.d.ts.map +0 -1
  295. package/src/core/collection/array/randomizeArrayElementOrder.js +0 -24
  296. package/src/core/collection/array/randomizeArrayElementOrder.spec.d.ts +0 -2
  297. package/src/core/collection/array/randomizeArrayElementOrder.spec.d.ts.map +0 -1
  298. package/src/core/geom/3d/tetrahedra/compute_circumsphere.d.ts.map +0 -1
  299. package/src/core/graph/coarsen_graph.d.ts.map +0 -1
  300. package/src/core/graph/coarsen_graph.spec.d.ts +0 -2
  301. package/src/core/graph/coarsen_graph.spec.d.ts.map +0 -1
  302. package/src/core/graph/graph_adjacency_matrix.d.ts +0 -9
  303. package/src/core/graph/graph_adjacency_matrix.d.ts.map +0 -1
  304. package/src/core/graph/graph_degree_matrix.d.ts +0 -9
  305. package/src/core/graph/graph_degree_matrix.d.ts.map +0 -1
  306. package/src/core/graph/graph_degree_matrix.js +0 -18
  307. package/src/core/graph/graph_laplacian_matrix.d.ts.map +0 -1
  308. package/src/core/math/physics/brdf/D_GGX.d.ts.map +0 -1
  309. package/src/engine/graphics/sh3/LightProbeVolume.d.ts.map +0 -1
  310. package/src/engine/graphics/sh3/LightProbeVolume.js +0 -609
  311. package/src/engine/graphics/sh3/path_tracer/apply_texture_clamping_to_coordinate.d.ts.map +0 -1
  312. package/src/engine/graphics/sh3/visualise_probe.d.ts +0 -12
  313. package/src/engine/graphics/sh3/visualise_probe.d.ts.map +0 -1
  314. package/src/engine/graphics/sh3/visualise_probe.js +0 -40
  315. /package/src/engine/graphics/sh3/path_tracer/{apply_texture_clamping_to_coordinate.d.ts → texture/apply_texture_clamping_to_coordinate.d.ts} +0 -0
@@ -0,0 +1,3 @@
1
+ export const fresnel_Schlick: typeof fresnel_Schlick_optimized;
2
+ import { fresnel_Schlick_optimized } from "./fresnel_Schlick_optimized.js";
3
+ //# sourceMappingURL=fresnel_Schlick.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fresnel_Schlick.d.ts","sourceRoot":"","sources":["../../../../../../src/core/math/physics/brdf/fresnel_Schlick.js"],"names":[],"mappings":"AAEA,+DAAyD;0CAFf,gCAAgC"}
@@ -0,0 +1,3 @@
1
+ import { fresnel_Schlick_optimized } from "./fresnel_Schlick_optimized.js";
2
+
3
+ export const fresnel_Schlick = fresnel_Schlick_optimized;
@@ -0,0 +1,9 @@
1
+ /**
2
+ *
3
+ * Optimized variant (presented by Epic at SIGGRAPH '13)
4
+ * https://cdn2.unrealengine.com/Resources/files/2013SiggraphPresentationsNotes-26915738.pdf
5
+ * @param {number} dotVH
6
+ * @return {number}
7
+ */
8
+ export function fresnel_Schlick_optimized(dotVH: number): number;
9
+ //# sourceMappingURL=fresnel_Schlick_optimized.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fresnel_Schlick_optimized.d.ts","sourceRoot":"","sources":["../../../../../../src/core/math/physics/brdf/fresnel_Schlick_optimized.js"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,iDAHW,MAAM,GACL,MAAM,CAIjB"}
@@ -0,0 +1,12 @@
1
+ import { exp2 } from "../../exp2.js";
2
+
3
+ /**
4
+ *
5
+ * Optimized variant (presented by Epic at SIGGRAPH '13)
6
+ * https://cdn2.unrealengine.com/Resources/files/2013SiggraphPresentationsNotes-26915738.pdf
7
+ * @param {number} dotVH
8
+ * @return {number}
9
+ */
10
+ export function fresnel_Schlick_optimized(dotVH) {
11
+ return exp2((-5.55473 * dotVH - 6.98316) * dotVH);
12
+ }
@@ -0,0 +1,9 @@
1
+ /**
2
+ *
3
+ * Original approximation by Christophe Schlick '94
4
+ * NOTE: prefer to use {@link fresnel_Schlick_optimized} instead, this primarily exists for reference purposes
5
+ * @param dotVH
6
+ * @return {number}
7
+ */
8
+ declare function fresnel_Schlick_original(dotVH: any): number;
9
+ //# sourceMappingURL=fresnel_Schlick_original.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fresnel_Schlick_original.d.ts","sourceRoot":"","sources":["../../../../../../src/core/math/physics/brdf/fresnel_Schlick_original.js"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,uDAFY,MAAM,CAIjB"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ *
3
+ * Original approximation by Christophe Schlick '94
4
+ * NOTE: prefer to use {@link fresnel_Schlick_optimized} instead, this primarily exists for reference purposes
5
+ * @param dotVH
6
+ * @return {number}
7
+ */
8
+ function fresnel_Schlick_original(dotVH) {
9
+ return Math.pow(1.0 - dotVH, 5.0)
10
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"bsdf_schlick.d.ts","sourceRoot":"","sources":["../../../../../../src/core/math/physics/bsdf/bsdf_schlick.js"],"names":[],"mappings":"AAGA;;;;;;GAMG;AACH,iCALW,MAAM,OACN,MAAM,SACN,MAAM,GACJ,MAAM,CAalB"}
1
+ {"version":3,"file":"bsdf_schlick.d.ts","sourceRoot":"","sources":["../../../../../../src/core/math/physics/bsdf/bsdf_schlick.js"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,iCALW,MAAM,OACN,MAAM,SACN,MAAM,GACJ,MAAM,CAMlB"}
@@ -1,5 +1,4 @@
1
- import { exp2 } from "../../exp2.js";
2
-
1
+ import { fresnel_Schlick } from "../brdf/fresnel_Schlick.js";
3
2
 
4
3
  /**
5
4
  *
@@ -9,14 +8,7 @@ import { exp2 } from "../../exp2.js";
9
8
  * @returns {number}
10
9
  */
11
10
  export function bsdf_schlick(f0, f90, dotVH) {
11
+ const fresnel = fresnel_Schlick(dotVH);
12
12
 
13
- // Original approximation by Christophe Schlick '94
14
- // float fresnel = pow( 1.0 - dotVH, 5.0 );
15
-
16
- // Optimized variant (presented by Epic at SIGGRAPH '13)
17
- // https://cdn2.unrealengine.com/Resources/files/2013SiggraphPresentationsNotes-26915738.pdf
18
-
19
- const fresnel = exp2(((-5.55473) * dotVH - 6.98316) * dotVH);
20
-
21
- return ((f0 * (1.0 - fresnel)) + (f90 * fresnel));
13
+ return f0 * (1.0 - fresnel) + f90 * fresnel;
22
14
  }
@@ -0,0 +1,7 @@
1
+ /**
2
+ *
3
+ * @param {number} ior index of refraction
4
+ * @return {number}
5
+ */
6
+ export function ior_to_reflectivity(ior: number): number;
7
+ //# sourceMappingURL=ior_to_reflectivity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ior_to_reflectivity.d.ts","sourceRoot":"","sources":["../../../../../src/core/math/physics/ior_to_reflectivity.js"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,yCAHW,MAAM,GACL,MAAM,CAIjB"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ *
3
+ * @param {number} ior index of refraction
4
+ * @return {number}
5
+ */
6
+ export function ior_to_reflectivity(ior) {
7
+ return 2.5 * (ior - 1) / (ior + 1)
8
+ }
9
+
@@ -0,0 +1 @@
1
+ Probability Distribution Functions
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Returns the PDF for a particular GGX sample after reflecting the view vector
3
+ * about a microfacet normal (includes the Jacobian for going from half vector to lighting vector)
4
+ *
5
+ * N = surface normal
6
+ * L = light direction
7
+ * V = view direction
8
+ * H = normalize( V + L )
9
+ *
10
+ * @param {number} nDotH dot product of N and H
11
+ * @param {number} hDotV dot product of H and V
12
+ * @param {number} roughness
13
+ * @returns {number}
14
+ */
15
+ export function pdf_GGX(nDotH: number, hDotV: number, roughness: number): number;
16
+ //# sourceMappingURL=pdf_GGX.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pdf_GGX.d.ts","sourceRoot":"","sources":["../../../../../../src/core/math/physics/pdf/pdf_GGX.js"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,+BALW,MAAM,SACN,MAAM,aACN,MAAM,GACJ,MAAM,CAYlB"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Returns the PDF for a particular GGX sample after reflecting the view vector
3
+ * about a microfacet normal (includes the Jacobian for going from half vector to lighting vector)
4
+ *
5
+ * N = surface normal
6
+ * L = light direction
7
+ * V = view direction
8
+ * H = normalize( V + L )
9
+ *
10
+ * @param {number} nDotH dot product of N and H
11
+ * @param {number} hDotV dot product of H and V
12
+ * @param {number} roughness
13
+ * @returns {number}
14
+ */
15
+ export function pdf_GGX(nDotH, hDotV, roughness) {
16
+ const m2 = roughness * roughness;
17
+
18
+ const X = nDotH * nDotH * (m2 - 1) + 1;
19
+
20
+ const d = m2 / (Math.PI * X * X);
21
+
22
+ const pM = d * nDotH;
23
+
24
+ return pM / (4 * hDotV);
25
+ }
@@ -0,0 +1,7 @@
1
+ /**
2
+ *
3
+ * @param {number} reflectivity
4
+ * @return {number} index of refraction (IOR)
5
+ */
6
+ export function reflectivity_to_ior(reflectivity: number): number;
7
+ //# sourceMappingURL=reflectivity_to_ior.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reflectivity_to_ior.d.ts","sourceRoot":"","sources":["../../../../../src/core/math/physics/reflectivity_to_ior.js"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,kDAHW,MAAM,GACL,MAAM,CAIjB"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ *
3
+ * @param {number} reflectivity
4
+ * @return {number} index of refraction (IOR)
5
+ */
6
+ export function reflectivity_to_ior(reflectivity) {
7
+ return (1 + 0.4 * reflectivity) / (1 - 0.4 * reflectivity)
8
+ }
@@ -1,7 +1,7 @@
1
+ import { array_shuffle } from "../../../collection/array/array_shuffle.js";
1
2
  import { seededRandom } from "../../../math/random/seededRandom.js";
2
- import { TaskSignal } from "../TaskSignal.js";
3
3
  import Task from "../Task.js";
4
- import { randomizeArrayElementOrder } from "../../../collection/array/randomizeArrayElementOrder.js";
4
+ import { TaskSignal } from "../TaskSignal.js";
5
5
 
6
6
  /**
7
7
  *
@@ -49,7 +49,7 @@ export function randomCountTask(seed, initial, limit, callback) {
49
49
  }
50
50
 
51
51
  //shuffle
52
- randomizeArrayElementOrder(random, sequence);
52
+ array_shuffle(random, sequence);
53
53
  },
54
54
  cycleFunction: cycle,
55
55
  computeProgress: function () {
@@ -1 +1 @@
1
- {"version":3,"file":"WorkerBuilder.d.ts","sourceRoot":"","sources":["../../../../../src/core/process/worker/WorkerBuilder.js"],"names":[],"mappings":";AAMA;IAEI,eAAa;IACb,YAAa;IACb,iBAAe;IACf,sBAA6B;IAE7B;;;OAGG;IACH,cAFW,MAAM,QAIhB;IAED;;;;OAIG;IACH,gBAHW,MAAM,UACN,WAAS,MAAM,QAIzB;IAED;;;;;OAKG;IACH,6CAKC;IAED;;;OAGG;IACH,mBAFW,MAAM,QAMhB;IAED;;;OAGG;IACH,SAFa,WAAW,CAyGvB;CACJ;wBAhKuB,8BAA8B;wBAC9B,kBAAkB"}
1
+ {"version":3,"file":"WorkerBuilder.d.ts","sourceRoot":"","sources":["../../../../../src/core/process/worker/WorkerBuilder.js"],"names":[],"mappings":";AAQA;IAEI,eAAa;IACb,YAAa;IACb,iBAAe;IACf,sBAA6B;IAE7B;;;OAGG;IACH,cAFW,MAAM,QAIhB;IAED;;;;OAIG;IACH,gBAHW,MAAM,UACN,WAAS,MAAM,QAIzB;IAED;;;;;OAKG;IACH,6CAKC;IAED;;;OAGG;IACH,mBAFW,MAAM,QAMhB;IAED;;;OAGG;IACH,SAFa,WAAW,CAyGvB;CACJ;wBAjKuB,8BAA8B;wBAC9B,kBAAkB"}
@@ -1,9 +1,11 @@
1
1
  import { convertPathToURL } from "../../../engine/network/convertPathToURL.js";
2
+ import { codeToURL } from "../../codegen/codeToURL.js";
2
3
  import LineBuilder from "../../codegen/LineBuilder.js";
3
4
  import WorkerProxy from "./WorkerProxy.js";
4
5
 
5
6
  const RxMatchFunctionName = /(function\s*)([a-zA-Z0-9_]+)?(\s*\([^\]]*\)\s*\{.*)/g;
6
7
 
8
+
7
9
  class WorkerBuilder {
8
10
 
9
11
  imports = [];
@@ -46,9 +48,9 @@ class WorkerBuilder {
46
48
  * @param {string} path
47
49
  */
48
50
  importScript(path) {
49
- path = convertPathToURL(path);
51
+ const qualified_path = convertPathToURL(path);
50
52
 
51
- this.imports.push(path);
53
+ this.imports.push(qualified_path);
52
54
  }
53
55
 
54
56
  /**
@@ -58,7 +60,7 @@ class WorkerBuilder {
58
60
  build() {
59
61
  const codeLines = [];
60
62
 
61
- codeLines.push('var globalScope = this;');
63
+ codeLines.push('var globalScope = globalThis;');
62
64
 
63
65
  //handle imports
64
66
  this.imports.forEach(function (url) {
@@ -161,36 +163,4 @@ class WorkerBuilder {
161
163
  }
162
164
  };
163
165
 
164
- /**
165
- *
166
- * @param {string} code
167
- * @return {string}
168
- */
169
- function codeToURL(code) {
170
- const js_mime = 'application/javascript';
171
-
172
- let blob;
173
-
174
- if (typeof window === 'object') {
175
- if (typeof window.Blob !== "undefined") {
176
- blob = new Blob([code], {type: js_mime});
177
- } else {
178
- // Backwards-compatibility
179
- const BlobBuilder = window.BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder;
180
- if (BlobBuilder !== undefined) {
181
- blob = new BlobBuilder();
182
- blob.append(code);
183
- blob = blob.getBlob();
184
- }
185
- }
186
- }
187
-
188
- if (blob !== undefined && URL.createObjectURL !== undefined) {
189
- return URL.createObjectURL(blob);
190
- } else {
191
- // build data URL in a slowest way possible
192
- return `data:${js_mime},${encodeURIComponent(code)}`;
193
- }
194
- }
195
-
196
166
  export default WorkerBuilder;
@@ -58,12 +58,20 @@ export class EngineHarness {
58
58
  * @param {EntityComponentDataset} [param.ecd]
59
59
  * @param {number} [param.shadowmapResolution]
60
60
  * @param {boolean} [param.castShadow]
61
+ * @param {Color} [param.sun]
62
+ * @param {number} [param.sunIntensity]
63
+ * @param {Color} [param.ambient]
64
+ * @param {number} [param.ambientIntensity]
61
65
  */
62
- static buildLights({ engine, ecd, shadowmapResolution, castShadow }: {
66
+ static buildLights({ engine, ecd, shadowmapResolution, castShadow, sun, sunIntensity, sunDirection, ambient, ambientIntensity }: {
63
67
  engine: Engine;
64
68
  ecd?: EntityComponentDataset;
65
69
  shadowmapResolution?: number;
66
70
  castShadow?: boolean;
71
+ sun?: Color;
72
+ sunIntensity?: number;
73
+ ambient?: Color;
74
+ ambientIntensity?: number;
67
75
  }): Promise<void>;
68
76
  /**
69
77
  * @param {Object} param
@@ -120,5 +128,6 @@ import Engine from "./Engine.js";
120
128
  import { EngineConfiguration } from "./EngineConfiguration.js";
121
129
  import Vector3 from "../core/geom/Vector3.js";
122
130
  import Entity from "./ecs/Entity.js";
131
+ import { Color } from "../core/color/Color.js";
123
132
  import Terrain from "./ecs/terrain/ecs/Terrain.js";
124
133
  //# sourceMappingURL=EngineHarness.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"EngineHarness.d.ts","sourceRoot":"","sources":["../../../src/engine/EngineHarness.js"],"names":[],"mappings":"AAsDA;IAmBI;;;OAGG;IACH,6BAFW,MAAM,QAYhB;IAkED;;;;;;;;;;;;;OAaG;IACH;QAZyB,MAAM,EAApB,MAAM;QACyB,GAAG;QAClB,MAAM,GAAtB,OAAO;QACQ,QAAQ,GAAvB,MAAM;QACS,KAAK,GAApB,MAAM;QACS,GAAG,GAAlB,MAAM;QACU,QAAQ,GAAxB,OAAO;QACQ,WAAW,GAA1B,MAAM;QACS,WAAW,GAA1B,MAAM;QACS,WAAW,GAA1B,MAAM;QACJ,MAAM,CA+DlB;IAED;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,oQAnBW,MAAM,iBAmFhB;IAGD;;;;;;OAMG;IACH;QALyB,MAAM,EAApB,MAAM;QACyB,GAAG;QACnB,mBAAmB,GAAlC,MAAM;QACU,UAAU,GAA1B,OAAO;sBAqDjB;IAED;;;;;;;OAOG;IACH;QAN0B,YAAY,GAA3B,MAAM;QACQ,MAAM,EAApB,MAAM;QACS,WAAW,GAA1B,MAAM;QACyB,GAAG;QAChC,MAAM,CA2ClB;IAGD;;;;;;;;;;;OAWG;IACH,mGAVW,MAAM,GAQJ,OAAO,CAuDnB;IAvbG;;;OAGG;IACH,QAFU,MAAM,CAEiC;IAMjD;;;OAGG;IACH,YAFU,eAAQ,IAAI,CAET;IAmBjB;;;;OAIG;IACH,8DAJmB,mBAAmB,UAAQ,MAAM,WAEvC,QAAQ,MAAM,CAAC,CA2D3B;CAyVJ;;IAID;;;OAGG;IACH,uCAMC;;mBAhfkB,aAAa;oCACI,0BAA0B;oBAX1C,yBAAyB;mBAK1B,iBAAiB;oBAEhB,8BAA8B"}
1
+ {"version":3,"file":"EngineHarness.d.ts","sourceRoot":"","sources":["../../../src/engine/EngineHarness.js"],"names":[],"mappings":"AA6DA;IAmBI;;;OAGG;IACH,6BAFW,MAAM,QAYhB;IAkED;;;;;;;;;;;;;OAaG;IACH;QAZyB,MAAM,EAApB,MAAM;QACyB,GAAG;QAClB,MAAM,GAAtB,OAAO;QACQ,QAAQ,GAAvB,MAAM;QACS,KAAK,GAApB,MAAM;QACS,GAAG,GAAlB,MAAM;QACU,QAAQ,GAAxB,OAAO;QACQ,WAAW,GAA1B,MAAM;QACS,WAAW,GAA1B,MAAM;QACS,WAAW,GAA1B,MAAM;QACJ,MAAM,CA+DlB;IAED;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,oQAnBW,MAAM,iBAmFhB;IAGD;;;;;;;;;;OAUG;IACH;QATyB,MAAM,EAApB,MAAM;QACyB,GAAG;QACnB,mBAAmB,GAAlC,MAAM;QACU,UAAU,GAA1B,OAAO;QACO,GAAG,GAAjB,KAAK;QACU,YAAY,GAA3B,MAAM;QACQ,OAAO,GAArB,KAAK;QACU,gBAAgB,GAA/B,MAAM;sBAqDhB;IAED;;;;;;;OAOG;IACH;QAN0B,YAAY,GAA3B,MAAM;QACQ,MAAM,EAApB,MAAM;QACS,WAAW,GAA1B,MAAM;QACyB,GAAG;QAChC,MAAM,CA2ClB;IAGD;;;;;;;;;;;OAWG;IACH,mGAVW,MAAM,GAQJ,OAAO,CAuDnB;IA3bG;;;OAGG;IACH,QAFU,MAAM,CAEiC;IAMjD;;;OAGG;IACH,YAFU,eAAQ,IAAI,CAET;IAmBjB;;;;OAIG;IACH,8DAJmB,mBAAmB,UAAQ,MAAM,WAEvC,QAAQ,MAAM,CAAC,CA2D3B;CA6VJ;;IAID;;;OAGG;IACH,uCAMC;;mBA1fkB,aAAa;oCACI,0BAA0B;oBAX1C,yBAAyB;mBAK1B,iBAAiB;sBATd,wBAAwB;oBAW1B,8BAA8B"}
@@ -1,4 +1,5 @@
1
1
  import Stats from "three/examples/jsm/libs/stats.module.js";
2
+ import { Color } from "../core/color/Color.js";
2
3
 
3
4
  import { noop } from "../core/function/noop.js";
4
5
  import Vector2 from "../core/geom/Vector2.js";
@@ -52,6 +53,12 @@ function setLocale(engine) {
52
53
  return engine.localization.loadLocale(locale);
53
54
  }
54
55
 
56
+ /**
57
+ * Equal to ~ 5500 K light color
58
+ * @type {Readonly<Color>}
59
+ */
60
+ const DEFAULT_SUNLIGHT_COLOR = Object.freeze(new Color(1, 0.93, 0.87));
61
+
55
62
  export class EngineHarness {
56
63
  constructor() {
57
64
  /**
@@ -322,12 +329,21 @@ export class EngineHarness {
322
329
  * @param {EntityComponentDataset} [param.ecd]
323
330
  * @param {number} [param.shadowmapResolution]
324
331
  * @param {boolean} [param.castShadow]
332
+ * @param {Color} [param.sun]
333
+ * @param {number} [param.sunIntensity]
334
+ * @param {Color} [param.ambient]
335
+ * @param {number} [param.ambientIntensity]
325
336
  */
326
337
  static async buildLights({
327
338
  engine,
328
339
  ecd = engine.entityManager.dataset,
329
340
  shadowmapResolution = 1024,
330
- castShadow = true
341
+ castShadow = true,
342
+ sun = DEFAULT_SUNLIGHT_COLOR,
343
+ sunIntensity = 0.9,
344
+ sunDirection = new Vector3(0.1, -1, 0.1),
345
+ ambient = Color.white,
346
+ ambientIntensity = 0.1
331
347
  }) {
332
348
  const em = engine.entityManager;
333
349
 
@@ -343,18 +359,13 @@ export class EngineHarness {
343
359
 
344
360
  const key = new Light();
345
361
  key.type.set(Light.Type.DIRECTION);
346
- key.color.setRGB(1, 1, 1);
347
- key.intensity.set(0.8);
362
+ key.color.copy(sun);
363
+ key.intensity.set(sunIntensity);
348
364
  key.castShadow.set(castShadow);
349
365
 
350
366
  const transform = new Transform();
351
367
  transform.position.set(30, 70, 30);
352
- transform.rotation.set(
353
- -0.18780341950959473,
354
- 0.8049745556929917,
355
- -0.4533975611897181,
356
- -0.3334313787830773
357
- );
368
+ transform.rotation.lookRotation(sunDirection);
358
369
 
359
370
  new Entity()
360
371
  .add(key)
@@ -365,8 +376,8 @@ export class EngineHarness {
365
376
 
366
377
  const fill = new Light();
367
378
  fill.type.set(Light.Type.AMBIENT);
368
- fill.color.setRGB(1, 1, 1);
369
- fill.intensity.set(0.1);
379
+ fill.color.copy(ambient);
380
+ fill.intensity.set(ambientIntensity);
370
381
 
371
382
 
372
383
  new Entity()
@@ -1 +1 @@
1
- {"version":3,"file":"ArrayBufferLoader.d.ts","sourceRoot":"","sources":["../../../../../src/engine/asset/loaders/ArrayBufferLoader.js"],"names":[],"mappings":"AAoFA;IACI;;;OAGG;IACH,iCAFW,MAAM,GAAC,KAAK,GAAC,MAAM,EAa7B;IANG;;;;OAIG;IACH,yBAAsC;IAG1C;;;oDAwDC;CACJ;4BA3J2B,kBAAkB;qBAJzB,gCAAgC;sBAC/B,aAAa"}
1
+ {"version":3,"file":"ArrayBufferLoader.d.ts","sourceRoot":"","sources":["../../../../../src/engine/asset/loaders/ArrayBufferLoader.js"],"names":[],"mappings":"AAyFA;IACI;;;OAGG;IACH,iCAFW,MAAM,GAAC,KAAK,GAAC,MAAM,EAa7B;IANG;;;;OAIG;IACH,yBAAsC;IAG1C;;;oDA0DC;CACJ;4BAlK2B,kBAAkB;qBAJzB,gCAAgC;sBAC/B,aAAa"}
@@ -13,20 +13,19 @@ import { AssetLoader } from "./AssetLoader.js";
13
13
  function observeResponseProgress(input, progress) {
14
14
  let response = input
15
15
 
16
-
17
- if (typeof ReadableStream === 'undefined' || response.body.getReader === undefined) {
16
+ // Workaround: Checking if response.body === undefined for Alipay browser
17
+ if (typeof ReadableStream === 'undefined' || response.body === undefined || response.body.getReader === undefined) {
18
18
 
19
19
  return response;
20
20
 
21
21
  }
22
22
 
23
- /**
24
- * @type {ReadableStreamDefaultReader<Uint8Array>}
25
- */
26
- const reader = response.body.getReader();
23
+ // Nginx needs X-File-Size check
24
+ // https://serverfault.com/questions/482875/why-does-nginx-remove-content-length-header-for-chunked-content
25
+ const contentLength = response.headers.get('Content-Length') || response.headers.get('X-File-Size');
27
26
 
28
- const contentLength = response.headers.get('Content-Length');
29
27
  const total = contentLength ? parseInt(contentLength) : 0;
28
+
30
29
  let loaded = 0;
31
30
 
32
31
  // periodically read data into the new stream tracking while download progress
@@ -34,6 +33,11 @@ function observeResponseProgress(input, progress) {
34
33
  type: "bytes",
35
34
  start(controller) {
36
35
 
36
+ /**
37
+ * @type {ReadableStreamDefaultReader<Uint8Array>}
38
+ */
39
+ const reader = response.body.getReader();
40
+
37
41
  pump();
38
42
 
39
43
  function pump() {
@@ -51,6 +55,7 @@ function observeResponseProgress(input, progress) {
51
55
  progress(loaded, total);
52
56
 
53
57
  controller.enqueue(value);
58
+
54
59
  pump();
55
60
 
56
61
  });
@@ -123,16 +128,18 @@ export class ArrayBufferLoader extends AssetLoader {
123
128
 
124
129
  let response = await fetch(request);
125
130
 
126
- if (!(response.status === 200 || response.status === 0)) {
131
+ const response_status = response.status;
132
+
133
+ if (response_status !== 200 && response_status !== 0) {
127
134
 
128
- throw Error(`fetch for "${response.url}" responded with ${response.status}: ${response.statusText}`);
135
+ throw Error(`fetch for "${response.url}" responded with ${response_status}: ${response.statusText}`);
129
136
 
130
137
  }
131
138
 
132
139
  // Some browsers return HTTP Status 0 when using non-http protocol
133
140
  // e.g. 'file://' or 'data://'. Handle as success.
134
141
 
135
- if (response.status === 0) {
142
+ if (response_status === 0) {
136
143
 
137
144
  console.warn('HTTP Status 0 received.');
138
145
 
@@ -11,16 +11,37 @@ export class PNGReader {
11
11
  * @constructor
12
12
  */
13
13
  constructor(bytes: ArrayBuffer);
14
+ /**
15
+ * current pointer
16
+ * @type {number}
17
+ */
14
18
  i: number;
19
+ /**
20
+ * bytes buffer
21
+ * @type {Uint8Array}
22
+ */
15
23
  bytes: Uint8Array;
24
+ /**
25
+ * Output object
26
+ * @type {PNG}
27
+ */
16
28
  png: PNG;
17
29
  dataChunks: any[];
30
+ /**
31
+ *
32
+ * @type {BinaryBuffer}
33
+ */
18
34
  buffer: BinaryBuffer;
19
35
  /**
20
36
  * Whether CRC should be performed or not
21
37
  * @type {boolean}
22
38
  */
23
39
  crc_enabled: boolean;
40
+ /**
41
+ *
42
+ * @type {Uint8Array}
43
+ */
44
+ header: Uint8Array;
24
45
  /**
25
46
  *
26
47
  * @param {number} length
@@ -31,7 +52,6 @@ export class PNGReader {
31
52
  * http://www.w3.org/TR/2003/REC-PNG-20031110/#5PNG-file-signature
32
53
  */
33
54
  decodeHeader(): void;
34
- header: Uint8Array;
35
55
  /**
36
56
  * http://www.w3.org/TR/2003/REC-PNG-20031110/#5Chunk-layout
37
57
  *
@@ -119,7 +139,10 @@ export class PNGReader {
119
139
  * Uncompress IDAT chunks
120
140
  */
121
141
  decodePixels(): void;
122
- interlaceNone(data: any): void;
142
+ /**
143
+ * @param {Uint8Array} data
144
+ */
145
+ interlaceNone(data: Uint8Array): void;
123
146
  /**
124
147
  * De-interlace image according to Adam 7 scheme
125
148
  * @param {Uint8Array} data
@@ -168,15 +191,6 @@ export class PNGReader {
168
191
  unFilterPaeth(scanline: any, scanline_offset: any, pixels: any, bpp: any, of: any, length: any): void;
169
192
  /**
170
193
  * Parse the PNG file
171
- *
172
- * reader.parse(options, callback)
173
- * OR
174
- * reader.parse(callback)
175
- *
176
- * OPTIONS:
177
- * option | type | default
178
- * ----------------------------
179
- * data boolean true should it read the pixel data
180
194
  * @returns {PNG}
181
195
  */
182
196
  parse(): PNG;
@@ -1 +1 @@
1
- {"version":3,"file":"PNGReader.d.ts","sourceRoot":"","sources":["../../../../../../../src/engine/asset/loaders/image/png/PNGReader.js"],"names":[],"mappings":"AAsDA;;;;GAIG;AACH,iCAHW,WAAW,QAqBrB;;IAvBD;;;;OAIG;IACH,mBAHW,WAAW,EAqBrB;IAhBG,UAAU;IAEV,kBAAkC;IAElC,SAAoB;IAEpB,kBAAoB;IAEpB,qBAAgC;IAGhC;;;OAGG;IACH,aAFU,OAAO,CAEO;IAG5B;;;;OAIG;IACH,kBAHW,MAAM,GACL,UAAU,CAQrB;IAED;;OAEG;IACH,qBAmBC;IAFG,mBAAoB;IAIxB;;;;;;;;;OASG;IACH,eAFa,MAAM,CA4ElB;IAGD;;;OAGG;IACH,kBAFW,UAAU,QAOpB;IAED;;;OAGG;IACH,kBAFW,UAAU,QAapB;IAED;;;;OAIG;IACH,kBAFW,UAAU;;;;;MAiCpB;IAGD;;;;OAIG;IACH,kBAFW,UAAU;;;MA6BpB;IAED;;;OAGG;IACH,kBAFW,UAAU,QASpB;IACD;;;;OAIG;IACH,kBAFW,UAAU,QAqBpB;IAED;;;;;;;;;;;OAWG;IACH,6BAWC;IAED;;;OAGG;IACH,6BAEC;IAED;;OAEG;IACH,6BAGC;IAED;;;OAGG;IACH,kBAFW,UAAU,QAIpB;IAED;;OAEG;IACH,mBACC;IAED;;OAEG;IACH,qBAwBC;IAID,+BAuFC;IAED;;;OAGG;IACH,qBAFW,UAAU,SAIpB;IAKD;;;;OAIG;IACH,oGAYC;IAED;;;;;OAKG;IACH,mGAYC;IAED;;;;OAIG;IACH,wGA+BC;IAED;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,sGA8CC;IAED;;;;;;;;;;;;OAYG;IACH,SAFa,GAAG,CAqBf;;oBA1rBmB,UAAU;6BAJD,4CAA4C"}
1
+ {"version":3,"file":"PNGReader.d.ts","sourceRoot":"","sources":["../../../../../../../src/engine/asset/loaders/image/png/PNGReader.js"],"names":[],"mappings":"AAsDA;;;;GAIG;AACH,iCAHW,WAAW,QA0CrB;;IA5CD;;;;OAIG;IACH,mBAHW,WAAW,EA0CrB;IAtCG;;;OAGG;IACH,GAFU,MAAM,CAEN;IAEV;;;OAGG;IACH,OAFU,UAAU,CAEc;IAElC;;;OAGG;IACH,KAFU,GAAG,CAEO;IAEpB,kBAAoB;IAEpB;;;OAGG;IACH,QAFU,YAAY,CAEU;IAGhC;;;OAGG;IACH,aAFU,OAAO,CAEO;IAExB;;;OAGG;IACH,QAFU,UAAU,CAEW;IAGnC;;;;OAIG;IACH,kBAHW,MAAM,GACL,UAAU,CAQrB;IAED;;OAEG;IACH,qBAkBC;IAED;;;;;;;;;OASG;IACH,eAFa,MAAM,CA4ElB;IAGD;;;OAGG;IACH,kBAFW,UAAU,QAOpB;IAED;;;OAGG;IACH,kBAFW,UAAU,QAapB;IAED;;;;OAIG;IACH,kBAFW,UAAU;;;;;MAiCpB;IAGD;;;;OAIG;IACH,kBAFW,UAAU;;;MA6BpB;IAED;;;OAGG;IACH,kBAFW,UAAU,QASpB;IACD;;;;OAIG;IACH,kBAFW,UAAU,QAqBpB;IAED;;;;;;;;;;;OAWG;IACH,6BAWC;IAED;;;OAGG;IACH,6BAEC;IAED;;OAEG;IACH,6BAGC;IAED;;;OAGG;IACH,kBAFW,UAAU,QAIpB;IAED;;OAEG;IACH,mBACC;IAED;;OAEG;IACH,qBAwBC;IAID;;OAEG;IACH,oBAFW,UAAU,QAyFpB;IAED;;;OAGG;IACH,qBAFW,UAAU,SAIpB;IAKD;;;;OAIG;IACH,oGAYC;IAED;;;;;OAKG;IACH,mGAYC;IAED;;;;OAIG;IACH,wGA+BC;IAED;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,sGA8CC;IAED;;;OAGG;IACH,SAFa,GAAG,CAqBf;;oBAxsBmB,UAAU;6BAJD,4CAA4C"}