@woosh/meep-engine 2.116.0 → 2.117.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 (53) hide show
  1. package/build/bundle-worker-terrain.js +1 -1
  2. package/build/meep.cjs +90 -65
  3. package/build/meep.min.js +1 -1
  4. package/build/meep.module.js +90 -65
  5. package/package.json +1 -1
  6. package/src/core/collection/array/array_replace_all.d.ts +2 -1
  7. package/src/core/collection/array/array_replace_all.d.ts.map +1 -1
  8. package/src/core/collection/array/array_replace_all.js +3 -0
  9. package/src/core/collection/list/List.d.ts.map +1 -1
  10. package/src/core/collection/list/List.js +4 -7
  11. package/src/core/collection/set/ArraySet.d.ts.map +1 -1
  12. package/src/core/collection/set/ArraySet.js +11 -1
  13. package/src/core/math/physics/brdf/brdf_burley.d.ts.map +1 -1
  14. package/src/core/math/physics/brdf/brdf_burley.js +3 -14
  15. package/src/core/math/physics/bsdf/bsdf_schlick.js +1 -1
  16. package/src/core/math/physics/pdf/pdf_normal.d.ts +8 -0
  17. package/src/core/math/physics/pdf/pdf_normal.d.ts.map +1 -0
  18. package/src/core/math/physics/pdf/pdf_normal.js +11 -0
  19. package/src/core/math/physics/reflectivity_to_ior.d.ts.map +1 -1
  20. package/src/core/math/physics/reflectivity_to_ior.js +3 -1
  21. package/src/core/primitives/strings/computeStringHash.d.ts +9 -1
  22. package/src/core/primitives/strings/computeStringHash.d.ts.map +1 -1
  23. package/src/core/primitives/strings/computeStringHash.js +10 -5
  24. package/src/engine/development/performance/MetricCollection.d.ts +1 -1
  25. package/src/engine/development/performance/MetricCollection.js +2 -2
  26. package/src/engine/development/performance/monitor/MetricCollectionConsoleMonitor.d.ts +10 -0
  27. package/src/engine/development/performance/monitor/MetricCollectionConsoleMonitor.d.ts.map +1 -0
  28. package/src/engine/development/performance/monitor/MetricCollectionConsoleMonitor.js +23 -0
  29. package/src/engine/graphics/render/forward_plus/model/AbstractLight.d.ts.map +1 -1
  30. package/src/engine/graphics/render/forward_plus/model/AbstractLight.js +3 -3
  31. package/src/engine/graphics/render/forward_plus/model/DirectionalLight.d.ts +6 -6
  32. package/src/engine/graphics/render/forward_plus/model/DirectionalLight.d.ts.map +1 -1
  33. package/src/engine/graphics/render/forward_plus/model/DirectionalLight.js +26 -27
  34. package/src/engine/graphics/render/forward_plus/model/PointLight.d.ts +4 -4
  35. package/src/engine/graphics/render/forward_plus/model/PointLight.d.ts.map +1 -1
  36. package/src/engine/graphics/render/forward_plus/model/PointLight.js +31 -33
  37. package/src/engine/graphics/render/forward_plus/model/SpotLight.d.ts +14 -14
  38. package/src/engine/graphics/render/forward_plus/model/SpotLight.d.ts.map +1 -1
  39. package/src/engine/graphics/render/forward_plus/model/SpotLight.js +46 -47
  40. package/src/engine/graphics/render/visibility/hiz/query/QueryShader.d.ts.map +1 -1
  41. package/src/engine/graphics/render/visibility/hiz/query/QueryShader.js +0 -4
  42. package/src/engine/graphics/sh3/gi/material/common.glsl +3 -2
  43. package/src/engine/graphics/sh3/lpv/build_probes_for_scene.d.ts.map +1 -1
  44. package/src/engine/graphics/sh3/lpv/build_probes_for_scene.js +6 -3
  45. package/src/engine/graphics/sh3/prototypeSH3Probe.js +16 -12
  46. package/src/engine/graphics/shaders/DenoiseShader.d.ts.map +1 -1
  47. package/src/engine/graphics/shaders/DenoiseShader.js +3 -12
  48. package/src/engine/input/ecs/components/InputBinding.d.ts.map +1 -1
  49. package/src/engine/input/ecs/components/InputBinding.js +3 -2
  50. package/src/engine/input/ecs/components/InputController.d.ts.map +1 -1
  51. package/src/engine/input/ecs/components/InputController.js +18 -1
  52. package/src/engine/input/ecs/controllers/KeyboardCameraController.js +9 -9
  53. package/src/engine/physics/fluid/prototype.js +7 -12
