@babylonjs/core 7.54.1 → 7.54.3

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 (100) hide show
  1. package/AudioV2/abstractAudio/audioEngineV2.d.ts +3 -3
  2. package/AudioV2/abstractAudio/audioEngineV2.js +2 -2
  3. package/AudioV2/abstractAudio/audioEngineV2.js.map +1 -1
  4. package/AudioV2/abstractAudio/staticSound.d.ts +11 -14
  5. package/AudioV2/abstractAudio/staticSound.js +6 -8
  6. package/AudioV2/abstractAudio/staticSound.js.map +1 -1
  7. package/AudioV2/abstractAudio/streamingSound.d.ts +4 -4
  8. package/AudioV2/abstractAudio/streamingSound.js +5 -5
  9. package/AudioV2/abstractAudio/streamingSound.js.map +1 -1
  10. package/AudioV2/abstractAudio/subProperties/abstractAudioAnalyzer.d.ts +2 -2
  11. package/AudioV2/abstractAudio/subProperties/abstractAudioAnalyzer.js.map +1 -1
  12. package/AudioV2/abstractAudio/subProperties/audioAnalyzer.d.ts +1 -1
  13. package/AudioV2/abstractAudio/subProperties/audioAnalyzer.js +3 -3
  14. package/AudioV2/abstractAudio/subProperties/audioAnalyzer.js.map +1 -1
  15. package/AudioV2/webAudio/webAudioEngine.d.ts +4 -4
  16. package/AudioV2/webAudio/webAudioEngine.js +3 -3
  17. package/AudioV2/webAudio/webAudioEngine.js.map +1 -1
  18. package/AudioV2/webAudio/webAudioStaticSound.js +2 -10
  19. package/AudioV2/webAudio/webAudioStaticSound.js.map +1 -1
  20. package/AudioV2/webAudio/webAudioStreamingSound.js +1 -1
  21. package/AudioV2/webAudio/webAudioStreamingSound.js.map +1 -1
  22. package/AudioV2/webAudio/webAudioUnmuteUI.js +1 -1
  23. package/AudioV2/webAudio/webAudioUnmuteUI.js.map +1 -1
  24. package/Cameras/arcRotateCamera.js +1 -1
  25. package/Cameras/arcRotateCamera.js.map +1 -1
  26. package/Collisions/pickingInfo.js +6 -0
  27. package/Collisions/pickingInfo.js.map +1 -1
  28. package/Debug/debugLayer.d.ts +1 -1
  29. package/Debug/debugLayer.js.map +1 -1
  30. package/Engines/abstractEngine.js +2 -2
  31. package/Engines/abstractEngine.js.map +1 -1
  32. package/Engines/constants.d.ts +5 -1
  33. package/Engines/constants.js +5 -1
  34. package/Engines/constants.js.map +1 -1
  35. package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.d.ts +3 -0
  36. package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.js +13 -0
  37. package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.js.map +1 -1
  38. package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.js +16 -0
  39. package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.js.map +1 -1
  40. package/FrameGraph/Node/Blocks/Rendering/objectRendererBlock.d.ts +0 -3
  41. package/FrameGraph/Node/Blocks/Rendering/objectRendererBlock.js +8 -14
  42. package/FrameGraph/Node/Blocks/Rendering/objectRendererBlock.js.map +1 -1
  43. package/FrameGraph/Node/Blocks/Textures/clearBlock.d.ts +3 -0
  44. package/FrameGraph/Node/Blocks/Textures/clearBlock.js +13 -0
  45. package/FrameGraph/Node/Blocks/Textures/clearBlock.js.map +1 -1
  46. package/FrameGraph/Node/nodeRenderGraph.js +2 -1
  47. package/FrameGraph/Node/nodeRenderGraph.js.map +1 -1
  48. package/FrameGraph/Tasks/Rendering/objectRendererTask.d.ts +4 -0
  49. package/FrameGraph/Tasks/Rendering/objectRendererTask.js +6 -0
  50. package/FrameGraph/Tasks/Rendering/objectRendererTask.js.map +1 -1
  51. package/FrameGraph/Tasks/Rendering/taaObjectRendererTask.js +1 -0
  52. package/FrameGraph/Tasks/Rendering/taaObjectRendererTask.js.map +1 -1
  53. package/FrameGraph/Tasks/Texture/clearTextureTask.d.ts +4 -0
  54. package/FrameGraph/Tasks/Texture/clearTextureTask.js +11 -2
  55. package/FrameGraph/Tasks/Texture/clearTextureTask.js.map +1 -1
  56. package/FrameGraph/frameGraph.d.ts +18 -2
  57. package/FrameGraph/frameGraph.js +26 -1
  58. package/FrameGraph/frameGraph.js.map +1 -1
  59. package/Materials/GreasedLine/greasedLineSimpleMaterial.js +5 -4
  60. package/Materials/GreasedLine/greasedLineSimpleMaterial.js.map +1 -1
  61. package/Materials/Node/Blocks/PBR/clearCoatBlock.d.ts +2 -0
  62. package/Materials/Node/Blocks/PBR/clearCoatBlock.js +14 -7
  63. package/Materials/Node/Blocks/PBR/clearCoatBlock.js.map +1 -1
  64. package/Materials/Node/Blocks/PBR/index.d.ts +1 -0
  65. package/Materials/Node/Blocks/PBR/index.js +1 -0
  66. package/Materials/Node/Blocks/PBR/index.js.map +1 -1
  67. package/Materials/Node/Blocks/PBR/iridescenceBlock.js +2 -1
  68. package/Materials/Node/Blocks/PBR/iridescenceBlock.js.map +1 -1
  69. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js +3 -1
  70. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js.map +1 -1
  71. package/Materials/Textures/renderTargetTexture.d.ts +5 -0
  72. package/Materials/Textures/renderTargetTexture.js +9 -0
  73. package/Materials/Textures/renderTargetTexture.js.map +1 -1
  74. package/Materials/effect.js +2 -2
  75. package/Materials/effect.js.map +1 -1
  76. package/Materials/material.d.ts +5 -1
  77. package/Materials/material.js +9 -2
  78. package/Materials/material.js.map +1 -1
  79. package/Materials/materialPluginBase.js +1 -1
  80. package/Maths/math.vector.d.ts +7 -0
  81. package/Maths/math.vector.js +17 -0
  82. package/Maths/math.vector.js.map +1 -1
  83. package/Rendering/depthPeelingSceneComponent.js +1 -1
  84. package/Rendering/objectRenderer.d.ts +7 -0
  85. package/Rendering/objectRenderer.js +19 -0
  86. package/Rendering/objectRenderer.js.map +1 -1
  87. package/Shaders/ShadersInclude/pbrBlockIridescence.js +1 -0
  88. package/Shaders/ShadersInclude/pbrBlockIridescence.js.map +1 -1
  89. package/Shaders/pbr.fragment.js +1 -0
  90. package/Shaders/pbr.fragment.js.map +1 -1
  91. package/ShadersWGSL/ShadersInclude/pbrBlockIridescence.js +3 -2
  92. package/ShadersWGSL/ShadersInclude/pbrBlockIridescence.js.map +1 -1
  93. package/ShadersWGSL/pbr.fragment.js +1 -0
  94. package/ShadersWGSL/pbr.fragment.js.map +1 -1
  95. package/Sprites/spriteManager.js +1 -1
  96. package/Sprites/spriteManager.js.map +1 -1
  97. package/package.json +1 -1
  98. package/scene.d.ts +10 -0
  99. package/scene.js +18 -1
  100. package/scene.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"iridescenceBlock.js","sourceRoot":"","sources":["../../../../../../../dev/core/src/Materials/Node/Blocks/PBR/iridescenceBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import { NodeMaterialBlock } from \"../../nodeMaterialBlock\";\r\nimport { NodeMaterialBlockConnectionPointTypes } from \"../../Enums/nodeMaterialBlockConnectionPointTypes\";\r\nimport type { NodeMaterialBuildState } from \"../../nodeMaterialBuildState\";\r\nimport type { NodeMaterialConnectionPoint } from \"../../nodeMaterialBlockConnectionPoint\";\r\nimport { NodeMaterialConnectionPointDirection } from \"../../nodeMaterialBlockConnectionPoint\";\r\nimport { NodeMaterialBlockTargets } from \"../../Enums/nodeMaterialBlockTargets\";\r\nimport { RegisterClass } from \"../../../../Misc/typeStore\";\r\nimport { InputBlock } from \"../Input/inputBlock\";\r\nimport { NodeMaterialConnectionPointCustomObject } from \"../../nodeMaterialConnectionPointCustomObject\";\r\nimport type { NodeMaterial, NodeMaterialDefines } from \"../../nodeMaterial\";\r\nimport type { AbstractMesh } from \"../../../../Meshes/abstractMesh\";\r\nimport type { Scene } from \"../../../../scene\";\r\nimport type { Nullable } from \"../../../../types\";\r\nimport { PBRIridescenceConfiguration } from \"../../../../Materials/PBR/pbrIridescenceConfiguration\";\r\nimport { ShaderLanguage } from \"core/Materials/shaderLanguage\";\r\n\r\n/**\r\n * Block used to implement the iridescence module of the PBR material\r\n */\r\nexport class IridescenceBlock extends NodeMaterialBlock {\r\n /**\r\n * Create a new IridescenceBlock\r\n * @param name defines the block name\r\n */\r\n public constructor(name: string) {\r\n super(name, NodeMaterialBlockTargets.Fragment);\r\n\r\n this._isUnique = true;\r\n\r\n this.registerInput(\"intensity\", NodeMaterialBlockConnectionPointTypes.Float, true, NodeMaterialBlockTargets.Fragment);\r\n this.registerInput(\"indexOfRefraction\", NodeMaterialBlockConnectionPointTypes.Float, true, NodeMaterialBlockTargets.Fragment);\r\n this.registerInput(\"thickness\", NodeMaterialBlockConnectionPointTypes.Float, true, NodeMaterialBlockTargets.Fragment);\r\n\r\n this.registerOutput(\r\n \"iridescence\",\r\n NodeMaterialBlockConnectionPointTypes.Object,\r\n NodeMaterialBlockTargets.Fragment,\r\n new NodeMaterialConnectionPointCustomObject(\"iridescence\", this, NodeMaterialConnectionPointDirection.Output, IridescenceBlock, \"IridescenceBlock\")\r\n );\r\n }\r\n\r\n /**\r\n * Initialize the block and prepare the context for build\r\n * @param state defines the state that will be used for the build\r\n */\r\n public override initialize(state: NodeMaterialBuildState) {\r\n state._excludeVariableName(\"iridescenceOut\");\r\n state._excludeVariableName(\"vIridescenceParams\");\r\n }\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public override getClassName() {\r\n return \"IridescenceBlock\";\r\n }\r\n\r\n /**\r\n * Gets the intensity input component\r\n */\r\n public get intensity(): NodeMaterialConnectionPoint {\r\n return this._inputs[0];\r\n }\r\n\r\n /**\r\n * Gets the indexOfRefraction input component\r\n */\r\n public get indexOfRefraction(): NodeMaterialConnectionPoint {\r\n return this._inputs[1];\r\n }\r\n\r\n /**\r\n * Gets the thickness input component\r\n */\r\n public get thickness(): NodeMaterialConnectionPoint {\r\n return this._inputs[2];\r\n }\r\n\r\n /**\r\n * Gets the iridescence object output component\r\n */\r\n public get iridescence(): NodeMaterialConnectionPoint {\r\n return this._outputs[0];\r\n }\r\n\r\n public override autoConfigure() {\r\n if (!this.intensity.isConnected) {\r\n const intensityInput = new InputBlock(\"Iridescence intensity\", NodeMaterialBlockTargets.Fragment, NodeMaterialBlockConnectionPointTypes.Float);\r\n intensityInput.value = 1;\r\n intensityInput.output.connectTo(this.intensity);\r\n\r\n const indexOfRefractionInput = new InputBlock(\"Iridescence ior\", NodeMaterialBlockTargets.Fragment, NodeMaterialBlockConnectionPointTypes.Float);\r\n indexOfRefractionInput.value = 1.3;\r\n indexOfRefractionInput.output.connectTo(this.indexOfRefraction);\r\n\r\n const thicknessInput = new InputBlock(\"Iridescence thickness\", NodeMaterialBlockTargets.Fragment, NodeMaterialBlockConnectionPointTypes.Float);\r\n thicknessInput.value = 400;\r\n thicknessInput.output.connectTo(this.thickness);\r\n }\r\n }\r\n\r\n public override prepareDefines(mesh: AbstractMesh, nodeMaterial: NodeMaterial, defines: NodeMaterialDefines) {\r\n super.prepareDefines(mesh, nodeMaterial, defines);\r\n\r\n defines.setValue(\"IRIDESCENCE\", true, true);\r\n defines.setValue(\"IRIDESCENCE_TEXTURE\", false, true);\r\n defines.setValue(\"IRIDESCENCE_THICKNESS_TEXTURE\", false, true);\r\n }\r\n\r\n /**\r\n * Gets the main code of the block (fragment side)\r\n * @param iridescenceBlock instance of a IridescenceBlock or null if the code must be generated without an active iridescence module\r\n * @param state defines the build state\r\n * @returns the shader code\r\n */\r\n public static GetCode(iridescenceBlock: Nullable<IridescenceBlock>, state: NodeMaterialBuildState): string {\r\n let code = \"\";\r\n\r\n const intensityName = iridescenceBlock?.intensity.isConnected ? iridescenceBlock.intensity.associatedVariableName : \"1.\";\r\n const indexOfRefraction = iridescenceBlock?.indexOfRefraction.isConnected\r\n ? iridescenceBlock.indexOfRefraction.associatedVariableName\r\n : PBRIridescenceConfiguration._DefaultIndexOfRefraction;\r\n const thickness = iridescenceBlock?.thickness.isConnected ? iridescenceBlock.thickness.associatedVariableName : PBRIridescenceConfiguration._DefaultMaximumThickness;\r\n\r\n const isWebGPU = state.shaderLanguage === ShaderLanguage.WGSL;\r\n\r\n code += `${isWebGPU ? \"var iridescenceOut: iridescenceOutParams\" : \"iridescenceOutParams iridescenceOut\"};\r\n\r\n #ifdef IRIDESCENCE\r\n iridescenceOut = iridescenceBlock(\r\n vec4(${intensityName}, ${indexOfRefraction}, 1., ${thickness})\r\n , NdotV\r\n , specularEnvironmentR0\r\n #ifdef CLEARCOAT\r\n , NdotVUnclamped\r\n #endif \r\n );\r\n\r\n float iridescenceIntensity = iridescenceOut.iridescenceIntensity;\r\n specularEnvironmentR0 = iridescenceOut.specularEnvironmentR0;\r\n #endif\\n`;\r\n\r\n return code;\r\n }\r\n\r\n protected override _buildBlock(state: NodeMaterialBuildState) {\r\n if (state.target === NodeMaterialBlockTargets.Fragment) {\r\n state.sharedData.bindableBlocks.push(this);\r\n state.sharedData.blocksWithDefines.push(this);\r\n }\r\n\r\n return this;\r\n }\r\n\r\n public override serialize(): any {\r\n const serializationObject = super.serialize();\r\n\r\n return serializationObject;\r\n }\r\n\r\n public override _deserialize(serializationObject: any, scene: Scene, rootUrl: string) {\r\n super._deserialize(serializationObject, scene, rootUrl);\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.IridescenceBlock\", IridescenceBlock);\r\n"]}
