@onerjs/core 8.50.6 → 8.50.7

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 (76) hide show
  1. package/AudioV2/abstractAudio/abstractSound.d.ts +1 -0
  2. package/AudioV2/abstractAudio/abstractSound.js +9 -0
  3. package/AudioV2/abstractAudio/abstractSound.js.map +1 -1
  4. package/AudioV2/abstractAudio/audioEngineV2.d.ts +6 -0
  5. package/AudioV2/abstractAudio/audioEngineV2.js +8 -0
  6. package/AudioV2/abstractAudio/audioEngineV2.js.map +1 -1
  7. package/AudioV2/webAudio/webAudioEngine.d.ts +2 -0
  8. package/AudioV2/webAudio/webAudioEngine.js +29 -2
  9. package/AudioV2/webAudio/webAudioEngine.js.map +1 -1
  10. package/Engines/Native/nativeHelpers.js +26 -0
  11. package/Engines/Native/nativeHelpers.js.map +1 -1
  12. package/Engines/WebGPU/webgpuTextureHelper.js +26 -0
  13. package/Engines/WebGPU/webgpuTextureHelper.js.map +1 -1
  14. package/Engines/abstractEngine.js +2 -2
  15. package/Engines/abstractEngine.js.map +1 -1
  16. package/Engines/constants.d.ts +52 -0
  17. package/Engines/constants.js +52 -0
  18. package/Engines/constants.js.map +1 -1
  19. package/Engines/engine.d.ts +15 -2
  20. package/Engines/thinEngine.js +52 -0
  21. package/Engines/thinEngine.js.map +1 -1
  22. package/FrameGraph/frameGraphTextureManager.js +26 -0
  23. package/FrameGraph/frameGraphTextureManager.js.map +1 -1
  24. package/Loading/Plugins/babylonFileLoader.js +14 -0
  25. package/Loading/Plugins/babylonFileLoader.js.map +1 -1
  26. package/Materials/PBR/openpbrMaterial.d.ts +11 -0
  27. package/Materials/PBR/openpbrMaterial.js +56 -9
  28. package/Materials/PBR/openpbrMaterial.js.map +1 -1
  29. package/Materials/Textures/Loaders/ktxTextureLoader.js +26 -0
  30. package/Materials/Textures/Loaders/ktxTextureLoader.js.map +1 -1
  31. package/Materials/material.d.ts +16 -1
  32. package/Materials/material.js +16 -1
  33. package/Materials/material.js.map +1 -1
  34. package/Meshes/GaussianSplatting/gaussianSplattingMesh.d.ts +1 -1
  35. package/Meshes/GaussianSplatting/gaussianSplattingMesh.js +16 -18
  36. package/Meshes/GaussianSplatting/gaussianSplattingMesh.js.map +1 -1
  37. package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.d.ts +24 -0
  38. package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.js +93 -18
  39. package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.js.map +1 -1
  40. package/Meshes/mesh.js +3 -0
  41. package/Meshes/mesh.js.map +1 -1
  42. package/Meshes/transformNode.d.ts +6 -0
  43. package/Meshes/transformNode.js +6 -0
  44. package/Meshes/transformNode.js.map +1 -1
  45. package/Misc/snapshotRenderingHelper.d.ts +7 -1
  46. package/Misc/snapshotRenderingHelper.js +7 -1
  47. package/Misc/snapshotRenderingHelper.js.map +1 -1
  48. package/Misc/stringTools.js +2 -2
  49. package/Misc/stringTools.js.map +1 -1
  50. package/Misc/textureTools.js +26 -0
  51. package/Misc/textureTools.js.map +1 -1
  52. package/Misc/tools.js +1 -1
  53. package/Misc/tools.js.map +1 -1
  54. package/Shaders/ShadersInclude/hdrFilteringFunctions.js +1 -1
  55. package/Shaders/ShadersInclude/hdrFilteringFunctions.js.map +1 -1
  56. package/Shaders/ShadersInclude/openpbrBackgroundTransmission.js +1 -1
  57. package/Shaders/ShadersInclude/openpbrBackgroundTransmission.js.map +1 -1
  58. package/Shaders/ShadersInclude/openpbrDirectLighting.js +18 -10
  59. package/Shaders/ShadersInclude/openpbrDirectLighting.js.map +1 -1
  60. package/Shaders/ShadersInclude/openpbrEnvironmentLighting.js +34 -12
  61. package/Shaders/ShadersInclude/openpbrEnvironmentLighting.js.map +1 -1
  62. package/Shaders/openpbr.fragment.js +14 -15
  63. package/Shaders/openpbr.fragment.js.map +1 -1
  64. package/ShadersWGSL/ShadersInclude/hdrFilteringFunctions.js +1 -1
  65. package/ShadersWGSL/ShadersInclude/hdrFilteringFunctions.js.map +1 -1
  66. package/ShadersWGSL/ShadersInclude/openpbrBackgroundTransmission.js +1 -1
  67. package/ShadersWGSL/ShadersInclude/openpbrBackgroundTransmission.js.map +1 -1
  68. package/ShadersWGSL/ShadersInclude/openpbrDirectLighting.js +19 -11
  69. package/ShadersWGSL/ShadersInclude/openpbrDirectLighting.js.map +1 -1
  70. package/ShadersWGSL/ShadersInclude/openpbrDirectLightingInit.js +3 -3
  71. package/ShadersWGSL/ShadersInclude/openpbrDirectLightingInit.js.map +1 -1
  72. package/ShadersWGSL/ShadersInclude/openpbrEnvironmentLighting.js +34 -12
  73. package/ShadersWGSL/ShadersInclude/openpbrEnvironmentLighting.js.map +1 -1
  74. package/ShadersWGSL/openpbr.fragment.js +14 -15
  75. package/ShadersWGSL/openpbr.fragment.js.map +1 -1
  76. package/package.json +1 -1
