@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.
- package/build/bundle-worker-image-decoder.js +1 -1
- package/build/meep.cjs +255 -172
- package/build/meep.min.js +1 -1
- package/build/meep.module.js +255 -173
- package/editor/tools/paint/TerrainHeightPaintTool.js +5 -5
- package/package.json +1 -1
- package/src/core/binary/float_to_uint8.d.ts +7 -0
- package/src/core/binary/float_to_uint8.d.ts.map +1 -0
- package/src/core/binary/{float2uint8.js → float_to_uint8.js} +1 -1
- package/src/core/binary/int32_to_binary_string.d.ts +3 -2
- package/src/core/binary/int32_to_binary_string.d.ts.map +1 -1
- package/src/core/binary/int32_to_binary_string.js +18 -14
- package/src/core/binary/split_by_3.spec.d.ts +2 -0
- package/src/core/binary/split_by_3.spec.d.ts.map +1 -0
- package/src/core/binary/split_by_3.spec.js +22 -0
- package/src/core/binary/to_half_float_uint16.d.ts.map +1 -1
- package/src/core/binary/to_half_float_uint16.js +7 -5
- package/src/core/binary/uint8_to_float.d.ts +7 -0
- package/src/core/binary/uint8_to_float.d.ts.map +1 -0
- package/src/core/binary/{uint82float.js → uint8_to_float.js} +1 -1
- package/src/core/binary/uint8_to_float.spec.d.ts +2 -0
- package/src/core/binary/uint8_to_float.spec.d.ts.map +1 -0
- package/src/core/binary/uint8_to_float.spec.js +7 -0
- package/src/core/codegen/codeToBlob.d.ts +8 -0
- package/src/core/codegen/codeToBlob.d.ts.map +1 -0
- package/src/core/codegen/codeToBlob.js +36 -0
- package/src/core/codegen/codeToURL.d.ts +8 -0
- package/src/core/codegen/codeToURL.d.ts.map +1 -0
- package/src/core/codegen/codeToURL.js +22 -0
- package/src/core/collection/array/array_shuffle.d.ts +8 -0
- package/src/core/collection/array/array_shuffle.d.ts.map +1 -0
- package/src/core/collection/array/array_shuffle.js +22 -0
- package/src/core/collection/array/array_shuffle.spec.d.ts +2 -0
- package/src/core/collection/array/array_shuffle.spec.d.ts.map +1 -0
- package/src/core/collection/array/{randomizeArrayElementOrder.spec.js → array_shuffle.spec.js} +4 -4
- package/src/core/collection/array/isArrayEqualStrict.d.ts.map +1 -1
- package/src/core/collection/array/isArrayEqualStrict.js +2 -2
- package/src/core/collection/array/iterator/ArrayIteratorRandom.js +2 -2
- package/src/core/collection/array/randomMultipleFromArray.js +2 -2
- package/src/core/color/Color.d.ts.map +1 -1
- package/src/core/color/Color.js +16 -11
- package/src/core/color/hsv/hsv2rgb.js +4 -4
- package/src/core/color/hsv/rgb2hsv.d.ts +3 -3
- package/src/core/color/hsv/rgb2hsv.d.ts.map +1 -1
- package/src/core/color/hsv/rgb2hsv.js +11 -18
- package/src/core/color/rgb2uint24.js +4 -4
- package/src/core/color/rgb_to_luminance.d.ts +9 -0
- package/src/core/color/rgb_to_luminance.d.ts.map +1 -0
- package/src/core/color/rgb_to_luminance.js +10 -0
- package/src/core/color/sRGB/linear_to_sRGB.d.ts +1 -0
- package/src/core/color/sRGB/linear_to_sRGB.d.ts.map +1 -1
- package/src/core/color/sRGB/linear_to_sRGB.js +4 -4
- package/src/core/geom/3d/aabb/AABB3.d.ts.map +1 -1
- package/src/core/geom/3d/aabb/AABB3.js +4 -1
- package/src/core/geom/3d/aabb/aabb3_intersects_ray.js +3 -3
- package/src/core/geom/3d/shape/UnitSphereShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/UnitSphereShape3D.js +14 -14
- package/src/core/geom/3d/sphere/harmonics/README.md +16 -2
- package/src/core/geom/3d/sphere/harmonics/SH3_COEFFICIENTS.d.ts +6 -0
- package/src/core/geom/3d/sphere/harmonics/SH3_COEFFICIENTS.d.ts.map +1 -0
- package/src/core/geom/3d/sphere/harmonics/SH3_COEFFICIENTS.js +17 -0
- package/src/core/geom/3d/sphere/harmonics/sh3_basis_at.d.ts.map +1 -1
- package/src/core/geom/3d/sphere/harmonics/sh3_basis_at.js +21 -9
- package/src/core/geom/3d/sphere/harmonics/sh3_dering_optimize_positive.d.ts +3 -3
- package/src/core/geom/3d/sphere/harmonics/sh3_dering_optimize_positive.d.ts.map +1 -1
- package/src/core/geom/3d/sphere/harmonics/sh3_dering_optimize_positive.js +35 -206
- package/src/core/geom/3d/sphere/harmonics/sh3_rotate.d.ts +8 -0
- package/src/core/geom/3d/sphere/harmonics/sh3_rotate.d.ts.map +1 -0
- package/src/core/geom/3d/sphere/harmonics/sh3_rotate.js +29 -0
- package/src/core/geom/3d/sphere/harmonics/sh3_sample_by_direction.js +10 -10
- package/src/core/geom/3d/sphere/harmonics/sh_index.d.ts +8 -0
- package/src/core/geom/3d/sphere/harmonics/sh_index.d.ts.map +1 -0
- package/src/core/geom/3d/sphere/harmonics/sh_index.js +9 -0
- package/src/core/geom/3d/sphere/harmonics/sh_rotate_band1.d.ts +8 -0
- package/src/core/geom/3d/sphere/harmonics/sh_rotate_band1.d.ts.map +1 -0
- package/src/core/geom/3d/sphere/harmonics/sh_rotate_band1.js +44 -0
- package/src/core/geom/3d/sphere/harmonics/sh_rotate_band2.d.ts +8 -0
- package/src/core/geom/3d/sphere/harmonics/sh_rotate_band2.d.ts.map +1 -0
- package/src/core/geom/3d/sphere/harmonics/sh_rotate_band2.js +86 -0
- package/src/core/geom/3d/sphere/in_sphere3d_robust.d.ts.map +1 -1
- package/src/core/geom/3d/sphere/in_sphere3d_robust.js +2 -1
- package/src/core/geom/3d/tetrahedra/TetrahedralMesh.d.ts +20 -1
- package/src/core/geom/3d/tetrahedra/TetrahedralMesh.d.ts.map +1 -1
- package/src/core/geom/3d/tetrahedra/TetrahedralMesh.js +53 -7
- package/src/core/geom/3d/tetrahedra/TetrahedralMesh.spec.js +2 -2
- package/src/core/geom/3d/tetrahedra/build_tetrahedral_mesh_buffer_geometry.d.ts +1 -1
- package/src/core/geom/3d/tetrahedra/build_tetrahedral_mesh_buffer_geometry.d.ts.map +1 -1
- package/src/core/geom/3d/tetrahedra/build_tetrahedral_mesh_buffer_geometry.js +12 -7
- package/src/core/geom/3d/tetrahedra/delaunay/tetrahedral_mesh_build_from_grid.d.ts +13 -0
- package/src/core/geom/3d/tetrahedra/delaunay/tetrahedral_mesh_build_from_grid.d.ts.map +1 -0
- package/src/core/geom/3d/tetrahedra/delaunay/tetrahedral_mesh_build_from_grid.js +135 -0
- package/src/core/geom/3d/tetrahedra/prototypeTetrahedraBuilder.js +38 -24
- package/src/core/geom/3d/tetrahedra/{compute_circumsphere.d.ts → tetrahedron_compute_circumsphere.d.ts} +3 -5
- package/src/core/geom/3d/tetrahedra/tetrahedron_compute_circumsphere.d.ts.map +1 -0
- package/src/core/geom/3d/tetrahedra/{compute_circumsphere.js → tetrahedron_compute_circumsphere.js} +2 -4
- package/src/core/geom/3d/tetrahedra/tetrahedron_compute_signed_volume.d.ts.map +1 -1
- package/src/core/geom/3d/tetrahedra/tetrahedron_compute_signed_volume.js +3 -1
- package/src/core/geom/Vector3.d.ts.map +1 -1
- package/src/core/geom/Vector3.js +4 -3
- package/src/core/geom/mat3/m3_multiply_vec3.d.ts +8 -0
- package/src/core/geom/mat3/m3_multiply_vec3.d.ts.map +1 -0
- package/src/core/geom/mat3/m3_multiply_vec3.js +21 -0
- package/src/core/geom/random/randomPointInSphere.d.ts +1 -1
- package/src/core/geom/random/randomPointInSphere.js +2 -2
- package/src/core/geom/random/randomPointOnSphere.d.ts +3 -3
- package/src/core/geom/random/randomPointOnSphere.d.ts.map +1 -1
- package/src/core/geom/random/randomPointOnSphere.js +5 -9
- package/src/core/geom/vec2/v2_cross_product.d.ts +15 -0
- package/src/core/geom/vec2/v2_cross_product.d.ts.map +1 -0
- package/src/core/geom/vec2/v2_cross_product.js +21 -0
- package/src/core/geom/vec3/v3_slerp.d.ts +1 -0
- package/src/core/geom/vec3/v3_slerp.d.ts.map +1 -1
- package/src/core/geom/vec3/v3_slerp.js +1 -0
- package/src/core/graph/MultiNode.d.ts +1 -1
- package/src/core/graph/MultiNode.js +1 -1
- package/src/core/graph/WeightedEdge.d.ts +6 -4
- package/src/core/graph/WeightedEdge.d.ts.map +1 -1
- package/src/core/graph/WeightedEdge.js +3 -0
- package/src/core/graph/coloring/colorizeGraph.js +19 -19
- package/src/core/graph/convert_graph_to_dot_string.d.ts +1 -1
- package/src/core/graph/convert_graph_to_dot_string.d.ts.map +1 -1
- package/src/core/graph/convert_graph_to_dot_string.js +10 -6
- package/src/core/graph/graph_compute_adjacency_matrix.d.ts +9 -0
- package/src/core/graph/graph_compute_adjacency_matrix.d.ts.map +1 -0
- package/src/core/graph/{graph_adjacency_matrix.js → graph_compute_adjacency_matrix.js} +1 -2
- package/src/core/graph/graph_compute_degree_matrix.d.ts +10 -0
- package/src/core/graph/graph_compute_degree_matrix.d.ts.map +1 -0
- package/src/core/graph/graph_compute_degree_matrix.js +23 -0
- package/src/core/graph/graph_compute_distance_matrix.d.ts +13 -0
- package/src/core/graph/graph_compute_distance_matrix.d.ts.map +1 -0
- package/src/core/graph/graph_compute_distance_matrix.js +103 -0
- package/src/core/graph/{graph_laplacian_matrix.d.ts → graph_compute_laplacian_matrix.d.ts} +2 -2
- package/src/core/graph/graph_compute_laplacian_matrix.d.ts.map +1 -0
- package/src/core/graph/{graph_laplacian_matrix.js → graph_compute_laplacian_matrix.js} +6 -6
- package/src/core/graph/graph_k_means_cluster.d.ts.map +1 -1
- package/src/core/graph/graph_k_means_cluster.js +4 -119
- package/src/core/graph/{coarsen_graph.d.ts → mn_graph_coarsen.d.ts} +2 -2
- package/src/core/graph/mn_graph_coarsen.d.ts.map +1 -0
- package/src/core/graph/{coarsen_graph.js → mn_graph_coarsen.js} +1 -1
- package/src/core/graph/mn_graph_coarsen.spec.d.ts +2 -0
- package/src/core/graph/mn_graph_coarsen.spec.d.ts.map +1 -0
- package/src/core/graph/{coarsen_graph.spec.js → mn_graph_coarsen.spec.js} +4 -4
- package/src/core/graph/mn_graph_collapse_weighted_edge.d.ts +1 -0
- package/src/core/graph/mn_graph_collapse_weighted_edge.d.ts.map +1 -1
- package/src/core/graph/mn_graph_collapse_weighted_edge.js +7 -1
- package/src/core/math/physics/brdf/brdf_burley.d.ts.map +1 -1
- package/src/core/math/physics/brdf/brdf_burley.js +9 -1
- package/src/core/math/physics/brdf/{D_GGX.d.ts → diffuse_GGX.d.ts} +2 -2
- package/src/core/math/physics/brdf/diffuse_GGX.d.ts.map +1 -0
- package/src/core/math/physics/brdf/{D_GGX.js → diffuse_GGX.js} +1 -1
- package/src/core/math/physics/brdf/fresnel_Schlick.d.ts +3 -0
- package/src/core/math/physics/brdf/fresnel_Schlick.d.ts.map +1 -0
- package/src/core/math/physics/brdf/fresnel_Schlick.js +3 -0
- package/src/core/math/physics/brdf/fresnel_Schlick_optimized.d.ts +9 -0
- package/src/core/math/physics/brdf/fresnel_Schlick_optimized.d.ts.map +1 -0
- package/src/core/math/physics/brdf/fresnel_Schlick_optimized.js +12 -0
- package/src/core/math/physics/brdf/fresnel_Schlick_original.d.ts +9 -0
- package/src/core/math/physics/brdf/fresnel_Schlick_original.d.ts.map +1 -0
- package/src/core/math/physics/brdf/fresnel_Schlick_original.js +10 -0
- package/src/core/math/physics/bsdf/bsdf_schlick.d.ts.map +1 -1
- package/src/core/math/physics/bsdf/bsdf_schlick.js +3 -11
- package/src/core/math/physics/ior_to_reflectivity.d.ts +7 -0
- package/src/core/math/physics/ior_to_reflectivity.d.ts.map +1 -0
- package/src/core/math/physics/ior_to_reflectivity.js +9 -0
- package/src/core/math/physics/pdf/README.md +1 -0
- package/src/core/math/physics/pdf/pdf_GGX.d.ts +16 -0
- package/src/core/math/physics/pdf/pdf_GGX.d.ts.map +1 -0
- package/src/core/math/physics/pdf/pdf_GGX.js +25 -0
- package/src/core/math/physics/reflectivity_to_ior.d.ts +7 -0
- package/src/core/math/physics/reflectivity_to_ior.d.ts.map +1 -0
- package/src/core/math/physics/reflectivity_to_ior.js +8 -0
- package/src/core/process/task/util/randomCountTask.js +3 -3
- package/src/core/process/worker/WorkerBuilder.d.ts.map +1 -1
- package/src/core/process/worker/WorkerBuilder.js +5 -35
- package/src/engine/EngineHarness.d.ts +10 -1
- package/src/engine/EngineHarness.d.ts.map +1 -1
- package/src/engine/EngineHarness.js +22 -11
- package/src/engine/asset/loaders/ArrayBufferLoader.d.ts.map +1 -1
- package/src/engine/asset/loaders/ArrayBufferLoader.js +17 -10
- package/src/engine/asset/loaders/image/png/PNGReader.d.ts +25 -11
- package/src/engine/asset/loaders/image/png/PNGReader.d.ts.map +1 -1
- package/src/engine/asset/loaders/image/png/PNGReader.js +38 -24
- package/src/engine/asset/loaders/material/TextureAttachmensByMaterialType.d.ts.map +1 -1
- package/src/engine/asset/loaders/material/TextureAttachmensByMaterialType.js +5 -0
- package/src/engine/ecs/terrain/overlay/TerrainOverlay.js +4 -4
- package/src/engine/graphics/GraphicsEngine.js +1 -1
- package/src/engine/graphics/ecs/camera/topdown/TopDownCameraController.d.ts.map +1 -1
- package/src/engine/graphics/ecs/camera/topdown/TopDownCameraController.js +4 -0
- package/src/engine/graphics/ecs/light/LightSystem.d.ts.map +1 -1
- package/src/engine/graphics/ecs/light/LightSystem.js +2 -3
- package/src/engine/graphics/ecs/light/binding/three/ThreeLightBinding.d.ts +6 -0
- package/src/engine/graphics/ecs/light/binding/three/ThreeLightBinding.d.ts.map +1 -1
- package/src/engine/graphics/ecs/light/binding/three/ThreeLightBinding.js +22 -11
- package/src/engine/graphics/ecs/sprite/SpriteSystemPE.d.ts.map +1 -1
- package/src/engine/graphics/ecs/sprite/SpriteSystemPE.js +7 -7
- package/src/engine/graphics/impostors/octahedral/bake/prepare_bake_material.js +3 -3
- package/src/engine/graphics/render/forward_plus/model/DirectionalLight.d.ts.map +1 -1
- package/src/engine/graphics/render/forward_plus/model/DirectionalLight.js +25 -25
- package/src/engine/graphics/sh3/SH3VisualisationMaterial.d.ts.map +1 -1
- package/src/engine/graphics/sh3/SH3VisualisationMaterial.js +9 -6
- package/src/engine/graphics/sh3/fromCubeRenderTarget.d.ts +9 -0
- package/src/engine/graphics/sh3/fromCubeRenderTarget.d.ts.map +1 -0
- package/src/engine/graphics/sh3/fromCubeRenderTarget.js +145 -0
- package/src/engine/graphics/sh3/gi/tetrahedral_mesh_to_texture.d.ts +8 -0
- package/src/engine/graphics/sh3/gi/tetrahedral_mesh_to_texture.d.ts.map +1 -0
- package/src/engine/graphics/sh3/gi/tetrahedral_mesh_to_texture.js +51 -0
- package/src/engine/graphics/sh3/{LightProbeVolume.d.ts → lpv/LightProbeVolume.d.ts} +18 -7
- package/src/engine/graphics/sh3/lpv/LightProbeVolume.d.ts.map +1 -0
- package/src/engine/graphics/sh3/lpv/LightProbeVolume.js +340 -0
- package/src/engine/graphics/sh3/lpv/LightProbeVolumeSerializationAdapter.d.ts +18 -0
- package/src/engine/graphics/sh3/lpv/LightProbeVolumeSerializationAdapter.d.ts.map +1 -0
- package/src/engine/graphics/sh3/lpv/LightProbeVolumeSerializationAdapter.js +44 -0
- package/src/engine/graphics/sh3/lpv/PathTracerProbeRenderer.d.ts +12 -0
- package/src/engine/graphics/sh3/lpv/PathTracerProbeRenderer.d.ts.map +1 -0
- package/src/engine/graphics/sh3/lpv/PathTracerProbeRenderer.js +122 -0
- package/src/engine/graphics/sh3/lpv/ProbeRenderer.d.ts +29 -0
- package/src/engine/graphics/sh3/lpv/ProbeRenderer.d.ts.map +1 -0
- package/src/engine/graphics/sh3/lpv/ProbeRenderer.js +35 -0
- package/src/engine/graphics/sh3/lpv/WebGLCubeProbeRenderer.d.ts +27 -0
- package/src/engine/graphics/sh3/lpv/WebGLCubeProbeRenderer.d.ts.map +1 -0
- package/src/engine/graphics/sh3/lpv/WebGLCubeProbeRenderer.js +158 -0
- package/src/engine/graphics/sh3/lpv/build_probes_for_scene.d.ts +11 -0
- package/src/engine/graphics/sh3/lpv/build_probes_for_scene.d.ts.map +1 -0
- package/src/engine/graphics/sh3/lpv/build_probes_for_scene.js +127 -0
- package/src/engine/graphics/sh3/lpv/probe_volume_to_textures.d.ts +12 -0
- package/src/engine/graphics/sh3/lpv/probe_volume_to_textures.d.ts.map +1 -0
- package/src/engine/graphics/sh3/lpv/probe_volume_to_textures.js +89 -0
- package/src/engine/graphics/sh3/path_tracer/PathTracedScene.d.ts +90 -0
- package/src/engine/graphics/sh3/path_tracer/PathTracedScene.d.ts.map +1 -0
- package/src/engine/graphics/sh3/path_tracer/PathTracedScene.js +352 -0
- package/src/engine/graphics/sh3/path_tracer/PathTracer.d.ts +5 -91
- package/src/engine/graphics/sh3/path_tracer/PathTracer.d.ts.map +1 -1
- package/src/engine/graphics/sh3/path_tracer/PathTracer.js +41 -477
- package/src/engine/graphics/sh3/path_tracer/make_one_vector3.d.ts +1 -0
- package/src/engine/graphics/sh3/path_tracer/make_one_vector3.d.ts.map +1 -1
- package/src/engine/graphics/sh3/path_tracer/make_one_vector3.js +6 -3
- package/src/engine/graphics/sh3/path_tracer/prototypePathTracer.js +38 -62
- package/src/engine/graphics/sh3/path_tracer/random_in_hemisphere.d.ts.map +1 -1
- package/src/engine/graphics/sh3/path_tracer/random_in_hemisphere.js +7 -1
- package/src/engine/graphics/sh3/path_tracer/sample_triangle_attribute.d.ts +2 -2
- package/src/engine/graphics/sh3/path_tracer/sample_triangle_attribute.d.ts.map +1 -1
- package/src/engine/graphics/sh3/path_tracer/sample_triangle_attribute.js +1 -1
- package/src/engine/graphics/sh3/path_tracer/sampling/generate_stratified_samples.d.ts +10 -0
- package/src/engine/graphics/sh3/path_tracer/sampling/generate_stratified_samples.d.ts.map +1 -0
- package/src/engine/graphics/sh3/path_tracer/sampling/generate_stratified_samples.js +20 -0
- package/src/engine/graphics/sh3/path_tracer/sampling/generate_stratified_samples_2d.d.ts +10 -0
- package/src/engine/graphics/sh3/path_tracer/sampling/generate_stratified_samples_2d.d.ts.map +1 -0
- package/src/engine/graphics/sh3/path_tracer/sampling/generate_stratified_samples_2d.js +31 -0
- package/src/engine/graphics/sh3/path_tracer/sampling/make_stratified_sample.d.ts +9 -0
- package/src/engine/graphics/sh3/path_tracer/sampling/make_stratified_sample.d.ts.map +1 -0
- package/src/engine/graphics/sh3/path_tracer/sampling/make_stratified_sample.js +21 -0
- package/src/engine/graphics/sh3/path_tracer/texture/SoftwareTextureCache.d.ts +3 -0
- package/src/engine/graphics/sh3/path_tracer/texture/SoftwareTextureCache.d.ts.map +1 -0
- package/src/engine/graphics/sh3/path_tracer/texture/SoftwareTextureCache.js +3 -0
- package/src/engine/graphics/sh3/path_tracer/texture/apply_texture_clamping_to_coordinate.d.ts.map +1 -0
- package/src/engine/graphics/sh3/path_tracer/{apply_texture_clamping_to_coordinate.js → texture/apply_texture_clamping_to_coordinate.js} +2 -2
- package/src/engine/graphics/sh3/path_tracer/texture/sample_material.d.ts +11 -0
- package/src/engine/graphics/sh3/path_tracer/texture/sample_material.d.ts.map +1 -0
- package/src/engine/graphics/sh3/path_tracer/texture/sample_material.js +86 -0
- package/src/engine/graphics/sh3/path_tracer/texture/sample_texture.d.ts +10 -0
- package/src/engine/graphics/sh3/path_tracer/texture/sample_texture.d.ts.map +1 -0
- package/src/engine/graphics/sh3/path_tracer/texture/sample_texture.js +55 -0
- package/src/engine/graphics/sh3/path_tracer/vec3_uint8_to_float.js +4 -4
- package/src/engine/graphics/sh3/prototypeSH3Probe.js +145 -185
- package/src/engine/graphics/sh3/sky/hosek/sky_hosek_compute_irradiance_by_direction.d.ts +5 -5
- package/src/engine/graphics/sh3/sky/hosek/sky_hosek_compute_irradiance_by_direction.d.ts.map +1 -1
- package/src/engine/graphics/sh3/sky/hosek/sky_hosek_compute_irradiance_by_direction.js +8 -8
- package/src/engine/graphics/sh3/visualise_spherical_harmonic_sphere.d.ts +13 -0
- package/src/engine/graphics/sh3/visualise_spherical_harmonic_sphere.d.ts.map +1 -0
- package/src/engine/graphics/sh3/visualise_spherical_harmonic_sphere.js +54 -0
- package/src/engine/graphics/texture/AttributeDataTexture.d.ts +2 -2
- package/src/engine/graphics/texture/AttributeDataTexture.d.ts.map +1 -1
- package/src/engine/graphics/texture/AttributeDataTexture.js +11 -11
- package/src/engine/graphics/texture/sampler/Sampler2D.d.ts.map +1 -1
- package/src/engine/graphics/texture/sampler/Sampler2D.js +2 -2
- package/src/engine/input/ecs/systems/InputControllerSystem.js +1 -1
- package/src/engine/network/convertPathToURL.d.ts +3 -1
- package/src/engine/network/convertPathToURL.d.ts.map +1 -1
- package/src/engine/network/convertPathToURL.js +68 -51
- package/src/engine/physics/fluid/SliceVisualiser.d.ts.map +1 -1
- package/src/engine/physics/fluid/SliceVisualiser.js +4 -4
- package/src/generation/filtering/numeric/CellFilterCache.d.ts.map +1 -1
- package/src/generation/filtering/numeric/CellFilterCache.js +1 -0
- package/src/view/elements/ColorPickerView.d.ts.map +1 -1
- package/src/view/elements/ColorPickerView.js +7 -7
- package/src/core/binary/float2uint8.d.ts +0 -7
- package/src/core/binary/float2uint8.d.ts.map +0 -1
- package/src/core/binary/uint82float.d.ts +0 -7
- package/src/core/binary/uint82float.d.ts.map +0 -1
- package/src/core/binary/uint82float.spec.d.ts +0 -2
- package/src/core/binary/uint82float.spec.d.ts.map +0 -1
- package/src/core/binary/uint82float.spec.js +0 -7
- package/src/core/collection/array/randomizeArrayElementOrder.d.ts +0 -8
- package/src/core/collection/array/randomizeArrayElementOrder.d.ts.map +0 -1
- package/src/core/collection/array/randomizeArrayElementOrder.js +0 -24
- package/src/core/collection/array/randomizeArrayElementOrder.spec.d.ts +0 -2
- package/src/core/collection/array/randomizeArrayElementOrder.spec.d.ts.map +0 -1
- package/src/core/geom/3d/tetrahedra/compute_circumsphere.d.ts.map +0 -1
- package/src/core/graph/coarsen_graph.d.ts.map +0 -1
- package/src/core/graph/coarsen_graph.spec.d.ts +0 -2
- package/src/core/graph/coarsen_graph.spec.d.ts.map +0 -1
- package/src/core/graph/graph_adjacency_matrix.d.ts +0 -9
- package/src/core/graph/graph_adjacency_matrix.d.ts.map +0 -1
- package/src/core/graph/graph_degree_matrix.d.ts +0 -9
- package/src/core/graph/graph_degree_matrix.d.ts.map +0 -1
- package/src/core/graph/graph_degree_matrix.js +0 -18
- package/src/core/graph/graph_laplacian_matrix.d.ts.map +0 -1
- package/src/core/math/physics/brdf/D_GGX.d.ts.map +0 -1
- package/src/engine/graphics/sh3/LightProbeVolume.d.ts.map +0 -1
- package/src/engine/graphics/sh3/LightProbeVolume.js +0 -609
- package/src/engine/graphics/sh3/path_tracer/apply_texture_clamping_to_coordinate.d.ts.map +0 -1
- package/src/engine/graphics/sh3/visualise_probe.d.ts +0 -12
- package/src/engine/graphics/sh3/visualise_probe.d.ts.map +0 -1
- package/src/engine/graphics/sh3/visualise_probe.js +0 -40
- /package/src/engine/graphics/sh3/path_tracer/{apply_texture_clamping_to_coordinate.d.ts → texture/apply_texture_clamping_to_coordinate.d.ts} +0 -0
|
@@ -3,32 +3,38 @@ import {
|
|
|
3
3
|
DataTexture,
|
|
4
4
|
LinearFilter,
|
|
5
5
|
MeshBasicMaterial,
|
|
6
|
+
MeshStandardMaterial,
|
|
6
7
|
NearestFilter,
|
|
7
8
|
PlaneBufferGeometry,
|
|
9
|
+
RepeatWrapping,
|
|
8
10
|
RGBAFormat,
|
|
11
|
+
TextureLoader,
|
|
9
12
|
UnsignedByteType
|
|
10
13
|
} from "three";
|
|
11
14
|
import '../../../../../../../css/game.scss';
|
|
12
15
|
import { BinaryBuffer } from "../../../core/binary/BinaryBuffer.js";
|
|
13
16
|
import { array_copy } from "../../../core/collection/array/array_copy.js";
|
|
14
17
|
import { is_typed_array_equals } from "../../../core/collection/array/typed/is_typed_array_equals.js";
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
-
import
|
|
18
|
+
import { Color } from "../../../core/color/Color.js";
|
|
19
|
+
import { kelvin_to_rgb } from "../../../core/color/kelvin/kelvin_to_rgb.js";
|
|
20
|
+
import Quaternion from "../../../core/geom/Quaternion.js";
|
|
18
21
|
import Vector3 from "../../../core/geom/Vector3.js";
|
|
22
|
+
import { max2 } from "../../../core/math/max2.js";
|
|
19
23
|
import { randomFloatBetween } from "../../../core/math/random/randomFloatBetween.js";
|
|
20
24
|
import { seededRandom } from "../../../core/math/random/seededRandom.js";
|
|
25
|
+
import { number_pretty_print } from "../../../core/primitives/numbers/number_pretty_print.js";
|
|
21
26
|
import { delay } from "../../../core/process/delay.js";
|
|
27
|
+
import ButtonView from "../../../view/elements/button/ButtonView.js";
|
|
22
28
|
import { GLTFAssetLoader } from "../../asset/loaders/GLTFAssetLoader.js";
|
|
23
29
|
import Entity from "../../ecs/Entity.js";
|
|
24
30
|
import GUIElement from "../../ecs/gui/GUIElement.js";
|
|
25
31
|
import GUIElementSystem from "../../ecs/gui/GUIElementSystem.js";
|
|
26
|
-
import ViewportPosition from "../../ecs/gui/position/ViewportPosition.js";
|
|
27
32
|
import ViewportPositionSystem from "../../ecs/gui/position/ViewportPositionSystem.js";
|
|
28
33
|
import { TransformAttachmentSystem } from "../../ecs/transform-attachment/TransformAttachmentSystem.js";
|
|
29
34
|
import { Transform } from "../../ecs/transform/Transform.js";
|
|
30
35
|
import { EngineHarness } from "../../EngineHarness.js";
|
|
31
|
-
import {
|
|
36
|
+
import { Camera } from "../ecs/camera/Camera.js";
|
|
37
|
+
import TopDownCameraController from "../ecs/camera/topdown/TopDownCameraController.js";
|
|
32
38
|
import { Light } from "../ecs/light/Light.js";
|
|
33
39
|
import LightSystem from "../ecs/light/LightSystem.js";
|
|
34
40
|
import { LightType } from "../ecs/light/LightType.js";
|
|
@@ -39,7 +45,10 @@ import { ShadedGeometryFlags } from "../ecs/mesh-v2/ShadedGeometryFlags.js";
|
|
|
39
45
|
import { ShadedGeometrySystem } from "../ecs/mesh-v2/ShadedGeometrySystem.js";
|
|
40
46
|
import { three_object_to_entity_composition } from "../ecs/mesh-v2/three_object_to_entity_composition.js";
|
|
41
47
|
import { GizmoRenderingPlugin } from "../render/gizmo/GizmoRenderingPlugin.js";
|
|
42
|
-
import {
|
|
48
|
+
import { build_probes_for_scene } from "./lpv/build_probes_for_scene.js";
|
|
49
|
+
import { LightProbeVolume } from "./lpv/LightProbeVolume.js";
|
|
50
|
+
import { LightProbeVolumeSerializationAdapter } from "./lpv/LightProbeVolumeSerializationAdapter.js";
|
|
51
|
+
import { probe_volume_to_textures } from "./lpv/probe_volume_to_textures.js";
|
|
43
52
|
|
|
44
53
|
/**
|
|
45
54
|
*
|
|
@@ -146,12 +155,14 @@ function make_cornel_box(ecd) {
|
|
|
146
155
|
direction: Vector3.forward,
|
|
147
156
|
material: new MeshBasicMaterial({ color: 0xFF0000 })
|
|
148
157
|
}).build(ecd);
|
|
158
|
+
|
|
149
159
|
make_plane({
|
|
150
160
|
scale: 20,
|
|
151
|
-
offset: new Vector3(
|
|
161
|
+
offset: new Vector3(20, 10, 10),
|
|
152
162
|
direction: Vector3.left,
|
|
153
163
|
material: new MeshBasicMaterial({ color: 0x00FF00 })
|
|
154
164
|
}).build(ecd);
|
|
165
|
+
|
|
155
166
|
make_plane({
|
|
156
167
|
scale: 20,
|
|
157
168
|
offset: new Vector3(0, 10, 10),
|
|
@@ -185,113 +196,84 @@ function make_test_texture(t = 1) {
|
|
|
185
196
|
/**
|
|
186
197
|
*
|
|
187
198
|
* @param {Engine} engine
|
|
188
|
-
* @param {
|
|
189
|
-
* @
|
|
199
|
+
* @param {string} path
|
|
200
|
+
* @return {Promise<LightProbeVolume>}
|
|
190
201
|
*/
|
|
191
|
-
async function
|
|
202
|
+
async function getVolume({ engine, path }) {
|
|
192
203
|
|
|
193
|
-
const
|
|
204
|
+
const key = `lpv:${path}`;
|
|
194
205
|
|
|
195
|
-
|
|
206
|
+
const adapter = new LightProbeVolumeSerializationAdapter();
|
|
196
207
|
|
|
197
|
-
|
|
208
|
+
if (await engine.storage.promiseContains(key)) {
|
|
209
|
+
const volume = new LightProbeVolume();
|
|
198
210
|
|
|
211
|
+
const data = await engine.storage.promiseLoadBinary(key);
|
|
199
212
|
|
|
200
|
-
|
|
201
|
-
const probe_grid_spacing_dense = Math.min(bounds.getExtentsX(), bounds.getExtentsY(), bounds.getExtentsZ()) / desired_density;
|
|
202
|
-
const probe_grid_spacing_sparse = Math.max(bounds.getExtentsX(), bounds.getExtentsY(), bounds.getExtentsZ()) / desired_density;
|
|
213
|
+
console.log(`LPV data size ${number_pretty_print(data.byteLength)} bytes`);
|
|
203
214
|
|
|
204
|
-
|
|
205
|
-
//
|
|
206
|
-
// const probe_grid_spacing =desired_density/ (mesh_asset.boundingBox.getExtentsX()* mesh_asset.boundingBox.getExtentsY()* mesh_asset.boundingBox.getExtentsZ());
|
|
215
|
+
const buffer = BinaryBuffer.fromArrayBuffer(data);
|
|
207
216
|
|
|
208
|
-
|
|
209
|
-
model_bounds.copy(bounds);
|
|
210
|
-
// model_bounds._translate(composition.transform.position.x, composition.transform.position.y, composition.transform.position.z);
|
|
211
|
-
model_bounds.grow(probe_grid_spacing * 1.1);
|
|
217
|
+
adapter.deserialize(buffer, volume);
|
|
212
218
|
|
|
219
|
+
return volume;
|
|
220
|
+
}
|
|
213
221
|
|
|
214
|
-
|
|
222
|
+
const mesh_asset = await engine.assetManager.promise(path, 'model/gltf+json');
|
|
223
|
+
const mesh_bounds = mesh_asset.boundingBox;
|
|
215
224
|
|
|
216
|
-
|
|
217
|
-
// lpv.add_point(
|
|
218
|
-
// randomFloatBetween(random, light_volume_bounds.x0, light_volume_bounds.x1),
|
|
219
|
-
// randomFloatBetween(random, light_volume_bounds.y0, light_volume_bounds.y1),
|
|
220
|
-
// randomFloatBetween(random, light_volume_bounds.z0, light_volume_bounds.z1),
|
|
221
|
-
// );
|
|
222
|
-
// }
|
|
225
|
+
const ecd = engine.entityManager.dataset;
|
|
223
226
|
|
|
224
|
-
|
|
225
|
-
|
|
227
|
+
const volume = await build_probes_for_scene({
|
|
228
|
+
engine,
|
|
229
|
+
ecd,
|
|
230
|
+
bounds: mesh_bounds,
|
|
231
|
+
density: 10000
|
|
226
232
|
});
|
|
227
233
|
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
await delay(2000);
|
|
234
|
+
const buffer = new BinaryBuffer();
|
|
231
235
|
|
|
232
|
-
|
|
233
|
-
// console.profile('lpv build');
|
|
234
|
-
//
|
|
235
|
-
const task = lpv.build(engine);
|
|
236
|
-
// console.profileEnd('lpv build');
|
|
236
|
+
adapter.serialize(buffer, volume);
|
|
237
237
|
|
|
238
|
-
|
|
239
|
-
task,
|
|
240
|
-
localization: engine.localization,
|
|
241
|
-
size: new Vector2(512, 64)
|
|
242
|
-
});
|
|
238
|
+
buffer.trim();
|
|
243
239
|
|
|
244
|
-
|
|
245
|
-
progress_entity
|
|
246
|
-
.add(GUIElement.fromView(progress))
|
|
247
|
-
.add(ViewportPosition.fromJSON({
|
|
248
|
-
position: new Vector2(0, 1),
|
|
249
|
-
anchor: new Vector2(0, 1),
|
|
250
|
-
offset: new Vector2(16, -16)
|
|
251
|
-
}))
|
|
252
|
-
.build(ecd);
|
|
240
|
+
engine.storage.promiseStoreBinary(key, buffer.data)
|
|
253
241
|
|
|
254
|
-
|
|
242
|
+
return volume;
|
|
243
|
+
}
|
|
255
244
|
|
|
256
|
-
|
|
245
|
+
function createFloor({ level, ecd }) {
|
|
257
246
|
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
// lpv.__probe_data[i] = random();
|
|
261
|
-
// }
|
|
247
|
+
const texture_frequency = 10;
|
|
248
|
+
const size = 1000;
|
|
262
249
|
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
// for (let j = 0; j < 9; j++) {
|
|
266
|
-
// lpv.__probe_data[(i * 9 + j) * 3] = max2(0, (lpv.__positions[i * 3] + 10) / 20);
|
|
267
|
-
// lpv.__probe_data[(i * 9 + j) * 3 + 1] = max2(0, (lpv.__positions[i * 3 + 1] - 0.5) / 10.5);
|
|
268
|
-
// lpv.__probe_data[(i * 9 + j) * 3 + 2] = max2(0, (lpv.__positions[i * 3 + 2] + 10) / 20);
|
|
269
|
-
// }
|
|
270
|
-
// }
|
|
271
|
-
|
|
272
|
-
// lpv.white_probe(0, [
|
|
273
|
-
// 0.7953949, 0.4405923, 0.5459412,
|
|
274
|
-
// 0.3981450, 0.3526911, 0.6097158,
|
|
275
|
-
// -0.3424573, -0.1838151, -0.2715583,
|
|
276
|
-
//
|
|
277
|
-
// -0.2944621, -0.0560606, 0.0095193,
|
|
278
|
-
// -0.1123051, -0.0513088, -0.1232869,
|
|
279
|
-
// -0.2645007, -0.2257996, -0.4785847,
|
|
280
|
-
//
|
|
281
|
-
// -0.1569444, -0.0954703, -0.1485053,
|
|
282
|
-
// 0.5646247, 0.2161586, 0.1402643,
|
|
283
|
-
// 0.2137442, -0.0547578, -0.3061700], 0);
|
|
250
|
+
const map = new TextureLoader().load('data/textures/utility/checkers_dark_grey_256x256.png', t => {
|
|
251
|
+
map.needsUpdate = true;
|
|
284
252
|
|
|
253
|
+
map.wrapS = RepeatWrapping;
|
|
254
|
+
map.wrapT = RepeatWrapping;
|
|
285
255
|
|
|
286
|
-
|
|
256
|
+
map.repeat.set(size / texture_frequency, size / texture_frequency);
|
|
287
257
|
|
|
288
|
-
|
|
258
|
+
map.matrixAutoUpdate = true;
|
|
259
|
+
});
|
|
289
260
|
|
|
290
|
-
lpv.visualize_probes({ ecd: ecd, size: probe_grid_spacing * 0.08 });
|
|
291
261
|
|
|
292
|
-
|
|
262
|
+
new Entity()
|
|
263
|
+
.add(Transform.fromJSON({
|
|
264
|
+
position: {
|
|
265
|
+
x: 0,
|
|
266
|
+
y: level,
|
|
267
|
+
z: 0
|
|
268
|
+
},
|
|
269
|
+
rotation: Quaternion.fromEulerAngles(-Math.PI * 0.5, 0, 0),
|
|
270
|
+
scale: size
|
|
271
|
+
}))
|
|
272
|
+
.add(ShadedGeometry.from(new PlaneBufferGeometry(1, 1), new MeshStandardMaterial({
|
|
273
|
+
map: map
|
|
274
|
+
})))
|
|
275
|
+
.build(ecd);
|
|
293
276
|
|
|
294
|
-
console.log(lpv);
|
|
295
277
|
}
|
|
296
278
|
|
|
297
279
|
/**
|
|
@@ -304,8 +286,8 @@ async function main(engine) {
|
|
|
304
286
|
engine,
|
|
305
287
|
enableWater: false,
|
|
306
288
|
enableTerrain: false,
|
|
307
|
-
|
|
308
|
-
enableLights: true,
|
|
289
|
+
enableLights: false,
|
|
290
|
+
// enableLights: true,
|
|
309
291
|
cameraFarDistance: 200,
|
|
310
292
|
focus: { x: 0, y: 0, z: 0 },
|
|
311
293
|
pitch: 1,
|
|
@@ -314,6 +296,19 @@ async function main(engine) {
|
|
|
314
296
|
// shadowmapResolution: 4096
|
|
315
297
|
});
|
|
316
298
|
|
|
299
|
+
const sun_color = new Color();
|
|
300
|
+
|
|
301
|
+
kelvin_to_rgb(sun_color, 0, 6000);
|
|
302
|
+
|
|
303
|
+
await EngineHarness.buildLights({
|
|
304
|
+
engine,
|
|
305
|
+
shadowmapResolution: 4096,
|
|
306
|
+
ambientIntensity: 0.01,
|
|
307
|
+
sun: sun_color,
|
|
308
|
+
sunIntensity: 1,
|
|
309
|
+
sunDirection: new Vector3(0.5, -1, 0.3)
|
|
310
|
+
})
|
|
311
|
+
|
|
317
312
|
engine.graphics.getRenderer().setClearColor('#1e3441', 1);
|
|
318
313
|
|
|
319
314
|
// load_and_set_cubemap_v0(engine.graphics, 'data/textures/cubemaps/hip_miramar/32/', '.png');
|
|
@@ -323,14 +318,29 @@ async function main(engine) {
|
|
|
323
318
|
|
|
324
319
|
// const path = 'data/models/LowPolyTownshipSet/Small_house/Small_house.gltf';
|
|
325
320
|
// const path = 'data/models/sibenik/2/model.gltf';
|
|
326
|
-
const path = 'data/models/
|
|
327
|
-
// const path = 'data/models/
|
|
321
|
+
const path = 'data/models/sibenik/3-window-less/model.gltf';
|
|
322
|
+
// const path = 'data/models/vokselia_spawn/model.gltf';
|
|
328
323
|
// const path = 'data/models/LowPolyTownshipSet/Town_Hall/model.gltf';
|
|
324
|
+
// const path = 'data/models/pica_pica/pica_pica.gltf';
|
|
325
|
+
// const path = 'data/models/samples/low_poly_classroom/no-glass/model.gltf';
|
|
326
|
+
// const path = 'data/models/samples/just_a_girl/scene.gltf';
|
|
327
|
+
// const path = 'data/models/samples/slum_house/scene.gltf';
|
|
328
|
+
// const path = 'data/models/samples/jack_trigger/scene.gltf';
|
|
329
|
+
// const path = 'data/models/samples/cornell_box/scene.gltf';
|
|
330
|
+
// const path = 'data/models/samples/cyberpunk_bike/scene.gltf';
|
|
331
|
+
// const path = 'data/models/samples/sd_macross_city_standoff_diorama/scene.gltf';
|
|
329
332
|
// const path = 'data/models/Slaughter Mech/Slaugter Mech.gltf';
|
|
333
|
+
// const path = 'data/models/sponza-pbr/gltf/sponza.glb';
|
|
334
|
+
// const path = 'data/models/samples/gi_box_01/model.glb';
|
|
330
335
|
|
|
331
336
|
const mesh_asset = await engine.assetManager.promise(path, 'model/gltf+json');
|
|
332
337
|
const gltf = mesh_asset.gltf;
|
|
333
338
|
|
|
339
|
+
console.log(gltf);
|
|
340
|
+
|
|
341
|
+
// add floor
|
|
342
|
+
|
|
343
|
+
// make_cornel_box(ecd);
|
|
334
344
|
|
|
335
345
|
const mesh_entity = new Entity();
|
|
336
346
|
mesh_entity
|
|
@@ -338,6 +348,10 @@ async function main(engine) {
|
|
|
338
348
|
.add(SGMesh.fromURL(path))
|
|
339
349
|
;
|
|
340
350
|
|
|
351
|
+
createFloor({
|
|
352
|
+
level: mesh_asset.boundingBox.y0,
|
|
353
|
+
ecd
|
|
354
|
+
});
|
|
341
355
|
|
|
342
356
|
const composition = three_object_to_entity_composition(gltf.scene);
|
|
343
357
|
|
|
@@ -349,103 +363,27 @@ async function main(engine) {
|
|
|
349
363
|
const sg = n.entity.getComponent(ShadedGeometry);
|
|
350
364
|
|
|
351
365
|
if (sg !== null) {
|
|
352
|
-
sg.writeFlag(ShadedGeometryFlags.CastShadow,
|
|
353
|
-
sg.writeFlag(ShadedGeometryFlags.ReceiveShadow,
|
|
366
|
+
sg.writeFlag(ShadedGeometryFlags.CastShadow, true);
|
|
367
|
+
sg.writeFlag(ShadedGeometryFlags.ReceiveShadow, true);
|
|
354
368
|
}
|
|
355
369
|
});
|
|
356
370
|
|
|
357
|
-
|
|
358
|
-
// model_bounds.setNegativelyInfiniteBounds();
|
|
359
|
-
// composition.traverse((n) => {
|
|
360
|
-
//
|
|
361
|
-
// /**
|
|
362
|
-
// * @type {ShadedGeometry}
|
|
363
|
-
// */
|
|
364
|
-
// const sg = n.entity.getComponent(ShadedGeometry);
|
|
365
|
-
//
|
|
366
|
-
// if (sg !== null) {
|
|
367
|
-
// const aabb3 = new AABB3();
|
|
368
|
-
// sg.getBoundingBox(aabb3);
|
|
369
|
-
//
|
|
370
|
-
// model_bounds.expandToFit(aabb3);
|
|
371
|
-
// }
|
|
372
|
-
// })
|
|
373
|
-
|
|
374
371
|
composition.transform.scale.setScalar(1);
|
|
375
|
-
//
|
|
372
|
+
//
|
|
373
|
+
// composition.transform.rotation.fromEulerAngles(0, Math.PI, 0);
|
|
376
374
|
|
|
377
375
|
composition.build(ecd);
|
|
378
376
|
|
|
379
|
-
const model_footprint = Math.hypot(mesh_asset.boundingBox.getExtentsX(), mesh_asset.boundingBox.getExtentsY(), mesh_asset.boundingBox.getExtentsZ());
|
|
380
377
|
|
|
378
|
+
const mesh_bounds = mesh_asset.boundingBox;
|
|
379
|
+
// const mesh_bounds = new AABB3(0, 0, 0, 20, 20, 20);
|
|
381
380
|
|
|
382
|
-
|
|
383
|
-
// engine,
|
|
384
|
-
// scale: 2 * model_footprint,
|
|
385
|
-
// offset: new Vector3(0, 0, 0),
|
|
386
|
-
// direction: Vector3.up,
|
|
387
|
-
// up: Vector3.forward,
|
|
388
|
-
// material: new MeshStandardMaterial({
|
|
389
|
-
// color: 0x111111,
|
|
390
|
-
// map: make_test_texture(),
|
|
391
|
-
// }),
|
|
392
|
-
// shadow: true,
|
|
393
|
-
// }).build(ecd);
|
|
381
|
+
const model_footprint = Math.hypot(mesh_bounds.getExtentsX(), mesh_bounds.getExtentsY(), mesh_bounds.getExtentsZ());
|
|
394
382
|
|
|
395
|
-
//
|
|
396
|
-
// make_plane({
|
|
397
|
-
// scale: 3 * model_footprint,
|
|
398
|
-
// offset: new Vector3(0, mesh_asset.boundingBox.y1 + 2, 0),
|
|
399
|
-
// direction: Vector3.down,
|
|
400
|
-
// up: Vector3.forward,
|
|
401
|
-
// shadow: false,
|
|
402
|
-
// material: new MeshStandardMaterial({ color: '#c6f5ff' })
|
|
403
|
-
// }).build(ecd);
|
|
404
|
-
|
|
405
|
-
const points = [
|
|
406
|
-
0, 0, 0,
|
|
407
|
-
10, 0, 0,
|
|
408
|
-
10, 0, 10,
|
|
409
|
-
0, 0, 10,
|
|
410
|
-
|
|
411
|
-
0, 10, 0,
|
|
412
|
-
10, 10, 0,
|
|
413
|
-
10, 10, 10,
|
|
414
|
-
0, 10, 10,
|
|
415
|
-
];
|
|
416
383
|
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
// position: {
|
|
421
|
-
// x: mesh_asset.boundingBox.x0,
|
|
422
|
-
// y: mesh_asset.boundingBox.getCenterY(),
|
|
423
|
-
// z: mesh_asset.boundingBox.getCenterZ()
|
|
424
|
-
// }
|
|
425
|
-
// }))
|
|
426
|
-
// .add(Light.fromJSON({
|
|
427
|
-
// distance: model_footprint * 2,
|
|
428
|
-
// type: LightType.POINT,
|
|
429
|
-
// intensity: 10,
|
|
430
|
-
// color: 0xFF0000
|
|
431
|
-
// }))
|
|
432
|
-
// .build(ecd);
|
|
433
|
-
//
|
|
434
|
-
// new Entity()
|
|
435
|
-
// .add(Transform.fromJSON({
|
|
436
|
-
// position: {
|
|
437
|
-
// x: mesh_asset.boundingBox.x1,
|
|
438
|
-
// y: mesh_asset.boundingBox.getCenterY(),
|
|
439
|
-
// z: mesh_asset.boundingBox.getCenterZ()
|
|
440
|
-
// }
|
|
441
|
-
// }))
|
|
442
|
-
// .add(Light.fromJSON({
|
|
443
|
-
// distance: model_footprint * 2,
|
|
444
|
-
// type: LightType.POINT,
|
|
445
|
-
// intensity: 10,
|
|
446
|
-
// color: '#00f7ff'
|
|
447
|
-
// }))
|
|
448
|
-
// .build(ecd);
|
|
384
|
+
const camera = ecd.getAnyComponent(Camera);
|
|
385
|
+
camera.component.clip_far = max2(100, model_footprint);
|
|
386
|
+
ecd.getComponent(camera.entity, TopDownCameraController).distanceMax = model_footprint * 1.1;
|
|
449
387
|
|
|
450
388
|
const random = seededRandom();
|
|
451
389
|
|
|
@@ -454,9 +392,9 @@ async function main(engine) {
|
|
|
454
392
|
new Entity()
|
|
455
393
|
.add(Transform.fromJSON({
|
|
456
394
|
position: {
|
|
457
|
-
x: randomFloatBetween(random,
|
|
458
|
-
y: randomFloatBetween(random,
|
|
459
|
-
z: randomFloatBetween(random,
|
|
395
|
+
x: randomFloatBetween(random, mesh_bounds.x0, mesh_bounds.x1),
|
|
396
|
+
y: randomFloatBetween(random, mesh_bounds.y0, mesh_bounds.y1),
|
|
397
|
+
z: randomFloatBetween(random, mesh_bounds.z0, mesh_bounds.z1),
|
|
460
398
|
}
|
|
461
399
|
}))
|
|
462
400
|
.add(Light.fromJSON({
|
|
@@ -468,12 +406,34 @@ async function main(engine) {
|
|
|
468
406
|
.build(ecd);
|
|
469
407
|
}
|
|
470
408
|
|
|
471
|
-
|
|
409
|
+
new Entity()
|
|
410
|
+
.add(GUIElement.fromView(new ButtonView({
|
|
411
|
+
name: "Toggle Model",
|
|
412
|
+
action() {
|
|
413
|
+
composition.isBuilt ? composition.destroy() : composition.build(ecd)
|
|
414
|
+
}
|
|
415
|
+
})))
|
|
416
|
+
.build(ecd);
|
|
472
417
|
|
|
473
|
-
|
|
474
|
-
|
|
418
|
+
await delay(200);
|
|
419
|
+
|
|
420
|
+
console.time('getVolume');
|
|
421
|
+
// console.profile('getVolume');
|
|
422
|
+
const volume = await getVolume({ engine, path });
|
|
423
|
+
// console.profileEnd('getVolume');
|
|
424
|
+
console.timeEnd('getVolume');
|
|
425
|
+
|
|
426
|
+
console.log('LPV:', volume);
|
|
427
|
+
|
|
428
|
+
|
|
429
|
+
volume.visualize_probes({ ecd, size: model_footprint * 0.002 });
|
|
430
|
+
// volume.visualize_mesh({ ecd , opacity: 0.2});
|
|
431
|
+
|
|
432
|
+
console.time('prepareTextures');
|
|
433
|
+
const textures = probe_volume_to_textures(volume);
|
|
434
|
+
console.timeEnd('prepareTextures');
|
|
475
435
|
|
|
476
|
-
|
|
436
|
+
console.log(textures);
|
|
477
437
|
|
|
478
438
|
// mesh_entity.addEventListener(SGMeshEvents.AssetLoaded, build);
|
|
479
439
|
//
|
|
@@ -485,7 +445,7 @@ new EngineHarness().initialize({
|
|
|
485
445
|
config.addSystem(new ShadedGeometrySystem(engine));
|
|
486
446
|
config.addSystem(new TransformAttachmentSystem());
|
|
487
447
|
config.addSystem(new LightSystem(engine, {
|
|
488
|
-
shadowResolution:
|
|
448
|
+
shadowResolution: 8192
|
|
489
449
|
}));
|
|
490
450
|
config.addSystem(new SGMeshSystem(engine));
|
|
491
451
|
config.addSystem(new GUIElementSystem(engine.gui.view, engine));
|
|
@@ -11,14 +11,14 @@
|
|
|
11
11
|
export function sky_hosek_precompute(mCoeffsXYZ: number[], mRadXYZ: number[], sun_direction: vec3, turbidity: number, rgbAlbedo: vec3, overcast: number): void;
|
|
12
12
|
/**
|
|
13
13
|
*
|
|
14
|
-
* @param {number[]} out vec3 in RGB color space
|
|
15
|
-
* @param {number[]} mCoeffsXYZ float[3][9]
|
|
16
|
-
* @param {number[]} mRadXYZ vec3
|
|
17
|
-
* @param {number[]} mToSun vec3
|
|
14
|
+
* @param {number[]|Float32Array} out vec3 in RGB color space
|
|
15
|
+
* @param {number[]|Float32Array} mCoeffsXYZ float[3][9]
|
|
16
|
+
* @param {number[]|Float32Array} mRadXYZ vec3
|
|
17
|
+
* @param {number[]|Float32Array} mToSun vec3
|
|
18
18
|
* @param {number} direction_x
|
|
19
19
|
* @param {number} direction_y
|
|
20
20
|
* @param {number} direction_z
|
|
21
21
|
*/
|
|
22
|
-
export function sky_hosek_compute_irradiance_by_direction(out: number[], mCoeffsXYZ: number[], mRadXYZ: number[], mToSun: number[], direction_x: number, direction_y: number, direction_z: number): void;
|
|
22
|
+
export function sky_hosek_compute_irradiance_by_direction(out: number[] | Float32Array, mCoeffsXYZ: number[] | Float32Array, mRadXYZ: number[] | Float32Array, mToSun: number[] | Float32Array, direction_x: number, direction_y: number, direction_z: number): void;
|
|
23
23
|
import { vec3 } from "gl-matrix";
|
|
24
24
|
//# sourceMappingURL=sky_hosek_compute_irradiance_by_direction.d.ts.map
|
package/src/engine/graphics/sh3/sky/hosek/sky_hosek_compute_irradiance_by_direction.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sky_hosek_compute_irradiance_by_direction.d.ts","sourceRoot":"","sources":["../../../../../../../src/engine/graphics/sh3/sky/hosek/sky_hosek_compute_irradiance_by_direction.js"],"names":[],"mappings":";AA+NA;;;;;;;;GAQG;AACH,iDAPW,MAAM,EAAE,WACR,MAAM,EAAE,iBACR,IAAI,aACJ,MAAM,aACN,IAAI,YACJ,MAAM,QA4HhB;AAGD;;;;;;;;;GASG;AACH,+DARW,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"sky_hosek_compute_irradiance_by_direction.d.ts","sourceRoot":"","sources":["../../../../../../../src/engine/graphics/sh3/sky/hosek/sky_hosek_compute_irradiance_by_direction.js"],"names":[],"mappings":";AA+NA;;;;;;;;GAQG;AACH,iDAPW,MAAM,EAAE,WACR,MAAM,EAAE,iBACR,IAAI,aACJ,MAAM,aACN,IAAI,YACJ,MAAM,QA4HhB;AAGD;;;;;;;;;GASG;AACH,+DARW,MAAM,EAAE,GAAC,YAAY,cACrB,MAAM,EAAE,GAAC,YAAY,WACrB,MAAM,EAAE,GAAC,YAAY,UACrB,MAAM,EAAE,GAAC,YAAY,eACrB,MAAM,eACN,MAAM,eACN,MAAM,QA6BhB;qBAxYoB,WAAW"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
// --- Mathematical constants -------------------------------------------------
|
|
2
2
|
|
|
3
|
-
import { clamp } from "../../../../../core/math/clamp.js";
|
|
4
3
|
import { vec3 } from "gl-matrix";
|
|
4
|
+
import { rgb_to_xyz } from "../../../../../core/color/xyz/rgb_to_xyz.js";
|
|
5
|
+
import { xyz_to_rgb } from "../../../../../core/color/xyz/xyz_to_rgb.js";
|
|
6
|
+
import { v3_dot } from "../../../../../core/geom/vec3/v3_dot.js";
|
|
7
|
+
import { clamp } from "../../../../../core/math/clamp.js";
|
|
5
8
|
import { clamp01 } from "../../../../../core/math/clamp01.js";
|
|
6
9
|
import { lerp } from "../../../../../core/math/lerp.js";
|
|
7
|
-
import { v3_dot } from "../../../../../core/geom/vec3/v3_dot.js";
|
|
8
10
|
import { kHosekCoeffsX, kHosekCoeffsY, kHosekCoeffsZ, kHosekRadX, kHosekRadY, kHosekRadZ } from "./data.js";
|
|
9
|
-
import { xyz_to_rgb } from "../../../../../core/color/xyz/xyz_to_rgb.js";
|
|
10
|
-
import { rgb_to_xyz } from "../../../../../core/color/xyz/rgb_to_xyz.js";
|
|
11
11
|
|
|
12
12
|
const vl_pi = (3.14159265358979323846);
|
|
13
13
|
const vl_halfPi = (vl_pi / 2.0);
|
|
@@ -357,10 +357,10 @@ export function sky_hosek_precompute(
|
|
|
357
357
|
|
|
358
358
|
/**
|
|
359
359
|
*
|
|
360
|
-
* @param {number[]} out vec3 in RGB color space
|
|
361
|
-
* @param {number[]} mCoeffsXYZ float[3][9]
|
|
362
|
-
* @param {number[]} mRadXYZ vec3
|
|
363
|
-
* @param {number[]} mToSun vec3
|
|
360
|
+
* @param {number[]|Float32Array} out vec3 in RGB color space
|
|
361
|
+
* @param {number[]|Float32Array} mCoeffsXYZ float[3][9]
|
|
362
|
+
* @param {number[]|Float32Array} mRadXYZ vec3
|
|
363
|
+
* @param {number[]|Float32Array} mToSun vec3
|
|
364
364
|
* @param {number} direction_x
|
|
365
365
|
* @param {number} direction_y
|
|
366
366
|
* @param {number} direction_z
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
*
|
|
3
|
+
* @param {number} [size]
|
|
4
|
+
* @param {boolean} [shadow]
|
|
5
|
+
* @param position
|
|
6
|
+
* @param [position_offset]
|
|
7
|
+
* @param sh
|
|
8
|
+
* @param [sh_offset]
|
|
9
|
+
* @return {Entity}
|
|
10
|
+
*/
|
|
11
|
+
export function visualise_spherical_harmonic_sphere({ size, shadow, position, position_offset, sh, sh_offset }?: number): Entity;
|
|
12
|
+
import Entity from "../../ecs/Entity.js";
|
|
13
|
+
//# sourceMappingURL=visualise_spherical_harmonic_sphere.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"visualise_spherical_harmonic_sphere.d.ts","sourceRoot":"","sources":["../../../../../src/engine/graphics/sh3/visualise_spherical_harmonic_sphere.js"],"names":[],"mappings":"AASA;;;;;;;;;GASG;AACH,iHARW,MAAM,GAML,MAAM,CAoCjB;mBApDkB,qBAAqB"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { OctahedronBufferGeometry } from "three";
|
|
2
|
+
import Entity from "../../ecs/Entity.js";
|
|
3
|
+
import { Transform } from "../../ecs/transform/Transform.js";
|
|
4
|
+
import { ShadedGeometry } from "../ecs/mesh-v2/ShadedGeometry.js";
|
|
5
|
+
import { ShadedGeometryFlags } from "../ecs/mesh-v2/ShadedGeometryFlags.js";
|
|
6
|
+
import { SH3VisualisationMaterial } from "./SH3VisualisationMaterial.js";
|
|
7
|
+
|
|
8
|
+
const geometry = new OctahedronBufferGeometry(1, 5);
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
*
|
|
12
|
+
* @param {number} [size]
|
|
13
|
+
* @param {boolean} [shadow]
|
|
14
|
+
* @param position
|
|
15
|
+
* @param [position_offset]
|
|
16
|
+
* @param sh
|
|
17
|
+
* @param [sh_offset]
|
|
18
|
+
* @return {Entity}
|
|
19
|
+
*/
|
|
20
|
+
export function visualise_spherical_harmonic_sphere({
|
|
21
|
+
size = 1,
|
|
22
|
+
shadow = false,
|
|
23
|
+
position,
|
|
24
|
+
position_offset = 0,
|
|
25
|
+
sh,
|
|
26
|
+
sh_offset = 0
|
|
27
|
+
}) {
|
|
28
|
+
|
|
29
|
+
const mat = new SH3VisualisationMaterial();
|
|
30
|
+
|
|
31
|
+
const uniform_value = mat.uniforms.sh.value;
|
|
32
|
+
for (let i = 0; i < 9; i++) {
|
|
33
|
+
uniform_value[i].fromArray(sh, sh_offset + i * 3);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
const shadedGeometry = ShadedGeometry.from(geometry, mat);
|
|
37
|
+
|
|
38
|
+
// prevent instanced rendering
|
|
39
|
+
shadedGeometry.setFlag(ShadedGeometryFlags.DrawMethodLocked);
|
|
40
|
+
|
|
41
|
+
shadedGeometry.writeFlag(ShadedGeometryFlags.ReceiveShadow, shadow);
|
|
42
|
+
shadedGeometry.writeFlag(ShadedGeometryFlags.CastShadow, shadow);
|
|
43
|
+
|
|
44
|
+
return new Entity()
|
|
45
|
+
.add(Transform.fromJSON({
|
|
46
|
+
position: {
|
|
47
|
+
x: position[position_offset],
|
|
48
|
+
y: position[position_offset + 1],
|
|
49
|
+
z: position[position_offset + 2],
|
|
50
|
+
},
|
|
51
|
+
scale: size
|
|
52
|
+
}))
|
|
53
|
+
.add(shadedGeometry);
|
|
54
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AttributeDataTexture.d.ts","sourceRoot":"","sources":["../../../../../src/engine/graphics/texture/AttributeDataTexture.js"],"names":[],"mappings":"AAYA;IAwRI;;;;;;OAMG;IACH,+CAHW,MAAM,cACN,MAAM,GAHL,oBAAoB,CAO/B;IAhSD;;;;;OAKG;IACH,+CAHW,MAAM,cACN,MAAM,EA2ChB;IA/BG;;;;OAIG;IACH,eAAkB;IAElB,mBAAoB;IAEpB;;;;OAIG;IACH,uBAAkC;IAElC;;;;OAIG;IACH,kBAAqB;IAErB;;;;OAIG;IACH,qBAA8B;IAKlC;;;OAGG;IACH,0BAEC;IAED,cASC;IAED,0BAGC;IAED,2BAEC;IAED;;;OAGG;IACH,
|
|
1
|
+
{"version":3,"file":"AttributeDataTexture.d.ts","sourceRoot":"","sources":["../../../../../src/engine/graphics/texture/AttributeDataTexture.js"],"names":[],"mappings":"AAYA;IAwRI;;;;;;OAMG;IACH,+CAHW,MAAM,cACN,MAAM,GAHL,oBAAoB,CAO/B;IAhSD;;;;;OAKG;IACH,+CAHW,MAAM,cACN,MAAM,EA2ChB;IA/BG;;;;OAIG;IACH,eAAkB;IAElB,mBAAoB;IAEpB;;;;OAIG;IACH,uBAAkC;IAElC;;;;OAIG;IACH,kBAAqB;IAErB;;;;OAIG;IACH,qBAA8B;IAKlC;;;OAGG;IACH,0BAEC;IAED,cASC;IAED,0BAGC;IAED,2BAEC;IAED;;;OAGG;IACH,mBAFW,MAAM,QAwChB;IAED,cA4BC;IAED;;;;;;OAMG;IACH,yBALW,MAAM,WACN,MAAM,EAAE,UACR,MAAM,EAAE,GACN,OAAO,CAoCnB;IAED;;;;;OAKG;IACH,8BAJW,MAAM,WACN,MAAM,EAAE,UACR,MAAM,EAAE,QAmClB;IAED;;;OAGG;IACH,sBAFW,MAAM,QAgBhB;IAED;;;OAGG;IACH,sCAEC;IAED;;;OAGG;IACH,2BAEC;IAED;;;OAGG;IACH,oBAFY,MAAM,CAIjB;CAYJ;4BA9S0C,OAAO"}
|