@onerjs/core 8.26.4 → 8.26.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 (137) hide show
  1. package/Engines/abstractEngine.js +2 -2
  2. package/Engines/abstractEngine.js.map +1 -1
  3. package/FrameGraph/Tasks/Rendering/objectRendererTask.js +6 -0
  4. package/FrameGraph/Tasks/Rendering/objectRendererTask.js.map +1 -1
  5. package/FrameGraph/frameGraphContext.d.ts +2 -1
  6. package/FrameGraph/frameGraphContext.js +4 -1
  7. package/FrameGraph/frameGraphContext.js.map +1 -1
  8. package/Lights/Clustered/clusteredLightContainer.d.ts +1 -1
  9. package/Lights/Clustered/clusteredLightContainer.js +4 -5
  10. package/Lights/Clustered/clusteredLightContainer.js.map +1 -1
  11. package/Lights/pointLight.js +4 -4
  12. package/Lights/pointLight.js.map +1 -1
  13. package/Lights/rectAreaLight.js +4 -4
  14. package/Lights/rectAreaLight.js.map +1 -1
  15. package/Lights/spotLight.js +2 -2
  16. package/Lights/spotLight.js.map +1 -1
  17. package/Materials/Background/backgroundMaterial.d.ts +19 -91
  18. package/Materials/Background/backgroundMaterial.js +17 -245
  19. package/Materials/Background/backgroundMaterial.js.map +1 -1
  20. package/Materials/Node/Blocks/Dual/lightBlock.js +15 -4
  21. package/Materials/Node/Blocks/Dual/lightBlock.js.map +1 -1
  22. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js +28 -5
  23. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js.map +1 -1
  24. package/Materials/Node/nodeMaterial.d.ts +57 -69
  25. package/Materials/Node/nodeMaterial.js +9 -86
  26. package/Materials/Node/nodeMaterial.js.map +1 -1
  27. package/Materials/Node/nodeMaterialBuildState.d.ts +3 -1
  28. package/Materials/Node/nodeMaterialBuildState.js +35 -15
  29. package/Materials/Node/nodeMaterialBuildState.js.map +1 -1
  30. package/Materials/PBR/index.d.ts +5 -0
  31. package/Materials/PBR/index.js +5 -0
  32. package/Materials/PBR/index.js.map +1 -1
  33. package/Materials/PBR/openPbrMaterial.d.ts +998 -0
  34. package/Materials/PBR/openPbrMaterial.js +2069 -0
  35. package/Materials/PBR/openPbrMaterial.js.map +1 -0
  36. package/Materials/PBR/pbrBaseMaterial.d.ts +57 -43
  37. package/Materials/PBR/pbrBaseMaterial.js +21 -304
  38. package/Materials/PBR/pbrBaseMaterial.js.map +1 -1
  39. package/Materials/PBR/pbrMaterial.d.ts +0 -78
  40. package/Materials/PBR/pbrMaterial.js +0 -110
  41. package/Materials/PBR/pbrMaterial.js.map +1 -1
  42. package/Materials/floatingOriginMatrixOverrides.d.ts +3 -0
  43. package/Materials/floatingOriginMatrixOverrides.js +91 -0
  44. package/Materials/floatingOriginMatrixOverrides.js.map +1 -0
  45. package/Materials/imageProcessing.d.ts +65 -0
  46. package/Materials/imageProcessing.js +162 -0
  47. package/Materials/imageProcessing.js.map +1 -0
  48. package/Materials/imageProcessingConfiguration.defines.d.ts +25 -0
  49. package/Materials/imageProcessingConfiguration.defines.js +27 -0
  50. package/Materials/imageProcessingConfiguration.defines.js.map +1 -1
  51. package/Materials/index.d.ts +2 -0
  52. package/Materials/index.js +2 -0
  53. package/Materials/index.js.map +1 -1
  54. package/Materials/material.d.ts +14 -0
  55. package/Materials/material.js +14 -0
  56. package/Materials/material.js.map +1 -1
  57. package/Materials/materialHelper.functions.d.ts +53 -0
  58. package/Materials/materialHelper.functions.js +297 -0
  59. package/Materials/materialHelper.functions.js.map +1 -1
  60. package/Materials/standardMaterial.d.ts +57 -121
  61. package/Materials/standardMaterial.js +21 -250
  62. package/Materials/standardMaterial.js.map +1 -1
  63. package/Materials/uv.defines.d.ts +22 -0
  64. package/Materials/uv.defines.js +24 -0
  65. package/Materials/uv.defines.js.map +1 -0
  66. package/Meshes/GaussianSplatting/gaussianSplattingMesh.js +1 -0
  67. package/Meshes/GaussianSplatting/gaussianSplattingMesh.js.map +1 -1
  68. package/Misc/decorators.d.ts +7 -0
  69. package/Misc/decorators.js +34 -0
  70. package/Misc/decorators.js.map +1 -1
  71. package/Particles/Node/Blocks/Emitters/createParticleBlock.js +10 -1
  72. package/Particles/Node/Blocks/Emitters/createParticleBlock.js.map +1 -1
  73. package/Particles/Node/Blocks/index.d.ts +2 -0
  74. package/Particles/Node/Blocks/index.js +2 -0
  75. package/Particles/Node/Blocks/index.js.map +1 -1
  76. package/Particles/Node/Blocks/particleInputBlock.js +4 -1
  77. package/Particles/Node/Blocks/particleInputBlock.js.map +1 -1
  78. package/Particles/Node/Blocks/particleLocalVariableBlock.d.ts +38 -0
  79. package/Particles/Node/Blocks/particleLocalVariableBlock.js +108 -0
  80. package/Particles/Node/Blocks/particleLocalVariableBlock.js.map +1 -0
  81. package/Particles/Node/Blocks/particleVectorLengthBlock.d.ts +26 -0
  82. package/Particles/Node/Blocks/particleVectorLengthBlock.js +50 -0
  83. package/Particles/Node/Blocks/particleVectorLengthBlock.js.map +1 -0
  84. package/Rendering/IBLShadows/iblShadowsPluginMaterial.d.ts +2 -1
  85. package/Rendering/IBLShadows/iblShadowsPluginMaterial.js +45 -0
  86. package/Rendering/IBLShadows/iblShadowsPluginMaterial.js.map +1 -1
  87. package/Rendering/IBLShadows/iblShadowsRenderPipeline.js +2 -1
  88. package/Rendering/IBLShadows/iblShadowsRenderPipeline.js.map +1 -1
  89. package/Rendering/geometryBufferRenderer.js +6 -4
  90. package/Rendering/geometryBufferRenderer.js.map +1 -1
  91. package/Rendering/iblCdfGenerator.js +28 -20
  92. package/Rendering/iblCdfGenerator.js.map +1 -1
  93. package/Rendering/reflectiveShadowMap.d.ts +3 -3
  94. package/Shaders/ShadersInclude/backgroundUboDeclaration.js +1 -1
  95. package/Shaders/ShadersInclude/backgroundUboDeclaration.js.map +1 -1
  96. package/Shaders/ShadersInclude/clusteredLightingFunctions.js +3 -1
  97. package/Shaders/ShadersInclude/clusteredLightingFunctions.js.map +1 -1
  98. package/Shaders/ShadersInclude/defaultUboDeclaration.js +1 -1
  99. package/Shaders/ShadersInclude/defaultUboDeclaration.js.map +1 -1
  100. package/Shaders/ShadersInclude/hdrFilteringFunctions.js +34 -0
  101. package/Shaders/ShadersInclude/hdrFilteringFunctions.js.map +1 -1
  102. package/Shaders/ShadersInclude/helperFunctions.js +1 -1
  103. package/Shaders/ShadersInclude/helperFunctions.js.map +1 -1
  104. package/Shaders/ShadersInclude/importanceSampling.js +4 -0
  105. package/Shaders/ShadersInclude/importanceSampling.js.map +1 -1
  106. package/Shaders/ShadersInclude/lightsFragmentFunctions.js +1 -0
  107. package/Shaders/ShadersInclude/lightsFragmentFunctions.js.map +1 -1
  108. package/Shaders/ShadersInclude/pbrBRDFFunctions.js +1 -1
  109. package/Shaders/ShadersInclude/pbrBRDFFunctions.js.map +1 -1
  110. package/Shaders/ShadersInclude/pbrClusteredLightingFunctions.js +1 -0
  111. package/Shaders/ShadersInclude/pbrClusteredLightingFunctions.js.map +1 -1
  112. package/Shaders/ShadersInclude/pbrDirectLightingFunctions.js +3 -1
  113. package/Shaders/ShadersInclude/pbrDirectLightingFunctions.js.map +1 -1
  114. package/Shaders/ShadersInclude/pbrHelperFunctions.js +2 -0
  115. package/Shaders/ShadersInclude/pbrHelperFunctions.js.map +1 -1
  116. package/Shaders/ShadersInclude/pbrUboDeclaration.js +1 -1
  117. package/Shaders/ShadersInclude/pbrUboDeclaration.js.map +1 -1
  118. package/ShadersWGSL/ShadersInclude/backgroundUboDeclaration.js +1 -1
  119. package/ShadersWGSL/ShadersInclude/backgroundUboDeclaration.js.map +1 -1
  120. package/ShadersWGSL/ShadersInclude/defaultUboDeclaration.js +1 -1
  121. package/ShadersWGSL/ShadersInclude/defaultUboDeclaration.js.map +1 -1
  122. package/ShadersWGSL/ShadersInclude/hdrFilteringFunctions.js +28 -0
  123. package/ShadersWGSL/ShadersInclude/hdrFilteringFunctions.js.map +1 -1
  124. package/ShadersWGSL/ShadersInclude/importanceSampling.js +4 -0
  125. package/ShadersWGSL/ShadersInclude/importanceSampling.js.map +1 -1
  126. package/ShadersWGSL/ShadersInclude/pbrBRDFFunctions.js +1 -1
  127. package/ShadersWGSL/ShadersInclude/pbrBRDFFunctions.js.map +1 -1
  128. package/ShadersWGSL/ShadersInclude/pbrDirectLightingFunctions.js +3 -1
  129. package/ShadersWGSL/ShadersInclude/pbrDirectLightingFunctions.js.map +1 -1
  130. package/ShadersWGSL/ShadersInclude/pbrHelperFunctions.js +2 -0
  131. package/ShadersWGSL/ShadersInclude/pbrHelperFunctions.js.map +1 -1
  132. package/ShadersWGSL/ShadersInclude/pbrUboDeclaration.js +1 -1
  133. package/ShadersWGSL/ShadersInclude/pbrUboDeclaration.js.map +1 -1
  134. package/package.json +1 -1
  135. package/scene.d.ts +21 -0
  136. package/scene.js +29 -3
  137. package/scene.js.map +1 -1
