@woosh/meep-engine 2.109.3 → 2.109.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/build/meep.cjs +109 -14
  2. package/build/meep.min.js +1 -1
  3. package/build/meep.module.js +109 -14
  4. package/package.json +1 -1
  5. package/src/core/collection/queue/Deque.d.ts.map +1 -1
  6. package/src/core/collection/queue/Deque.js +52 -1
  7. package/src/core/collection/queue/Deque.spec.js +29 -0
  8. package/src/core/geom/3d/Ray3.d.ts +23 -10
  9. package/src/core/geom/3d/Ray3.d.ts.map +1 -1
  10. package/src/core/geom/3d/Ray3.js +59 -20
  11. package/src/core/geom/3d/ray/ray3_interval_array_apply_matrix4.d.ts +2 -2
  12. package/src/core/geom/3d/ray/ray3_interval_array_apply_matrix4.d.ts.map +1 -1
  13. package/src/core/geom/3d/ray/ray3_interval_array_apply_matrix4.js +42 -27
  14. package/src/core/geom/3d/tetrahedra/triangle/prototype.js +0 -2
  15. package/src/core/geom/3d/tetrahedra/triangle/trace_triangular_depth_map.d.ts.map +1 -1
  16. package/src/core/geom/3d/tetrahedra/triangle/trace_triangular_depth_map.js +5 -2
  17. package/src/core/geom/vec3/v3_matrix4_rotate.d.ts +10 -0
  18. package/src/core/geom/vec3/v3_matrix4_rotate.d.ts.map +1 -0
  19. package/src/core/geom/vec3/v3_matrix4_rotate.js +27 -0
  20. package/src/core/model/node-graph/node/NodeDescription.d.ts.map +1 -1
  21. package/src/core/model/node-graph/node/NodeDescription.js +23 -0
  22. package/src/engine/graphics/sh3/lpv/PathTracerProbeRenderer.d.ts +1 -0
  23. package/src/engine/graphics/sh3/lpv/PathTracerProbeRenderer.d.ts.map +1 -1
  24. package/src/engine/graphics/sh3/lpv/PathTracerProbeRenderer.js +5 -3
  25. package/src/engine/graphics/sh3/lpv/sh3_bake_depth.d.ts.map +1 -1
  26. package/src/engine/graphics/sh3/lpv/sh3_bake_depth.js +2 -1
  27. package/src/engine/graphics/sh3/path_tracer/BufferedGeometryBVH.d.ts +9 -4
  28. package/src/engine/graphics/sh3/path_tracer/BufferedGeometryBVH.d.ts.map +1 -1
  29. package/src/engine/graphics/sh3/path_tracer/BufferedGeometryBVH.js +61 -6
  30. package/src/engine/graphics/sh3/path_tracer/PathTracedMesh.d.ts +11 -4
  31. package/src/engine/graphics/sh3/path_tracer/PathTracedMesh.d.ts.map +1 -1
  32. package/src/engine/graphics/sh3/path_tracer/PathTracedMesh.js +28 -36
  33. package/src/engine/graphics/sh3/path_tracer/PathTracedScene.d.ts +17 -8
  34. package/src/engine/graphics/sh3/path_tracer/PathTracedScene.d.ts.map +1 -1
  35. package/src/engine/graphics/sh3/path_tracer/PathTracedScene.js +83 -44
  36. package/src/engine/graphics/sh3/path_tracer/PathTracer.d.ts +3 -3
  37. package/src/engine/graphics/sh3/path_tracer/PathTracer.d.ts.map +1 -1
  38. package/src/engine/graphics/sh3/path_tracer/PathTracer.js +40 -33
  39. package/src/engine/graphics/sh3/path_tracer/material/MaterialConverter.d.ts.map +1 -1
  40. package/src/engine/graphics/sh3/path_tracer/material/MaterialConverter.js +43 -40
  41. package/src/engine/graphics/sh3/path_tracer/material/StandardMaterial.d.ts +14 -0
  42. package/src/engine/graphics/sh3/path_tracer/material/StandardMaterial.d.ts.map +1 -1
  43. package/src/engine/graphics/sh3/path_tracer/material/StandardMaterial.js +34 -1
  44. package/src/engine/graphics/sh3/path_tracer/prepare_scene_gltf.d.ts +21 -0
  45. package/src/engine/graphics/sh3/path_tracer/prepare_scene_gltf.d.ts.map +1 -0
  46. package/src/engine/graphics/sh3/path_tracer/prepare_scene_gltf.js +107 -0
  47. package/src/engine/graphics/sh3/path_tracer/prototypePathTracer.js +22 -122
  48. package/src/engine/graphics/sh3/path_tracer/ray_hit_apply_transform.d.ts +0 -9
  49. package/src/engine/graphics/sh3/path_tracer/ray_hit_apply_transform.d.ts.map +1 -1
  50. package/src/engine/graphics/sh3/path_tracer/ray_hit_apply_transform.js +2 -28
  51. package/src/engine/graphics/sh3/path_tracer/sampling/getBiasedNormalSample.d.ts +0 -9
  52. package/src/engine/graphics/sh3/path_tracer/sampling/getBiasedNormalSample.d.ts.map +1 -1
  53. package/src/engine/graphics/sh3/path_tracer/sampling/getBiasedNormalSample.js +0 -39
  54. package/src/engine/graphics/sh3/path_tracer/sampling/getCosineDirection.d.ts +10 -0
  55. package/src/engine/graphics/sh3/path_tracer/sampling/getCosineDirection.d.ts.map +1 -0
  56. package/src/engine/graphics/sh3/path_tracer/sampling/getCosineDirection.js +41 -0
  57. package/src/engine/graphics/sh3/path_tracer/sampling/v3_orthonormal_matrix_from_normal.d.ts +10 -0
  58. package/src/engine/graphics/sh3/path_tracer/sampling/v3_orthonormal_matrix_from_normal.d.ts.map +1 -0
  59. package/src/engine/graphics/sh3/path_tracer/sampling/v3_orthonormal_matrix_from_normal.js +45 -0
  60. package/src/engine/graphics/sh3/path_tracer/texture/sample_material.d.ts.map +1 -1
  61. package/src/engine/graphics/sh3/path_tracer/texture/sample_material.js +28 -8
  62. package/src/engine/graphics/sh3/prototypeSH3Probe.js +7 -5
  63. package/src/engine/graphics/texture/sampler/convertTexture2Sampler2D.d.ts.map +1 -1
  64. package/src/engine/graphics/texture/sampler/convertTexture2Sampler2D.js +62 -13
  65. package/src/engine/graphics/three/material/iterate_three_material_textures.d.ts +10 -0
  66. package/src/engine/graphics/three/material/iterate_three_material_textures.d.ts.map +1 -0
  67. package/src/engine/graphics/three/material/iterate_three_material_textures.js +33 -0
  68. package/src/core/math/max4.d.ts +0 -10
  69. package/src/core/math/max4.d.ts.map +0 -1
  70. package/src/core/math/max4.js +0 -24
  71. package/src/core/math/min4.d.ts +0 -10
  72. package/src/core/math/min4.d.ts.map +0 -1
  73. package/src/core/math/min4.js +0 -23