@@ -50988,9 +50988,11 @@ class Vector4 {
50988
50988
  /**
50989
50989
  *
50990
50990
  * @param {string|null|undefined} string
50991
+ * @param {number} [start]
50992
+ * @param {number} [length] how many characters to hash, defaults to full string length
50991
50993
  * @returns {number}
50992
50994
  */
50993
- function computeStringHash(string) {
50995
+ function computeStringHash(string, start, length) {
50994
50996
  if (string === null) {
50995
50997
  return 0;
50996
50998
  }
@@ -50999,11 +51001,14 @@ function computeStringHash(string) {
50999
51001
  return 1;
51000
51002
  }
51001
51003
 
51002
- const length = string.length;
51004
+ let _start = start ?? 0;
51005
+ let _length = length ?? string.length - _start;
51003
51006
 
51004
- let hash = length;
51007
+ let hash = _length;
51005
51008
 
51006
- for (let i = 0; i < length; i++) {
51009
+ const end = _start + _length;
51010
+
51011
+ for (let i = _start; i < end; i++) {
51007
51012
  const code_point = string.charCodeAt(i);
51008
51013
 
51009
51014
  /*
@@ -59530,6 +59535,26 @@ const AmbientOcclusionShader = function () {
59530
59535
  }
59531
59536
  };
59532
59537
 
59538
+ /**
59539
+ *
59540
+ * @param {number} sigma distance from mean
59541
+ * @param {number} v Variance
59542
+ * @returns {number}
59543
+ */
59544
+ function gaussian$1(sigma, v) {
59545
+ return Math.exp(-(v * v) / (2 * sigma * sigma));
59546
+ }
59547
+
59548
+ /**
59549
+ * Normal Probability Distribution Function
59550
+ * @param {number} x
59551
+ * @param {number} sigma
59552
+ * @return {number}
59553
+ */
59554
+ function pdf_normal(x, sigma) {
59555
+ return 0.39894 * gaussian$1(sigma, x) / sigma;
59556
+ }
59557
+
59533
59558
  const KERNEL_SIZE = 15;
59534
59559
 
59535
59560
  const fragment$1 = `
@@ -59589,16 +59614,6 @@ void main(void) {
59589
59614
  }
59590
59615
  `;
59591
59616
 
59592
- /**
59593
- * Normal Probability Distribution Function
59594
- * @param {number} x
59595
- * @param {number} sigma
59596
- * @return {number}
59597
- */
59598
- function normpdf(x, sigma) {
59599
- return 0.39894 * Math.exp(-0.5 * x * x / (sigma * sigma)) / sigma;
59600
- }
59601
-
59602
59617
  /**
59603
59618
  *
59604
59619
  * @param {number} sigma
@@ -59607,13 +59622,13 @@ function normpdf(x, sigma) {
59607
59622
  */
59608
59623
  function DenoiseShader(sigma = 10, filterSmoothness = 0.2) {
59609
59624
  // compute zNorm
59610
- const zNorm = 1 / normpdf(0, filterSmoothness);
59625
+ const zNorm = 1 / pdf_normal(0, filterSmoothness);
59611
59626
 
59612
59627
  // build kernel
59613
59628
  const kernel = new Float32Array(KERNEL_SIZE);
59614
59629
  const kSize = Math.floor((KERNEL_SIZE - 1) / 2);
59615
59630
  for (let i = 0; i <= kSize; i++) {
59616
- const v = normpdf(i, sigma);
59631
+ const v = pdf_normal(i, sigma);
59617
59632
 
59618
59633
  kernel[kSize + i] = v;
59619
59634
  kernel[kSize - i] = v;
@@ -61501,8 +61516,7 @@ class List {
61501
61516
  data = []
61502
61517
 
61503
61518
  /**
61504
- * @param {[]} [array]
61505
- * @constructor
61519
+ * @param {T[]} [array]
61506
61520
  */
61507
61521
  constructor(array) {
61508
61522
 
@@ -61744,12 +61758,10 @@ class List {
61744
61758
  * @param {Array.<T>} elements
61745
61759
  */
61746
61760
  addAllUnique(elements) {
61747
- const data = this.data;
61748
-
61749
- const length = data.length;
61761
+ const length = elements.length;
61750
61762
 
61751
61763
  for (let i = 0; i < length; i++) {
61752
- this.addUnique(data[i]);
61764
+ this.addUnique(elements[i]);
61753
61765
  }
61754
61766
  }
61755
61767
 
@@ -61859,7 +61871,7 @@ class List {
61859
61871
  /**
61860
61872
  *
61861
61873
  * @param {function(a:T, b:T):number} [compare_function]
61862
- * @returns {List}
61874
+ * @returns {this}
61863
61875
  */
61864
61876
  sort(compare_function) {
61865
61877
  Array.prototype.sort.call(this.data, compare_function);
@@ -87653,7 +87665,7 @@ class MetricCollection {
87653
87665
  /**
87654
87666
  *
87655
87667
  * @param {string} name
87656
- * @param {number} buffer_size
87668
+ * @param {number} [buffer_size]
87657
87669
  * @returns {AbstractMetric}
87658
87670
  */
87659
87671
  create({ name, buffer_size = 1000 }) {
@@ -105503,7 +105515,7 @@ class InputBinding {
105503
105515
  class InputController {
105504
105516
  /**
105505
105517
  *
105506
- * @param {Array} bindings
105518
+ * @param {Array} [bindings]
105507
105519
  * @constructor
105508
105520
  */
105509
105521
  constructor(bindings = []) {
@@ -105519,6 +105531,21 @@ class InputController {
105519
105531
  };
105520
105532
  }
105521
105533
 
105534
+ /**
105535
+ *
105536
+ * @param {string} path
105537
+ * @param {function} action
105538
+ * @returns {InputBinding}
105539
+ */
105540
+ bind(path, action) {
105541
+
105542
+ const binding = new InputBinding({ path, listener: action });
105543
+
105544
+ this.mapping.add(binding);
105545
+
105546
+ return binding;
105547
+ }
105548
+
105522
105549
  /**
105523
105550
  *
105524
105551
  * @param {Array} bindings
@@ -110485,9 +110512,9 @@ class LightRenderMetadata {
110485
110512
  let id_counter = 0;
110486
110513
 
110487
110514
  class AbstractLight {
110488
- constructor() {
110489
- this.id = id_counter++;
110490
- }
110515
+
110516
+ id = id_counter++;
110517
+
110491
110518
 
110492
110519
  toString() {
110493
110520
  return `Light#${this.id}`;
@@ -112680,33 +112707,31 @@ class SystemEntityContext {
112680
112707
  }
112681
112708
 
112682
112709
  class PointLight extends AbstractLight {
112683
- constructor() {
112684
- super();
112685
112710
 
112686
- /**
112687
- * @readonly
112688
- * @type {Vector3}
112689
- */
112690
- this.position = new Vector3$1();
112711
+ /**
112712
+ * @readonly
112713
+ * @type {Vector3}
112714
+ */
112715
+ position = new Vector3$1();
112691
112716
 
112692
- /**
112693
- *
112694
- * @type {Vector1}
112695
- */
112696
- this.radius = new Vector1(1);
112717
+ /**
112718
+ * @readonly
112719
+ * @type {Vector1}
112720
+ */
112721
+ radius = new Vector1(1);
112697
112722
 
112698
- /**
112699
- * @readonly
112700
- * @type {Color}
112701
- */
112702
- this.color = new Color(1, 1, 1);
112723
+ /**
112724
+ * @readonly
112725
+ * @type {Color}
112726
+ */
112727
+ color = new Color(1, 1, 1);
112728
+
112729
+ /**
112730
+ * @readonly
112731
+ * @type {Vector1}
112732
+ */
112733
+ intensity = new Vector1(1);
112703
112734
 
112704
- /**
112705
- *
112706
- * @type {Vector1}
112707
- */
112708
- this.intensity = new Vector1(1);
112709
- }
112710
112735
 
112711
112736
  getCenter(result) {
112712
112737
  this.position.writeToArray(result, 0);
@@ -112721,12 +112746,12 @@ class PointLight extends AbstractLight {
112721
112746
  const center_z = p.z;
112722
112747
 
112723
112748
  result[0] = center_x - r;
112724
- result[1] = center_y - r;
112725
- result[2] = center_z - r;
112749
+ result[1] = center_y - r;
112750
+ result[2] = center_z - r;
112726
112751
 
112727
- result[3] = center_x + r;
112728
- result[4] = center_y + r;
112729
- result[5] = center_z + r;
112752
+ result[3] = center_x + r;
112753
+ result[4] = center_y + r;
112754
+ result[5] = center_z + r;
112730
112755
  }
112731
112756
 
112732
112757
  onDimensionChanged(listener, context) {
@@ -114992,19 +115017,19 @@ class KeyboardCameraController {
114992
115017
  function registerToggle(keys, object, propertyName) {
114993
115018
  keys.forEach((keyName) => {
114994
115019
 
114995
- inputController.mapping.add({
114996
- path: "keyboard/keys/" + keyName + "/down",
114997
- listener: () => {
115020
+ inputController.bind(
115021
+ "keyboard/keys/" + keyName + "/down",
115022
+ () => {
114998
115023
  object[propertyName] = true;
114999
115024
 
115000
115025
  //send interaction event
115001
115026
  ecd.sendEvent(cameraController.entity, 'user-input');
115002
115027
  }
115003
- });
115004
- inputController.mapping.add({
115005
- path: "keyboard/keys/" + keyName + "/up",
115006
- listener: () => object[propertyName] = false
115007
- });
115028
+ );
115029
+ inputController.bind(
115030
+ "keyboard/keys/" + keyName + "/up",
115031
+ () => object[propertyName] = false
115032
+ );
115008
115033
  });
115009
115034
  }
115010
115035
 
@@ -115036,7 +115061,7 @@ class KeyboardCameraController {
115036
115061
  return;
115037
115062
  }
115038
115063
 
115039
- let displacement = cameraPanSpeed.clone().multiplyScalar(keyboardPanSpeed * timeDelta);
115064
+ const displacement = cameraPanSpeed.clone().multiplyScalar(keyboardPanSpeed * timeDelta);
115040
115065
 
115041
115066
  const camera_transform = ecd.getComponent(cameraController.entity, Transform);
115042
115067
 
package/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "description": "Fully featured ECS game engine written in JavaScript",
6
6
  "type": "module",
7
7
  "author": "Alexander Goldring",
8
- "version": "2.116.0",
8
+ "version": "2.117.0",
9
9
  "main": "build/meep.module.js",
10
10
  "module": "build/meep.module.js",
11
11
  "exports": {
@@ -3,6 +3,7 @@
3
3
  * @param {T[]} array
4
4
  * @param {T} victim
5
5
  * @param {T} replacement
6
+ * @returns {T[]} input array after replacements
6
7
  */
7
- export function array_replace_all<T>(array: T[], victim: T, replacement: T): void;
8
+ export function array_replace_all<T>(array: T[], victim: T, replacement: T): T[];
8
9
  //# sourceMappingURL=array_replace_all.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"array_replace_all.d.ts","sourceRoot":"","sources":["../../../../../src/core/collection/array/array_replace_all.js"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,kFAUC"}
1
+ {"version":3,"file":"array_replace_all.d.ts","sourceRoot":"","sources":["../../../../../src/core/collection/array/array_replace_all.js"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,iFAYC"}
@@ -3,6 +3,7 @@
3
3
  * @param {T[]} array
4
4
  * @param {T} victim
5
5
  * @param {T} replacement
6
+ * @returns {T[]} input array after replacements
6
7
  */
7
8
  export function array_replace_all(array, victim, replacement) {
8
9
 
@@ -14,4 +15,6 @@ export function array_replace_all(array, victim, replacement) {
14
15
  array[i] = replacement;
15
16
  }
16
17
  }
18
+
19
+ return array;
17
20
  }
@@ -1 +1 @@
1
- {"version":3,"file":"List.d.ts","sourceRoot":"","sources":["../../../../../src/core/collection/list/List.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"List.d.ts","sourceRoot":"","sources":["../../../../../src/core/collection/list/List.js"],"names":[],"mappings":";AAaA;;;;GAIG;AACH;IAuBI;;OAEG;IACH,oBAFW,CAAC,EAAE,EAoBb;IA3CD;;OAEG;IACH;QACI;;;WAGG;wBADO,OAAO,CAAC,EAAC,MAAM,CAAC;QAG1B;;;WAGG;0BADO,OAAO,CAAC,EAAC,MAAM,CAAC;MAG5B;IAEF;;;OAGG;IACH,eAFU,CAAC,EAAE,CAEJ;IAkBL;;;OAGG;IACH,QAFU,MAAM,CAEc;IAGlC;;;;OAIG;IACH,WAHW,MAAM,GACJ,CAAC,GAAC,SAAS,CAOvB;IAED;;;;OAIG;IACH,WAHW,MAAM,SACN,CAAC,QAyBX;IAED;;;;OAIG;IACH,QAHW,CAAC,GACC,IAAI,CAUhB;IAED;;;;;;;OAOG;IACH,cAHW,CAAC,GACA,OAAO,CAUlB;IAED;;;;;;;OAOG;IACH,cALW,MAAM,MACN,CAAC,aAoBX;IAED;;;;;OAKG;IACH,sCAFa,MAAM,CAkClB;IAED;;;;;OAKG;IACH,gBAFW,CAAC,EAAE,QAqDb;IAED;;;OAGG;IACH,iBAFW,MAAO,CAAC,CAAC,QAmBnB;IAED;;;OAGG;IACH,uBAFW,MAAO,CAAC,CAAC,QAQnB;IAED;;;;;OAKG;IACH,kBAJW,MAAM,eACN,MAAM,GACJ,CAAC,EAAE,CAyBf;IAED;;;;OAIG;IACH,cAHW,MAAM,GACJ,CAAC,CAiBb;IAED;;;;OAIG;IACH,oBAHW,CAAC,EAAE,GACD,OAAO,CAwCnB;IAED;;;;OAIG;IACH,mBAHW,CAAC,GACA,OAAO,CAQlB;IAED;;;;OAIG;IACH,6BAFa,IAAI,CAKhB;IAED;;;OAGG;IACH,SAFa,KAAM,CAAC,CAAC,CAIpB;IAED;;;;;;OAMG;IACH,cAJW,MAAM,QACN,MAAM,GACL,CAAC,EAAE,CAId;IAED;;;;OAIG;IACH,sBAFa,OAAO,CAWnB;IAED;;;;OAIG;IACH,2BAHoB,CAAC,KAAE,OAAO,uBAiB7B;IAED;;;;;OAKG;IACH,8BAJoB,CAAC,KAAE,OAAO,kBAElB,OAAO,CAgBlB;IAED;;;;OAIG;IACH,qCASC;IAED;;;;OAIG;IACH,4BAJsB,CAAC,6BAUtB;IAED;;;;OAIG;IACH,iBAHoB,CAAC,KAAE,OAAO,GACjB,MAAO,CAAC,CAAC,CAIrB;IAED;;;;OAIG;IACH,oBAFa,CAAC,GAAC,SAAS,CAcvB;IAED;;;;OAIG;IACH,0BAHoB,CAAC,KAAE,OAAO,GACjB,MAAM,CAiBlB;IAED;;;;;OAKG;IACH,8CAFa,OAAO,CAkBnB;IAED;;;;OAIG;IACH,YAHW,CAAC,GACC,OAAO,CAInB;IAED;;;;OAIG;IACH,qBAHW,CAAC,EAAE,GACD,OAAO,CAanB;IAED;;;OAGG;IACH,WAFa,OAAO,CAInB;IAED;;;;OAIG;IACH,YAHW,CAAC,GACC,MAAM,CAIlB;IAED;;;;;OAKG;IACH,wBAJoB,CAAC,4BAkBpB;IAED;;;;OAIG;IACH,qDAoBC;IAED,cAyBC;IAED;;;;;OAKG;IACH,gBAJW,KAAK,CAAC,CAAC,kDAuCjB;IAED;;;OAGG;IACH,YAFW,KAAK,CAAC,CAAC,GAAC,CAAC,EAAE,QAarB;IAED;;;OAGG;IACH,WAFa,CAAC,EAAE,CAIf;IAED,cAEC;IAED;;;;OAIG;IACH,oDAcC;IAED;;;OAGG;IACH,2CAcC;IAED;;;;OAIG;IACH,+DAaC;IAED;;;;OAIG;IACH,qEAIC;IAED;;;;OAIG;IACH,wEAQC;IAED;;;;OAIG;IACH,gEAFuB,CAAC,QAWvB;IAED;;;OAGG;IACH,QAFa,MAAM,CAgBlB;IAED;;;OAGG;IACH,SAFa,CAAC,GAAC,SAAS,CAIvB;IAED;;;OAGG;IACH,QAFY,CAAC,GAAC,SAAS,CAItB;IAED;;;OAGG;IACH,kCA8BC;IAED;;;;OAIG;IACH,eAHW,KAAK,CAAC,CAAC,GACL,MAAM,CA0BlB;CACJ;mBAh+BkB,+BAA+B"}
@@ -40,8 +40,7 @@ class List {
40
40
  data = []
41
41
 
42
42
  /**
43
- * @param {[]} [array]
44
- * @constructor
43
+ * @param {T[]} [array]
45
44
  */
46
45
  constructor(array) {
47
46
 
@@ -291,12 +290,10 @@ class List {
291
290
  * @param {Array.<T>} elements
292
291
  */
293
292
  addAllUnique(elements) {
294
- const data = this.data;
295
-
296
- const length = data.length;
293
+ const length = elements.length;
297
294
 
298
295
  for (let i = 0; i < length; i++) {
299
- this.addUnique(data[i]);
296
+ this.addUnique(elements[i]);
300
297
  }
301
298
  }
302
299
 
@@ -414,7 +411,7 @@ class List {
414
411
  /**
415
412
  *
416
413
  * @param {function(a:T, b:T):number} [compare_function]
417
- * @returns {List}
414
+ * @returns {this}
418
415
  */
419
416
  sort(compare_function) {
420
417
  Array.prototype.sort.call(this.data, compare_function);
@@ -1 +1 @@
1
- {"version":3,"file":"ArraySet.d.ts","sourceRoot":"","sources":["../../../../../src/core/collection/set/ArraySet.js"],"names":[],"mappings":";AAEA;;;GAGG;AACH;IAiBI;;;;;;OAMG;IACH,yBAIC;IA3BD;;OAEG;IACH;;;MAGE;IAEF;;;OAGG;IACH,aAAU;IAEV,eAAW;IAeX;;;OAGG;IACH,yBAEC;IAED;;;OAGG;IACH,oBAWC;IAED;;;OAGG;IACH,uBAWC;IAED;;;;;OAKG;IACH,wBAIC;IAED;;;OAGG;IACH,WAFa,OAAO,CAInB;IAED;;OAEG;IACH,cAIC;IAED;;;OAGG;IACH,iBAFW,QAAS,QAMnB;IAED;;;OAGG;IACH,qBAFW,QAAS,QAuBnB;IAED;;;;OAIG;IACH,2CAIC;IAED;;;OAGG;IACH,WAFa,GAAG,CAIf;CACJ;mBAlKkB,+BAA+B"}
1
+ {"version":3,"file":"ArraySet.d.ts","sourceRoot":"","sources":["../../../../../src/core/collection/set/ArraySet.js"],"names":[],"mappings":";AAEA;;;GAGG;AACH;IAyBI;;;;;;OAMG;IACH,yBAIC;IAnCD;;OAEG;IACH;;;MAGE;IAEF;;;OAGG;IACH,aAAU;IAEV,eAAW;IAEX;;;OAGG;IACH,mBAEC;IAeD;;;OAGG;IACH,yBAEC;IAED;;;OAGG;IACH,oBAWC;IAED;;;OAGG;IACH,uBAWC;IAED;;;;;OAKG;IACH,wBAIC;IAED;;;OAGG;IACH,WAFa,OAAO,CAInB;IAED;;OAEG;IACH,cAIC;IAED;;;OAGG;IACH,iBAFW,QAAS,QAQnB;IAED;;;OAGG;IACH,qBAFW,QAAS,QAuBnB;IAED;;;;OAIG;IACH,2CAIC;IAED;;;OAGG;IACH,WAFa,GAAG,CAIf;CACJ;mBA5KkB,+BAA+B"}
@@ -21,6 +21,14 @@ class ArraySet {
21
21
 
22
22
  length = 0;
23
23
 
24
+ /**
25
+ *
26
+ * @returns {number}
27
+ */
28
+ get size(){
29
+ return this.length;
30
+ }
31
+
24
32
  /**
25
33
  *
26
34
  * @param {Array.<T>} [array=[]]
@@ -110,7 +118,9 @@ class ArraySet {
110
118
  * @param {Array.<T>} elements
111
119
  */
112
120
  addAll(elements) {
113
- for (let i = 0, l = elements.length; i < l; i++) {
121
+ const count = elements.length;
122
+
123
+ for (let i = 0; i < count; i++) {
114
124
  this.add(elements[i]);
115
125
  }
116
126
  }
@@ -1 +1 @@
1
- {"version":3,"file":"brdf_burley.d.ts","sourceRoot":"","sources":["../../../../../../src/core/math/physics/brdf/brdf_burley.js"],"names":[],"mappings":"AAeA;;;;;;;;;;;;;GAaG;AACH,iCANW,MAAM,OACN,MAAM,OACN,MAAM,aACN,MAAM,GACJ,MAAM,CASlB"}
1
+ {"version":3,"file":"brdf_burley.d.ts","sourceRoot":"","sources":["../../../../../../src/core/math/physics/brdf/brdf_burley.js"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;GAaG;AACH,iCANW,MAAM,OACN,MAAM,OACN,MAAM,aACN,MAAM,GACJ,MAAM,CASlB"}
@@ -1,17 +1,6 @@
1
1
  import { PI_RECIPROCAL } from "../../PI_RECIPROCAL.js";
2
- import { fresnel_Schlick } from "./fresnel_Schlick.js";
2
+ import { bsdf_schlick } from "../bsdf/bsdf_schlick.js";
3
3
 
4
- /**
5
- *
6
- * @param {number} u
7
- * @param {number} f0
8
- * @param {number} f90
9
- * @return {number}
10
- */
11
- function F_Schlick(u, f0, f90) {
12
-
13
- return f0 + (f90 - f0) * fresnel_Schlick(u);
14
- }
15
4
 
16
5
  /**
17
6
  * @see https://google.github.io/filament/Filament.md.html#listing_diffusebrdf
@@ -30,8 +19,8 @@ function F_Schlick(u, f0, f90) {
30
19
  export function brdf_burley(NoV, NoL, LoH, roughness) {
31
20
  const f90 = 0.5 + 2.0 * roughness * LoH * LoH;
32
21
 
33
- const lightScatter = F_Schlick(NoL, 1.0, f90);
34
- const viewScatter = F_Schlick(NoV, 1.0, f90);
22
+ const lightScatter = bsdf_schlick(1.0, f90, NoL);
23
+ const viewScatter = bsdf_schlick(1.0, f90, NoV);
35
24
 
36
25
  return lightScatter * viewScatter * PI_RECIPROCAL;
37
26
  }
@@ -10,5 +10,5 @@ import { fresnel_Schlick } from "../brdf/fresnel_Schlick.js";
10
10
  export function bsdf_schlick(f0, f90, dotVH) {
11
11
  const fresnel = fresnel_Schlick(dotVH);
12
12
 
13
- return f0 * (1.0 - fresnel) + f90 * fresnel;
13
+ return f0 + (f90 - f0) * fresnel;
14
14
  }
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Normal Probability Distribution Function
3
+ * @param {number} x
4
+ * @param {number} sigma
5
+ * @return {number}
6
+ */
7
+ export function pdf_normal(x: number, sigma: number): number;
8
+ //# sourceMappingURL=pdf_normal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pdf_normal.d.ts","sourceRoot":"","sources":["../../../../../../src/core/math/physics/pdf/pdf_normal.js"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,8BAJW,MAAM,SACN,MAAM,GACL,MAAM,CAIjB"}
@@ -0,0 +1,11 @@
1
+ import { gaussian } from "../../gaussian.js";
2
+
3
+ /**
4
+ * Normal Probability Distribution Function
5
+ * @param {number} x
6
+ * @param {number} sigma
7
+ * @return {number}
8
+ */
9
+ export function pdf_normal(x, sigma) {
10
+ return 0.39894 * gaussian(sigma, x) / sigma;
11
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"reflectivity_to_ior.d.ts","sourceRoot":"","sources":["../../../../../src/core/math/physics/reflectivity_to_ior.js"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,kDAHW,MAAM,GACL,MAAM,CAIjB"}
1
+ {"version":3,"file":"reflectivity_to_ior.d.ts","sourceRoot":"","sources":["../../../../../src/core/math/physics/reflectivity_to_ior.js"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,kDAHW,MAAM,GACL,MAAM,CAMjB"}
@@ -4,5 +4,7 @@
4
4
  * @return {number} index of refraction (IOR)
5
5
  */
6
6
  export function reflectivity_to_ior(reflectivity) {
7
- return (1 + 0.4 * reflectivity) / (1 - 0.4 * reflectivity)
7
+ const r4 = 0.4 * reflectivity;
8
+
9
+ return (1 + r4) / (1 - r4);
8
10
  }
@@ -1 +1,9 @@
1
- export function computeStringHash(string: string | null | undefined): number;
1
+ /**
2
+ *
3
+ * @param {string|null|undefined} string
4
+ * @param {number} [start]
5
+ * @param {number} [length] how many characters to hash, defaults to full string length
6
+ * @returns {number}
7
+ */
8
+ export function computeStringHash(string: string | null | undefined, start?: number, length?: number): number;
9
+ //# sourceMappingURL=computeStringHash.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"computeStringHash.d.ts","sourceRoot":"","sources":["../../../../../src/core/primitives/strings/computeStringHash.js"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,0CAHW,MAAM,GAAC,IAAI,GAAC,SAAS,GACnB,MAAM,CA8BlB"}
1
+ {"version":3,"file":"computeStringHash.d.ts","sourceRoot":"","sources":["../../../../../src/core/primitives/strings/computeStringHash.js"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,0CALW,MAAM,GAAC,IAAI,GAAC,SAAS,UACrB,MAAM,WACN,MAAM,GACJ,MAAM,CAiClB"}
@@ -3,9 +3,11 @@ import { assert } from "../../assert.js";
3
3
  /**
4
4
  *
5
5
  * @param {string|null|undefined} string
6
+ * @param {number} [start]
7
+ * @param {number} [length] how many characters to hash, defaults to full string length
6
8
  * @returns {number}
7
9
  */
8
- export function computeStringHash(string) {
10
+ export function computeStringHash(string, start, length) {
9
11
  if (string === null) {
10
12
  return 0;
11
13
  }
@@ -14,13 +16,16 @@ export function computeStringHash(string) {
14
16
  return 1;
15
17
  }
16
18
 
17
- assert.isString(string,'string');
19
+ assert.isString(string, 'string');
18
20
 
19
- const length = string.length;
21
+ let _start = start ?? 0;
22
+ let _length = length ?? string.length - _start;
20
23
 
21
- let hash = length;
24
+ let hash = _length;
22
25
 
23
- for (let i = 0; i < length; i++) {
26
+ const end = _start + _length;
27
+
28
+ for (let i = _start; i < end; i++) {
24
29
  const code_point = string.charCodeAt(i);
25
30
 
26
31
  /*
@@ -13,7 +13,7 @@ export class MetricCollection {
13
13
  /**
14
14
  *
15
15
  * @param {string} name
16
- * @param {number} buffer_size
16
+ * @param {number} [buffer_size]
17
17
  * @returns {AbstractMetric}
18
18
  */
19
19
  create({ name, buffer_size }: string): AbstractMetric;
@@ -1,5 +1,5 @@
1
- import { RingBufferMetric } from "./RingBufferMetric.js";
2
1
  import { assert } from "../../../core/assert.js";
2
+ import { RingBufferMetric } from "./RingBufferMetric.js";
3
3
 
4
4
  export class MetricCollection {
5
5
  constructor() {
@@ -27,7 +27,7 @@ export class MetricCollection {
27
27
  /**
28
28
  *
29
29
  * @param {string} name
30
- * @param {number} buffer_size
30
+ * @param {number} [buffer_size]
31
31
  * @returns {AbstractMetric}
32
32
  */
33
33
  create({ name, buffer_size = 1000 }) {
@@ -0,0 +1,10 @@
1
+ export class MetricCollectionConsoleMonitor {
2
+ /**
3
+ *
4
+ * @param {MetricCollection} metrics
5
+ * @returns {PeriodicConsolePrinter}
6
+ */
7
+ static from(metrics: MetricCollection): PeriodicConsolePrinter;
8
+ }
9
+ import { PeriodicConsolePrinter } from "./PeriodicConsolePrinter.js";
10
+ //# sourceMappingURL=MetricCollectionConsoleMonitor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MetricCollectionConsoleMonitor.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/development/performance/monitor/MetricCollectionConsoleMonitor.js"],"names":[],"mappings":"AAGA;IAEI;;;;OAIG;IACH,wCAFa,sBAAsB,CAYlC;CAEJ;uCArBsC,6BAA6B"}
@@ -0,0 +1,23 @@
1
+ import { MetricStatistics } from "../MetricStatistics.js";
2
+ import { PeriodicConsolePrinter } from "./PeriodicConsolePrinter.js";
3
+
4
+ export class MetricCollectionConsoleMonitor{
5
+
6
+ /**
7
+ *
8
+ * @param {MetricCollection} metrics
9
+ * @returns {PeriodicConsolePrinter}
10
+ */
11
+ static from(metrics){
12
+
13
+ const metric_stats = new MetricStatistics();
14
+
15
+ return new PeriodicConsolePrinter(3, () => metrics.list().map(m => {
16
+ metrics.get(m).computeStats(metric_stats);
17
+
18
+ return `${m}: ${metric_stats}`;
19
+ }).join('\n'));
20
+
21
+ }
22
+
23
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractLight.d.ts","sourceRoot":"","sources":["../../../../../../../src/engine/graphics/render/forward_plus/model/AbstractLight.js"],"names":[],"mappings":"AAEA;IAEQ,WAAsB;IAG1B,mBAEC;IAED;;;;;OAKG;IACH,gDAFa,IAAI,CAIhB;IAED;;;;;OAKG;IACH,iDAFa,IAAI,CAIhB;IAED;;;;OAIG;IACH,kBAHW,MAAM,EAAE,GACN,IAAI,CAIhB;IAED;;;;OAIG;IACH,gBAHW,MAAM,EAAE,GAAC,UAAU,MAAM,CAAC,GAAC,YAAY,GACrC,IAAI,CAIhB;IAED;;;;;OAKG;IACH,qBAJW,MAAM,EAAE,GAAC,YAAY,GAAC,YAAY,WAClC,MAAM,GACJ,MAAM,CAIlB;IAED;;;;OAIG;IACH,eAHW,aAAa,GACX,MAAM,CAIlB;IAGL,aAA4B;CAF3B"}
1
+ {"version":3,"file":"AbstractLight.d.ts","sourceRoot":"","sources":["../../../../../../../src/engine/graphics/render/forward_plus/model/AbstractLight.js"],"names":[],"mappings":"AAEA;IAEI,WAAkB;IAGlB,mBAEC;IAED;;;;;OAKG;IACH,gDAFa,IAAI,CAIhB;IAED;;;;;OAKG;IACH,iDAFa,IAAI,CAIhB;IAED;;;;OAIG;IACH,kBAHW,MAAM,EAAE,GACN,IAAI,CAIhB;IAED;;;;OAIG;IACH,gBAHW,MAAM,EAAE,GAAC,UAAU,MAAM,CAAC,GAAC,YAAY,GACrC,IAAI,CAIhB;IAED;;;;;OAKG;IACH,qBAJW,MAAM,EAAE,GAAC,YAAY,GAAC,YAAY,WAClC,MAAM,GACJ,MAAM,CAIlB;IAED;;;;OAIG;IACH,eAHW,aAAa,GACX,MAAM,CAIlB;IAGL,aAA4B;CAF3B"}
@@ -1,9 +1,9 @@
1
1
  let id_counter = 0;
2
2
 
3
3
  export class AbstractLight {
4
- constructor() {
5
- this.id = id_counter++;
6
- }
4
+
5
+ id = id_counter++;
6
+
7
7
 
8
8
  toString() {
9
9
  return `Light#${this.id}`;
@@ -1,24 +1,24 @@
1
1
  export class DirectionalLight extends AbstractLight {
2
2
  /**
3
- *
3
+ * @readonly
4
4
  * @type {Vector3}
5
5
  */
6
- position: Vector3;
6
+ readonly position: Vector3;
7
7
  /**
8
- *
8
+ * @readonly
9
9
  * @type {Vector3}
10
10
  */
11
- direction: Vector3;
11
+ readonly direction: Vector3;
12
12
  /**
13
13
  * @readonly
14
14
  * @type {Color}
15
15
  */
16
16
  readonly color: Color;
17
17
  /**
18
- *
18
+ * @readonly
19
19
  * @type {Vector1}
20
20
  */
21
- intensity: Vector1;
21
+ readonly intensity: Vector1;
22
22
  /**
23
23
  * @readonly
24
24
  * @type {boolean}