package/scene.js CHANGED
@@ -10,6 +10,7 @@ import { UniformBuffer } from "./Materials/uniformBuffer.js";
10
10
  import { PickingInfo } from "./Collisions/pickingInfo.js";
11
11
  import { ActionEvent } from "./Actions/actionEvent.js";
12
12
  import { PostProcessManager } from "./PostProcesses/postProcessManager.js";
13
+ import { OverrideMatrixFunctions, ResetMatrixFunctions } from "./Materials/floatingOriginMatrixOverrides.js";
13
14
  import { RenderingManager } from "./Rendering/renderingManager.js";
14
15
  import { Stage } from "./sceneComponent.js";
15
16
 
@@ -376,12 +377,13 @@ export class Scene {
376
377
  : (this.activeCamera?.globalPosition ?? Vector3.ZeroReadOnly);
377
378
  const invertNormal = this.useRightHandedSystem === (this._mirroredCameraPosition != null);
378
379
  TmpVectors.Vector4[0].set(eyePosition.x, eyePosition.y, eyePosition.z, invertNormal ? -1 : 1);
380
+ TmpVectors.Vector4[1].copyFromFloats(TmpVectors.Vector4[0].x - this.floatingOriginOffset.x, TmpVectors.Vector4[0].y - this.floatingOriginOffset.y, TmpVectors.Vector4[0].z - this.floatingOriginOffset.z, TmpVectors.Vector4[0].w);
379
381
  if (effect) {
380
382
  if (isVector3) {
381
- effect.setFloat3(variableName, TmpVectors.Vector4[0].x, TmpVectors.Vector4[0].y, TmpVectors.Vector4[0].z);
383
+ effect.setFloat3(variableName, TmpVectors.Vector4[1].x, TmpVectors.Vector4[1].y, TmpVectors.Vector4[1].z);
382
384
  }
383
385
  else {
384
- effect.setVector4(variableName, TmpVectors.Vector4[0]);
386
+ effect.setVector4(variableName, TmpVectors.Vector4[1]);
385
387
  }
386
388
  }
387
389
  return TmpVectors.Vector4[0];
@@ -393,7 +395,7 @@ export class Scene {
393
395
  finalizeSceneUbo() {
394
396
  const ubo = this.getSceneUniformBuffer();
395
397
  const eyePosition = this.bindEyePosition(null);
396
- ubo.updateFloat4("vEyePosition", eyePosition.x, eyePosition.y, eyePosition.z, eyePosition.w);
398
+ ubo.updateFloat4("vEyePosition", eyePosition.x - this.floatingOriginOffset.x, eyePosition.y - this.floatingOriginOffset.y, eyePosition.z - this.floatingOriginOffset.z, eyePosition.w);
397
399
  ubo.update();
398
400
  return ubo;
399
401
  }
@@ -1450,6 +1452,8 @@ export class Scene {
1450
1452
  data: [],
1451
1453
  length: 0,
1452
1454
  };
1455
+ this._floatingOriginMode = false;
1456
+ this._floatingOriginOffsetDefault = Vector3.Zero();
1453
1457
  this._preventFreeActiveMeshesAndRenderingGroups = false;
1454
1458
  /** @internal */
1455
1459
  this._activeMeshesFrozen = false;
@@ -1493,6 +1497,11 @@ export class Scene {
1493
1497
  EngineStore._LastCreatedScene = this;
1494
1498
  engine.scenes.push(this);
1495
1499
  }
1500
+ if (options?.floatingOriginMode) {
1501
+ engine.getCreationOptions().useHighPrecisionMatrix = true;
1502
+ OverrideMatrixFunctions(this);
1503
+ this._floatingOriginMode = true;
1504
+ }
1496
1505
  this._uid = null;
1497
1506
  this._renderingManager = new RenderingManager(this);
1498
1507
  if (PostProcessManager) {
@@ -2136,6 +2145,22 @@ export class Scene {
2136
2145
  this._viewUpdateFlag = -1;
2137
2146
  this._projectionUpdateFlag = -1;
2138
2147
  }
2148
+ /**
2149
+ * @experimental
2150
+ * When true, enables floatingOriginMode which helps avoid floating point imprecision when using huge coordinate system by
2151
+ * 1. Forcing the engine to use doublePrecision mode
2152
+ * 2. Offsetting uniform values before passing to shader so that camera is centered at origin and world is offset by camera position
2153
+ */
2154
+ get floatingOriginMode() {
2155
+ return this._floatingOriginMode;
2156
+ }
2157
+ /**
2158
+ * @experimental
2159
+ * When floatingOriginMode is enabled, offset is equal to the active camera position. If no active camera or floatingOriginMode is disabled, offset is 0.
2160
+ */
2161
+ get floatingOriginOffset() {
2162
+ return this.floatingOriginMode && this.activeCamera ? this.activeCamera.position : this._floatingOriginOffsetDefault;
2163
+ }
2139
2164
  /**
2140
2165
  * Gets an unique (relatively to the current scene) Id
2141
2166
  * @returns an unique number for the scene
@@ -4641,6 +4666,7 @@ export class Scene {
4641
4666
  this.onClearColorChangedObservable.clear();
4642
4667
  this.onEnvironmentTextureChangedObservable.clear();
4643
4668
  this.onMeshUnderPointerUpdatedObservable.clear();
4669
+ ResetMatrixFunctions();
4644
4670
  this._isDisposed = true;
4645
4671
  }
4646
4672
  _disposeList(items, callback) {