1
+ {"version":3,"file":"iridescenceBlock.js","sourceRoot":"","sources":["../../../../../../../dev/core/src/Materials/Node/Blocks/PBR/iridescenceBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import { NodeMaterialBlock } from \"../../nodeMaterialBlock\";\r\nimport { NodeMaterialBlockConnectionPointTypes } from \"../../Enums/nodeMaterialBlockConnectionPointTypes\";\r\nimport type { NodeMaterialBuildState } from \"../../nodeMaterialBuildState\";\r\nimport type { NodeMaterialConnectionPoint } from \"../../nodeMaterialBlockConnectionPoint\";\r\nimport { NodeMaterialConnectionPointDirection } from \"../../nodeMaterialBlockConnectionPoint\";\r\nimport { NodeMaterialBlockTargets } from \"../../Enums/nodeMaterialBlockTargets\";\r\nimport { RegisterClass } from \"../../../../Misc/typeStore\";\r\nimport { InputBlock } from \"../Input/inputBlock\";\r\nimport { NodeMaterialConnectionPointCustomObject } from \"../../nodeMaterialConnectionPointCustomObject\";\r\nimport type { NodeMaterial, NodeMaterialDefines } from \"../../nodeMaterial\";\r\nimport type { AbstractMesh } from \"../../../../Meshes/abstractMesh\";\r\nimport type { Scene } from \"../../../../scene\";\r\nimport type { Nullable } from \"../../../../types\";\r\nimport { PBRIridescenceConfiguration } from \"../../../../Materials/PBR/pbrIridescenceConfiguration\";\r\nimport { ShaderLanguage } from \"core/Materials/shaderLanguage\";\r\n\r\n/**\r\n * Block used to implement the iridescence module of the PBR material\r\n */\r\nexport class IridescenceBlock extends NodeMaterialBlock {\r\n /**\r\n * Create a new IridescenceBlock\r\n * @param name defines the block name\r\n */\r\n public constructor(name: string) {\r\n super(name, NodeMaterialBlockTargets.Fragment);\r\n\r\n this._isUnique = true;\r\n\r\n this.registerInput(\"intensity\", NodeMaterialBlockConnectionPointTypes.Float, true, NodeMaterialBlockTargets.Fragment);\r\n this.registerInput(\"indexOfRefraction\", NodeMaterialBlockConnectionPointTypes.Float, true, NodeMaterialBlockTargets.Fragment);\r\n this.registerInput(\"thickness\", NodeMaterialBlockConnectionPointTypes.Float, true, NodeMaterialBlockTargets.Fragment);\r\n\r\n this.registerOutput(\r\n \"iridescence\",\r\n NodeMaterialBlockConnectionPointTypes.Object,\r\n NodeMaterialBlockTargets.Fragment,\r\n new NodeMaterialConnectionPointCustomObject(\"iridescence\", this, NodeMaterialConnectionPointDirection.Output, IridescenceBlock, \"IridescenceBlock\")\r\n );\r\n }\r\n\r\n /**\r\n * Initialize the block and prepare the context for build\r\n * @param state defines the state that will be used for the build\r\n */\r\n public override initialize(state: NodeMaterialBuildState) {\r\n state._excludeVariableName(\"iridescenceOut\");\r\n state._excludeVariableName(\"vIridescenceParams\");\r\n }\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public override getClassName() {\r\n return \"IridescenceBlock\";\r\n }\r\n\r\n /**\r\n * Gets the intensity input component\r\n */\r\n public get intensity(): NodeMaterialConnectionPoint {\r\n return this._inputs[0];\r\n }\r\n\r\n /**\r\n * Gets the indexOfRefraction input component\r\n */\r\n public get indexOfRefraction(): NodeMaterialConnectionPoint {\r\n return this._inputs[1];\r\n }\r\n\r\n /**\r\n * Gets the thickness input component\r\n */\r\n public get thickness(): NodeMaterialConnectionPoint {\r\n return this._inputs[2];\r\n }\r\n\r\n /**\r\n * Gets the iridescence object output component\r\n */\r\n public get iridescence(): NodeMaterialConnectionPoint {\r\n return this._outputs[0];\r\n }\r\n\r\n public override autoConfigure() {\r\n if (!this.intensity.isConnected) {\r\n const intensityInput = new InputBlock(\"Iridescence intensity\", NodeMaterialBlockTargets.Fragment, NodeMaterialBlockConnectionPointTypes.Float);\r\n intensityInput.value = 1;\r\n intensityInput.output.connectTo(this.intensity);\r\n\r\n const indexOfRefractionInput = new InputBlock(\"Iridescence ior\", NodeMaterialBlockTargets.Fragment, NodeMaterialBlockConnectionPointTypes.Float);\r\n indexOfRefractionInput.value = 1.3;\r\n indexOfRefractionInput.output.connectTo(this.indexOfRefraction);\r\n\r\n const thicknessInput = new InputBlock(\"Iridescence thickness\", NodeMaterialBlockTargets.Fragment, NodeMaterialBlockConnectionPointTypes.Float);\r\n thicknessInput.value = 400;\r\n thicknessInput.output.connectTo(this.thickness);\r\n }\r\n }\r\n\r\n public override prepareDefines(mesh: AbstractMesh, nodeMaterial: NodeMaterial, defines: NodeMaterialDefines) {\r\n super.prepareDefines(mesh, nodeMaterial, defines);\r\n\r\n defines.setValue(\"IRIDESCENCE\", true, true);\r\n defines.setValue(\"IRIDESCENCE_TEXTURE\", false, true);\r\n defines.setValue(\"IRIDESCENCE_THICKNESS_TEXTURE\", false, true);\r\n }\r\n\r\n /**\r\n * Gets the main code of the block (fragment side)\r\n * @param iridescenceBlock instance of a IridescenceBlock or null if the code must be generated without an active iridescence module\r\n * @param state defines the build state\r\n * @returns the shader code\r\n */\r\n public static GetCode(iridescenceBlock: Nullable<IridescenceBlock>, state: NodeMaterialBuildState): string {\r\n let code = \"\";\r\n\r\n const intensityName = iridescenceBlock?.intensity.isConnected ? iridescenceBlock.intensity.associatedVariableName : \"1.\";\r\n const indexOfRefraction = iridescenceBlock?.indexOfRefraction.isConnected\r\n ? iridescenceBlock.indexOfRefraction.associatedVariableName\r\n : PBRIridescenceConfiguration._DefaultIndexOfRefraction;\r\n const thickness = iridescenceBlock?.thickness.isConnected ? iridescenceBlock.thickness.associatedVariableName : PBRIridescenceConfiguration._DefaultMaximumThickness;\r\n\r\n const isWebGPU = state.shaderLanguage === ShaderLanguage.WGSL;\r\n\r\n code += `${isWebGPU ? \"var iridescenceOut: iridescenceOutParams\" : \"iridescenceOutParams iridescenceOut\"};\r\n\r\n #ifdef IRIDESCENCE\r\n iridescenceOut = iridescenceBlock(\r\n vec4(${intensityName}, ${indexOfRefraction}, 1., ${thickness})\r\n , NdotV\r\n , specularEnvironmentR0\r\n #ifdef CLEARCOAT\r\n , NdotVUnclamped\r\n , vClearCoatParams\r\n #endif \r\n );\r\n\r\n ${isWebGPU ? \"let\" : \"float\"} iridescenceIntensity = iridescenceOut.iridescenceIntensity;\r\n specularEnvironmentR0 = iridescenceOut.specularEnvironmentR0;\r\n #endif\\n`;\r\n\r\n return code;\r\n }\r\n\r\n protected override _buildBlock(state: NodeMaterialBuildState) {\r\n if (state.target === NodeMaterialBlockTargets.Fragment) {\r\n state.sharedData.bindableBlocks.push(this);\r\n state.sharedData.blocksWithDefines.push(this);\r\n }\r\n\r\n return this;\r\n }\r\n\r\n public override serialize(): any {\r\n const serializationObject = super.serialize();\r\n\r\n return serializationObject;\r\n }\r\n\r\n public override _deserialize(serializationObject: any, scene: Scene, rootUrl: string) {\r\n super._deserialize(serializationObject, scene, rootUrl);\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.IridescenceBlock\", IridescenceBlock);\r\n"]}
@@ -923,6 +923,9 @@ export class PBRMetallicRoughnessBlock extends NodeMaterialBlock {
923
923
  { search: /LINEARSPECULARREFLECTION/g, replace: reflectionBlock?._defineLinearSpecularReflection ?? "LINEARSPECULARREFLECTION" },
924
924
  ],
