@woosh/meep-engine 2.108.3 → 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.
Files changed (130) hide show
  1. package/build/meep.cjs +91 -60
  2. package/build/meep.min.js +1 -1
  3. package/build/meep.module.js +91 -60
  4. package/package.json +1 -1
  5. package/src/core/assert.d.ts +2 -2
  6. package/src/core/assert.d.ts.map +1 -1
  7. package/src/core/assert.js +1 -1
  8. package/src/core/binary/align_4.spec.d.ts +2 -0
  9. package/src/core/binary/align_4.spec.d.ts.map +1 -0
  10. package/src/core/binary/align_4.spec.js +20 -0
  11. package/src/core/binary/{de_interleave_bits_by_2.d.ts → de_interleave_2_bits.d.ts} +1 -1
  12. package/src/core/binary/de_interleave_2_bits.d.ts.map +1 -0
  13. package/src/core/binary/de_interleave_2_bits.spec.js +1 -1
  14. package/src/core/binary/hex2dec.spec.d.ts +2 -0
  15. package/src/core/binary/hex2dec.spec.d.ts.map +1 -0
  16. package/src/core/binary/hex2dec.spec.js +22 -0
  17. package/src/core/binary/split_by_2.spec.d.ts +2 -0
  18. package/src/core/binary/split_by_2.spec.d.ts.map +1 -0
  19. package/src/core/binary/split_by_2.spec.js +22 -0
  20. package/src/core/bvh2/bvh3/ebvh_build_for_geometry_morton.d.ts +4 -1
  21. package/src/core/bvh2/bvh3/ebvh_build_for_geometry_morton.d.ts.map +1 -1
  22. package/src/core/bvh2/bvh3/ebvh_build_for_geometry_morton.js +16 -7
  23. package/src/core/bvh2/bvh3/ebvh_build_hierarchy.js +1 -1
  24. package/src/core/bvh2/bvh3/query/bvh_query_user_data_ray.d.ts.map +1 -1
  25. package/src/core/bvh2/bvh3/query/bvh_query_user_data_ray.js +12 -7
  26. package/src/core/geom/2d/circle/circle_circumference.d.ts +7 -0
  27. package/src/core/geom/2d/circle/circle_circumference.d.ts.map +1 -0
  28. package/src/core/geom/2d/circle/circle_circumference.js +12 -0
  29. package/src/core/geom/2d/compute_polygon_area_2d.d.ts.map +1 -1
  30. package/src/core/geom/2d/compute_polygon_area_2d.js +6 -4
  31. package/src/core/geom/2d/lt-grid/LooseTightGrid.js +1 -1
  32. package/src/core/geom/2d/triangle2d_get_barycentric.d.ts +2 -2
  33. package/src/core/geom/2d/triangle2d_get_barycentric.js +2 -2
  34. package/src/core/geom/3d/Ray3.d.ts +19 -0
  35. package/src/core/geom/3d/Ray3.d.ts.map +1 -0
  36. package/src/core/geom/3d/Ray3.js +27 -0
  37. package/src/core/geom/3d/ray/ray3_shift_origin_along_direction.d.ts +10 -0
  38. package/src/core/geom/3d/ray/ray3_shift_origin_along_direction.d.ts.map +1 -0
  39. package/src/core/geom/3d/ray/ray3_shift_origin_along_direction.js +35 -0
  40. package/src/core/geom/3d/sphere/harmonics/compute_legendre_polynomial.d.ts +1 -0
  41. package/src/core/geom/3d/sphere/harmonics/compute_legendre_polynomial.d.ts.map +1 -0
  42. package/src/core/geom/3d/sphere/harmonics/compute_legendre_polynomial.js +0 -0
  43. package/src/core/geom/3d/sphere/harmonics/sh3_convolve_with_cosine_kernel.d.ts +9 -0
  44. package/src/core/geom/3d/sphere/harmonics/sh3_convolve_with_cosine_kernel.d.ts.map +1 -0
  45. package/src/core/geom/3d/sphere/harmonics/sh3_convolve_with_cosine_kernel.js +25 -0
  46. package/src/core/geom/3d/sphere/harmonics/sh3_dering_optimize_positive.d.ts.map +1 -1
  47. package/src/core/geom/3d/sphere/harmonics/sh3_dering_optimize_positive.js +2 -4
  48. package/src/core/geom/3d/sphere/harmonics/sh3_rotate_bl.d.ts +8 -0
  49. package/src/core/geom/3d/sphere/harmonics/sh3_rotate_bl.d.ts.map +1 -0
  50. package/src/core/geom/3d/sphere/harmonics/sh3_rotate_bl.js +94 -0
  51. package/src/core/geom/3d/sphere/harmonics/sh3_rotate_filament.d.ts +8 -0
  52. package/src/core/geom/3d/sphere/harmonics/sh3_rotate_filament.d.ts.map +1 -0
  53. package/src/core/geom/3d/sphere/harmonics/{sh3_rotate.js → sh3_rotate_filament.js} +5 -2
  54. package/src/core/geom/3d/sphere/harmonics/sh_compute_K.d.ts +3 -3
  55. package/src/core/geom/3d/sphere/harmonics/sh_compute_K.js +3 -3
  56. package/src/core/geom/3d/tetrahedra/delaunay/tetrahedral_mesh_build_from_grid.d.ts.map +1 -1
  57. package/src/core/geom/3d/tetrahedra/delaunay/tetrahedral_mesh_build_from_grid.js +29 -14
  58. package/src/core/geom/Quaternion.js +1 -1
  59. package/src/core/geom/vec3/v3_matrix4_multiply.d.ts +10 -0
  60. package/src/core/geom/vec3/v3_matrix4_multiply.d.ts.map +1 -0
  61. package/src/core/geom/vec3/v3_matrix4_multiply.js +27 -0
  62. package/src/core/geom/vec3/v3_shift_along_direction.d.ts +14 -0
  63. package/src/core/geom/vec3/v3_shift_along_direction.d.ts.map +1 -0
  64. package/src/core/geom/vec3/v3_shift_along_direction.js +23 -0
  65. package/src/core/math/compute_legendre_polynomial.d.ts +10 -0
  66. package/src/core/math/compute_legendre_polynomial.d.ts.map +1 -0
  67. package/src/core/math/compute_legendre_polynomial.js +46 -0
  68. package/src/core/math/statistics/softmax.d.ts +11 -0
  69. package/src/core/math/statistics/softmax.d.ts.map +1 -0
  70. package/src/core/math/statistics/softmax.js +24 -0
  71. package/src/core/math/statistics/softmax.spec.d.ts +2 -0
  72. package/src/core/math/statistics/softmax.spec.d.ts.map +1 -0
  73. package/src/core/math/statistics/softmax.spec.js +9 -0
  74. package/src/engine/ecs/transform/Transform.d.ts.map +1 -1
  75. package/src/engine/ecs/transform/Transform.js +19 -4
  76. package/src/engine/graphics/ecs/camera/CameraSystem.d.ts.map +1 -1
  77. package/src/engine/graphics/ecs/camera/CameraSystem.js +25 -13
  78. package/src/engine/graphics/geometry/decode_attribute_value.d.ts +10 -0
  79. package/src/engine/graphics/geometry/decode_attribute_value.d.ts.map +1 -0
  80. package/src/engine/graphics/geometry/decode_attribute_value.js +28 -0
  81. package/src/engine/graphics/geometry/geometry_construct_triangle_normal.d.ts +11 -0
  82. package/src/engine/graphics/geometry/geometry_construct_triangle_normal.d.ts.map +1 -0
  83. package/src/engine/graphics/geometry/geometry_construct_triangle_normal.js +31 -0
  84. package/src/engine/graphics/sh3/lpv/LightProbeVolume.d.ts.map +1 -1
  85. package/src/engine/graphics/sh3/lpv/LightProbeVolume.js +0 -86
  86. package/src/engine/graphics/sh3/lpv/WebGLCubeProbeRenderer.d.ts +1 -0
  87. package/src/engine/graphics/sh3/lpv/WebGLCubeProbeRenderer.d.ts.map +1 -1
  88. package/src/engine/graphics/sh3/lpv/WebGLCubeProbeRenderer.js +6 -2
  89. package/src/engine/graphics/sh3/path_tracer/{GeometryBVHBatched.d.ts → BufferedGeometryBVH.d.ts} +9 -2
  90. package/src/engine/graphics/sh3/path_tracer/BufferedGeometryBVH.d.ts.map +1 -0
  91. package/src/engine/graphics/sh3/path_tracer/{GeometryBVHBatched.js → BufferedGeometryBVH.js} +84 -5
  92. package/src/engine/graphics/sh3/path_tracer/PathTracedMesh.d.ts +6 -4
  93. package/src/engine/graphics/sh3/path_tracer/PathTracedMesh.d.ts.map +1 -1
  94. package/src/engine/graphics/sh3/path_tracer/PathTracedMesh.js +54 -8
  95. package/src/engine/graphics/sh3/path_tracer/PathTracedScene.d.ts +6 -10
  96. package/src/engine/graphics/sh3/path_tracer/PathTracedScene.d.ts.map +1 -1
  97. package/src/engine/graphics/sh3/path_tracer/PathTracedScene.js +41 -47
  98. package/src/engine/graphics/sh3/path_tracer/material/MaterialConverter.d.ts +11 -0
  99. package/src/engine/graphics/sh3/path_tracer/material/MaterialConverter.d.ts.map +1 -0
  100. package/src/engine/graphics/sh3/path_tracer/material/MaterialConverter.js +102 -0
  101. package/src/engine/graphics/sh3/path_tracer/material/StandardMaterial.d.ts +9 -0
  102. package/src/engine/graphics/sh3/path_tracer/material/StandardMaterial.d.ts.map +1 -0
  103. package/src/engine/graphics/sh3/path_tracer/material/StandardMaterial.js +17 -0
  104. package/src/engine/graphics/sh3/path_tracer/material/StandardTexture.d.ts +31 -0
  105. package/src/engine/graphics/sh3/path_tracer/material/StandardTexture.d.ts.map +1 -0
  106. package/src/engine/graphics/sh3/path_tracer/material/StandardTexture.js +85 -0
  107. package/src/engine/graphics/sh3/path_tracer/material/TextureFilter.d.ts +14 -0
  108. package/src/engine/graphics/sh3/path_tracer/material/TextureFilter.d.ts.map +1 -0
  109. package/src/engine/graphics/sh3/path_tracer/material/TextureFilter.js +17 -0
  110. package/src/engine/graphics/sh3/path_tracer/material/TextureWrapping.d.ts +7 -0
  111. package/src/engine/graphics/sh3/path_tracer/material/TextureWrapping.d.ts.map +1 -0
  112. package/src/engine/graphics/sh3/path_tracer/material/TextureWrapping.js +9 -0
  113. package/src/engine/graphics/sh3/path_tracer/prototypePathTracer.js +104 -9
  114. package/src/engine/graphics/sh3/path_tracer/texture/sample_material.d.ts +1 -2
  115. package/src/engine/graphics/sh3/path_tracer/texture/sample_material.d.ts.map +1 -1
  116. package/src/engine/graphics/sh3/path_tracer/texture/sample_material.js +50 -23
  117. package/src/engine/graphics/sh3/prototypeSH3Probe.js +62 -28
  118. package/src/engine/graphics/texture/formatToChannelCount.d.ts.map +1 -1
  119. package/src/engine/graphics/texture/formatToChannelCount.js +8 -1
  120. package/src/engine/graphics/texture/sampler/one_pixel_sampler_uint8.d.ts +8 -0
  121. package/src/engine/graphics/texture/sampler/one_pixel_sampler_uint8.d.ts.map +1 -0
  122. package/src/engine/graphics/texture/sampler/one_pixel_sampler_uint8.js +10 -0
  123. package/src/engine/graphics/texture/sampler/sampler_multiply_vector.d.ts +8 -0
  124. package/src/engine/graphics/texture/sampler/sampler_multiply_vector.d.ts.map +1 -0
  125. package/src/engine/graphics/texture/sampler/sampler_multiply_vector.js +23 -0
  126. package/src/core/binary/de_interleave_bits_by_2.d.ts.map +0 -1
  127. package/src/core/geom/3d/sphere/harmonics/sh3_rotate.d.ts +0 -8
  128. package/src/core/geom/3d/sphere/harmonics/sh3_rotate.d.ts.map +0 -1
  129. package/src/engine/graphics/sh3/path_tracer/GeometryBVHBatched.d.ts.map +0 -1
  130. /package/src/core/binary/{de_interleave_bits_by_2.js → de_interleave_2_bits.js} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"softmax.spec.d.ts","sourceRoot":"","sources":["../../../../../src/core/math/statistics/softmax.spec.js"],"names":[],"mappings":""}
