@babylonjs/core 8.24.2 → 8.25.1

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 (98) hide show
  1. package/Engines/AbstractEngine/abstractEngine.cubeTexture.js +1 -1
  2. package/Engines/AbstractEngine/abstractEngine.cubeTexture.js.map +1 -1
  3. package/Engines/Native/nativeShaderProcessors.js +3 -0
  4. package/Engines/Native/nativeShaderProcessors.js.map +1 -1
  5. package/Engines/WebGL/webGL2ShaderProcessors.js +3 -0
  6. package/Engines/WebGL/webGL2ShaderProcessors.js.map +1 -1
  7. package/Engines/WebGPU/webgpuShaderProcessorsGLSL.d.ts +3 -1
  8. package/Engines/WebGPU/webgpuShaderProcessorsGLSL.js +4 -1
  9. package/Engines/WebGPU/webgpuShaderProcessorsGLSL.js.map +1 -1
  10. package/Engines/WebGPU/webgpuShaderProcessorsWGSL.js +4 -1
  11. package/Engines/WebGPU/webgpuShaderProcessorsWGSL.js.map +1 -1
  12. package/Engines/abstractEngine.d.ts +1 -1
  13. package/Engines/abstractEngine.functions.d.ts +2 -2
  14. package/Engines/abstractEngine.functions.js.map +1 -1
  15. package/Engines/abstractEngine.js +2 -2
  16. package/Engines/abstractEngine.js.map +1 -1
  17. package/FrameGraph/Node/Blocks/Rendering/objectRendererBlock.js +8 -0
  18. package/FrameGraph/Node/Blocks/Rendering/objectRendererBlock.js.map +1 -1
  19. package/FrameGraph/Node/Blocks/Rendering/taaObjectRendererBlock.js +16 -0
  20. package/FrameGraph/Node/Blocks/Rendering/taaObjectRendererBlock.js.map +1 -1
  21. package/FrameGraph/Node/Blocks/inputBlock.js +2 -0
  22. package/FrameGraph/Node/Blocks/inputBlock.js.map +1 -1
  23. package/FrameGraph/Tasks/Rendering/objectRendererTask.d.ts +2 -1
  24. package/FrameGraph/Tasks/Rendering/objectRendererTask.js +16 -1
  25. package/FrameGraph/Tasks/Rendering/objectRendererTask.js.map +1 -1
  26. package/FrameGraph/Tasks/Rendering/taaObjectRendererTask.d.ts +3 -1
  27. package/FrameGraph/Tasks/Rendering/taaObjectRendererTask.js +10 -7
  28. package/FrameGraph/Tasks/Rendering/taaObjectRendererTask.js.map +1 -1
  29. package/FrameGraph/frameGraph.d.ts +2 -2
  30. package/FrameGraph/frameGraph.js.map +1 -1
  31. package/FrameGraph/frameGraphTextureManager.js +4 -0
  32. package/FrameGraph/frameGraphTextureManager.js.map +1 -1
  33. package/Gizmos/cameraGizmo.js +11 -13
  34. package/Gizmos/cameraGizmo.js.map +1 -1
  35. package/Gizmos/planeDragGizmo.js +21 -13
  36. package/Gizmos/planeDragGizmo.js.map +1 -1
  37. package/Materials/Background/backgroundMaterial.js +1 -1
  38. package/Materials/Background/backgroundMaterial.js.map +1 -1
  39. package/Materials/GaussianSplatting/gaussianSplattingMaterial.js +1 -1
  40. package/Materials/GaussianSplatting/gaussianSplattingMaterial.js.map +1 -1
  41. package/Materials/Node/Blocks/Dual/smartFilterTextureBlock.js +0 -5
  42. package/Materials/Node/Blocks/Dual/smartFilterTextureBlock.js.map +1 -1
  43. package/Materials/Node/nodeMaterial.d.ts +1 -1
  44. package/Materials/Node/nodeMaterial.js +3 -14
  45. package/Materials/Node/nodeMaterial.js.map +1 -1
  46. package/Materials/PBR/pbrBaseMaterial.js +1 -1
  47. package/Materials/PBR/pbrBaseMaterial.js.map +1 -1
  48. package/Materials/material.d.ts +17 -1
  49. package/Materials/material.js +38 -7
  50. package/Materials/material.js.map +1 -1
  51. package/Materials/materialDefines.d.ts +1 -0
  52. package/Materials/materialDefines.js +1 -0
  53. package/Materials/materialDefines.js.map +1 -1
  54. package/Materials/materialHelper.functions.d.ts +2 -1
  55. package/Materials/materialHelper.functions.js +3 -1
  56. package/Materials/materialHelper.functions.js.map +1 -1
  57. package/Materials/standardMaterial.js +1 -1
  58. package/Materials/standardMaterial.js.map +1 -1
  59. package/Meshes/GaussianSplatting/gaussianSplattingMesh.js +3 -10
  60. package/Meshes/GaussianSplatting/gaussianSplattingMesh.js.map +1 -1
  61. package/Meshes/csg2.js +5 -3
  62. package/Meshes/csg2.js.map +1 -1
  63. package/Meshes/linesMesh.d.ts +5 -3
  64. package/Meshes/linesMesh.js +27 -8
  65. package/Meshes/linesMesh.js.map +1 -1
  66. package/Meshes/mesh.vertexData.d.ts +2 -2
  67. package/Meshes/mesh.vertexData.js.map +1 -1
  68. package/Misc/fileTools.d.ts +2 -2
  69. package/Misc/fileTools.js +3 -1
  70. package/Misc/fileTools.js.map +1 -1
  71. package/Misc/khronosTextureContainer2.js +16 -7
  72. package/Misc/khronosTextureContainer2.js.map +1 -1
  73. package/Misc/snapshotRenderingHelper.d.ts +2 -0
  74. package/Misc/snapshotRenderingHelper.js +31 -1
  75. package/Misc/snapshotRenderingHelper.js.map +1 -1
  76. package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.js +6 -3
  77. package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.js.map +1 -1
  78. package/PostProcesses/RenderPipeline/Pipelines/taaMaterialManager.js +1 -0
  79. package/PostProcesses/RenderPipeline/Pipelines/taaMaterialManager.js.map +1 -1
  80. package/Rendering/objectRenderer.d.ts +14 -2
  81. package/Rendering/objectRenderer.js +54 -28
  82. package/Rendering/objectRenderer.js.map +1 -1
  83. package/Shaders/pbr.vertex.js +1 -5
  84. package/Shaders/pbr.vertex.js.map +1 -1
  85. package/Shaders/ssao2.fragment.js +14 -2
  86. package/Shaders/ssao2.fragment.js.map +1 -1
  87. package/ShadersWGSL/ssao2.fragment.js +14 -2
  88. package/ShadersWGSL/ssao2.fragment.js.map +1 -1
  89. package/Sprites/spriteManager.d.ts +5 -0
  90. package/Sprites/spriteManager.js +6 -0
  91. package/Sprites/spriteManager.js.map +1 -1
  92. package/Sprites/spriteRenderer.d.ts +5 -2
  93. package/Sprites/spriteRenderer.js.map +1 -1
  94. package/XR/features/WebXRDepthSensing.js +4 -2
  95. package/XR/features/WebXRDepthSensing.js.map +1 -1
  96. package/package.json +1 -1
  97. package/scene.js +5 -2
  98. package/scene.js.map +1 -1