@@ -217,7 +217,9 @@ async function getVolume({
217
217
 
218
218
  const adapter = new LightProbeVolumeSerializationAdapter();
219
219
 
220
- if (await engine.storage.promiseContains(key)) {
220
+ if (await engine.storage.promiseContains(key)
221
+ && false // TODO re-enable
222
+ ) {
221
223
  const data = await engine.storage.promiseLoadBinary(key);
222
224
 
223
225
  console.log(`LPV data size ${number_pretty_print(data.byteLength)} bytes`);
@@ -239,7 +241,7 @@ async function getVolume({
239
241
  engine,
240
242
  ecd,
241
243
  bounds: mesh_bounds,
242
- density: 5000
244
+ density: 500
243
245
  });
244
246
 
245
247
  const buffer = new BinaryBuffer();
@@ -346,8 +348,8 @@ async function main(engine) {
346
348
  sun: sun_color,
347
349
  // sunIntensity: 1.7,
348
350
  sunIntensity: 3,
349
- // sunDirection: new Vector3(0.2, -1, 0.2)
350
- sunDirection: new Vector3(1.2, -1, 0.2)
351
+ sunDirection: new Vector3(0.2, -1, 0.2)
352
+ // sunDirection: new Vector3(1.2, -1, 0.2)
351
353
  })
352
354
 
353
355
  engine.graphics.getRenderer().setClearColor('#1e3441', 1);
@@ -362,7 +364,6 @@ async function main(engine) {
362
364
  // const path = 'data/models/sibenik/2/model.gltf';
363
365
  // const path = 'data/models/vokselia_spawn/model.gltf';
364
366
  // const path = 'data/models/LowPolyTownshipSet/Town_Hall/model.gltf';
365
- // const path = 'data/models/samples/low_poly_classroom/no-glass/model.gltf';
366
367
  // const path = 'data/models/samples/just_a_girl/scene.gltf';
367
368
  // const path = 'data/models/samples/slum_house/scene.gltf';
368
369
  // const path = 'data/models/samples/jack_trigger/scene.gltf';
@@ -378,6 +379,7 @@ async function main(engine) {
378
379
  // const path = 'data/models/samples/gi_box_01/model.glb';
379
380
  // const path = 'data/models/Scans/green_car_wreck/scene.gltf';
380
381
  // const path = 'data/models/pica_pica/pica_pica.gltf';
382
+ // const path = 'data/models/samples/low_poly_classroom/no-glass/model.gltf';
381
383
 
382
384
  const mesh_asset = await engine.assetManager.promise(path, 'model/gltf+json');
383
385
  const gltf = mesh_asset.gltf;
@@ -1 +1 @@
1
- {"version":3,"file":"convertTexture2Sampler2D.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/texture/sampler/convertTexture2Sampler2D.js"],"names":[],"mappings":"AAaA;;;;;;;GAOG;AACH,mEALW,MAAM,WACN,MAAM,UACN,OAAO,GACN,SAAS,CAkGpB;0BA/GyB,gBAAgB"}
1
+ {"version":3,"file":"convertTexture2Sampler2D.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/texture/sampler/convertTexture2Sampler2D.js"],"names":[],"mappings":"AAuEA;;;;;;;GAOG;AACH,mEALW,MAAM,WACN,MAAM,UACN,OAAO,GACN,SAAS,CAyFpB;0BA9JyB,gBAAgB"}
@@ -1,7 +1,9 @@
1
+ import { assert } from "../../../../core/assert.js";
1
2
  import ImageFilter from "../../filter/ImageFilter.js";
2
3
  import { sampler2d_flipY_in_place } from "../../filter/sampler2d_flipY_in_place.js";
3
4
  import CopyShader from "../../postprocess/threejs/shaders/CopyShader.js";
4
5
  import { WebGLRendererPool } from "../../render/RendererPool.js";
6
+ import { canvasDataToSampler } from "../Canvas2Sampler2D.js";
5
7
  import { formatToChannelCount } from "../formatToChannelCount.js";
6
8
  import { sampler2d_scale } from "./resize/sampler2d_scale.js";
7
9
  import { Sampler2D } from "./Sampler2D.js";
@@ -11,6 +13,62 @@ import { sampler2d_ensure_uint8_RGBA } from "./sampler2d_ensure_uint8_RGBA.js";
11
13
  const DEFAULT_TEXTURE_WIDTH = 512;
12
14
  const DEFAULT_TEXTURE_HEIGHT = 512;
13
15
 
16
+ /**
17
+ *
18
+ * @param {THREE.DataTexture} texture
19
+ * @param {number} channel_count
20
+ * @param {number} _width
21
+ * @param {number} _height
22
+ * @returns {Sampler2D}
23
+ */
24
+ function data_texture_to_sampler(texture, channel_count, _width, _height) {
25
+ const source = new Sampler2D(texture.image.data, channel_count, texture.image.width, texture.image.height);
26
+
27
+ let converted = sampler2d_ensure_uint8_RGBA(source);
28
+
29
+ if (converted.width !== _width || converted.height !== _height) {
30
+ const target = Sampler2D.uint8(4, _width, _height);
31
+
32
+ sampler2d_scale(converted, target);
33
+
34
+ converted = target;
35
+ }
36
+ return converted;
37
+ }
38
+
39
+ /**
40
+ *
41
+ * @param {THREE.Texture} texture
42
+ * @param {number} channel_count
43
+ * @param {number} _width
44
+ * @param {number} _height
45
+ * @returns {Sampler2D}
46
+ */
47
+ function html_image_texture_to_sampler(texture, channel_count, _width, _height) {
48
+ /**
49
+ *
50
+ * @type {Image}
51
+ */
52
+ const img = texture.image;
53
+
54
+ assert.isInstanceOf(img, Image, 'texture.image', 'Image');
55
+
56
+ const canvas = document.createElement('canvas');
57
+
58
+ canvas.width = _width;
59
+ canvas.height = _height;
60
+
61
+ const ctx = canvas.getContext('2d');
62
+
63
+ ctx.drawImage(img, 0, 0, img.width, img.height, 0, 0, _width, _height);
64
+
65
+ const result = Sampler2D.uint8(4, _width, _height);
66
+
67
+ canvasDataToSampler(result, ctx);
68
+
69
+ return result;
70
+ }
71
+
14
72
  /**
15
73
  *
16
74
  * @param {Texture} texture
@@ -30,8 +88,6 @@ export function convertTexture2Sampler2D(
30
88
 
31
89
  const channel_count = formatToChannelCount(texture.format);
32
90
 
33
- // TODO take channel count into account
34
-
35
91
  if (_width === undefined || _height === undefined) {
36
92
 
37
93
  //figure out texture size
@@ -70,21 +126,14 @@ export function convertTexture2Sampler2D(
70
126
  if (texture.isDataTexture === true) {
71
127
 
72
128
  // special case
129
+ const converted = data_texture_to_sampler(texture, channel_count, _width, _height);
73
130
 
74
- const source = new Sampler2D(texture.image.data, channel_count, texture.image.width, texture.image.height);
75
-
76
- let converted = sampler2d_ensure_uint8_RGBA(source);
77
-
78
- if (converted.width !== _width || converted.height !== _height) {
79
- const target = Sampler2D.uint8(4, _width, _height);
80
-
81
- sampler2d_scale(converted, target);
131
+ data = converted.data;
82
132
 
83
- converted = target;
84
- }
133
+ } else if (texture.image instanceof Image) {
134
+ const converted = html_image_texture_to_sampler(texture, channel_count, _width, _height);
85
135
 
86
136
  data = converted.data;
87
-
88
137
  } else {
89
138
  const built = WebGLRendererPool.global.use(renderer => {
90
139
 
@@ -0,0 +1,10 @@
1
+ /**
2
+ *
3
+ * @param {THREE.Material} material
4
+ * @returns {Generator<{texture:THREE.Texture, name:string}>}
5
+ */
6
+ export function iterate_three_material_textures(material: THREE.Material): Generator<{
7
+ texture: THREE.Texture;
8
+ name: string;
9
+ }>;
10
+ //# sourceMappingURL=iterate_three_material_textures.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iterate_three_material_textures.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/three/material/iterate_three_material_textures.js"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,0DAHW,MAAM,QAAQ,GACZ,UAAU;IAAC,OAAO,EAAC,MAAM,OAAO,CAAC;IAAC,MAAK,MAAM,CAAA;CAAC,CAAC,CA2B3D"}
@@ -0,0 +1,33 @@
1
+ import { TextureAttachmentsByMaterialType } from "../../../asset/loaders/material/TextureAttachmensByMaterialType.js";
2
+
3
+ /**
4
+ *
5
+ * @param {THREE.Material} material
6
+ * @returns {Generator<{texture:THREE.Texture, name:string}>}
7
+ */
8
+ export function* iterate_three_material_textures(material) {
9
+
10
+ //patch textures
11
+ const materialType = material.type;
12
+
13
+ /**
14
+ *
15
+ * @type {TextureAttachment[]}
16
+ */
17
+ const attachments = TextureAttachmentsByMaterialType[materialType];
18
+
19
+ if (attachments !== undefined) {
20
+
21
+ for (let i = 0; i < attachments.length; i++) {
22
+ const attachment = attachments[i];
23
+
24
+ const texture = attachment.read(material);
25
+
26
+ if (texture === undefined || texture === null) {
27
+ continue;
28
+ }
29
+
30
+ yield { texture, name: attachment.name };
31
+ }
32
+ }
33
+ }
@@ -1,10 +0,0 @@
1
- /**
2
- *
3
- * @param {number} a
4
- * @param {number} b
5
- * @param {number} c
6
- * @param {number} d
7
- * @returns {number}
8
- */
9
- export function max4(a: number, b: number, c: number, d: number): number;
10
- //# sourceMappingURL=max4.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"max4.d.ts","sourceRoot":"","sources":["../../../../src/core/math/max4.js"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,wBANW,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,GACJ,MAAM,CAgBlB"}
@@ -1,24 +0,0 @@
1
- /**
2
- *
3
- * @param {number} a
4
- * @param {number} b
5
- * @param {number} c
6
- * @param {number} d
7
- * @returns {number}
8
- */
9
- export function max4(a, b, c, d) {
10
- let v = a;
11
-
12
- if (b > v) {
13
- v = b;
14
- }
15
- if (c > v) {
16
- v = c;
17
- }
18
- if (d > v) {
19
- v = d;
20
- }
21
-
22
- return v;
23
- }
24
-
@@ -1,10 +0,0 @@
1
- /**
2
- *
3
- * @param {number} a
4
- * @param {number} b
5
- * @param {number} c
6
- * @param {number} d
7
- * @returns {number}
8
- */
9
- export function min4(a: number, b: number, c: number, d: number): number;
10
- //# sourceMappingURL=min4.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"min4.d.ts","sourceRoot":"","sources":["../../../../src/core/math/min4.js"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,wBANW,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,GACJ,MAAM,CAgBlB"}
@@ -1,23 +0,0 @@
1
- /**
2
- *
3
- * @param {number} a
4
- * @param {number} b
5
- * @param {number} c
6
- * @param {number} d
7
- * @returns {number}
8
- */
9
- export function min4(a, b, c, d) {
10
- let v = a;
11
-
12
- if (b < v) {
13
- v = b;
14
- }
15
- if (c < v) {
16
- v = c;
17
- }
18
- if (d < v) {
19
- v = d;
20
- }
21
-
22
- return v;
23
- }