@@ -0,0 +1,9 @@
1
+ import { softmax } from "./softmax.js";
2
+
3
+ test("1,2,8",()=>{
4
+
5
+ expect(softmax([1,2,8],0,3)).toBeCloseTo(0.001);
6
+ expect(softmax([1,2,8],1,3)).toBeCloseTo(0.002);
7
+ expect(softmax([1,2,8],2,3)).toBeCloseTo(0.997);
8
+
9
+ });
@@ -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;IAqDD;;;;;OAKG;IACH,wCAJW,UAAU,gBACV,OAAO,wBAajB;IAtVD;;;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;IAeD;;;;OAIG;IACH,sBAHW,SAAS,KACT,SAAS,QAMnB;IAED;;;OAGG;IACH,eAFW,OAAK,MAAM,EAAE,GAAC,YAAY,QAcpC;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;;oBAhXI,+BAA+B;uBAD5B,kCAAkC;+BAE1B,qBAAqB"}
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} m
330
+ * @param {mat4|number[]|Float32Array} matrix
318
331
  */
319
- fromMatrix4(m) {
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(m);
340
+ this.matrix.set(matrix);
326
341
 
327
- decompose_matrix_4_array(m, this.position, this.rotation, this.scale);
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":"AAeA;IA2OI;;;;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;IAnSD;;;;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,uBAqFnB;IAED;;;;;OAKG;IACH,eAHW,MAAM,aADN,SAAS,uBAiBnB;IAED,0EAqDC;IAED,2EAQC;CA4DJ;uBA/SsB,wBAAwB;0BACrB,qCAAqC;uBAGxC,aAAa;4CALQ,uDAAuD;wCAJ1D,OAAO"}
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"}
@@ -5,6 +5,7 @@ import { ResourceAccessKind } from "../../../../core/model/ResourceAccessKind.js
5
5
  import { ResourceAccessSpecification } from "../../../../core/model/ResourceAccessSpecification.js";
6
6
  import { System } from '../../../ecs/System.js';
7
7
  import { Transform } from '../../../ecs/transform/Transform.js';
8
+ import { threeUpdateTransform } from "../../util/threeUpdateTransform.js";
8
9
  import { auto_set_camera_clipping_planes } from "./auto_set_camera_clipping_planes.js";
9
10
  import { build_three_camera_object } from "./build_three_camera_object.js";
10
11
  import { Camera } from './Camera.js';
@@ -13,6 +14,29 @@ import { invertQuaternionOrientation } from "./InvertQuaternionOrientation.js";
13
14
  import { set_camera_aspect_ratio } from "./set_camera_aspect_ratio.js";
14
15
  import { update_camera_transform } from "./update_camera_transform.js";
15
16
 
17
+ /**
18
+ *
19
+ * @param {THREE.Camera} object
20
+ * @param {Quaternion} rotation
21
+ */
22
+ export function three_camera_set_transform_rotation(object, rotation) {
23
+
24
+ /*
25
+ NOTE: I'm not sure why, but three.js camera points in the opposite direction to normal objects
26
+ See: https://github.com/mrdoob/three.js/blob/412b99a7f26e117ea97f40eb53d010ab81aa3279/src/core/Object3D.js#L282
27
+ */
28
+
29
+ invertQuaternionOrientation(object.quaternion, rotation);
30
+
31
+ object.rotation.setFromQuaternion(object.quaternion);
32
+
33
+ // rotation.__setThreeEuler(camera.object.rotation); // seems unnecessary, based on Object3D.lookAt implementation
34
+ // camera.object.quaternion.set(rotation.x, rotation.y, rotation.z, rotation.w);
35
+
36
+ object.updateProjectionMatrix();
37
+ threeUpdateTransform(object);
38
+ }
39
+
16
40
  export class CameraSystem extends System {
17
41
  /**
18
42
  *
@@ -104,19 +128,7 @@ export class CameraSystem extends System {
104
128
  function synchronizeRotation() {
105
129
  const rotation = transform.rotation;
106
130
 
107
- /*
108
- NOTE: I'm not sure why, but three.js camera points in the opposite direction to normal objects
109
- See: https://github.com/mrdoob/three.js/blob/412b99a7f26e117ea97f40eb53d010ab81aa3279/src/core/Object3D.js#L282
110
- */
111
-
112
- invertQuaternionOrientation(camera.object.quaternion, rotation);
113
-
114
- camera.object.rotation.setFromQuaternion(camera.object.quaternion);
115
-
116
- // rotation.__setThreeEuler(camera.object.rotation); // seems unnecessary, based on Object3D.lookAt implementation
117
- // camera.object.quaternion.set(rotation.x, rotation.y, rotation.z, rotation.w);
118
-
119
- update_camera_transform(camera);
131
+ three_camera_set_transform_rotation(camera.object, rotation);
120
132
  }
121
133
 
122
134
  function rebuild() {
@@ -0,0 +1,10 @@
1
+ /**
2
+ *
3
+ * @param {number} input
4
+ * @param {BinaryDataType} raw_type
5
+ * @param {boolean} normalized
6
+ * @returns {number}
7
+ */
8
+ export function decode_attribute_value(input: number, raw_type: BinaryDataType, normalized: boolean): number;
9
+ import { BinaryDataType } from "../../../core/binary/type/BinaryDataType.js";
10
+ //# sourceMappingURL=decode_attribute_value.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decode_attribute_value.d.ts","sourceRoot":"","sources":["../../../../../src/engine/graphics/geometry/decode_attribute_value.js"],"names":[],"mappings":"AAIA;;;;;;GAMG;AACH,8CALW,MAAM,YACN,cAAc,cACd,OAAO,GACL,MAAM,CAkBlB;+BA3B8B,6CAA6C"}
@@ -0,0 +1,28 @@
1
+ import { BinaryDataType } from "../../../core/binary/type/BinaryDataType.js";
2
+ import { UINT16_MAX } from "../../../core/binary/UINT16_MAX.js";
3
+ import { UINT32_MAX } from "../../../core/binary/UINT32_MAX.js";
4
+
5
+ /**
6
+ *
7
+ * @param {number} input
8
+ * @param {BinaryDataType} raw_type
9
+ * @param {boolean} normalized
10
+ * @returns {number}
11
+ */
12
+ export function decode_attribute_value(input, raw_type, normalized) {
13
+ if (!normalized) {
14
+ return input;
15
+ }
16
+
17
+ switch (raw_type) {
18
+ case BinaryDataType.Float32:
19
+ case BinaryDataType.Float64:
20
+ return input;
21
+ case BinaryDataType.Uint16:
22
+ return input / UINT16_MAX;
23
+ case BinaryDataType.Uint32:
24
+ return input / UINT32_MAX;
25
+ default:
26
+ throw new Error(`Unsupported data type ${raw_type}`);
27
+ }
28
+ }
@@ -0,0 +1,11 @@
1
+ /**
2
+ *
3
+ * @param {number[]|Float32Array} out
4
+ * @param {number} out_offset
5
+ * @param {number} a
6
+ * @param {number} b
7
+ * @param {number} c
8
+ * @param {number[]|Float32Array} positions
9
+ */
10
+ export function geometry_construct_triangle_normal(out: number[] | Float32Array, out_offset: number, a: number, b: number, c: number, positions: number[] | Float32Array): void;
11
+ //# sourceMappingURL=geometry_construct_triangle_normal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"geometry_construct_triangle_normal.d.ts","sourceRoot":"","sources":["../../../../../src/engine/graphics/geometry/geometry_construct_triangle_normal.js"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,wDAPW,MAAM,EAAE,GAAC,YAAY,cACrB,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,aACN,MAAM,EAAE,GAAC,YAAY,QAqB/B"}
@@ -0,0 +1,31 @@
1
+ import { v3_compute_triangle_normal } from "../../../core/geom/3d/v3_compute_triangle_normal.js";
2
+
3
+ /**
4
+ *
5
+ * @param {number[]|Float32Array} out
6
+ * @param {number} out_offset
7
+ * @param {number} a
8
+ * @param {number} b
9
+ * @param {number} c
10
+ * @param {number[]|Float32Array} positions
11
+ */
12
+ export function geometry_construct_triangle_normal(out, out_offset, a, b, c, positions) {
13
+
14
+ const a_address = a * 3;
15
+ const b_address = b * 3;
16
+ const c_address = c * 3;
17
+
18
+ const ax = positions[a_address];
19
+ const ay = positions[a_address + 1];
20
+ const az = positions[a_address + 2];
21
+
22
+ const bx = positions[b_address];
23
+ const by = positions[b_address + 1];
24
+ const bz = positions[b_address + 2];
25
+
26
+ const cx = positions[c_address];
27
+ const cy = positions[c_address + 1];
28
+ const cz = positions[c_address + 2];
29
+
30
+ v3_compute_triangle_normal(out, out_offset, ax, ay, az, bx, by, bz, cx, cy, cz);
31
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"LightProbeVolume.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/sh3/lpv/LightProbeVolume.js"],"names":[],"mappings":"AAkJA;IAGI,sBAEC;IAGG,mBAAqB;IAErB,wBAAmC;IAEnC,oBAAsB;IAEtB,iBAAiB;IAGrB,cAQC;IAED;;;OAGG;IACH,4BAEC;IAED,oBAEC;IAED,uBAEC;IAMD,uBAEC;IAND,oBAEC;IAMD;;;;;OAKG;IACH,aAJW,MAAM,KACN,MAAM,KACN,MAAM,QAchB;IAED;;;;;OAKG;IACH,mBAJW,MAAM,UACN,MAAM,EAAE,iBACR,MAAM,QAIhB;IAED;;OAEG;IACH,mBAaC;IAGD;;;;OAIG;IACH,mCAHa,SAAS,CA8CrB;IAED;;;;;OAKG;IACH,sEAWC;IAED;;;;;OAKG;IACH,sEAkBC;IAED;;;;OAIG;IACH,oCAFa,SAAS,CAKrB;;CACJ;gCArV+B,wDAAwD;sBAClE,4CAA4C"}
1
+ {"version":3,"file":"LightProbeVolume.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/sh3/lpv/LightProbeVolume.js"],"names":[],"mappings":"AA4DA;IAGI,sBAEC;IAGG,mBAAqB;IAErB,wBAAmC;IAEnC,oBAAsB;IAEtB,iBAAiB;IAGrB,cAQC;IAED;;;OAGG;IACH,4BAEC;IAED,oBAEC;IAED,uBAEC;IAMD,uBAEC;IAND,oBAEC;IAMD;;;;;OAKG;IACH,aAJW,MAAM,KACN,MAAM,KACN,MAAM,QAchB;IAED;;;;;OAKG;IACH,mBAJW,MAAM,UACN,MAAM,EAAE,iBACR,MAAM,QAIhB;IAED;;OAEG;IACH,mBAaC;IAGD;;;;OAIG;IACH,mCAHa,SAAS,CA8CrB;IAED;;;;;OAKG;IACH,sEAWC;IAED;;;;;OAKG;IACH,sEAkBC;IAED;;;;OAIG;IACH,oCAFa,SAAS,CAKrB;;CACJ;gCAhQ+B,wDAAwD;sBAClE,4CAA4C"}
@@ -1,6 +1,5 @@
1
1
  import { LineBasicMaterial } from "three";
