@woosh/meep-engine 2.108.4 → 2.109.0
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/meep.cjs +73 -48
- package/build/meep.min.js +1 -1
- package/build/meep.module.js +73 -48
- package/package.json +1 -1
- package/src/core/assert.d.ts +2 -2
- package/src/core/assert.d.ts.map +1 -1
- package/src/core/assert.js +1 -1
- package/src/core/binary/align_4.spec.d.ts +2 -0
- package/src/core/binary/align_4.spec.d.ts.map +1 -0
- package/src/core/binary/align_4.spec.js +20 -0
- package/src/core/binary/{de_interleave_bits_by_2.d.ts → de_interleave_2_bits.d.ts} +1 -1
- package/src/core/binary/de_interleave_2_bits.d.ts.map +1 -0
- package/src/core/binary/de_interleave_2_bits.spec.js +1 -1
- package/src/core/binary/hex2dec.spec.d.ts +2 -0
- package/src/core/binary/hex2dec.spec.d.ts.map +1 -0
- package/src/core/binary/hex2dec.spec.js +22 -0
- package/src/core/binary/split_by_2.spec.d.ts +2 -0
- package/src/core/binary/split_by_2.spec.d.ts.map +1 -0
- package/src/core/binary/split_by_2.spec.js +22 -0
- package/src/core/bvh2/bvh3/ebvh_build_for_geometry_morton.d.ts +4 -1
- package/src/core/bvh2/bvh3/ebvh_build_for_geometry_morton.d.ts.map +1 -1
- package/src/core/bvh2/bvh3/ebvh_build_for_geometry_morton.js +16 -7
- package/src/core/bvh2/bvh3/ebvh_build_hierarchy.js +1 -1
- package/src/core/bvh2/bvh3/query/bvh_query_user_data_ray.d.ts.map +1 -1
- package/src/core/bvh2/bvh3/query/bvh_query_user_data_ray.js +12 -7
- package/src/core/geom/2d/circle/circle_circumference.d.ts +7 -0
- package/src/core/geom/2d/circle/circle_circumference.d.ts.map +1 -0
- package/src/core/geom/2d/circle/circle_circumference.js +12 -0
- package/src/core/geom/2d/compute_polygon_area_2d.d.ts.map +1 -1
- package/src/core/geom/2d/compute_polygon_area_2d.js +6 -4
- package/src/core/geom/2d/lt-grid/LooseTightGrid.js +1 -1
- package/src/core/geom/2d/triangle2d_get_barycentric.d.ts +2 -2
- package/src/core/geom/2d/triangle2d_get_barycentric.js +2 -2
- package/src/core/geom/3d/Ray3.d.ts +19 -0
- package/src/core/geom/3d/Ray3.d.ts.map +1 -0
- package/src/core/geom/3d/Ray3.js +27 -0
- package/src/core/geom/3d/ray/ray3_shift_origin_along_direction.d.ts +10 -0
- package/src/core/geom/3d/ray/ray3_shift_origin_along_direction.d.ts.map +1 -0
- package/src/core/geom/3d/ray/ray3_shift_origin_along_direction.js +35 -0
- package/src/core/geom/3d/sphere/harmonics/compute_legendre_polynomial.d.ts +1 -0
- package/src/core/geom/3d/sphere/harmonics/compute_legendre_polynomial.d.ts.map +1 -0
- package/src/core/geom/3d/sphere/harmonics/compute_legendre_polynomial.js +0 -0
- package/src/core/geom/3d/sphere/harmonics/sh3_convolve_with_cosine_kernel.d.ts +9 -0
- package/src/core/geom/3d/sphere/harmonics/sh3_convolve_with_cosine_kernel.d.ts.map +1 -0
- package/src/core/geom/3d/sphere/harmonics/sh3_convolve_with_cosine_kernel.js +25 -0
- 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 +2 -4
- package/src/core/geom/3d/sphere/harmonics/sh3_rotate_bl.d.ts +8 -0
- package/src/core/geom/3d/sphere/harmonics/sh3_rotate_bl.d.ts.map +1 -0
- package/src/core/geom/3d/sphere/harmonics/sh3_rotate_bl.js +94 -0
- package/src/core/geom/3d/sphere/harmonics/sh3_rotate_filament.d.ts +8 -0
- package/src/core/geom/3d/sphere/harmonics/sh3_rotate_filament.d.ts.map +1 -0
- package/src/core/geom/3d/sphere/harmonics/{sh3_rotate.js → sh3_rotate_filament.js} +5 -2
- package/src/core/geom/3d/sphere/harmonics/sh_compute_K.d.ts +3 -3
- package/src/core/geom/3d/sphere/harmonics/sh_compute_K.js +3 -3
- package/src/core/geom/3d/tetrahedra/delaunay/tetrahedral_mesh_build_from_grid.d.ts.map +1 -1
- package/src/core/geom/3d/tetrahedra/delaunay/tetrahedral_mesh_build_from_grid.js +29 -14
- package/src/core/geom/Quaternion.js +1 -1
- package/src/core/geom/vec3/v3_matrix4_multiply.d.ts +10 -0
- package/src/core/geom/vec3/v3_matrix4_multiply.d.ts.map +1 -0
- package/src/core/geom/vec3/v3_matrix4_multiply.js +27 -0
- package/src/core/geom/vec3/v3_shift_along_direction.d.ts +14 -0
- package/src/core/geom/vec3/v3_shift_along_direction.d.ts.map +1 -0
- package/src/core/geom/vec3/v3_shift_along_direction.js +23 -0
- package/src/core/math/compute_legendre_polynomial.d.ts +10 -0
- package/src/core/math/compute_legendre_polynomial.d.ts.map +1 -0
- package/src/core/math/compute_legendre_polynomial.js +46 -0
- package/src/core/math/statistics/softmax.d.ts +11 -0
- package/src/core/math/statistics/softmax.d.ts.map +1 -0
- package/src/core/math/statistics/softmax.js +24 -0
- package/src/core/math/statistics/softmax.spec.d.ts +2 -0
- package/src/core/math/statistics/softmax.spec.d.ts.map +1 -0
- package/src/core/math/statistics/softmax.spec.js +9 -0
- package/src/engine/ecs/transform/Transform.d.ts.map +1 -1
- package/src/engine/ecs/transform/Transform.js +19 -4
- package/src/engine/graphics/ecs/camera/CameraSystem.d.ts.map +1 -1
- package/src/engine/graphics/ecs/camera/CameraSystem.js +25 -13
- package/src/engine/graphics/geometry/decode_attribute_value.d.ts +10 -0
- package/src/engine/graphics/geometry/decode_attribute_value.d.ts.map +1 -0
- package/src/engine/graphics/geometry/decode_attribute_value.js +28 -0
- package/src/engine/graphics/geometry/geometry_construct_triangle_normal.d.ts +11 -0
- package/src/engine/graphics/geometry/geometry_construct_triangle_normal.d.ts.map +1 -0
- package/src/engine/graphics/geometry/geometry_construct_triangle_normal.js +31 -0
- package/src/engine/graphics/sh3/lpv/LightProbeVolume.d.ts.map +1 -1
- package/src/engine/graphics/sh3/lpv/LightProbeVolume.js +0 -86
- package/src/engine/graphics/sh3/lpv/WebGLCubeProbeRenderer.d.ts +1 -0
- package/src/engine/graphics/sh3/lpv/WebGLCubeProbeRenderer.d.ts.map +1 -1
- package/src/engine/graphics/sh3/lpv/WebGLCubeProbeRenderer.js +6 -2
- package/src/engine/graphics/sh3/path_tracer/{GeometryBVHBatched.d.ts → BufferedGeometryBVH.d.ts} +9 -2
- package/src/engine/graphics/sh3/path_tracer/BufferedGeometryBVH.d.ts.map +1 -0
- package/src/engine/graphics/sh3/path_tracer/{GeometryBVHBatched.js → BufferedGeometryBVH.js} +84 -5
- package/src/engine/graphics/sh3/path_tracer/PathTracedMesh.d.ts +6 -4
- package/src/engine/graphics/sh3/path_tracer/PathTracedMesh.d.ts.map +1 -1
- package/src/engine/graphics/sh3/path_tracer/PathTracedMesh.js +54 -8
- package/src/engine/graphics/sh3/path_tracer/PathTracedScene.d.ts +6 -10
- package/src/engine/graphics/sh3/path_tracer/PathTracedScene.d.ts.map +1 -1
- package/src/engine/graphics/sh3/path_tracer/PathTracedScene.js +41 -47
- package/src/engine/graphics/sh3/path_tracer/material/MaterialConverter.d.ts +11 -0
- package/src/engine/graphics/sh3/path_tracer/material/MaterialConverter.d.ts.map +1 -0
- package/src/engine/graphics/sh3/path_tracer/material/MaterialConverter.js +102 -0
- package/src/engine/graphics/sh3/path_tracer/material/StandardMaterial.d.ts +9 -0
- package/src/engine/graphics/sh3/path_tracer/material/StandardMaterial.d.ts.map +1 -0
- package/src/engine/graphics/sh3/path_tracer/material/StandardMaterial.js +17 -0
- package/src/engine/graphics/sh3/path_tracer/material/StandardTexture.d.ts +31 -0
- package/src/engine/graphics/sh3/path_tracer/material/StandardTexture.d.ts.map +1 -0
- package/src/engine/graphics/sh3/path_tracer/material/StandardTexture.js +85 -0
- package/src/engine/graphics/sh3/path_tracer/material/TextureFilter.d.ts +14 -0
- package/src/engine/graphics/sh3/path_tracer/material/TextureFilter.d.ts.map +1 -0
- package/src/engine/graphics/sh3/path_tracer/material/TextureFilter.js +17 -0
- package/src/engine/graphics/sh3/path_tracer/material/TextureWrapping.d.ts +7 -0
- package/src/engine/graphics/sh3/path_tracer/material/TextureWrapping.d.ts.map +1 -0
- package/src/engine/graphics/sh3/path_tracer/material/TextureWrapping.js +9 -0
- package/src/engine/graphics/sh3/path_tracer/prototypePathTracer.js +104 -9
- package/src/engine/graphics/sh3/path_tracer/texture/sample_material.d.ts +1 -2
- package/src/engine/graphics/sh3/path_tracer/texture/sample_material.d.ts.map +1 -1
- package/src/engine/graphics/sh3/path_tracer/texture/sample_material.js +50 -23
- package/src/engine/graphics/sh3/prototypeSH3Probe.js +62 -28
- package/src/engine/graphics/texture/sampler/one_pixel_sampler_uint8.d.ts +8 -0
- package/src/engine/graphics/texture/sampler/one_pixel_sampler_uint8.d.ts.map +1 -0
- package/src/engine/graphics/texture/sampler/one_pixel_sampler_uint8.js +10 -0
- package/src/engine/graphics/texture/sampler/sampler_multiply_vector.d.ts +8 -0
- package/src/engine/graphics/texture/sampler/sampler_multiply_vector.d.ts.map +1 -0
- package/src/engine/graphics/texture/sampler/sampler_multiply_vector.js +23 -0
- package/src/core/binary/de_interleave_bits_by_2.d.ts.map +0 -1
- package/src/core/geom/3d/sphere/harmonics/sh3_rotate.d.ts +0 -8
- package/src/core/geom/3d/sphere/harmonics/sh3_rotate.d.ts.map +0 -1
- package/src/engine/graphics/sh3/path_tracer/GeometryBVHBatched.d.ts.map +0 -1
- /package/src/core/binary/{de_interleave_bits_by_2.js → de_interleave_2_bits.js} +0 -0
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { v3_shift_along_direction } from "../../vec3/v3_shift_along_direction.js";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
*
|
|
5
|
+
* @param {number[]|ArrayLike<number>|Float32Array} output 6 component vector, [origin_x, origin_y, origin_z, direction_x, direction_y, direction_z]
|
|
6
|
+
* @param {number} output_offset
|
|
7
|
+
* @param {number[]|ArrayLike<number>|Float32Array} input 6 component vector, [origin_x, origin_y, origin_z, direction_x, direction_y, direction_z]
|
|
8
|
+
* @param {number} input_offset
|
|
9
|
+
* @param {number} distance
|
|
10
|
+
*/
|
|
11
|
+
export function ray3_shift_origin_along_direction(
|
|
12
|
+
output, output_offset,
|
|
13
|
+
input, input_offset,
|
|
14
|
+
distance
|
|
15
|
+
) {
|
|
16
|
+
const origin_x = input[input_offset + 0];
|
|
17
|
+
const origin_y = input[input_offset + 1];
|
|
18
|
+
const origin_z = input[input_offset + 2];
|
|
19
|
+
|
|
20
|
+
const direction_x = input[input_offset + 3];
|
|
21
|
+
const direction_y = input[input_offset + 4];
|
|
22
|
+
const direction_z = input[input_offset + 5];
|
|
23
|
+
|
|
24
|
+
v3_shift_along_direction(
|
|
25
|
+
output, 0,
|
|
26
|
+
origin_x, origin_y, origin_z,
|
|
27
|
+
direction_x, direction_y, direction_z,
|
|
28
|
+
distance
|
|
29
|
+
);
|
|
30
|
+
|
|
31
|
+
output[output_offset + 3] = direction_x;
|
|
32
|
+
output[output_offset + 4] = direction_y;
|
|
33
|
+
output[output_offset + 5] = direction_z;
|
|
34
|
+
}
|
|
35
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=compute_legendre_polynomial.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compute_legendre_polynomial.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/geom/3d/sphere/harmonics/compute_legendre_polynomial.js"],"names":[],"mappings":""}
|
|
File without changes
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Performs convolution of 3-band spherical harmonic coefficients with a cosine kernel
|
|
3
|
+
* @param {number[]} out
|
|
4
|
+
* @param {number} out_offset
|
|
5
|
+
* @param {number[]} input
|
|
6
|
+
* @param {number} input_offset
|
|
7
|
+
*/
|
|
8
|
+
export function sh3_convolve_with_cosine_kernel(out: number[], out_offset: number, input: number[], input_offset: number): void;
|
|
9
|
+
//# sourceMappingURL=sh3_convolve_with_cosine_kernel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sh3_convolve_with_cosine_kernel.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/geom/3d/sphere/harmonics/sh3_convolve_with_cosine_kernel.js"],"names":[],"mappings":"AAKA;;;;;;GAMG;AACH,qDALW,MAAM,EAAE,cACR,MAAM,SACN,MAAM,EAAE,gBACR,MAAM,QAchB"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
// Cosine kernel for SH
|
|
2
|
+
const CosineA0 = Math.PI;
|
|
3
|
+
const CosineA1 = (2.0 * Math.PI) / 3.0;
|
|
4
|
+
const CosineA2 = Math.PI / 4.0;
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Performs convolution of 3-band spherical harmonic coefficients with a cosine kernel
|
|
8
|
+
* @param {number[]} out
|
|
9
|
+
* @param {number} out_offset
|
|
10
|
+
* @param {number[]} input
|
|
11
|
+
* @param {number} input_offset
|
|
12
|
+
*/
|
|
13
|
+
export function sh3_convolve_with_cosine_kernel(out, out_offset, input, input_offset) {
|
|
14
|
+
out[out_offset + 0] = input[input_offset + 0] * CosineA0;
|
|
15
|
+
|
|
16
|
+
out[out_offset + 1] = input[input_offset + 1] * CosineA1;
|
|
17
|
+
out[out_offset + 2] = input[input_offset + 2] * CosineA1;
|
|
18
|
+
out[out_offset + 3] = input[input_offset + 3] * CosineA1;
|
|
19
|
+
|
|
20
|
+
out[out_offset + 4] = input[input_offset + 4] * CosineA2;
|
|
21
|
+
out[out_offset + 5] = input[input_offset + 5] * CosineA2;
|
|
22
|
+
out[out_offset + 6] = input[input_offset + 6] * CosineA2;
|
|
23
|
+
out[out_offset + 7] = input[input_offset + 7] * CosineA2;
|
|
24
|
+
out[out_offset + 8] = input[input_offset + 8] * CosineA2;
|
|
25
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sh3_dering_optimize_positive.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/geom/3d/sphere/harmonics/sh3_dering_optimize_positive.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sh3_dering_optimize_positive.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/geom/3d/sphere/harmonics/sh3_dering_optimize_positive.js"],"names":[],"mappings":"AAgSA;;;;;;;GAOG;AACH,qDANW,MAAM,EAAE,GAAC,YAAY,GAAC,YAAY,iBAClC,MAAM,aACN,MAAM,EAAE,GAAC,YAAY,GAAC,YAAY,oBAClC,MAAM,oBACN,MAAM,QAIhB"}
|
|
@@ -3,7 +3,7 @@ import { assert } from "../../../../assert.js";
|
|
|
3
3
|
import { array_copy } from "../../../../collection/array/array_copy.js";
|
|
4
4
|
import { min2 } from "../../../../math/min2.js";
|
|
5
5
|
import { SH3_COEFFICIENTS } from "./SH3_COEFFICIENTS.js";
|
|
6
|
-
import {
|
|
6
|
+
import { sh3_rotate_bl } from "./sh3_rotate_bl.js";
|
|
7
7
|
import { sh_index } from "./sh_index.js";
|
|
8
8
|
|
|
9
9
|
/*
|
|
@@ -74,11 +74,9 @@ function sh3_min(input_sh3) {
|
|
|
74
74
|
array_copy(y_axis, 0, M, 3, 3);
|
|
75
75
|
array_copy(dir, 0, M, 6, 3);
|
|
76
76
|
|
|
77
|
-
mat3.transpose(M, M);
|
|
78
|
-
|
|
79
77
|
const f = new Float32Array(9);
|
|
80
78
|
|
|
81
|
-
|
|
79
|
+
sh3_rotate_bl(f, input_sh3, M);
|
|
82
80
|
// here we're guaranteed to have normalize(float3{ -f[3], -f[1], f[2] }) == { 0, 0, 1 }
|
|
83
81
|
|
|
84
82
|
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
*
|
|
3
|
+
* @param {number[]|Float32Array} result sh3
|
|
4
|
+
* @param {number[]} sh input
|
|
5
|
+
* @param {number[]} rotation 3x3 rotation matrix
|
|
6
|
+
*/
|
|
7
|
+
export function sh3_rotate_bl(result: number[] | Float32Array, sh: number[], rotation: number[]): number[] | Float32Array;
|
|
8
|
+
//# sourceMappingURL=sh3_rotate_bl.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sh3_rotate_bl.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/geom/3d/sphere/harmonics/sh3_rotate_bl.js"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,sCAJW,MAAM,EAAE,GAAC,YAAY,MACrB,MAAM,EAAE,YACR,MAAM,EAAE,2BAuFlB"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
const scratch_mat_5x5 = new Float64Array(25);
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
*
|
|
5
|
+
* @param {number[]|Float32Array} result sh3
|
|
6
|
+
* @param {number[]} sh input
|
|
7
|
+
* @param {number[]} rotation 3x3 rotation matrix
|
|
8
|
+
*/
|
|
9
|
+
export function sh3_rotate_bl(result, sh, rotation) {
|
|
10
|
+
// Implementation adapted from BakerLab by https://github.com/TheRealMJP
|
|
11
|
+
|
|
12
|
+
const r00 = rotation[0];
|
|
13
|
+
const r10 = rotation[1];
|
|
14
|
+
const r20 = rotation[2];
|
|
15
|
+
|
|
16
|
+
const r01 = rotation[3];
|
|
17
|
+
const r11 = rotation[4];
|
|
18
|
+
const r21 = rotation[5];
|
|
19
|
+
|
|
20
|
+
const r02 = rotation[6];
|
|
21
|
+
const r12 = rotation[7];
|
|
22
|
+
const r22 = rotation[8];
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
// Constant
|
|
26
|
+
result[0] = sh[0];
|
|
27
|
+
|
|
28
|
+
// Linear
|
|
29
|
+
result[1] = r11 * sh[1] - r12 * sh[2] + r10 * sh[3];
|
|
30
|
+
result[2] = -r21 * sh[1] + r22 * sh[2] - r20 * sh[3];
|
|
31
|
+
result[3] = r01 * sh[1] - r02 * sh[2] + r00 * sh[3];
|
|
32
|
+
|
|
33
|
+
// Quadratic
|
|
34
|
+
const t41 = r01 * r00;
|
|
35
|
+
const t43 = r11 * r10;
|
|
36
|
+
const t48 = r11 * r12;
|
|
37
|
+
const t50 = r01 * r02;
|
|
38
|
+
const t55 = r02 * r02;
|
|
39
|
+
const t57 = r22 * r22;
|
|
40
|
+
const t58 = r12 * r12;
|
|
41
|
+
const t61 = r00 * r02;
|
|
42
|
+
const t63 = r10 * r12;
|
|
43
|
+
const t68 = r10 * r10;
|
|
44
|
+
const t70 = r01 * r01;
|
|
45
|
+
const t72 = r11 * r11;
|
|
46
|
+
const t74 = r00 * r00;
|
|
47
|
+
const t76 = r21 * r21;
|
|
48
|
+
const t78 = r20 * r20;
|
|
49
|
+
|
|
50
|
+
const v173 = 0.1732050808e1;
|
|
51
|
+
const v577 = 0.5773502693e0;
|
|
52
|
+
const v115 = 0.1154700539e1;
|
|
53
|
+
const v288 = 0.2886751347e0;
|
|
54
|
+
const v866 = 0.8660254040e0;
|
|
55
|
+
|
|
56
|
+
scratch_mat_5x5[0] = r11 * r00 + r01 * r10;
|
|
57
|
+
scratch_mat_5x5[1] = -r01 * r12 - r11 * r02;
|
|
58
|
+
scratch_mat_5x5[2] = v173 * r02 * r12;
|
|
59
|
+
scratch_mat_5x5[3] = -r10 * r02 - r00 * r12;
|
|
60
|
+
scratch_mat_5x5[4] = r00 * r10 - r01 * r11;
|
|
61
|
+
scratch_mat_5x5[5] = -r11 * r20 - r21 * r10;
|
|
62
|
+
scratch_mat_5x5[6] = r11 * r22 + r21 * r12;
|
|
63
|
+
scratch_mat_5x5[7] = -v173 * r22 * r12;
|
|
64
|
+
scratch_mat_5x5[8] = r20 * r12 + r10 * r22;
|
|
65
|
+
scratch_mat_5x5[9] = -r10 * r20 + r11 * r21;
|
|
66
|
+
scratch_mat_5x5[10] = -v577 * (t41 + t43) + v115 * r21 * r20;
|
|
67
|
+
scratch_mat_5x5[11] = v577 * (t48 + t50) - v115 * r21 * r22;
|
|
68
|
+
scratch_mat_5x5[12] = -0.5 * (t55 + t58) + t57;
|
|
69
|
+
scratch_mat_5x5[13] = v577 * (t61 + t63) - v115 * r20 * r22;
|
|
70
|
+
scratch_mat_5x5[14] = v288 * (t70 - t68 + t72 - t74) - v577 * (t76 - t78);
|
|
71
|
+
scratch_mat_5x5[15] = -r01 * r20 - r21 * r00;
|
|
72
|
+
scratch_mat_5x5[16] = r01 * r22 + r21 * r02;
|
|
73
|
+
scratch_mat_5x5[17] = -v173 * r22 * r02;
|
|
74
|
+
scratch_mat_5x5[18] = r00 * r22 + r20 * r02;
|
|
75
|
+
scratch_mat_5x5[19] = -r00 * r20 + r01 * r21;
|
|
76
|
+
scratch_mat_5x5[20] = t41 - t43;
|
|
77
|
+
scratch_mat_5x5[21] = -t50 + t48;
|
|
78
|
+
scratch_mat_5x5[22] = v866 * (t55 - t58);
|
|
79
|
+
scratch_mat_5x5[23] = t63 - t61;
|
|
80
|
+
scratch_mat_5x5[24] = 0.5 * (t74 - t68 - t70 + t72);
|
|
81
|
+
|
|
82
|
+
for (let i = 0; i < 5; ++i) {
|
|
83
|
+
const base = i * 5;
|
|
84
|
+
|
|
85
|
+
result[4 + i] = scratch_mat_5x5[base + 0] * sh[4]
|
|
86
|
+
+ scratch_mat_5x5[base + 1] * sh[5]
|
|
87
|
+
+ scratch_mat_5x5[base + 2] * sh[6]
|
|
88
|
+
+ scratch_mat_5x5[base + 3] * sh[7]
|
|
89
|
+
+ scratch_mat_5x5[base + 4] * sh[8]
|
|
90
|
+
;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
return result;
|
|
94
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
*
|
|
3
|
+
* @param {number[]|Float32Array} result sh3
|
|
4
|
+
* @param {number[]} sh input
|
|
5
|
+
* @param {number[]} rotation 3x3 rotation matrix
|
|
6
|
+
*/
|
|
7
|
+
export function sh3_rotate_filament(result: number[] | Float32Array, sh: number[], rotation: number[]): void;
|
|
8
|
+
//# sourceMappingURL=sh3_rotate_filament.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sh3_rotate_filament.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/geom/3d/sphere/harmonics/sh3_rotate_filament.js"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,4CAJW,MAAM,EAAE,GAAC,YAAY,MACrB,MAAM,EAAE,YACR,MAAM,EAAE,QAuBlB"}
|
|
@@ -7,7 +7,9 @@ import { sh_rotate_band2 } from "./sh_rotate_band2.js";
|
|
|
7
7
|
* @param {number[]} sh input
|
|
8
8
|
* @param {number[]} rotation 3x3 rotation matrix
|
|
9
9
|
*/
|
|
10
|
-
export function
|
|
10
|
+
export function sh3_rotate_filament(result, sh, rotation) {
|
|
11
|
+
|
|
12
|
+
// Adapted from filament https://github.com/google/filament/blob/e2da13f81734ccd6d6f9935061b771801682619e/libs/ibl/src/CubemapSH.cpp
|
|
11
13
|
|
|
12
14
|
const b0 = sh[0];
|
|
13
15
|
const band1 = [sh[1], sh[2], sh[3]];
|
|
@@ -26,4 +28,5 @@ export function sh3_rotate(result, sh, rotation) {
|
|
|
26
28
|
result[6] = b2[2];
|
|
27
29
|
result[7] = b2[3];
|
|
28
30
|
result[8] = b2[4];
|
|
29
|
-
}
|
|
31
|
+
}
|
|
32
|
+
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* computes K(m
|
|
2
|
+
* computes K(l,m) normalization constant
|
|
3
3
|
* @see "Deringing Spherical Harmonics" by Peter-Pike Sloan
|
|
4
|
+
* @param {number} l band
|
|
4
5
|
* @param {number} m
|
|
5
|
-
* @param {number} l
|
|
6
6
|
* @returns {number}
|
|
7
7
|
*/
|
|
8
|
-
export function sh_compute_K(
|
|
8
|
+
export function sh_compute_K(l: number, m: number): number;
|
|
9
9
|
//# sourceMappingURL=sh_compute_K.d.ts.map
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { factorial } from "../../../../math/factorial.js";
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
* computes K(m
|
|
4
|
+
* computes K(l,m) normalization constant
|
|
5
5
|
* @see "Deringing Spherical Harmonics" by Peter-Pike Sloan
|
|
6
|
+
* @param {number} l band
|
|
6
7
|
* @param {number} m
|
|
7
|
-
* @param {number} l
|
|
8
8
|
* @returns {number}
|
|
9
9
|
*/
|
|
10
|
-
export function sh_compute_K(
|
|
10
|
+
export function sh_compute_K(l, m) {
|
|
11
11
|
|
|
12
12
|
const a = (2 * l + 1) * factorial(l - Math.abs(m))
|
|
13
13
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tetrahedral_mesh_build_from_grid.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/geom/3d/tetrahedra/delaunay/tetrahedral_mesh_build_from_grid.js"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,gFANW,MAAM,EAAE,gCAER,MAAM,iBACN,MAAM,iBACN,MAAM,
|
|
1
|
+
{"version":3,"file":"tetrahedral_mesh_build_from_grid.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/geom/3d/tetrahedra/delaunay/tetrahedral_mesh_build_from_grid.js"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,gFANW,MAAM,EAAE,gCAER,MAAM,iBACN,MAAM,iBACN,MAAM,QA4IhB"}
|
|
@@ -87,29 +87,44 @@ export function tetrahedral_mesh_build_from_grid(
|
|
|
87
87
|
for (let z = 1; z < resolution_z; z++) {
|
|
88
88
|
for (let y = 1; y < resolution_y; y++) {
|
|
89
89
|
for (let x = 1; x < resolution_x; x++) {
|
|
90
|
-
const
|
|
91
|
-
const
|
|
92
|
-
const
|
|
93
|
-
const
|
|
94
|
-
const
|
|
95
|
-
const
|
|
96
|
-
const
|
|
97
|
-
const
|
|
90
|
+
const A = vertex_position_to_index(x - 1, y - 1, z - 1);
|
|
91
|
+
const B = vertex_position_to_index(x - 1, y - 1, z);
|
|
92
|
+
const C = vertex_position_to_index(x - 1, y, z - 1);
|
|
93
|
+
const D = vertex_position_to_index(x - 1, y, z);
|
|
94
|
+
const E = vertex_position_to_index(x, y - 1, z - 1);
|
|
95
|
+
const F = vertex_position_to_index(x, y - 1, z);
|
|
96
|
+
const G = vertex_position_to_index(x, y, z - 1);
|
|
97
|
+
const H = vertex_position_to_index(x, y, z);
|
|
98
|
+
|
|
99
|
+
// const p000 = vertex_position_to_index(x - 1, y - 1, z - 1);
|
|
100
|
+
// const p001 = vertex_position_to_index(x - 1, y - 1, z);
|
|
101
|
+
// const p010 = vertex_position_to_index(x - 1, y, z - 1);
|
|
102
|
+
// const p011 = vertex_position_to_index(x - 1, y, z);
|
|
103
|
+
// const p100 = vertex_position_to_index(x, y - 1, z - 1);
|
|
104
|
+
// const p101 = vertex_position_to_index(x, y - 1, z);
|
|
105
|
+
// const p110 = vertex_position_to_index(x, y, z - 1);
|
|
106
|
+
// const p111 = vertex_position_to_index(x, y, z);
|
|
98
107
|
|
|
99
108
|
|
|
100
109
|
// Tessellate the grid volume into six tetrahedra per grid cell.
|
|
101
110
|
|
|
102
111
|
// prism 1
|
|
103
|
-
const tet_0 = make_cell(
|
|
104
|
-
const tet_1 = make_cell(
|
|
105
|
-
const tet_2 = make_cell(
|
|
112
|
+
const tet_0 = make_cell(E, F, G, A);
|
|
113
|
+
const tet_1 = make_cell(A, B, F, G);
|
|
114
|
+
const tet_2 = make_cell(A, C, B, G);
|
|
106
115
|
|
|
107
116
|
// prism 2
|
|
108
|
-
const tet_3 = make_cell(
|
|
109
|
-
const tet_4 = make_cell(
|
|
110
|
-
const tet_5 = make_cell(
|
|
117
|
+
const tet_3 = make_cell(E, G, H, A);
|
|
118
|
+
const tet_4 = make_cell(A, H, D, G);
|
|
119
|
+
const tet_5 = make_cell(A, D, C, G);
|
|
111
120
|
|
|
112
121
|
// link newly created tetrahedrons
|
|
122
|
+
mesh.setNeighbour(tet_0, 1, (tet_3 << 2) & 2);
|
|
123
|
+
mesh.setNeighbour(tet_3, 2, (tet_0 << 2) & 1);
|
|
124
|
+
|
|
125
|
+
mesh.setNeighbour(tet_0, 1, (tet_1 << 2) & 2);
|
|
126
|
+
mesh.setNeighbour(tet_1, 2, (tet_0 << 2) & 1);
|
|
127
|
+
|
|
113
128
|
// TODO implement
|
|
114
129
|
|
|
115
130
|
if (x > 1) {
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Perform matrix multiplication on a 3d vector
|
|
3
|
+
* @param {number[]|Float32Array} output
|
|
4
|
+
* @param {number} output_offset
|
|
5
|
+
* @param {number[]|Float32Array} input
|
|
6
|
+
* @param {number} input_offset
|
|
7
|
+
* @param {number[]|Float32Array} m4
|
|
8
|
+
*/
|
|
9
|
+
export function v3_matrix4_multiply(output: number[] | Float32Array, output_offset: number, input: number[] | Float32Array, input_offset: number, m4: number[] | Float32Array): void;
|
|
10
|
+
//# sourceMappingURL=v3_matrix4_multiply.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v3_matrix4_multiply.d.ts","sourceRoot":"","sources":["../../../../../src/core/geom/vec3/v3_matrix4_multiply.js"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,4CANW,MAAM,EAAE,GAAC,YAAY,iBACrB,MAAM,SACN,MAAM,EAAE,GAAC,YAAY,gBACrB,MAAM,MACN,MAAM,EAAE,GAAC,YAAY,QAoB/B"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Perform matrix multiplication on a 3d vector
|
|
3
|
+
* @param {number[]|Float32Array} output
|
|
4
|
+
* @param {number} output_offset
|
|
5
|
+
* @param {number[]|Float32Array} input
|
|
6
|
+
* @param {number} input_offset
|
|
7
|
+
* @param {number[]|Float32Array} m4
|
|
8
|
+
*/
|
|
9
|
+
export function v3_matrix4_multiply(
|
|
10
|
+
output, output_offset,
|
|
11
|
+
input, input_offset,
|
|
12
|
+
m4
|
|
13
|
+
) {
|
|
14
|
+
const x = input[input_offset];
|
|
15
|
+
const y = input[input_offset + 1];
|
|
16
|
+
const z = input[input_offset + 2];
|
|
17
|
+
|
|
18
|
+
const w = 1 / (m4[3] * x + m4[7] * y + m4[11] * z + m4[15]);
|
|
19
|
+
|
|
20
|
+
const _x = (m4[0] * x + m4[4] * y + m4[8] * z + m4[12]) * w;
|
|
21
|
+
const _y = (m4[1] * x + m4[5] * y + m4[9] * z + m4[13]) * w;
|
|
22
|
+
const _z = (m4[2] * x + m4[6] * y + m4[10] * z + m4[14]) * w;
|
|
23
|
+
|
|
24
|
+
output[output_offset] = _x;
|
|
25
|
+
output[output_offset + 1] = _y;
|
|
26
|
+
output[output_offset + 2] = _z;
|
|
27
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
*
|
|
3
|
+
* @param {number[]|Float32Array} output
|
|
4
|
+
* @param {number} output_offset
|
|
5
|
+
* @param {number} origin_x
|
|
6
|
+
* @param {number} origin_y
|
|
7
|
+
* @param {number} origin_z
|
|
8
|
+
* @param {number} direction_x
|
|
9
|
+
* @param {number} direction_y
|
|
10
|
+
* @param {number} direction_z
|
|
11
|
+
* @param {number} distance
|
|
12
|
+
*/
|
|
13
|
+
export function v3_shift_along_direction(output: number[] | Float32Array, output_offset: number, origin_x: number, origin_y: number, origin_z: number, direction_x: number, direction_y: number, direction_z: number, distance: number): void;
|
|
14
|
+
//# sourceMappingURL=v3_shift_along_direction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v3_shift_along_direction.d.ts","sourceRoot":"","sources":["../../../../../src/core/geom/vec3/v3_shift_along_direction.js"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,iDAVW,MAAM,EAAE,GAAC,YAAY,iBACrB,MAAM,YACN,MAAM,YACN,MAAM,YACN,MAAM,eACN,MAAM,eACN,MAAM,eACN,MAAM,YACN,MAAM,QAYhB"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
*
|
|
3
|
+
* @param {number[]|Float32Array} output
|
|
4
|
+
* @param {number} output_offset
|
|
5
|
+
* @param {number} origin_x
|
|
6
|
+
* @param {number} origin_y
|
|
7
|
+
* @param {number} origin_z
|
|
8
|
+
* @param {number} direction_x
|
|
9
|
+
* @param {number} direction_y
|
|
10
|
+
* @param {number} direction_z
|
|
11
|
+
* @param {number} distance
|
|
12
|
+
*/
|
|
13
|
+
export function v3_shift_along_direction(
|
|
14
|
+
output, output_offset,
|
|
15
|
+
origin_x, origin_y, origin_z,
|
|
16
|
+
direction_x, direction_y, direction_z,
|
|
17
|
+
distance
|
|
18
|
+
) {
|
|
19
|
+
|
|
20
|
+
output[output_offset + 0] = origin_x + direction_x * distance;
|
|
21
|
+
output[output_offset + 1] = origin_y + direction_y * distance;
|
|
22
|
+
output[output_offset + 2] = origin_z + direction_z * distance;
|
|
23
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Computes associated Legendre Polynomial P(l,m,x) at x
|
|
3
|
+
* Useful in Spherical Harmonics coefficient computation
|
|
4
|
+
* @param {number} l band
|
|
5
|
+
* @param {number} m
|
|
6
|
+
* @param {number} x
|
|
7
|
+
* @returns {number}
|
|
8
|
+
*/
|
|
9
|
+
export function compute_legendre_polynomial(l: number, m: number, x: number): number;
|
|
10
|
+
//# sourceMappingURL=compute_legendre_polynomial.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compute_legendre_polynomial.d.ts","sourceRoot":"","sources":["../../../../src/core/math/compute_legendre_polynomial.js"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,+CALW,MAAM,KACN,MAAM,KACN,MAAM,GACJ,MAAM,CAuClB"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Computes associated Legendre Polynomial P(l,m,x) at x
|
|
3
|
+
* Useful in Spherical Harmonics coefficient computation
|
|
4
|
+
* @param {number} l band
|
|
5
|
+
* @param {number} m
|
|
6
|
+
* @param {number} x
|
|
7
|
+
* @returns {number}
|
|
8
|
+
*/
|
|
9
|
+
export function compute_legendre_polynomial(l, m, x) {
|
|
10
|
+
// based on code from https://github.com/jan-van-bergen/SphericalHarmonicLighting/blob/2b214b3451859ded07ea4e41fb2aa8d2a44ab579/SphericalHarmonicsLighting/SphericalHarmonics.cpp#L61
|
|
11
|
+
|
|
12
|
+
// Apply rule 2; P m m
|
|
13
|
+
let pmm = 1.0;
|
|
14
|
+
if (m > 0) {
|
|
15
|
+
const somx2 = Math.sqrt((1.0 - x) * (1.0 + x));
|
|
16
|
+
let fact = 1.0;
|
|
17
|
+
|
|
18
|
+
for (let i = 1; i <= m; i++) {
|
|
19
|
+
pmm *= (-fact) * somx2;
|
|
20
|
+
fact += 2.0;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
// If l is equal to m then P m m is already the right answer
|
|
25
|
+
if (l === m) {
|
|
26
|
+
return pmm;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
// Use rule 3 once
|
|
30
|
+
let pmmp1 = x * (2.0 * m + 1.0) * pmm;
|
|
31
|
+
|
|
32
|
+
if (l === m + 1) {
|
|
33
|
+
return pmmp1;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// Iterate rule 1 until the right answer is found
|
|
37
|
+
let pll = 0.0;
|
|
38
|
+
|
|
39
|
+
for (let ll = m + 2; ll <= l; ll++) {
|
|
40
|
+
pll = ((2.0 * ll - 1.0) * x * pmmp1 - (ll + m - 1.0) * pmm) / (ll - m);
|
|
41
|
+
pmm = pmmp1;
|
|
42
|
+
pmmp1 = pll;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
return pll;
|
|
46
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Normalized exponential function, converts vector of size K into probability distribution of K possible outcomes
|
|
3
|
+
* Useful in neural network implementations
|
|
4
|
+
* @see https://en.wikipedia.org/wiki/Softmax_function
|
|
5
|
+
* @param {number[]|Float32Array} z input vector
|
|
6
|
+
* @param {number} i Element in vector Z to compute softmax for
|
|
7
|
+
* @param {number} k Should be >= 1, typically dimension of Z
|
|
8
|
+
* @returns {number}
|
|
9
|
+
*/
|
|
10
|
+
export function softmax(z: number[] | Float32Array, i: number, k: number): number;
|
|
11
|
+
//# sourceMappingURL=softmax.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"softmax.d.ts","sourceRoot":"","sources":["../../../../../src/core/math/statistics/softmax.js"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,2BALW,MAAM,EAAE,GAAC,YAAY,KACrB,MAAM,KACN,MAAM,GACJ,MAAM,CAgBlB"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Normalized exponential function, converts vector of size K into probability distribution of K possible outcomes
|
|
3
|
+
* Useful in neural network implementations
|
|
4
|
+
* @see https://en.wikipedia.org/wiki/Softmax_function
|
|
5
|
+
* @param {number[]|Float32Array} z input vector
|
|
6
|
+
* @param {number} i Element in vector Z to compute softmax for
|
|
7
|
+
* @param {number} k Should be >= 1, typically dimension of Z
|
|
8
|
+
* @returns {number}
|
|
9
|
+
*/
|
|
10
|
+
export function softmax(z, i, k) {
|
|
11
|
+
|
|
12
|
+
const ezi = Math.exp(z[i]);
|
|
13
|
+
|
|
14
|
+
// NOTE that if we want to compute softmax for an entire vector, it could be far more efficient
|
|
15
|
+
let sum = 0;
|
|
16
|
+
|
|
17
|
+
for (let j = 1; j < k; j++) {
|
|
18
|
+
|
|
19
|
+
sum += Math.exp(z[j]);
|
|
20
|
+
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
return ezi / sum;
|
|
24
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"softmax.spec.d.ts","sourceRoot":"","sources":["../../../../../src/core/math/statistics/softmax.spec.js"],"names":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Transform.d.ts","sourceRoot":"","sources":["../../../../../src/engine/ecs/transform/Transform.js"],"names":[],"mappings":"AAsBA;;;GAGG;AACH;IAwQI;;;;OAIG;IACH,4BAFa,SAAS,CAQrB;
|
|
1
|
+
{"version":3,"file":"Transform.d.ts","sourceRoot":"","sources":["../../../../../src/engine/ecs/transform/Transform.js"],"names":[],"mappings":"AAsBA;;;GAGG;AACH;IAwQI;;;;OAIG;IACH,4BAFa,SAAS,CAQrB;IAED;;;;OAIG;IACH,uBAHW,MAAM,EAAE,GAAC,YAAY,GACnB,SAAS,CAQrB;IAuDD;;;;;OAKG;IACH,wCAJW,UAAU,gBACV,OAAO,wBAajB;IArWD;;;OAGG;IACH,mBAHU,OAAO,CAGe;IAEhC;;;OAGG;IACH,mBAHU,UAAU,CAGkB;IAEtC;;;OAGG;IACH,gBAHU,OAAO,CAGY;IAE7B;;;;OAIG;IACH,iBAFU,YAAY,CAEC;IAEvB;;;;OAIG;IACH,OAFU,MAAM,CAEM;IAOtB;;;;OAIG;IACH,uBAMC;IAED;;;OAGG;IACH,kBAMC;IAED;;;OAGG;IACH,qBAMC;IAED;;;;OAIG;IACH,kDAIC;IAED;;;;OAIG;IACH,oDAIC;IAYD;;;;OAIG;IACH,cAHW,MAAM,GAAC,cAAc,GACnB,IAAI,CAIhB;IAED;;;;OAIG;IACH,gBAHW,MAAM,GAAC,cAAc,GACnB,IAAI,CAIhB;IAED;;;;OAIG;IACH,gBAHW,MAAM,GAAC,cAAc,SACrB,OAAO,QAQjB;IAED;;;;OAIG;IACH,cAHW,MAAM,GAAC,cAAc,GACnB,OAAO,CAInB;IAED;;OAEG;IACH,qBAEC;IAED;;;;OAIG;IACH,eAHW,OAAO,OACP,OAAO,QAmBjB;IAED,0BAwBC;IAED;;;;MAMC;IAED;;;OAGG;IACH,YAFW,SAAS,QAenB;IAED;;;OAGG;IACH,SAFa,SAAS,CAQrB;IAED;;;;OAIG;IACH,cAHW,SAAS,GACP,OAAO,CAMnB;IAED;;;OAGG;IACH,QAFa,MAAM,CAKlB;IA4BD;;;;OAIG;IACH,sBAHW,SAAS,KACT,SAAS,QAMnB;IAED;;;OAGG;IACH,oBAFW,OAAK,MAAM,EAAE,GAAC,YAAY,QAgBpC;IAED;;;OAGG;IACH,kBAFW,MAAM,EAAE,GAAC,YAAY,QAI/B;IAED;;;;;OAKG;IACH,qBAEC;IAED,mBAEC;IA2BL;;;OAGG;IACH,sBAFU,OAAO,CAEc;;CAZ9B;;kBAIS,MAAM;;oBA/XI,+BAA+B;uBAD5B,kCAAkC;+BAE1B,qBAAqB"}
|
|
@@ -301,6 +301,19 @@ export class Transform {
|
|
|
301
301
|
return result;
|
|
302
302
|
}
|
|
303
303
|
|
|
304
|
+
/**
|
|
305
|
+
*
|
|
306
|
+
* @param {number[]|Float32Array} mat
|
|
307
|
+
* @returns {Transform}
|
|
308
|
+
*/
|
|
309
|
+
static fromMatrix(mat) {
|
|
310
|
+
const result = new Transform();
|
|
311
|
+
|
|
312
|
+
result.fromMatrix4(mat);
|
|
313
|
+
|
|
314
|
+
return result;
|
|
315
|
+
}
|
|
316
|
+
|
|
304
317
|
/**
|
|
305
318
|
* Multiply two transforms, result it written into this one
|
|
306
319
|
* @param {Transform} a
|
|
@@ -314,17 +327,19 @@ export class Transform {
|
|
|
314
327
|
|
|
315
328
|
/**
|
|
316
329
|
*
|
|
317
|
-
* @param {mat4|number[]|Float32Array}
|
|
330
|
+
* @param {mat4|number[]|Float32Array} matrix
|
|
318
331
|
*/
|
|
319
|
-
fromMatrix4(
|
|
332
|
+
fromMatrix4(matrix) {
|
|
333
|
+
assert.isArrayLike(matrix, 'matrix');
|
|
334
|
+
|
|
320
335
|
// we know we are changing the matrix, so we're going to need to disable the flag that sets matrix from position/rotation/scale changes
|
|
321
336
|
const ad = this.getFlag(TransformFlags.AutomaticChangeDetection);
|
|
322
337
|
|
|
323
338
|
this.clearFlag(TransformFlags.AutomaticChangeDetection);
|
|
324
339
|
|
|
325
|
-
this.matrix.set(
|
|
340
|
+
this.matrix.set(matrix);
|
|
326
341
|
|
|
327
|
-
decompose_matrix_4_array(
|
|
342
|
+
decompose_matrix_4_array(matrix, this.position, this.rotation, this.scale);
|
|
328
343
|
|
|
329
344
|
// restore value of the flag
|
|
330
345
|
this.writeFlag(TransformFlags.AutomaticChangeDetection, ad);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CameraSystem.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/ecs/camera/CameraSystem.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"CameraSystem.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/ecs/camera/CameraSystem.js"],"names":[],"mappings":"AAgBA;;;;GAIG;AACH,4DAHW,YAAY,8BAmBtB;AAED;IA+NI;;;;OAIG;IACH,8EAOC;IAED;;;;OAIG;IACH,0DAFa;QAAC,SAAS,EAAC,CAAC,MAAM,GAAC,SAAS,CAAC,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAC,CAc1D;IAED;;;;OAIG;IACH,uEAFoB,YAAY,EAAE,gBAqBjC;IAvRD;;;;OAIG;IACH,sCAmDC;IAhDG,WAA2B;IAE3B,mDAAuC;IAEvC,8DAEC;IAQD;;OAEG;IACH,yBAAwB;IAExB,kBAAoB;IAKpB;;;;;OAKG;IACH,+BAeC;IAED,sBAAwB;IAI5B;;;;;OAKG;IACH,aAHW,MAAM,aADN,SAAS,uBAyEnB;IAED;;;;;OAKG;IACH,eAHW,MAAM,aADN,SAAS,uBAiBnB;IAED,0EAqDC;IAED,2EAQC;CA4DJ;uBAtTsB,aAAa;uBALb,wBAAwB;0BACrB,qCAAqC;4CAFnB,uDAAuD;wCAJ1D,OAAO"}
|