@@ -361,7 +361,7 @@ export declare class Material implements IAnimatable, IClipPlanesHolder {
361
361
  /**
362
362
  * Stores the value of the alpha mode
363
363
  */
364
- protected _alphaMode: number[];
364
+ private _alphaMode;
365
365
  /**
366
366
  * Sets the value of the alpha mode.
367
367
  *
@@ -522,6 +522,16 @@ export declare class Material implements IAnimatable, IClipPlanesHolder {
522
522
  */
523
523
  get useLogarithmicDepth(): boolean;
524
524
  set useLogarithmicDepth(value: boolean);
525
+ protected _setVertexOutputInvariant: boolean;
526
+ /**
527
+ * Gets or sets the vertex output invariant state
528
+ * Setting this property to true will force the shader compiler to disable some optimization to make sure the vertex output is always calculated
529
+ * the same way across different compilation units.
530
+ * You may need to enable this option if you are seeing some depth artifacts when using a depth pre-pass, for e.g.
531
+ * Note that this may have an impact on performance, so leave this option disabled if not needed.
532
+ */
533
+ get setVertexOutputInvariant(): boolean;
534
+ set setVertexOutputInvariant(value: boolean);
525
535
  /**
526
536
  * @internal
527
537
  * Stores the effects for the material
@@ -905,6 +915,12 @@ export declare class Material implements IAnimatable, IClipPlanesHolder {
905
915
  */
906
916
  serialize(): any;
907
917
  protected _serializePlugins(serializationObject: any): void;
918
+ /**
919
+ * Parses the alpha mode from the material data to parse
920
+ * @param parsedMaterial defines the material data to parse
921
+ * @param material defines the material to update
922
+ */
923
+ static ParseAlphaMode(parsedMaterial: any, material: Material): void;
908
924
  /**
909
925
  * Creates a material from parsed material data
910
926
  * @param parsedMaterial defines parsed material data
@@ -353,6 +353,23 @@ export class Material {
353
353
  this._useLogarithmicDepth = value && fragmentDepthSupported;
354
354
  this._markAllSubMeshesAsMiscDirty();
355
355
  }
356
+ /**
357
+ * Gets or sets the vertex output invariant state
358
+ * Setting this property to true will force the shader compiler to disable some optimization to make sure the vertex output is always calculated
359
+ * the same way across different compilation units.
360
+ * You may need to enable this option if you are seeing some depth artifacts when using a depth pre-pass, for e.g.
361
+ * Note that this may have an impact on performance, so leave this option disabled if not needed.
362
+ */
363
+ get setVertexOutputInvariant() {
364
+ return this._setVertexOutputInvariant;
365
+ }
366
+ set setVertexOutputInvariant(value) {
367
+ if (this._setVertexOutputInvariant === value) {
368
+ return;
369
+ }
370
+ this._setVertexOutputInvariant = value;
371
+ this._markAllSubMeshesAsMiscDirty();
372
+ }
356
373
  /** @internal */
357
374
  _getDrawWrapper() {
358
375
  return this._drawWrapper;
@@ -507,6 +524,7 @@ export class Material {
507
524
  * Gives access to the stencil properties of the material
508
525
  */
509
526
  this.stencil = new MaterialStencilState();
527
+ this._setVertexOutputInvariant = false;
510
528
  /**
511
529
  * Specifies if uniform buffers should be used
512
530
  */
@@ -1402,7 +1420,6 @@ export class Material {
1402
1420
  */
1403
1421
  serialize() {
1404
1422
  const serializationObject = SerializationHelper.Serialize(this);
1405
- serializationObject.alphaMode = this._alphaMode;
1406
1423
  serializationObject.stencil = this.stencil.serialize();
1407
1424
  serializationObject.uniqueId = this.uniqueId;
1408
1425
  this._serializePlugins(serializationObject);
@@ -1418,6 +1435,22 @@ export class Material {
1418
1435
  }
1419
1436
  }
1420
1437
  }
1438
+ /**
1439
+ * Parses the alpha mode from the material data to parse
1440
+ * @param parsedMaterial defines the material data to parse
1441
+ * @param material defines the material to update
1442
+ */
1443
+ static ParseAlphaMode(parsedMaterial, material) {
1444
+ if (parsedMaterial._alphaMode !== undefined) {
1445
+ material._alphaMode = Array.isArray(parsedMaterial._alphaMode) ? parsedMaterial._alphaMode : [parsedMaterial._alphaMode];
1446
+ }
1447
+ else if (parsedMaterial.alphaMode !== undefined) {
1448
+ material._alphaMode = Array.isArray(parsedMaterial.alphaMode) ? parsedMaterial.alphaMode : [parsedMaterial.alphaMode];
1449
+ }
1450
+ else {
1451
+ material._alphaMode = [2];
1452
+ }
1453
+ }
1421
1454
  /**
1422
1455
  * Creates a material from parsed material data
1423
1456
  * @param parsedMaterial defines parsed material data
@@ -1439,12 +1472,7 @@ export class Material {
1439
1472
  const materialType = Tools.Instantiate(parsedMaterial.customType);
1440
1473
  const material = materialType.Parse(parsedMaterial, scene, rootUrl);
1441
1474
  material._loadedUniqueId = parsedMaterial.uniqueId;
1442
- if (!Array.isArray(parsedMaterial.alphaMode)) {
1443
- material._alphaMode = [parsedMaterial.alphaMode ?? 2];
1444
- }
1445
- else {
1446
- material._alphaMode = parsedMaterial.alphaMode;
1447
- }
1475
+ Material.ParseAlphaMode(parsedMaterial, material);
1448
1476
  return material;
1449
1477
  }
1450
1478
  static _ParsePlugins(serializationObject, material, scene, rootUrl) {
@@ -1668,6 +1696,9 @@ __decorate([
1668
1696
  __decorate([
1669
1697
  serialize()
1670
1698
  ], Material.prototype, "useLogarithmicDepth", null);
1699
+ __decorate([
1700
+ serialize()
1701
+ ], Material.prototype, "_setVertexOutputInvariant", void 0);
1671
1702
  __decorate([
1672
1703
  serialize()
1673
1704
  ], Material.prototype, "transparencyMode", null);