925
925
  });
926
+ // ____________________ Clear Coat Initialization Code _____________________
927
+ const clearcoatBlock = this.clearcoat.isConnected ? this.clearcoat.connectedPoint?.ownerBlock : null;
928
+ state.compilationString += ClearCoatBlock._GetInitializationCode(state, clearcoatBlock);
926
929
  // _____________________________ Iridescence _______________________________
927
930
  const iridescenceBlock = this.iridescence.isConnected ? this.iridescence.connectedPoint?.ownerBlock : null;
928
931
  state.compilationString += IridescenceBlock.GetCode(iridescenceBlock, state);
@@ -930,7 +933,6 @@ export class PBRMetallicRoughnessBlock extends NodeMaterialBlock {
930
933
  replaceStrings: [],
931
934
  });
932
935
  // _____________________________ Clear Coat ____________________________
933
- const clearcoatBlock = this.clearcoat.isConnected ? this.clearcoat.connectedPoint?.ownerBlock : null;
934
936
  const generateTBNSpace = !this.perturbedNormal.isConnected && !this.anisotropy.isConnected;
935
937
  const isTangentConnectedToPerturbNormal = this.perturbedNormal.isConnected && (this.perturbedNormal.connectedPoint?.ownerBlock).worldTangent?.isConnected;
936
938
  const isTangentConnectedToAnisotropy = this.anisotropy.isConnected && (this.anisotropy.connectedPoint?.ownerBlock).worldTangent.isConnected;