2
2
  import { array_copy } from "../../../../core/collection/array/array_copy.js";
3
- import { SurfacePoint3 } from "../../../../core/geom/3d/SurfacePoint3.js";
4
3
  import {
5
4
  build_tetrahedral_mesh_buffer_geometry
6
5
  } from "../../../../core/geom/3d/tetrahedra/build_tetrahedral_mesh_buffer_geometry.js";
@@ -20,99 +19,14 @@ import { ShadedGeometryFlags } from "../../ecs/mesh-v2/ShadedGeometryFlags.js";
20
19
  import { visualise_spherical_harmonic_sphere } from "../visualise_spherical_harmonic_sphere.js";
21
20
  import { PathTracerProbeRenderer } from "./PathTracerProbeRenderer.js";
22
21
 
23
- const TEMP_CONTACT = new SurfacePoint3();
24
-
25
22
 
26
23
  class Baker {
27
24
  constructor() {
28
- /**
29
- *
30
- * @type {EntityComponentDataset|null}
31
- * @private
32
- */
33
- this.__ecd = null;
34
-
35
- /**
36
- *
37
- * @type {BVH|null}
38
- * @private
39
- */
40
- this.__bvh = null;
41
-
42
- this.__min_bounce_count = 3;
43
- this.__max_bounce_count = 100;
44
25
 
45
26
  // this._ren = new WebGLCubeProbeRenderer();
46
27
  this._ren = new PathTracerProbeRenderer();
47
28
  }
48
29
 
49
- /**
50
- * @param {BVH} bvh
51
- */
52
- set_bvh(bvh) {
53
- this.__bvh = bvh;
54
- }
55
-
56
- build_spatial() {
57
-
58
- }
59
-
60
- /**
61
- *
62
- * @param {number[]} irradiance RGB irradiance result is written here
63
- * @param {number} bounce_count number of reflections before this trace
64
- * @param {number} origin_x
65
- * @param {number} origin_y
66
- * @param {number} origin_z
67
- * @param {number} direction_x
68
- * @param {number} direction_y
69
- * @param {number} direction_z
70
- */
71
- trace_ray(irradiance, bounce_count,
72
- origin_x, origin_y, origin_z,
73
- direction_x, direction_y, direction_z) {
74
-
75
- //
76
-
77
- if (!this.ray_cast(TEMP_CONTACT, origin_x, origin_y, origin_z, direction_x, direction_y, direction_z)) {
78
- // no hit, assume irradiance is zeroed - black
79
-
80
- return;
81
- }
82
-
83
- // record irradiance
84
-
85
- // reflect ray around normal
86
- // TODO apply BDRF to compute reflected ray
87
-
88
- if (bounce_count > this.__max_bounce_count) {
89
- // terminate
90
- }
91
-
92
- }
93
-
94
- /**
95
- *
96
- * @param contact
97
- * @param origin_x
98
- * @param origin_y
99
- * @param origin_z
100
- * @param direction_x
101
- * @param direction_y
102
- * @param direction_z
103
- * @returns {boolean}
104
- */
105
- ray_cast(contact,
106
- origin_x, origin_y, origin_z,
107
- direction_x, direction_y, direction_z
108
- ) {
109
-
110
- }
111
-
112
- prepare_scene() {
113
-
114
- }
115
-
116
30
  /**
117
31
  *
118
32
  * @param {number[]} position
@@ -1,4 +1,5 @@
1
1
  export class WebGLCubeProbeRenderer extends ProbeRenderer {
2
+ constructor(resolution?: number);
2
3
  /**
3
4
  *
4
5
  * @type {THREE.WebGLRenderer|null}
@@ -1 +1 @@
1
- {"version":3,"file":"WebGLCubeProbeRenderer.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/sh3/lpv/WebGLCubeProbeRenderer.js"],"names":[],"mappings":"AAuBA;IAIQ;;;;OAIG;IACH,mBAAsB;IAEtB,qCASE;IAEF;;;;OAIG;IACH,wBAA8F;IAG9F,0BAAiE;IAEjE;;;;OAIG;IACH,gBAA0B;IA8C9B,mBAMC;CA6CJ;8BAxI6B,oBAAoB;sCAZ3C,OAAO;2BAAP,OAAO"}
1
+ {"version":3,"file":"WebGLCubeProbeRenderer.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/sh3/lpv/WebGLCubeProbeRenderer.js"],"names":[],"mappings":"AAwBA;IACI,iCA0CC;IApCG;;;;OAIG;IACH,mBAAsB;IAEtB,qCASE;IAEF;;;;OAIG;IACH,wBAA8F;IAG9F,0BAAiE;IAEjE;;;;OAIG;IACH,gBAA0B;IA8C9B,mBAMC;CA6CJ;8BA3I6B,oBAAoB;sCAb3C,OAAO;2BAAP,OAAO"}
@@ -8,6 +8,7 @@ import {
8
8
  VSMShadowMap,
9
9
  WebGLCubeRenderTarget
10
10
  } from "three";
11
+ import { assert } from "../../../../core/assert.js";
11
12
  import { array_copy } from "../../../../core/collection/array/array_copy.js";
12
13
  import { Transform } from "../../../ecs/transform/Transform.js";
13
14
  import { three_set_shadow_resolution } from "../../ecs/light/binding/three/ThreeLightBinding.js";
@@ -22,9 +23,12 @@ import { fromCubeRenderTarget } from "../fromCubeRenderTarget.js";
22
23
  import { ProbeRenderer } from "./ProbeRenderer.js";
23
24
 
24
25
  export class WebGLCubeProbeRenderer extends ProbeRenderer {
25
- constructor() {
26
+ constructor(resolution = 32) {
26
27
 
27
28
  super();
29
+
30
+ assert.isNonNegativeInteger(resolution, 'resolution');
31
+
28
32
  /**
29
33
  *
30
34
  * @type {THREE.WebGLRenderer|null}
@@ -32,7 +36,7 @@ export class WebGLCubeProbeRenderer extends ProbeRenderer {
32
36
  */
33
37
  this.__renderer = null;
34
38
 
35
- this.render_target = new WebGLCubeRenderTarget(32, {
39
+ this.render_target = new WebGLCubeRenderTarget(resolution, {
36
40
  format: RGBAFormat,
37
41
  minFilter: LinearFilter,
38
42
  magFilter: LinearFilter,
@@ -1,4 +1,9 @@
1
- export class GeometryBVHBatched {
1
+ export class BufferedGeometryBVH {
2
+ /**
3
+ *
4
+ * @param {AABB3|number[]} out
5
+ */
6
+ getBounds(out: AABB3 | number[]): void;
2
7
  /**
3
8
  *
4
9
  * @type {BVH}
@@ -43,5 +48,7 @@ export class GeometryBVHBatched {
43
48
  * @returns {number} distance along the ray, negative if no hit
44
49
  */
45
50
  raycast(output: number[], ray: number[], min_distance: number, max_distance: number): number;
51
+ #private;
46
52
  }
47
- //# sourceMappingURL=GeometryBVHBatched.d.ts.map
53
+ import { AABB3 } from "../../../../core/geom/3d/aabb/AABB3.js";
54
+ //# sourceMappingURL=BufferedGeometryBVH.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BufferedGeometryBVH.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/sh3/path_tracer/BufferedGeometryBVH.js"],"names":[],"mappings":"AA8IA;IAQI;;;OAGG;IACH,eAFW,KAAK,GAAC,MAAM,EAAE,QAIxB;IAGG;;;;OAIG;IACH,cAAsB;IAEtB;;;;OAIG;IACH,mBAAsB;IAEtB;;;;OAIG;IACH,yBAA4B;IAE5B;;;;OAIG;IACH,6BAAgC;IAGhC;;;;OAIG;IACH,yBAAyB;IAG7B;;;OAGG;IACH,gBAFW,MAAM,cAAc,QAiC9B;IAGD;;;;;;;OAOG;IACH,gBANW,MAAM,EAAE,OACR,MAAM,EAAE,gBACR,MAAM,gBACN,MAAM,GACJ,MAAM,CA8ElB;;CACJ;sBAzTqB,wCAAwC"}
@@ -1,22 +1,72 @@
1
+ import { split_by_3 } from "../../../../core/binary/split_by_3.js";
1
2
  import { BVH } from "../../../../core/bvh2/bvh3/BVH.js";
2
3
  import { ebvh_build_for_geometry_morton } from "../../../../core/bvh2/bvh3/ebvh_build_for_geometry_morton.js";
3
4
  import { bvh_query_user_data_ray } from "../../../../core/bvh2/bvh3/query/bvh_query_user_data_ray.js";
5
+ import { array_copy } from "../../../../core/collection/array/array_copy.js";
6
+ import { array_quick_sort_by_comparator } from "../../../../core/collection/array/array_quick_sort_by_comparator.js";
7
+ import { AABB3 } from "../../../../core/geom/3d/aabb/AABB3.js";
4
8
 
5
9
  import {
6
10
  computeTriangleRayIntersectionBarycentricGeometry
7
11
  } from "../../../../core/geom/3d/triangle/computeTriangleRayIntersectionBarycentricGeometry.js";
12
+ import { v3_distance_sqr } from "../../../../core/geom/vec3/v3_distance_sqr.js";
8
13
 
9
14
  /**
10
15
  *
11
- * @type {number[]}
16
+ * @type {number[]|Uint32Array}
12
17
  */
13
- const scratch_uint32_array = [];
18
+ const scratch_uint32_array = new Uint32Array(4096);
14
19
  /**
15
20
  *
16
21
  * @type {number[]}
17
22
  */
18
23
  const v3_scratch_0 = [];
19
24
 
25
+ /**
26
+ *
27
+ * @param {number[]} triangles
28
+ * @param {number} offset
29
+ * @param {number} count
30
+ * @param {number} point_x
31
+ * @param {number} point_y
32
+ * @param {number} point_z
33
+ * @param morton_codes
34
+ * @param bounds
35
+ */
36
+ function sort_triangles_by_distance_to_point(
37
+ triangles, offset, count,
38
+ morton_codes, bounds,
39
+ point_x, point_y, point_z,
40
+ ) {
41
+ const bounds_x0 = bounds.x0;
42
+ const bounds_y0 = bounds.y0;
43
+ const bounds_z0 = bounds.z0;
44
+
45
+ const bounds_scale_x = bounds.getExtentsX() / 1023;
46
+ const bounds_scale_y = bounds.getExtentsY() / 1023;
47
+ const bounds_scale_z = bounds.getExtentsZ() / 1023;
48
+
49
+ array_quick_sort_by_comparator(scratch_uint32_array, (a, b) => {
50
+
51
+ const morton_a = morton_codes[a];
52
+ const morton_b = morton_codes[b];
53
+
54
+ const ax = bounds_x0 + bounds_scale_x * split_by_3(morton_a);
55
+ const ay = bounds_y0 + bounds_scale_y * split_by_3(morton_a >>> 1);
56
+ const az = bounds_z0 + bounds_scale_z * split_by_3(morton_a >>> 2);
57
+
58
+ const bx = bounds_x0 + bounds_scale_x * split_by_3(morton_b);
59
+ const by = bounds_y0 + bounds_scale_y * split_by_3(morton_b >>> 1);
60
+ const bz = bounds_z0 + bounds_scale_z * split_by_3(morton_b >>> 2);
61
+
62
+ const delta_a = v3_distance_sqr(ax, ay, az, point_x, point_y, point_z);
63
+ const delta_b = v3_distance_sqr(bx, by, bz, point_x, point_y, point_z);
64
+
65
+ return delta_b - delta_a;
66
+ }, undefined, offset, count - 1);
67
+
68
+ }
69
+
20
70
  /**
21
71
  *
22
72
  * @param {number[]} output
@@ -90,7 +140,22 @@ function construct_ray_hit(
90
140
  output[9] = face_index;
91
141
  }
92
142
 
93
- export class GeometryBVHBatched {
143
+ export class BufferedGeometryBVH {
144
+ /**
145
+ * @type {Uint32Array}
146
+ */
147
+ #morton_codes
148
+
149
+ #bounds = new AABB3()
150
+
151
+ /**
152
+ *
153
+ * @param {AABB3|number[]} out
154
+ */
155
+ getBounds(out) {
156
+ array_copy(this.#bounds, 0, out, 0, 6);
157
+ }
158
+
94
159
  constructor() {
95
160
  /**
96
161
  *
@@ -148,9 +213,17 @@ export class GeometryBVHBatched {
148
213
 
149
214
  this.__triangle_count = index_array.length / 3;
150
215
 
216
+ this.#morton_codes = new Uint32Array(this.__triangle_count);
217
+
151
218
  const bvh = this.__bvh;
152
219
 
153
- ebvh_build_for_geometry_morton(bvh, index_array, array_positions);
220
+ ebvh_build_for_geometry_morton(
221
+ bvh,
222
+ index_array,
223
+ array_positions,
224
+ this.#morton_codes,
225
+ this.#bounds
226
+ );
154
227
  //
155
228
  // ebvh_build_for_geometry_incremental(bvh, index_array, array_positions, 1);
156
229
 
@@ -201,6 +274,13 @@ export class GeometryBVHBatched {
201
274
  let best_u = 0;
202
275
  let best_v = 0;
203
276
 
277
+ // sort triangles by distance to origin
278
+ if (count > 64) {
279
+ // encode
280
+ sort_triangles_by_distance_to_point(scratch_uint32_array, 0, count, this.#morton_codes, this.#bounds, origin_x, origin_y, origin_z);
281
+ }
282
+
283
+
204
284
  // check triangles found via BVH
205
285
  for (let i = 0; i < count; i++) {
206
286
  const triangle_index = scratch_uint32_array[i];
@@ -225,7 +305,6 @@ export class GeometryBVHBatched {
225
305
  best_index = triangle_index;
226
306
  best_u = v3_scratch_0[1];
227
307
  best_v = v3_scratch_0[2];
228
-
229
308
  }
230
309
  }
231
310
 
@@ -1,9 +1,10 @@
1
1
  export class PathTracedMesh {
2
+ aabb: AABB3;
2
3
  /**
3
4
  *
4
- * @type {GeometryBVHBatched|null}
5
+ * @type {BufferedGeometryBVH|null}
5
6
  */
6
- geo_bvh: GeometryBVHBatched | null;
7
+ geo_bvh: BufferedGeometryBVH | null;
7
8
  /**
8
9
  *
9
10
  * @type {THREE.BufferGeometry|null}
@@ -11,9 +12,9 @@ export class PathTracedMesh {
11
12
  geometry: THREE.BufferGeometry | null;
12
13
  /**
13
14
  *
14
- * @type {THREE.Material|null}
15
+ * @type {StandardMaterial|null}
15
16
  */
16
- material: THREE.Material | null;
17
+ material: StandardMaterial | null;
17
18
  __transform_inverse: Float32Array;
18
19
  __transform: Float32Array;
19
20
  __local_scale_inverse: number;
@@ -34,4 +35,5 @@ export class PathTracedMesh {
34
35
  */
35
36
  hit(out: number[], ray: number[], min_distance: number, max_distance: number): number;
36
37
  }
38
+ import { AABB3 } from "../../../../core/geom/3d/aabb/AABB3.js";
37
39
  //# sourceMappingURL=PathTracedMesh.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PathTracedMesh.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/sh3/path_tracer/PathTracedMesh.js"],"names":[],"mappings":"AAQA;IAGQ;;;OAGG;IACH,SAFU,qBAAmB,IAAI,CAEd;IAEnB;;;OAGG;IACH,UAFU,MAAM,cAAc,GAAC,IAAI,CAEf;IAEpB;;;OAGG;IACH,UAFU,MAAM,QAAQ,GAAC,IAAI,CAET;IAIpB,kCAA0D;IAC1D,0BAAuD;IACvD,8BAA8B;IAE9B;;;OAGG;IACH,IAFU,MAAM,CAEW;IAG/B,iCAYC;IAED,8BAEC;IAED;;;;;;;OAOG;IACH,SANW,MAAM,EAAE,OACR,MAAM,EAAE,gBACR,MAAM,gBACN,MAAM,GACJ,MAAM,CAqBlB;CACJ"}
1
+ {"version":3,"file":"PathTracedMesh.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/sh3/path_tracer/PathTracedMesh.js"],"names":[],"mappings":"AAcA;IACI,YAAmB;IAIf;;;OAGG;IACH,SAFU,sBAAoB,IAAI,CAEf;IAEnB;;;OAGG;IACH,UAFU,MAAM,cAAc,GAAC,IAAI,CAEf;IAEpB;;;OAGG;IACH,UAFU,mBAAiB,IAAI,CAEX;IAIpB,kCAA0D;IAC1D,0BAAuD;IACvD,8BAA8B;IAE9B;;;OAGG;IACH,IAFU,MAAM,CAEW;IAG/B,iCAgBC;IAED,8BAEC;IAED;;;;;;;OAOG;IACH,SANW,MAAM,EAAE,OACR,MAAM,EAAE,gBACR,MAAM,gBACN,MAAM,GACJ,MAAM,CAuDlB;CACJ;sBApIqB,wCAAwC"}