@@ -18,6 +18,32 @@ function MapSRGBToLinear(format) {
18
18
  return 37494;
19
19
  case 37840:
20
20
  return 37808;
21
+ case 37841:
22
+ return 37809;
23
+ case 37842:
24
+ return 37810;
25
+ case 37843:
26
+ return 37811;
27
+ case 37844:
28
+ return 37812;
29
+ case 37845:
30
+ return 37813;
31
+ case 37846:
32
+ return 37814;
33
+ case 37847:
34
+ return 37815;
35
+ case 37848:
36
+ return 37816;
37
+ case 37849:
38
+ return 37817;
39
+ case 37850:
40
+ return 37818;
41
+ case 37851:
42
+ return 37819;
43
+ case 37852:
44
+ return 37820;
45
+ case 37853:
46
+ return 37821;
21
47
  case 36493:
22
48
  return 36492;
23
49
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ktxTextureLoader.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Materials/Textures/Loaders/ktxTextureLoader.ts"],"names":[],"mappings":"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","sourcesContent":["import { KhronosTextureContainer } from \"../../../Misc/khronosTextureContainer\";\r\nimport { KhronosTextureContainer2 } from \"../../../Misc/khronosTextureContainer2\";\r\nimport { type Nullable } from \"../../../types\";\r\nimport { type InternalTexture } from \"../../../Materials/Textures/internalTexture\";\r\nimport { type IInternalTextureLoader } from \"./internalTextureLoader\";\r\nimport { Logger } from \"../../../Misc/logger\";\r\nimport { Constants } from \"../../../Engines/constants\";\r\n\r\nfunction MapSRGBToLinear(format: number): Nullable<number> {\r\n switch (format) {\r\n case Constants.TEXTUREFORMAT_COMPRESSED_SRGB_S3TC_DXT1_EXT:\r\n return Constants.TEXTUREFORMAT_COMPRESSED_RGB_S3TC_DXT1;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT:\r\n return Constants.TEXTUREFORMAT_COMPRESSED_RGBA_S3TC_DXT3;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT:\r\n return Constants.TEXTUREFORMAT_COMPRESSED_RGBA_S3TC_DXT5;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_SRGB8_ETC2:\r\n return Constants.TEXTUREFORMAT_COMPRESSED_RGB8_ETC2;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:\r\n return Constants.TEXTUREFORMAT_COMPRESSED_RGBA8_ETC2_EAC;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2:\r\n return Constants.TEXTUREFORMAT_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:\r\n return Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_4x4;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_SRGB_ALPHA_BPTC_UNORM:\r\n return Constants.TEXTUREFORMAT_COMPRESSED_RGBA_BPTC_UNORM;\r\n }\r\n\r\n return null;\r\n}\r\n\r\n/**\r\n * Implementation of the KTX Texture Loader.\r\n * @internal\r\n */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport class _KTXTextureLoader implements IInternalTextureLoader {\r\n /**\r\n * Defines whether the loader supports cascade loading the different faces.\r\n */\r\n public readonly supportCascades = false;\r\n\r\n /**\r\n * Uploads the cube texture data to the WebGL texture. It has already been bound.\r\n * @param data contains the texture data\r\n * @param texture defines the BabylonJS internal texture\r\n * @param createPolynomials will be true if polynomials have been requested\r\n * @param onLoad defines the callback to trigger once the texture is ready\r\n */\r\n public loadCubeData(data: ArrayBufferView | ArrayBufferView[], texture: InternalTexture, createPolynomials: boolean, onLoad: Nullable<(data?: any) => void>): void {\r\n if (Array.isArray(data)) {\r\n return;\r\n }\r\n\r\n // Need to invert vScale as invertY via UNPACK_FLIP_Y_WEBGL is not supported by compressed texture\r\n texture._invertVScale = !texture.invertY;\r\n const engine = texture.getEngine();\r\n const ktx = new KhronosTextureContainer(data, 6);\r\n\r\n const loadMipmap = ktx.numberOfMipmapLevels > 1 && texture.generateMipMaps;\r\n\r\n engine._unpackFlipY(true);\r\n\r\n ktx.uploadLevels(texture, texture.generateMipMaps);\r\n\r\n texture.width = ktx.pixelWidth;\r\n texture.height = ktx.pixelHeight;\r\n\r\n engine._setCubeMapTextureParams(texture, loadMipmap, ktx.numberOfMipmapLevels - 1);\r\n texture.isReady = true;\r\n texture.onLoadedObservable.notifyObservers(texture);\r\n texture.onLoadedObservable.clear();\r\n\r\n if (onLoad) {\r\n onLoad();\r\n }\r\n }\r\n\r\n /**\r\n * Uploads the 2D texture data to the WebGL texture. It has already been bound once in the callback.\r\n * @param data contains the texture data\r\n * @param texture defines the BabylonJS internal texture\r\n * @param callback defines the method to call once ready to upload\r\n * @param options\r\n */\r\n public loadData(\r\n data: ArrayBufferView,\r\n texture: InternalTexture,\r\n callback: (width: number, height: number, loadMipmap: boolean, isCompressed: boolean, done: () => void, loadFailed: boolean) => void,\r\n options?: any\r\n ): void {\r\n if (KhronosTextureContainer.IsValid(data)) {\r\n // Need to invert vScale as invertY via UNPACK_FLIP_Y_WEBGL is not supported by compressed texture\r\n texture._invertVScale = !texture.invertY;\r\n const ktx = new KhronosTextureContainer(data, 1);\r\n\r\n const mappedFormat = MapSRGBToLinear(ktx.glInternalFormat);\r\n if (mappedFormat) {\r\n texture.format = mappedFormat;\r\n texture._useSRGBBuffer = texture.getEngine()._getUseSRGBBuffer(true, texture.generateMipMaps);\r\n texture._gammaSpace = true;\r\n } else {\r\n texture.format = ktx.glInternalFormat;\r\n }\r\n\r\n callback(\r\n ktx.pixelWidth,\r\n ktx.pixelHeight,\r\n texture.generateMipMaps,\r\n true,\r\n () => {\r\n ktx.uploadLevels(texture, texture.generateMipMaps);\r\n },\r\n ktx.isInvalid\r\n );\r\n } else if (KhronosTextureContainer2.IsValid(data)) {\r\n const ktx2 = new KhronosTextureContainer2(texture.getEngine());\r\n // eslint-disable-next-line github/no-then\r\n ktx2._uploadAsync(data, texture, options).then(\r\n () => {\r\n callback(texture.width, texture.height, texture.generateMipMaps, true, () => {}, false);\r\n },\r\n (error) => {\r\n Logger.Warn(`Failed to load KTX2 texture data: ${error.message}`);\r\n callback(0, 0, false, false, () => {}, true);\r\n }\r\n );\r\n } else {\r\n Logger.Error(\"texture missing KTX identifier\");\r\n callback(0, 0, false, false, () => {}, true);\r\n }\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"ktxTextureLoader.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Materials/Textures/Loaders/ktxTextureLoader.ts"],"names":[],"mappings":"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","sourcesContent":["import { KhronosTextureContainer } from \"../../../Misc/khronosTextureContainer\";\r\nimport { KhronosTextureContainer2 } from \"../../../Misc/khronosTextureContainer2\";\r\nimport { type Nullable } from \"../../../types\";\r\nimport { type InternalTexture } from \"../../../Materials/Textures/internalTexture\";\r\nimport { type IInternalTextureLoader } from \"./internalTextureLoader\";\r\nimport { Logger } from \"../../../Misc/logger\";\r\nimport { Constants } from \"../../../Engines/constants\";\r\n\r\nfunction MapSRGBToLinear(format: number): Nullable<number> {\r\n switch (format) {\r\n case Constants.TEXTUREFORMAT_COMPRESSED_SRGB_S3TC_DXT1_EXT:\r\n return Constants.TEXTUREFORMAT_COMPRESSED_RGB_S3TC_DXT1;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT:\r\n return Constants.TEXTUREFORMAT_COMPRESSED_RGBA_S3TC_DXT3;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT:\r\n return Constants.TEXTUREFORMAT_COMPRESSED_RGBA_S3TC_DXT5;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_SRGB8_ETC2:\r\n return Constants.TEXTUREFORMAT_COMPRESSED_RGB8_ETC2;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:\r\n return Constants.TEXTUREFORMAT_COMPRESSED_RGBA8_ETC2_EAC;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2:\r\n return Constants.TEXTUREFORMAT_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:\r\n return Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_4x4;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:\r\n return Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_5x4;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:\r\n return Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_5x5;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:\r\n return Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_6x5;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:\r\n return Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_6x6;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:\r\n return Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_8x5;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:\r\n return Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_8x6;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:\r\n return Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_8x8;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:\r\n return Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_10x5;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:\r\n return Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_10x6;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:\r\n return Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_10x8;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:\r\n return Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_10x10;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:\r\n return Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_12x10;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:\r\n return Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_12x12;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_SRGB_ALPHA_BPTC_UNORM:\r\n return Constants.TEXTUREFORMAT_COMPRESSED_RGBA_BPTC_UNORM;\r\n }\r\n\r\n return null;\r\n}\r\n\r\n/**\r\n * Implementation of the KTX Texture Loader.\r\n * @internal\r\n */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport class _KTXTextureLoader implements IInternalTextureLoader {\r\n /**\r\n * Defines whether the loader supports cascade loading the different faces.\r\n */\r\n public readonly supportCascades = false;\r\n\r\n /**\r\n * Uploads the cube texture data to the WebGL texture. It has already been bound.\r\n * @param data contains the texture data\r\n * @param texture defines the BabylonJS internal texture\r\n * @param createPolynomials will be true if polynomials have been requested\r\n * @param onLoad defines the callback to trigger once the texture is ready\r\n */\r\n public loadCubeData(data: ArrayBufferView | ArrayBufferView[], texture: InternalTexture, createPolynomials: boolean, onLoad: Nullable<(data?: any) => void>): void {\r\n if (Array.isArray(data)) {\r\n return;\r\n }\r\n\r\n // Need to invert vScale as invertY via UNPACK_FLIP_Y_WEBGL is not supported by compressed texture\r\n texture._invertVScale = !texture.invertY;\r\n const engine = texture.getEngine();\r\n const ktx = new KhronosTextureContainer(data, 6);\r\n\r\n const loadMipmap = ktx.numberOfMipmapLevels > 1 && texture.generateMipMaps;\r\n\r\n engine._unpackFlipY(true);\r\n\r\n ktx.uploadLevels(texture, texture.generateMipMaps);\r\n\r\n texture.width = ktx.pixelWidth;\r\n texture.height = ktx.pixelHeight;\r\n\r\n engine._setCubeMapTextureParams(texture, loadMipmap, ktx.numberOfMipmapLevels - 1);\r\n texture.isReady = true;\r\n texture.onLoadedObservable.notifyObservers(texture);\r\n texture.onLoadedObservable.clear();\r\n\r\n if (onLoad) {\r\n onLoad();\r\n }\r\n }\r\n\r\n /**\r\n * Uploads the 2D texture data to the WebGL texture. It has already been bound once in the callback.\r\n * @param data contains the texture data\r\n * @param texture defines the BabylonJS internal texture\r\n * @param callback defines the method to call once ready to upload\r\n * @param options\r\n */\r\n public loadData(\r\n data: ArrayBufferView,\r\n texture: InternalTexture,\r\n callback: (width: number, height: number, loadMipmap: boolean, isCompressed: boolean, done: () => void, loadFailed: boolean) => void,\r\n options?: any\r\n ): void {\r\n if (KhronosTextureContainer.IsValid(data)) {\r\n // Need to invert vScale as invertY via UNPACK_FLIP_Y_WEBGL is not supported by compressed texture\r\n texture._invertVScale = !texture.invertY;\r\n const ktx = new KhronosTextureContainer(data, 1);\r\n\r\n const mappedFormat = MapSRGBToLinear(ktx.glInternalFormat);\r\n if (mappedFormat) {\r\n texture.format = mappedFormat;\r\n texture._useSRGBBuffer = texture.getEngine()._getUseSRGBBuffer(true, texture.generateMipMaps);\r\n texture._gammaSpace = true;\r\n } else {\r\n texture.format = ktx.glInternalFormat;\r\n }\r\n\r\n callback(\r\n ktx.pixelWidth,\r\n ktx.pixelHeight,\r\n texture.generateMipMaps,\r\n true,\r\n () => {\r\n ktx.uploadLevels(texture, texture.generateMipMaps);\r\n },\r\n ktx.isInvalid\r\n );\r\n } else if (KhronosTextureContainer2.IsValid(data)) {\r\n const ktx2 = new KhronosTextureContainer2(texture.getEngine());\r\n // eslint-disable-next-line github/no-then\r\n ktx2._uploadAsync(data, texture, options).then(\r\n () => {\r\n callback(texture.width, texture.height, texture.generateMipMaps, true, () => {}, false);\r\n },\r\n (error) => {\r\n Logger.Warn(`Failed to load KTX2 texture data: ${error.message}`);\r\n callback(0, 0, false, false, () => {}, true);\r\n }\r\n );\r\n } else {\r\n Logger.Error(\"texture missing KTX identifier\");\r\n callback(0, 0, false, false, () => {}, true);\r\n }\r\n }\r\n}\r\n"]}
@@ -656,7 +656,22 @@ export declare class Material implements IAnimatable, IClipPlanesHolder {
656
656
  */
657
657
  get isFrozen(): boolean;
658
658
  /**
659
- * Locks updates for the material
659
+ * Locks updates for the material.
660
+ *
661
+ * Note: while a material is frozen, the scene can still rebind it at least
662
+ * once per camera render (and again whenever another material was bound in
663
+ * between). What can be skipped while the frozen material stays cached are
664
+ * per-mesh updates performed during a rebind.
665
+ *
666
+ * This includes per-mesh morph target influences. If the same frozen
667
+ * material is shared across several meshes that each have different
668
+ * per-mesh morph influences, only the mesh that triggers the rebind updates
669
+ * those values. Other meshes rendered afterward with the same cached frozen
670
+ * material may reuse stale influences and render with the wrong values.
671
+ *
672
+ * For that scenario either keep the material unfrozen, clone the material
673
+ * per mesh and freeze each clone, or `unfreeze()` before changing
674
+ * influences and `freeze()` again afterwards.
660
675
  */
661
676
  freeze(): void;
662
677
  /**
@@ -654,7 +654,22 @@ export class Material {
654
654
  return this.checkReadyOnlyOnce;
655
655
  }
656
656
  /**
657
- * Locks updates for the material
657
+ * Locks updates for the material.
658
+ *
659
+ * Note: while a material is frozen, the scene can still rebind it at least
660
+ * once per camera render (and again whenever another material was bound in
661
+ * between). What can be skipped while the frozen material stays cached are
662
+ * per-mesh updates performed during a rebind.
663
+ *
664
+ * This includes per-mesh morph target influences. If the same frozen
665
+ * material is shared across several meshes that each have different
666
+ * per-mesh morph influences, only the mesh that triggers the rebind updates
667
+ * those values. Other meshes rendered afterward with the same cached frozen
668
+ * material may reuse stale influences and render with the wrong values.
669
+ *
670
+ * For that scenario either keep the material unfrozen, clone the material
671
+ * per mesh and freeze each clone, or `unfreeze()` before changing
672
+ * influences and `freeze()` again afterwards.
658
673
  */
659
674
  freeze() {
660
675
  this.markDirty();