@woosh/meep-engine 2.117.36 → 2.117.38
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 +5 -1
- package/build/meep.module.js +5 -1
- package/package.json +1 -1
- package/src/core/geom/3d/Ray3.js +2 -2
- package/src/core/geom/3d/frustum/frustum_matrix4_project.d.ts +10 -0
- package/src/core/geom/3d/frustum/frustum_matrix4_project.d.ts.map +1 -0
- package/src/core/geom/3d/frustum/frustum_matrix4_project.js +43 -0
- package/src/core/geom/3d/frustum/slice_frustum_linear_to_points.d.ts.map +1 -1
- package/src/core/geom/3d/frustum/slice_frustum_linear_to_points.js +5 -1
- package/src/core/geom/3d/plane/plane3_matrix4_project.d.ts +12 -0
- package/src/core/geom/3d/plane/plane3_matrix4_project.d.ts.map +1 -0
- package/src/core/geom/3d/plane/plane3_matrix4_project.js +33 -0
- package/src/core/geom/vec3/v3_array_matrix4_rotate.d.ts +11 -0
- package/src/core/geom/vec3/v3_array_matrix4_rotate.d.ts.map +1 -0
- package/src/core/geom/vec3/v3_array_matrix4_rotate.js +22 -0
- package/src/core/geom/vec3/v3_matrix4_rotate.d.ts +4 -3
- package/src/core/geom/vec3/v3_matrix4_rotate.d.ts.map +1 -1
- package/src/core/geom/vec3/v3_matrix4_rotate.js +6 -7
- package/src/core/geom/vec3/v3_multiply_scalar.d.ts +11 -0
- package/src/core/geom/vec3/v3_multiply_scalar.d.ts.map +1 -0
- package/src/core/geom/vec3/v3_multiply_scalar.js +19 -0
- package/src/engine/graphics/geometry/buffered/geometry_compute_vertex_normals_unindexed.d.ts.map +1 -1
- package/src/engine/graphics/geometry/buffered/geometry_compute_vertex_normals_unindexed.js +1 -4
- package/src/engine/graphics/sh3/path_tracer/ray_hit_apply_transform.js +2 -2
- package/src/engine/graphics/sh3/path_tracer/texture/sample_material.js +2 -2
package/build/meep.cjs
CHANGED
|
@@ -106777,7 +106777,11 @@ function read_cluster_frustum_corners(output, i_z_0, tr_xy_1, i_y_0, tr_x_1, i_x
|
|
|
106777
106777
|
* @param {number} tr_z slices in Z axis
|
|
106778
106778
|
* @param {number[]} output_frustum_corners
|
|
106779
106779
|
*/
|
|
106780
|
-
function slice_frustum_linear_to_points(
|
|
106780
|
+
function slice_frustum_linear_to_points(
|
|
106781
|
+
input_frustum_corners,
|
|
106782
|
+
tr_x, tr_y, tr_z,
|
|
106783
|
+
output_frustum_corners
|
|
106784
|
+
) {
|
|
106781
106785
|
// read out view frustum scratch_corners
|
|
106782
106786
|
const x_000 = input_frustum_corners[0];
|
|
106783
106787
|
const y_000 = input_frustum_corners[1];
|
package/build/meep.module.js
CHANGED
|
@@ -106775,7 +106775,11 @@ function read_cluster_frustum_corners(output, i_z_0, tr_xy_1, i_y_0, tr_x_1, i_x
|
|
|
106775
106775
|
* @param {number} tr_z slices in Z axis
|
|
106776
106776
|
* @param {number[]} output_frustum_corners
|
|
106777
106777
|
*/
|
|
106778
|
-
function slice_frustum_linear_to_points(
|
|
106778
|
+
function slice_frustum_linear_to_points(
|
|
106779
|
+
input_frustum_corners,
|
|
106780
|
+
tr_x, tr_y, tr_z,
|
|
106781
|
+
output_frustum_corners
|
|
106782
|
+
) {
|
|
106779
106783
|
// read out view frustum scratch_corners
|
|
106780
106784
|
const x_000 = input_frustum_corners[0];
|
|
106781
106785
|
const y_000 = input_frustum_corners[1];
|
package/package.json
CHANGED
package/src/core/geom/3d/Ray3.js
CHANGED
|
@@ -2,9 +2,9 @@ import { assert } from "../../assert.js";
|
|
|
2
2
|
import { array_copy } from "../../collection/array/array_copy.js";
|
|
3
3
|
import { array_range_equal_strict } from "../../collection/array/array_range_equal_strict.js";
|
|
4
4
|
import { computeHashFloatArray } from "../../math/hash/computeHashFloatArray.js";
|
|
5
|
+
import { v3_array_matrix4_rotate } from "../vec3/v3_array_matrix4_rotate.js";
|
|
5
6
|
import { v3_array_normalize } from "../vec3/v3_array_normalize.js";
|
|
6
7
|
import { v3_matrix4_multiply } from "../vec3/v3_matrix4_multiply.js";
|
|
7
|
-
import { v3_matrix4_rotate } from "../vec3/v3_matrix4_rotate.js";
|
|
8
8
|
import { ray3_interval_array_apply_matrix4 } from "./ray/ray3_interval_array_apply_matrix4.js";
|
|
9
9
|
|
|
10
10
|
/**
|
|
@@ -175,7 +175,7 @@ export class Ray3 extends Float32Array {
|
|
|
175
175
|
|
|
176
176
|
// special case
|
|
177
177
|
v3_matrix4_multiply(this, 0, this, 0, m4);
|
|
178
|
-
|
|
178
|
+
v3_array_matrix4_rotate(this, 3, this, 3, m4);
|
|
179
179
|
|
|
180
180
|
}
|
|
181
181
|
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Perform affine transform on a given frustum
|
|
3
|
+
* @param {number[]|Float32Array|Float64Array} output
|
|
4
|
+
* @param {number} output_offset
|
|
5
|
+
* @param {number[]|Float32Array|Float64Array} input
|
|
6
|
+
* @param {number} input_offset
|
|
7
|
+
* @param {number[]|Float32Array|Float64Array} matrix4
|
|
8
|
+
*/
|
|
9
|
+
export function frustum_matrix4_project(output: number[] | Float32Array | Float64Array, output_offset: number, input: number[] | Float32Array | Float64Array, input_offset: number, matrix4: number[] | Float32Array | Float64Array): void;
|
|
10
|
+
//# sourceMappingURL=frustum_matrix4_project.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frustum_matrix4_project.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/3d/frustum/frustum_matrix4_project.js"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AACH,gDANW,MAAM,EAAE,GAAC,YAAY,GAAC,YAAY,iBAClC,MAAM,SACN,MAAM,EAAE,GAAC,YAAY,GAAC,YAAY,gBAClC,MAAM,WACN,MAAM,EAAE,GAAC,YAAY,GAAC,YAAY,QAiC5C"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { assert } from "../../../assert.js";
|
|
2
|
+
import { plane3_matrix4_project } from "../plane/plane3_matrix4_project.js";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Perform affine transform on a given frustum
|
|
6
|
+
* @param {number[]|Float32Array|Float64Array} output
|
|
7
|
+
* @param {number} output_offset
|
|
8
|
+
* @param {number[]|Float32Array|Float64Array} input
|
|
9
|
+
* @param {number} input_offset
|
|
10
|
+
* @param {number[]|Float32Array|Float64Array} matrix4
|
|
11
|
+
*/
|
|
12
|
+
export function frustum_matrix4_project(
|
|
13
|
+
output, output_offset,
|
|
14
|
+
input, input_offset,
|
|
15
|
+
matrix4
|
|
16
|
+
) {
|
|
17
|
+
assert.isArrayLike(output, 'output');
|
|
18
|
+
assert.isNonNegativeInteger(output_offset, "output_offset");
|
|
19
|
+
|
|
20
|
+
assert.isArrayLike(input, 'input');
|
|
21
|
+
assert.greaterThanOrEqual(input.length, input_offset + 24, 'input too small');
|
|
22
|
+
assert.isNonNegativeInteger(input_offset, "input_offset");
|
|
23
|
+
|
|
24
|
+
assert.isArrayLike(matrix4, 'matrix4');
|
|
25
|
+
|
|
26
|
+
for (let plane_index = 0; plane_index < 6; plane_index++) {
|
|
27
|
+
const frustum_offset = plane_index * 4;
|
|
28
|
+
|
|
29
|
+
const i = input_offset + frustum_offset;
|
|
30
|
+
const o = output_offset + frustum_offset;
|
|
31
|
+
|
|
32
|
+
plane3_matrix4_project(
|
|
33
|
+
output, o,
|
|
34
|
+
matrix4,
|
|
35
|
+
input[i],
|
|
36
|
+
input[i + 1],
|
|
37
|
+
input[i + 2],
|
|
38
|
+
input[i + 3],
|
|
39
|
+
);
|
|
40
|
+
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slice_frustum_linear_to_points.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/3d/frustum/slice_frustum_linear_to_points.js"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,sEANW,MAAM,EAAE,QACR,MAAM,QACN,MAAM,QACN,MAAM,0BACN,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"slice_frustum_linear_to_points.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/3d/frustum/slice_frustum_linear_to_points.js"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,sEANW,MAAM,EAAE,QACR,MAAM,QACN,MAAM,QACN,MAAM,0BACN,MAAM,EAAE,QAyFlB"}
|
|
@@ -6,7 +6,11 @@
|
|
|
6
6
|
* @param {number} tr_z slices in Z axis
|
|
7
7
|
* @param {number[]} output_frustum_corners
|
|
8
8
|
*/
|
|
9
|
-
export function slice_frustum_linear_to_points(
|
|
9
|
+
export function slice_frustum_linear_to_points(
|
|
10
|
+
input_frustum_corners,
|
|
11
|
+
tr_x, tr_y, tr_z,
|
|
12
|
+
output_frustum_corners
|
|
13
|
+
) {
|
|
10
14
|
// read out view frustum scratch_corners
|
|
11
15
|
const x_000 = input_frustum_corners[0];
|
|
12
16
|
const y_000 = input_frustum_corners[1];
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
*
|
|
3
|
+
* @param {number[]|Float64Array|Float32Array} destination
|
|
4
|
+
* @param {number} destination_offset
|
|
5
|
+
* @param {number[]|Float32Array|Float64Array} matrix
|
|
6
|
+
* @param {number} x
|
|
7
|
+
* @param {number} y
|
|
8
|
+
* @param {number} z
|
|
9
|
+
* @param {number} w
|
|
10
|
+
*/
|
|
11
|
+
export function plane3_matrix4_project(destination: number[] | Float64Array | Float32Array, destination_offset: number, matrix: number[] | Float32Array | Float64Array, x: number, y: number, z: number, w: number): void;
|
|
12
|
+
//# sourceMappingURL=plane3_matrix4_project.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plane3_matrix4_project.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/3d/plane/plane3_matrix4_project.js"],"names":[],"mappings":"AAOA;;;;;;;;;GASG;AACH,oDARW,MAAM,EAAE,GAAC,YAAY,GAAC,YAAY,sBAClC,MAAM,UACN,MAAM,EAAE,GAAC,YAAY,GAAC,YAAY,KAClC,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,QAiBhB"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { v3_dot_array_array } from "../../vec3/v3_dot_array_array.js";
|
|
2
|
+
import { v3_matrix4_multiply } from "../../vec3/v3_matrix4_multiply.js";
|
|
3
|
+
import { v3_matrix4_rotate } from "../../vec3/v3_matrix4_rotate.js";
|
|
4
|
+
import { v3_multiply_scalar } from "../../vec3/v3_multiply_scalar.js";
|
|
5
|
+
|
|
6
|
+
const scratch_v3_0 = new Float32Array(3);
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
*
|
|
10
|
+
* @param {number[]|Float64Array|Float32Array} destination
|
|
11
|
+
* @param {number} destination_offset
|
|
12
|
+
* @param {number[]|Float32Array|Float64Array} matrix
|
|
13
|
+
* @param {number} x
|
|
14
|
+
* @param {number} y
|
|
15
|
+
* @param {number} z
|
|
16
|
+
* @param {number} w
|
|
17
|
+
*/
|
|
18
|
+
export function plane3_matrix4_project(
|
|
19
|
+
destination, destination_offset,
|
|
20
|
+
matrix,
|
|
21
|
+
x, y, z, w,
|
|
22
|
+
) {
|
|
23
|
+
|
|
24
|
+
// build reference point in the new pane
|
|
25
|
+
v3_multiply_scalar(scratch_v3_0, 0, x, y, z, -w);
|
|
26
|
+
v3_matrix4_multiply(scratch_v3_0, 0, scratch_v3_0, 0, matrix);
|
|
27
|
+
|
|
28
|
+
// construct rotation matrix for the normal
|
|
29
|
+
v3_matrix4_rotate(destination, destination_offset, x, y, z, matrix);
|
|
30
|
+
|
|
31
|
+
// figure out new planar offset using new orientation and a reference point
|
|
32
|
+
destination[destination_offset + 3] = -v3_dot_array_array(scratch_v3_0, 0, destination, destination_offset);
|
|
33
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Perform rotation on a direction vector using 3x3 portion of a 4x4 matrix
|
|
3
|
+
* NOTE: produces a normalized vector
|
|
4
|
+
* @param {number[]|Float32Array} output
|
|
5
|
+
* @param {number} output_offset
|
|
6
|
+
* @param {number[]|Float32Array} input
|
|
7
|
+
* @param {number} input_offset
|
|
8
|
+
* @param {number[]|Float32Array} m4
|
|
9
|
+
*/
|
|
10
|
+
export function v3_array_matrix4_rotate(output: number[] | Float32Array, output_offset: number, input: number[] | Float32Array, input_offset: number, m4: number[] | Float32Array): void;
|
|
11
|
+
//# sourceMappingURL=v3_array_matrix4_rotate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v3_array_matrix4_rotate.d.ts","sourceRoot":"","sources":["../../../../../src/core/geom/vec3/v3_array_matrix4_rotate.js"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,gDANW,MAAM,EAAE,GAAC,YAAY,iBACrB,MAAM,SACN,MAAM,EAAE,GAAC,YAAY,gBACrB,MAAM,MACN,MAAM,EAAE,GAAC,YAAY,QAY/B"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { v3_matrix4_rotate } from "./v3_matrix4_rotate.js";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Perform rotation on a direction vector using 3x3 portion of a 4x4 matrix
|
|
5
|
+
* NOTE: produces a normalized vector
|
|
6
|
+
* @param {number[]|Float32Array} output
|
|
7
|
+
* @param {number} output_offset
|
|
8
|
+
* @param {number[]|Float32Array} input
|
|
9
|
+
* @param {number} input_offset
|
|
10
|
+
* @param {number[]|Float32Array} m4
|
|
11
|
+
*/
|
|
12
|
+
export function v3_array_matrix4_rotate(
|
|
13
|
+
output, output_offset,
|
|
14
|
+
input, input_offset,
|
|
15
|
+
m4
|
|
16
|
+
) {
|
|
17
|
+
const x = input[input_offset];
|
|
18
|
+
const y = input[input_offset + 1];
|
|
19
|
+
const z = input[input_offset + 2];
|
|
20
|
+
|
|
21
|
+
v3_matrix4_rotate(output,output_offset,x,y,z,m4);
|
|
22
|
+
}
|
|
@@ -2,9 +2,10 @@
|
|
|
2
2
|
* Perform rotation on a direction vector using 3x3 portion of a 4x4 matrix
|
|
3
3
|
* @param {number[]|Float32Array} output
|
|
4
4
|
* @param {number} output_offset
|
|
5
|
-
* @param {number
|
|
6
|
-
* @param {number}
|
|
5
|
+
* @param {number} x
|
|
6
|
+
* @param {number} y
|
|
7
|
+
* @param {number} z
|
|
7
8
|
* @param {number[]|Float32Array} m4
|
|
8
9
|
*/
|
|
9
|
-
export function v3_matrix4_rotate(output: number[] | Float32Array, output_offset: number,
|
|
10
|
+
export function v3_matrix4_rotate(output: number[] | Float32Array, output_offset: number, x: number, y: number, z: number, m4: number[] | Float32Array): void;
|
|
10
11
|
//# sourceMappingURL=v3_matrix4_rotate.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"v3_matrix4_rotate.d.ts","sourceRoot":"","sources":["../../../../../src/core/geom/vec3/v3_matrix4_rotate.js"],"names":[],"mappings":"AAEA
|
|
1
|
+
{"version":3,"file":"v3_matrix4_rotate.d.ts","sourceRoot":"","sources":["../../../../../src/core/geom/vec3/v3_matrix4_rotate.js"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,0CAPW,MAAM,EAAE,GAAC,YAAY,iBACrB,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,MACN,MAAM,EAAE,GAAC,YAAY,QAkB/B"}
|
|
@@ -4,26 +4,25 @@ import { v3_length } from "./v3_length.js";
|
|
|
4
4
|
* Perform rotation on a direction vector using 3x3 portion of a 4x4 matrix
|
|
5
5
|
* @param {number[]|Float32Array} output
|
|
6
6
|
* @param {number} output_offset
|
|
7
|
-
* @param {number
|
|
8
|
-
* @param {number}
|
|
7
|
+
* @param {number} x
|
|
8
|
+
* @param {number} y
|
|
9
|
+
* @param {number} z
|
|
9
10
|
* @param {number[]|Float32Array} m4
|
|
10
11
|
*/
|
|
11
12
|
export function v3_matrix4_rotate(
|
|
12
13
|
output, output_offset,
|
|
13
|
-
|
|
14
|
+
x, y, z,
|
|
14
15
|
m4
|
|
15
16
|
) {
|
|
16
|
-
const x = input[input_offset];
|
|
17
|
-
const y = input[input_offset + 1];
|
|
18
|
-
const z = input[input_offset + 2];
|
|
19
17
|
|
|
20
18
|
const _x = m4[0] * x + m4[4] * y + m4[8] * z;
|
|
21
19
|
const _y = m4[1] * x + m4[5] * y + m4[9] * z;
|
|
22
20
|
const _z = m4[2] * x + m4[6] * y + m4[10] * z;
|
|
23
21
|
|
|
22
|
+
// perform normalization
|
|
24
23
|
const norm = 1 / v3_length(_x, _y, _z);
|
|
25
24
|
|
|
26
25
|
output[output_offset] = _x * norm;
|
|
27
26
|
output[output_offset + 1] = _y * norm;
|
|
28
27
|
output[output_offset + 2] = _z * norm;
|
|
29
|
-
}
|
|
28
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
*
|
|
3
|
+
* @param {number[]|Float64Array|Float32Array} result
|
|
4
|
+
* @param {number} result_offset
|
|
5
|
+
* @param {number} x
|
|
6
|
+
* @param {number} y
|
|
7
|
+
* @param {number} z
|
|
8
|
+
* @param {number} scalar
|
|
9
|
+
*/
|
|
10
|
+
export function v3_multiply_scalar(result: number[] | Float64Array | Float32Array, result_offset: number, x: number, y: number, z: number, scalar: number): void;
|
|
11
|
+
//# sourceMappingURL=v3_multiply_scalar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v3_multiply_scalar.d.ts","sourceRoot":"","sources":["../../../../../src/core/geom/vec3/v3_multiply_scalar.js"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,2CAPW,MAAM,EAAE,GAAC,YAAY,GAAC,YAAY,iBAClC,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,UACN,MAAM,QAWhB"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
*
|
|
3
|
+
* @param {number[]|Float64Array|Float32Array} result
|
|
4
|
+
* @param {number} result_offset
|
|
5
|
+
* @param {number} x
|
|
6
|
+
* @param {number} y
|
|
7
|
+
* @param {number} z
|
|
8
|
+
* @param {number} scalar
|
|
9
|
+
*/
|
|
10
|
+
export function v3_multiply_scalar(
|
|
11
|
+
result, result_offset,
|
|
12
|
+
x, y, z, scalar
|
|
13
|
+
) {
|
|
14
|
+
|
|
15
|
+
result[result_offset] = x * scalar;
|
|
16
|
+
result[result_offset + 1] = y * scalar;
|
|
17
|
+
result[result_offset + 2] = z * scalar;
|
|
18
|
+
|
|
19
|
+
}
|
package/src/engine/graphics/geometry/buffered/geometry_compute_vertex_normals_unindexed.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"geometry_compute_vertex_normals_unindexed.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/geometry/buffered/geometry_compute_vertex_normals_unindexed.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"geometry_compute_vertex_normals_unindexed.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/geometry/buffered/geometry_compute_vertex_normals_unindexed.js"],"names":[],"mappings":"AAKA;;;;GAIG;AACH,qEAJW,MAAO,MAAM,CAAC,GAAC,YAAY,WAC3B,MAAO,MAAM,CAAC,GAAC,YAAY,gBAC3B,MAAM,QA8BhB"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { array_copy } from "../../../../core/collection/array/array_copy.js";
|
|
2
2
|
import { geometry_construct_triangle_normal } from "../geometry_construct_triangle_normal.js";
|
|
3
|
-
import { v3_array_normalize_many } from "./v3_array_normalize_many.js";
|
|
4
3
|
|
|
5
4
|
const scratch_v3 = new Float64Array(3);
|
|
6
5
|
|
|
@@ -36,7 +35,5 @@ export function geometry_compute_vertex_normals_unindexed(
|
|
|
36
35
|
|
|
37
36
|
}
|
|
38
37
|
|
|
39
|
-
//
|
|
40
|
-
|
|
41
|
-
v3_array_normalize_many(normals);
|
|
38
|
+
// no need to normalize, that's already handled during normal construction for each triangle
|
|
42
39
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { v3_array_matrix4_rotate } from "../../../../core/geom/vec3/v3_array_matrix4_rotate.js";
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
/**
|
|
@@ -26,6 +26,6 @@ export function ray_hit_apply_transform(output, hit, m) {
|
|
|
26
26
|
output[2] = result_p_z;
|
|
27
27
|
|
|
28
28
|
// transform normal
|
|
29
|
-
|
|
29
|
+
v3_array_matrix4_rotate(output, 3, hit, 3, m);
|
|
30
30
|
|
|
31
31
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { vec3 } from "gl-matrix";
|
|
2
2
|
import { dataTypeFromTypedArray } from "../../../../../core/binary/type/dataTypeFromTypedArray.js";
|
|
3
|
+
import { v3_array_matrix4_rotate } from "../../../../../core/geom/vec3/v3_array_matrix4_rotate.js";
|
|
3
4
|
import { v3_distance_sqr } from "../../../../../core/geom/vec3/v3_distance_sqr.js";
|
|
4
|
-
import { v3_matrix4_rotate } from "../../../../../core/geom/vec3/v3_matrix4_rotate.js";
|
|
5
5
|
import { decode_attribute_value } from "../../../geometry/decode_attribute_value.js";
|
|
6
6
|
import { geometry_construct_triangle_normal } from "../../../geometry/geometry_construct_triangle_normal.js";
|
|
7
7
|
import { sample_triangle_attribute } from "../geometry/sample_triangle_attribute.js";
|
|
@@ -86,7 +86,7 @@ export function sample_material(
|
|
|
86
86
|
}
|
|
87
87
|
|
|
88
88
|
// apply transform
|
|
89
|
-
|
|
89
|
+
v3_array_matrix4_rotate(out, 3, out, 3, mesh.transform);
|
|
90
90
|
|
|
91
91
|
material.normal.sample(normal, texture_uv[0], texture_uv[1]);
|
|
92
92
|
|