@babylonjs/core 7.25.1 → 7.26.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 (171) hide show
  1. package/Collisions/gpuPicker.d.ts +5 -0
  2. package/Collisions/gpuPicker.js +34 -11
  3. package/Collisions/gpuPicker.js.map +1 -1
  4. package/Engines/Extensions/engine.prefilteredCubeTexture.d.ts +0 -1
  5. package/Engines/Extensions/engine.prefilteredCubeTexture.js +0 -1
  6. package/Engines/Extensions/engine.prefilteredCubeTexture.js.map +1 -1
  7. package/Engines/WebGPU/Extensions/engine.alpha.js +3 -3
  8. package/Engines/WebGPU/Extensions/engine.alpha.js.map +1 -1
  9. package/Engines/WebGPU/Extensions/engine.cubeTexture.js +5 -5
  10. package/Engines/WebGPU/Extensions/engine.cubeTexture.js.map +1 -1
  11. package/Engines/WebGPU/Extensions/engine.rawTexture.js +10 -10
  12. package/Engines/WebGPU/Extensions/engine.rawTexture.js.map +1 -1
  13. package/Engines/WebGPU/Extensions/engine.readTexture.js +3 -3
  14. package/Engines/WebGPU/Extensions/engine.readTexture.js.map +1 -1
  15. package/Engines/WebGPU/Extensions/engine.renderTarget.js +6 -6
  16. package/Engines/WebGPU/Extensions/engine.renderTarget.js.map +1 -1
  17. package/Engines/WebGPU/Extensions/engine.renderTargetCube.js +2 -2
  18. package/Engines/WebGPU/Extensions/engine.renderTargetCube.js.map +1 -1
  19. package/Engines/WebGPU/Extensions/engine.renderTargetTexture.js +2 -2
  20. package/Engines/WebGPU/Extensions/engine.renderTargetTexture.js.map +1 -1
  21. package/Engines/WebGPU/webgpuRenderTargetWrapper.d.ts +2 -2
  22. package/Engines/WebGPU/webgpuRenderTargetWrapper.js.map +1 -1
  23. package/Engines/abstractEngine.d.ts +2 -0
  24. package/Engines/abstractEngine.js +2 -2
  25. package/Engines/abstractEngine.js.map +1 -1
  26. package/Engines/constants.d.ts +3 -3
  27. package/Engines/constants.js +3 -3
  28. package/Engines/constants.js.map +1 -1
  29. package/Engines/engine.d.ts +5 -5
  30. package/Engines/engine.js +5 -0
  31. package/Engines/engine.js.map +1 -1
  32. package/Engines/thinEngine.js +6 -2
  33. package/Engines/thinEngine.js.map +1 -1
  34. package/Engines/thinWebGPUEngine.d.ts +66 -0
  35. package/Engines/thinWebGPUEngine.js +120 -0
  36. package/Engines/thinWebGPUEngine.js.map +1 -0
  37. package/Engines/webgpuEngine.d.ts +9 -58
  38. package/Engines/webgpuEngine.js +9 -108
  39. package/Engines/webgpuEngine.js.map +1 -1
  40. package/Materials/Node/Blocks/Fragment/prePassOutputBlock.d.ts +10 -10
  41. package/Materials/Node/Blocks/Fragment/prePassOutputBlock.js +22 -20
  42. package/Materials/Node/Blocks/Fragment/prePassOutputBlock.js.map +1 -1
  43. package/Materials/Node/Blocks/Input/prePassTextureBlock.d.ts +9 -9
  44. package/Materials/Node/Blocks/Input/prePassTextureBlock.js +41 -32
  45. package/Materials/Node/Blocks/Input/prePassTextureBlock.js.map +1 -1
  46. package/Materials/Node/Blocks/PBR/clearCoatBlock.js +0 -5
  47. package/Materials/Node/Blocks/PBR/clearCoatBlock.js.map +1 -1
  48. package/Materials/Node/Blocks/colorConverterBlock.d.ts +36 -0
  49. package/Materials/Node/Blocks/colorConverterBlock.js +192 -0
  50. package/Materials/Node/Blocks/colorConverterBlock.js.map +1 -0
  51. package/Materials/Node/Blocks/index.d.ts +1 -0
  52. package/Materials/Node/Blocks/index.js +1 -0
  53. package/Materials/Node/Blocks/index.js.map +1 -1
  54. package/Materials/Node/nodeMaterial.d.ts +2 -2
  55. package/Materials/Node/nodeMaterial.js +7 -4
  56. package/Materials/Node/nodeMaterial.js.map +1 -1
  57. package/Materials/Node/nodeMaterialBuildState.d.ts +1 -1
  58. package/Materials/PBR/pbrBaseMaterial.d.ts +2 -2
  59. package/Materials/PBR/pbrBaseMaterial.js +2 -2
  60. package/Materials/PBR/pbrBaseMaterial.js.map +1 -1
  61. package/Materials/Textures/Filtering/hdrFiltering.d.ts +0 -1
  62. package/Materials/Textures/Filtering/hdrFiltering.js +0 -1
  63. package/Materials/Textures/Filtering/hdrFiltering.js.map +1 -1
  64. package/Materials/Textures/Loaders/basisTextureLoader.d.ts +0 -1
  65. package/Materials/Textures/Loaders/basisTextureLoader.js +0 -1
  66. package/Materials/Textures/Loaders/basisTextureLoader.js.map +1 -1
  67. package/Materials/Textures/Loaders/ddsTextureLoader.d.ts +0 -1
  68. package/Materials/Textures/Loaders/ddsTextureLoader.js +0 -1
  69. package/Materials/Textures/Loaders/ddsTextureLoader.js.map +1 -1
  70. package/Materials/Textures/Loaders/ktxTextureLoader.d.ts +0 -1
  71. package/Materials/Textures/Loaders/ktxTextureLoader.js +0 -1
  72. package/Materials/Textures/Loaders/ktxTextureLoader.js.map +1 -1
  73. package/Materials/Textures/Procedurals/proceduralTexture.d.ts +0 -2
  74. package/Materials/Textures/Procedurals/proceduralTexture.js +0 -2
  75. package/Materials/Textures/Procedurals/proceduralTexture.js.map +1 -1
  76. package/Materials/Textures/baseTexture.d.ts +0 -1
  77. package/Materials/Textures/baseTexture.js +0 -1
  78. package/Materials/Textures/baseTexture.js.map +1 -1
  79. package/Materials/Textures/colorGradingTexture.d.ts +0 -1
  80. package/Materials/Textures/colorGradingTexture.js +0 -2
  81. package/Materials/Textures/colorGradingTexture.js.map +1 -1
  82. package/Materials/Textures/cubeTexture.d.ts +0 -1
  83. package/Materials/Textures/cubeTexture.js +0 -1
  84. package/Materials/Textures/cubeTexture.js.map +1 -1
  85. package/Materials/Textures/equiRectangularCubeTexture.d.ts +0 -1
  86. package/Materials/Textures/equiRectangularCubeTexture.js +0 -1
  87. package/Materials/Textures/equiRectangularCubeTexture.js.map +1 -1
  88. package/Materials/Textures/hdrCubeTexture.d.ts +0 -1
  89. package/Materials/Textures/hdrCubeTexture.js +0 -1
  90. package/Materials/Textures/hdrCubeTexture.js.map +1 -1
  91. package/Materials/Textures/rawCubeTexture.d.ts +0 -1
  92. package/Materials/Textures/rawCubeTexture.js +0 -1
  93. package/Materials/Textures/rawCubeTexture.js.map +1 -1
  94. package/Materials/Textures/rawTexture.d.ts +0 -1
  95. package/Materials/Textures/rawTexture.js +0 -1
  96. package/Materials/Textures/rawTexture.js.map +1 -1
  97. package/Materials/Textures/rawTexture2DArray.d.ts +0 -1
  98. package/Materials/Textures/rawTexture2DArray.js +0 -1
  99. package/Materials/Textures/rawTexture2DArray.js.map +1 -1
  100. package/Materials/Textures/rawTexture3D.d.ts +0 -1
  101. package/Materials/Textures/rawTexture3D.js +0 -1
  102. package/Materials/Textures/rawTexture3D.js.map +1 -1
  103. package/Materials/Textures/renderTargetTexture.d.ts +0 -3
  104. package/Materials/Textures/renderTargetTexture.js +0 -3
  105. package/Materials/Textures/renderTargetTexture.js.map +1 -1
  106. package/Materials/material.detailMapConfiguration.d.ts +2 -2
  107. package/Materials/material.detailMapConfiguration.js.map +1 -1
  108. package/Materials/materialHelper.functions.js +2 -2
  109. package/Materials/materialHelper.functions.js.map +1 -1
  110. package/Materials/standardMaterial.d.ts +2 -2
  111. package/Materials/standardMaterial.js +2 -2
  112. package/Materials/standardMaterial.js.map +1 -1
  113. package/Meshes/GaussianSplatting/gaussianSplattingMesh.d.ts +6 -0
  114. package/Meshes/GaussianSplatting/gaussianSplattingMesh.js +32 -7
  115. package/Meshes/GaussianSplatting/gaussianSplattingMesh.js.map +1 -1
  116. package/Meshes/geometry.d.ts +2 -1
  117. package/Meshes/geometry.js +3 -2
  118. package/Meshes/geometry.js.map +1 -1
  119. package/Meshes/mesh.d.ts +2 -1
  120. package/Meshes/mesh.js +5 -3
  121. package/Meshes/mesh.js.map +1 -1
  122. package/Misc/basis.d.ts +3 -3
  123. package/Misc/basis.js.map +1 -1
  124. package/Misc/dds.d.ts +0 -1
  125. package/Misc/dds.js +0 -1
  126. package/Misc/dds.js.map +1 -1
  127. package/Misc/environmentTextureTools.d.ts +0 -2
  128. package/Misc/environmentTextureTools.js +0 -2
  129. package/Misc/environmentTextureTools.js.map +1 -1
  130. package/Misc/minMaxReducer.d.ts +0 -1
  131. package/Misc/minMaxReducer.js +0 -1
  132. package/Misc/minMaxReducer.js.map +1 -1
  133. package/Misc/rgbdTextureTools.d.ts +0 -2
  134. package/Misc/rgbdTextureTools.js +5 -10
  135. package/Misc/rgbdTextureTools.js.map +1 -1
  136. package/Misc/screenshotTools.d.ts +0 -1
  137. package/Misc/screenshotTools.js +0 -1
  138. package/Misc/screenshotTools.js.map +1 -1
  139. package/Particles/particleSystem.js.map +1 -1
  140. package/Particles/thinParticleSystem.js.map +1 -1
  141. package/PostProcesses/anaglyphPostProcess.d.ts +2 -2
  142. package/PostProcesses/anaglyphPostProcess.js.map +1 -1
  143. package/PostProcesses/highlightsPostProcess.d.ts +2 -2
  144. package/PostProcesses/highlightsPostProcess.js.map +1 -1
  145. package/PostProcesses/postProcess.d.ts +0 -1
  146. package/PostProcesses/postProcess.js +0 -1
  147. package/PostProcesses/postProcess.js.map +1 -1
  148. package/PostProcesses/stereoscopicInterlacePostProcess.d.ts +3 -3
  149. package/PostProcesses/stereoscopicInterlacePostProcess.js.map +1 -1
  150. package/PostProcesses/tonemapPostProcess.d.ts +2 -2
  151. package/PostProcesses/tonemapPostProcess.js.map +1 -1
  152. package/Rendering/IBLShadows/iblShadowsAccumulationPass.js +2 -2
  153. package/Rendering/IBLShadows/iblShadowsAccumulationPass.js.map +1 -1
  154. package/Rendering/IBLShadows/iblShadowsRenderPipeline.js +2 -2
  155. package/Rendering/IBLShadows/iblShadowsRenderPipeline.js.map +1 -1
  156. package/Rendering/IBLShadows/iblShadowsVoxelTracingPass.js.map +1 -1
  157. package/Rendering/prePassRenderer.js +5 -4
  158. package/Rendering/prePassRenderer.js.map +1 -1
  159. package/Shaders/ShadersInclude/pbrBlockClearcoat.js +0 -5
  160. package/Shaders/ShadersInclude/pbrBlockClearcoat.js.map +1 -1
  161. package/Shaders/default.fragment.js +4 -4
  162. package/Shaders/default.fragment.js.map +1 -1
  163. package/Shaders/pbr.fragment.js +5 -9
  164. package/Shaders/pbr.fragment.js.map +1 -1
  165. package/ShadersWGSL/ShadersInclude/pbrBlockClearcoat.js +0 -5
  166. package/ShadersWGSL/ShadersInclude/pbrBlockClearcoat.js.map +1 -1
  167. package/ShadersWGSL/default.fragment.js +4 -4
  168. package/ShadersWGSL/default.fragment.js.map +1 -1
  169. package/ShadersWGSL/pbr.fragment.js +5 -9
  170. package/ShadersWGSL/pbr.fragment.js.map +1 -1
  171. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"clearCoatBlock.js","sourceRoot":"","sources":["../../../../../../../dev/core/src/Materials/Node/Blocks/PBR/clearCoatBlock.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 { ReflectionBlock } from \"./reflectionBlock\";\r\nimport type { Scene } from \"../../../../scene\";\r\nimport type { Nullable } from \"../../../../types\";\r\nimport type { Mesh } from \"../../../../Meshes/mesh\";\r\nimport type { Effect } from \"../../../effect\";\r\nimport type { PBRMetallicRoughnessBlock } from \"./pbrMetallicRoughnessBlock\";\r\nimport type { PerturbNormalBlock } from \"../Fragment/perturbNormalBlock\";\r\nimport { PBRClearCoatConfiguration } from \"../../../PBR/pbrClearCoatConfiguration\";\r\nimport { editableInPropertyPage, PropertyTypeForEdition } from \"../../../../Decorators/nodeDecorator\";\r\nimport { TBNBlock } from \"../Fragment/TBNBlock\";\r\nimport { ShaderLanguage } from \"core/Materials/shaderLanguage\";\r\n\r\n/**\r\n * Block used to implement the clear coat module of the PBR material\r\n */\r\nexport class ClearCoatBlock extends NodeMaterialBlock {\r\n private _scene: Scene;\r\n private _tangentCorrectionFactorName = \"\";\r\n\r\n /**\r\n * Create a new ClearCoatBlock\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, false, NodeMaterialBlockTargets.Fragment);\r\n this.registerInput(\"roughness\", NodeMaterialBlockConnectionPointTypes.Float, true, NodeMaterialBlockTargets.Fragment);\r\n this.registerInput(\"indexOfRefraction\", NodeMaterialBlockConnectionPointTypes.Float, true, NodeMaterialBlockTargets.Fragment);\r\n this.registerInput(\"normalMapColor\", NodeMaterialBlockConnectionPointTypes.Color3, true, NodeMaterialBlockTargets.Fragment);\r\n this.registerInput(\"uv\", NodeMaterialBlockConnectionPointTypes.Vector2, true, NodeMaterialBlockTargets.Fragment);\r\n this.registerInput(\"tintColor\", NodeMaterialBlockConnectionPointTypes.Color3, true, NodeMaterialBlockTargets.Fragment);\r\n this.registerInput(\"tintAtDistance\", NodeMaterialBlockConnectionPointTypes.Float, true, NodeMaterialBlockTargets.Fragment);\r\n this.registerInput(\"tintThickness\", NodeMaterialBlockConnectionPointTypes.Float, true, NodeMaterialBlockTargets.Fragment);\r\n this.registerInput(\"worldTangent\", NodeMaterialBlockConnectionPointTypes.Vector4, true);\r\n this.registerInput(\"worldNormal\", NodeMaterialBlockConnectionPointTypes.AutoDetect, true);\r\n this.worldNormal.addExcludedConnectionPointFromAllowedTypes(\r\n NodeMaterialBlockConnectionPointTypes.Color4 | NodeMaterialBlockConnectionPointTypes.Vector4 | NodeMaterialBlockConnectionPointTypes.Vector3\r\n );\r\n this.registerInput(\r\n \"TBN\",\r\n NodeMaterialBlockConnectionPointTypes.Object,\r\n true,\r\n NodeMaterialBlockTargets.VertexAndFragment,\r\n new NodeMaterialConnectionPointCustomObject(\"TBN\", this, NodeMaterialConnectionPointDirection.Input, TBNBlock, \"TBNBlock\")\r\n );\r\n\r\n this.registerOutput(\r\n \"clearcoat\",\r\n NodeMaterialBlockConnectionPointTypes.Object,\r\n NodeMaterialBlockTargets.Fragment,\r\n new NodeMaterialConnectionPointCustomObject(\"clearcoat\", this, NodeMaterialConnectionPointDirection.Output, ClearCoatBlock, \"ClearCoatBlock\")\r\n );\r\n }\r\n\r\n /**\r\n * Defines if the F0 value should be remapped to account for the interface change in the material.\r\n */\r\n @editableInPropertyPage(\"Remap F0 on interface change\", PropertyTypeForEdition.Boolean, \"ADVANCED\")\r\n public remapF0OnInterfaceChange: boolean = true;\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(\"clearcoatOut\");\r\n state._excludeVariableName(\"vClearCoatParams\");\r\n state._excludeVariableName(\"vClearCoatTintParams\");\r\n state._excludeVariableName(\"vClearCoatRefractionParams\");\r\n state._excludeVariableName(\"vClearCoatTangentSpaceParams\");\r\n state._excludeVariableName(\"vGeometricNormaClearCoatW\");\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 \"ClearCoatBlock\";\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 roughness input component\r\n */\r\n public get roughness(): NodeMaterialConnectionPoint {\r\n return this._inputs[1];\r\n }\r\n\r\n /**\r\n * Gets the ior input component\r\n */\r\n public get indexOfRefraction(): NodeMaterialConnectionPoint {\r\n return this._inputs[2];\r\n }\r\n\r\n /**\r\n * Gets the bump texture input component\r\n */\r\n public get normalMapColor(): NodeMaterialConnectionPoint {\r\n return this._inputs[3];\r\n }\r\n\r\n /**\r\n * Gets the uv input component\r\n */\r\n public get uv(): NodeMaterialConnectionPoint {\r\n return this._inputs[4];\r\n }\r\n\r\n /**\r\n * Gets the tint color input component\r\n */\r\n public get tintColor(): NodeMaterialConnectionPoint {\r\n return this._inputs[5];\r\n }\r\n\r\n /**\r\n * Gets the tint \"at distance\" input component\r\n */\r\n public get tintAtDistance(): NodeMaterialConnectionPoint {\r\n return this._inputs[6];\r\n }\r\n\r\n /**\r\n * Gets the tint thickness input component\r\n */\r\n public get tintThickness(): NodeMaterialConnectionPoint {\r\n return this._inputs[7];\r\n }\r\n\r\n /**\r\n * Gets the world tangent input component\r\n */\r\n public get worldTangent(): NodeMaterialConnectionPoint {\r\n return this._inputs[8];\r\n }\r\n\r\n /**\r\n * Gets the world normal input component\r\n */\r\n public get worldNormal(): NodeMaterialConnectionPoint {\r\n return this._inputs[9];\r\n }\r\n\r\n /**\r\n * Gets the TBN input component\r\n */\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n public get TBN(): NodeMaterialConnectionPoint {\r\n return this._inputs[10];\r\n }\r\n\r\n /**\r\n * Gets the clear coat object output component\r\n */\r\n public get clearcoat(): 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(\"ClearCoat intensity\", NodeMaterialBlockTargets.Fragment, NodeMaterialBlockConnectionPointTypes.Float);\r\n intensityInput.value = 1;\r\n intensityInput.output.connectTo(this.intensity);\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(\"CLEARCOAT\", true);\r\n defines.setValue(\"CLEARCOAT_TEXTURE\", false, true);\r\n defines.setValue(\"CLEARCOAT_USE_ROUGHNESS_FROM_MAINTEXTURE\", true, true);\r\n defines.setValue(\"CLEARCOAT_TINT\", this.tintColor.isConnected || this.tintThickness.isConnected || this.tintAtDistance.isConnected, true);\r\n defines.setValue(\"CLEARCOAT_BUMP\", this.normalMapColor.isConnected, true);\r\n defines.setValue(\r\n \"CLEARCOAT_DEFAULTIOR\",\r\n this.indexOfRefraction.isConnected ? this.indexOfRefraction.connectInputBlock!.value === PBRClearCoatConfiguration._DefaultIndexOfRefraction : true,\r\n true\r\n );\r\n defines.setValue(\"CLEARCOAT_REMAP_F0\", this.remapF0OnInterfaceChange, true);\r\n }\r\n\r\n public override bind(effect: Effect, nodeMaterial: NodeMaterial, mesh?: Mesh) {\r\n super.bind(effect, nodeMaterial, mesh);\r\n\r\n // Clear Coat Refraction params\r\n const indexOfRefraction = this.indexOfRefraction.connectInputBlock?.value ?? PBRClearCoatConfiguration._DefaultIndexOfRefraction;\r\n\r\n const a = 1 - indexOfRefraction;\r\n const b = 1 + indexOfRefraction;\r\n const f0 = Math.pow(-a / b, 2); // Schlicks approx: (ior1 - ior2) / (ior1 + ior2) where ior2 for air is close to vacuum = 1.\r\n const eta = 1 / indexOfRefraction;\r\n\r\n effect.setFloat4(\"vClearCoatRefractionParams\", f0, eta, a, b);\r\n\r\n // Clear Coat tangent space params\r\n const mainPBRBlock = this.clearcoat.hasEndpoints ? (this.clearcoat.endpoints[0].ownerBlock as PBRMetallicRoughnessBlock) : null;\r\n const perturbedNormalBlock = mainPBRBlock?.perturbedNormal.isConnected ? (mainPBRBlock.perturbedNormal.connectedPoint!.ownerBlock as PerturbNormalBlock) : null;\r\n\r\n if (this._scene._mirroredCameraPosition) {\r\n effect.setFloat2(\"vClearCoatTangentSpaceParams\", perturbedNormalBlock?.invertX ? 1.0 : -1.0, perturbedNormalBlock?.invertY ? 1.0 : -1.0);\r\n } else {\r\n effect.setFloat2(\"vClearCoatTangentSpaceParams\", perturbedNormalBlock?.invertX ? -1.0 : 1.0, perturbedNormalBlock?.invertY ? -1.0 : 1.0);\r\n }\r\n\r\n if (mesh) {\r\n effect.setFloat(this._tangentCorrectionFactorName, mesh.getWorldMatrix().determinant() < 0 ? -1 : 1);\r\n }\r\n }\r\n\r\n private _generateTBNSpace(state: NodeMaterialBuildState, worldPositionVarName: string, worldNormalVarName: string) {\r\n let code = \"\";\r\n\r\n const comments = `//${this.name}`;\r\n const worldTangent = this.worldTangent;\r\n const isWebGPU = state.shaderLanguage === ShaderLanguage.WGSL;\r\n\r\n if (!isWebGPU) {\r\n state._emitExtension(\"derivatives\", \"#extension GL_OES_standard_derivatives : enable\");\r\n }\r\n\r\n const tangentReplaceString = { search: /defined\\(TANGENT\\)/g, replace: worldTangent.isConnected ? \"defined(TANGENT)\" : \"defined(IGNORE)\" };\r\n\r\n const TBN = this.TBN;\r\n if (TBN.isConnected) {\r\n state.compilationString += `\r\n #ifdef TBNBLOCK\r\n ${isWebGPU ? \"var TBN\" : \"mat3 TBN\"} = ${TBN.associatedVariableName};\r\n #endif\r\n `;\r\n } else if (worldTangent.isConnected) {\r\n code += `${state._declareLocalVar(\"tbnNormal\", NodeMaterialBlockConnectionPointTypes.Vector3)} = normalize(${worldNormalVarName}.xyz);\\n`;\r\n code += `${state._declareLocalVar(\"tbnTangent\", NodeMaterialBlockConnectionPointTypes.Vector3)} = normalize(${worldTangent.associatedVariableName}.xyz);\\n`;\r\n code += `${state._declareLocalVar(\"tbnBitangent\", NodeMaterialBlockConnectionPointTypes.Vector3)} = cross(tbnNormal, tbnTangent) * ${this._tangentCorrectionFactorName};\\n`;\r\n code += `${isWebGPU ? \"var vTBN\" : \"mat3 vTBN\"} = ${isWebGPU ? \"mat3x3f\" : \"mat3\"}(tbnTangent, tbnBitangent, tbnNormal);\\n`;\r\n }\r\n\r\n state._emitFunctionFromInclude(\"bumpFragmentMainFunctions\", comments, {\r\n replaceStrings: [tangentReplaceString],\r\n });\r\n\r\n return code;\r\n }\r\n\r\n /**\r\n * Gets the main code of the block (fragment side)\r\n * @param state current state of the node material building\r\n * @param ccBlock instance of a ClearCoatBlock or null if the code must be generated without an active clear coat module\r\n * @param reflectionBlock instance of a ReflectionBlock null if the code must be generated without an active reflection module\r\n * @param worldPosVarName name of the variable holding the world position\r\n * @param generateTBNSpace if true, the code needed to create the TBN coordinate space is generated\r\n * @param vTBNAvailable indicate that the vTBN variable is already existing because it has already been generated by another block (PerturbNormal or Anisotropy)\r\n * @param worldNormalVarName name of the variable holding the world normal\r\n * @returns the shader code\r\n */\r\n public static GetCode(\r\n state: NodeMaterialBuildState,\r\n ccBlock: Nullable<ClearCoatBlock>,\r\n reflectionBlock: Nullable<ReflectionBlock>,\r\n worldPosVarName: string,\r\n generateTBNSpace: boolean,\r\n vTBNAvailable: boolean,\r\n worldNormalVarName: string\r\n ): string {\r\n let code = \"\";\r\n\r\n const intensity = ccBlock?.intensity.isConnected ? ccBlock.intensity.associatedVariableName : \"1.\";\r\n const roughness = ccBlock?.roughness.isConnected ? ccBlock.roughness.associatedVariableName : \"0.\";\r\n const normalMapColor = ccBlock?.normalMapColor.isConnected ? ccBlock.normalMapColor.associatedVariableName : `vec3${state.fSuffix}(0.)`;\r\n const uv = ccBlock?.uv.isConnected ? ccBlock.uv.associatedVariableName : `vec2${state.fSuffix}(0.)`;\r\n\r\n const tintColor = ccBlock?.tintColor.isConnected ? ccBlock.tintColor.associatedVariableName : `vec3${state.fSuffix}(1.)`;\r\n const tintThickness = ccBlock?.tintThickness.isConnected ? ccBlock.tintThickness.associatedVariableName : \"1.\";\r\n const tintAtDistance = ccBlock?.tintAtDistance.isConnected ? ccBlock.tintAtDistance.associatedVariableName : \"1.\";\r\n const tintTexture = `vec4${state.fSuffix}(0.)`;\r\n\r\n if (ccBlock) {\r\n state._emitUniformFromString(\"vClearCoatRefractionParams\", NodeMaterialBlockConnectionPointTypes.Vector4);\r\n state._emitUniformFromString(\"vClearCoatTangentSpaceParams\", NodeMaterialBlockConnectionPointTypes.Vector2);\r\n\r\n const normalShading = ccBlock.worldNormal;\r\n code += `${state._declareLocalVar(\"vGeometricNormaClearCoatW\", NodeMaterialBlockConnectionPointTypes.Vector3)} = ${normalShading.isConnected ? \"normalize(\" + normalShading.associatedVariableName + \".xyz)\" : \"geometricNormalW\"};\\n`;\r\n } else {\r\n code += `${state._declareLocalVar(\"vGeometricNormaClearCoatW\", NodeMaterialBlockConnectionPointTypes.Vector3)} = geometricNormalW;\\n`;\r\n }\r\n\r\n if (generateTBNSpace && ccBlock) {\r\n code += ccBlock._generateTBNSpace(state, worldPosVarName, worldNormalVarName);\r\n vTBNAvailable = ccBlock.worldTangent.isConnected;\r\n }\r\n\r\n const isWebGPU = state.shaderLanguage === ShaderLanguage.WGSL;\r\n code += `${isWebGPU ? \"var clearcoatOut: clearcoatOutParams\" : \"clearcoatOutParams clearcoatOut\"};\r\n\r\n #ifdef CLEARCOAT\r\n ${state._declareLocalVar(\"vClearCoatParams\", NodeMaterialBlockConnectionPointTypes.Vector2)} = vec2${state.fSuffix}(${intensity}, ${roughness});\r\n ${state._declareLocalVar(\"vClearCoatTintParams\", NodeMaterialBlockConnectionPointTypes.Vector4)} = vec4${state.fSuffix}(${tintColor}, ${tintThickness});\r\n\r\n clearcoatOut = clearcoatBlock(\r\n ${worldPosVarName}.xyz\r\n , vGeometricNormaClearCoatW\r\n , viewDirectionW\r\n , vClearCoatParams\r\n , specularEnvironmentR0\r\n #ifdef CLEARCOAT_TEXTURE\r\n , vec2${state.fSuffix}(0.)\r\n #endif\r\n #ifdef CLEARCOAT_TINT\r\n , vClearCoatTintParams\r\n , ${tintAtDistance}\r\n , ${isWebGPU ? \"uniforms.\" : \"\"}vClearCoatRefractionParams\r\n #ifdef CLEARCOAT_TINT_TEXTURE\r\n , ${tintTexture}\r\n #endif\r\n #endif\r\n #ifdef CLEARCOAT_BUMP\r\n , vec2${state.fSuffix}(0., 1.)\r\n , vec4${state.fSuffix}(${normalMapColor}, 0.)\r\n , ${uv}\r\n #if defined(${vTBNAvailable ? \"TANGENT\" : \"IGNORE\"}) && defined(NORMAL)\r\n , vTBN\r\n #else\r\n , ${isWebGPU ? \"uniforms.\" : \"\"}vClearCoatTangentSpaceParams\r\n #endif\r\n #ifdef OBJECTSPACE_NORMALMAP\r\n , normalMatrix\r\n #endif\r\n #endif\r\n #if defined(FORCENORMALFORWARD) && defined(NORMAL)\r\n , faceNormal\r\n #endif\r\n #ifdef REFLECTION\r\n , ${isWebGPU ? \"uniforms.\" : \"\"}${reflectionBlock?._vReflectionMicrosurfaceInfosName}\r\n , ${reflectionBlock?._vReflectionInfosName}\r\n , ${reflectionBlock?.reflectionColor}\r\n , ${isWebGPU ? \"uniforms.\" : \"\"}vLightingIntensity\r\n #ifdef ${reflectionBlock?._define3DName}\r\n , ${reflectionBlock?._cubeSamplerName} \r\n ${isWebGPU ? `, ${reflectionBlock?._cubeSamplerName}Sampler` : \"\"}\r\n #else\r\n , ${reflectionBlock?._2DSamplerName} \r\n ${isWebGPU ? `, ${reflectionBlock?._2DSamplerName}Sampler` : \"\"}\r\n #endif\r\n #ifndef LODBASEDMICROSFURACE\r\n #ifdef ${reflectionBlock?._define3DName}\r\n , ${reflectionBlock?._cubeSamplerName} \r\n ${isWebGPU ? `, ${reflectionBlock?._cubeSamplerName}Sampler` : \"\"}\r\n , ${reflectionBlock?._cubeSamplerName}\r\n ${isWebGPU ? `, ${reflectionBlock?._cubeSamplerName}Sampler` : \"\"}\r\n #else\r\n , ${reflectionBlock?._2DSamplerName}\r\n ${isWebGPU ? `, ${reflectionBlock?._2DSamplerName}Sampler` : \"\"}\r\n , ${reflectionBlock?._2DSamplerName}\r\n ${isWebGPU ? `, ${reflectionBlock?._2DSamplerName}Sampler` : \"\"} \r\n #endif\r\n #endif\r\n #endif\r\n #if defined(ENVIRONMENTBRDF) && !defined(${reflectionBlock?._defineSkyboxName})\r\n #ifdef RADIANCEOCCLUSION\r\n , ambientMonochrome\r\n #endif\r\n #endif\r\n #if defined(CLEARCOAT_BUMP) || defined(TWOSIDEDLIGHTING)\r\n , (${state._generateTernary(\"1.\", \"-1.\", isWebGPU ? \"fragmentInputs.frontFacing\" : \"gl_FrontFacing\")})\r\n #endif\r\n );\r\n #else\r\n clearcoatOut.specularEnvironmentR0 = specularEnvironmentR0;\r\n #endif\\n`;\r\n\r\n return code;\r\n }\r\n\r\n protected override _buildBlock(state: NodeMaterialBuildState) {\r\n this._scene = state.sharedData.scene;\r\n\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 this._tangentCorrectionFactorName = state._getFreeDefineName(\"tangentCorrectionFactor\");\r\n state._emitUniformFromString(this._tangentCorrectionFactorName, NodeMaterialBlockConnectionPointTypes.Float);\r\n }\r\n\r\n return this;\r\n }\r\n\r\n protected override _dumpPropertiesCode() {\r\n let codeString = super._dumpPropertiesCode();\r\n\r\n codeString += `${this._codeVariableName}.remapF0OnInterfaceChange = ${this.remapF0OnInterfaceChange};\\n`;\r\n\r\n return codeString;\r\n }\r\n\r\n public override serialize(): any {\r\n const serializationObject = super.serialize();\r\n\r\n serializationObject.remapF0OnInterfaceChange = this.remapF0OnInterfaceChange;\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 this.remapF0OnInterfaceChange = serializationObject.remapF0OnInterfaceChange ?? true;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.ClearCoatBlock\", ClearCoatBlock);\r\n"]}
1
+ {"version":3,"file":"clearCoatBlock.js","sourceRoot":"","sources":["../../../../../../../dev/core/src/Materials/Node/Blocks/PBR/clearCoatBlock.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 { ReflectionBlock } from \"./reflectionBlock\";\r\nimport type { Scene } from \"../../../../scene\";\r\nimport type { Nullable } from \"../../../../types\";\r\nimport type { Mesh } from \"../../../../Meshes/mesh\";\r\nimport type { Effect } from \"../../../effect\";\r\nimport type { PBRMetallicRoughnessBlock } from \"./pbrMetallicRoughnessBlock\";\r\nimport type { PerturbNormalBlock } from \"../Fragment/perturbNormalBlock\";\r\nimport { PBRClearCoatConfiguration } from \"../../../PBR/pbrClearCoatConfiguration\";\r\nimport { editableInPropertyPage, PropertyTypeForEdition } from \"../../../../Decorators/nodeDecorator\";\r\nimport { TBNBlock } from \"../Fragment/TBNBlock\";\r\nimport { ShaderLanguage } from \"core/Materials/shaderLanguage\";\r\n\r\n/**\r\n * Block used to implement the clear coat module of the PBR material\r\n */\r\nexport class ClearCoatBlock extends NodeMaterialBlock {\r\n private _scene: Scene;\r\n private _tangentCorrectionFactorName = \"\";\r\n\r\n /**\r\n * Create a new ClearCoatBlock\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, false, NodeMaterialBlockTargets.Fragment);\r\n this.registerInput(\"roughness\", NodeMaterialBlockConnectionPointTypes.Float, true, NodeMaterialBlockTargets.Fragment);\r\n this.registerInput(\"indexOfRefraction\", NodeMaterialBlockConnectionPointTypes.Float, true, NodeMaterialBlockTargets.Fragment);\r\n this.registerInput(\"normalMapColor\", NodeMaterialBlockConnectionPointTypes.Color3, true, NodeMaterialBlockTargets.Fragment);\r\n this.registerInput(\"uv\", NodeMaterialBlockConnectionPointTypes.Vector2, true, NodeMaterialBlockTargets.Fragment);\r\n this.registerInput(\"tintColor\", NodeMaterialBlockConnectionPointTypes.Color3, true, NodeMaterialBlockTargets.Fragment);\r\n this.registerInput(\"tintAtDistance\", NodeMaterialBlockConnectionPointTypes.Float, true, NodeMaterialBlockTargets.Fragment);\r\n this.registerInput(\"tintThickness\", NodeMaterialBlockConnectionPointTypes.Float, true, NodeMaterialBlockTargets.Fragment);\r\n this.registerInput(\"worldTangent\", NodeMaterialBlockConnectionPointTypes.Vector4, true);\r\n this.registerInput(\"worldNormal\", NodeMaterialBlockConnectionPointTypes.AutoDetect, true);\r\n this.worldNormal.addExcludedConnectionPointFromAllowedTypes(\r\n NodeMaterialBlockConnectionPointTypes.Color4 | NodeMaterialBlockConnectionPointTypes.Vector4 | NodeMaterialBlockConnectionPointTypes.Vector3\r\n );\r\n this.registerInput(\r\n \"TBN\",\r\n NodeMaterialBlockConnectionPointTypes.Object,\r\n true,\r\n NodeMaterialBlockTargets.VertexAndFragment,\r\n new NodeMaterialConnectionPointCustomObject(\"TBN\", this, NodeMaterialConnectionPointDirection.Input, TBNBlock, \"TBNBlock\")\r\n );\r\n\r\n this.registerOutput(\r\n \"clearcoat\",\r\n NodeMaterialBlockConnectionPointTypes.Object,\r\n NodeMaterialBlockTargets.Fragment,\r\n new NodeMaterialConnectionPointCustomObject(\"clearcoat\", this, NodeMaterialConnectionPointDirection.Output, ClearCoatBlock, \"ClearCoatBlock\")\r\n );\r\n }\r\n\r\n /**\r\n * Defines if the F0 value should be remapped to account for the interface change in the material.\r\n */\r\n @editableInPropertyPage(\"Remap F0 on interface change\", PropertyTypeForEdition.Boolean, \"ADVANCED\")\r\n public remapF0OnInterfaceChange: boolean = true;\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(\"clearcoatOut\");\r\n state._excludeVariableName(\"vClearCoatParams\");\r\n state._excludeVariableName(\"vClearCoatTintParams\");\r\n state._excludeVariableName(\"vClearCoatRefractionParams\");\r\n state._excludeVariableName(\"vClearCoatTangentSpaceParams\");\r\n state._excludeVariableName(\"vGeometricNormaClearCoatW\");\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 \"ClearCoatBlock\";\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 roughness input component\r\n */\r\n public get roughness(): NodeMaterialConnectionPoint {\r\n return this._inputs[1];\r\n }\r\n\r\n /**\r\n * Gets the ior input component\r\n */\r\n public get indexOfRefraction(): NodeMaterialConnectionPoint {\r\n return this._inputs[2];\r\n }\r\n\r\n /**\r\n * Gets the bump texture input component\r\n */\r\n public get normalMapColor(): NodeMaterialConnectionPoint {\r\n return this._inputs[3];\r\n }\r\n\r\n /**\r\n * Gets the uv input component\r\n */\r\n public get uv(): NodeMaterialConnectionPoint {\r\n return this._inputs[4];\r\n }\r\n\r\n /**\r\n * Gets the tint color input component\r\n */\r\n public get tintColor(): NodeMaterialConnectionPoint {\r\n return this._inputs[5];\r\n }\r\n\r\n /**\r\n * Gets the tint \"at distance\" input component\r\n */\r\n public get tintAtDistance(): NodeMaterialConnectionPoint {\r\n return this._inputs[6];\r\n }\r\n\r\n /**\r\n * Gets the tint thickness input component\r\n */\r\n public get tintThickness(): NodeMaterialConnectionPoint {\r\n return this._inputs[7];\r\n }\r\n\r\n /**\r\n * Gets the world tangent input component\r\n */\r\n public get worldTangent(): NodeMaterialConnectionPoint {\r\n return this._inputs[8];\r\n }\r\n\r\n /**\r\n * Gets the world normal input component\r\n */\r\n public get worldNormal(): NodeMaterialConnectionPoint {\r\n return this._inputs[9];\r\n }\r\n\r\n /**\r\n * Gets the TBN input component\r\n */\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n public get TBN(): NodeMaterialConnectionPoint {\r\n return this._inputs[10];\r\n }\r\n\r\n /**\r\n * Gets the clear coat object output component\r\n */\r\n public get clearcoat(): 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(\"ClearCoat intensity\", NodeMaterialBlockTargets.Fragment, NodeMaterialBlockConnectionPointTypes.Float);\r\n intensityInput.value = 1;\r\n intensityInput.output.connectTo(this.intensity);\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(\"CLEARCOAT\", true);\r\n defines.setValue(\"CLEARCOAT_TEXTURE\", false, true);\r\n defines.setValue(\"CLEARCOAT_USE_ROUGHNESS_FROM_MAINTEXTURE\", true, true);\r\n defines.setValue(\"CLEARCOAT_TINT\", this.tintColor.isConnected || this.tintThickness.isConnected || this.tintAtDistance.isConnected, true);\r\n defines.setValue(\"CLEARCOAT_BUMP\", this.normalMapColor.isConnected, true);\r\n defines.setValue(\r\n \"CLEARCOAT_DEFAULTIOR\",\r\n this.indexOfRefraction.isConnected ? this.indexOfRefraction.connectInputBlock!.value === PBRClearCoatConfiguration._DefaultIndexOfRefraction : true,\r\n true\r\n );\r\n defines.setValue(\"CLEARCOAT_REMAP_F0\", this.remapF0OnInterfaceChange, true);\r\n }\r\n\r\n public override bind(effect: Effect, nodeMaterial: NodeMaterial, mesh?: Mesh) {\r\n super.bind(effect, nodeMaterial, mesh);\r\n\r\n // Clear Coat Refraction params\r\n const indexOfRefraction = this.indexOfRefraction.connectInputBlock?.value ?? PBRClearCoatConfiguration._DefaultIndexOfRefraction;\r\n\r\n const a = 1 - indexOfRefraction;\r\n const b = 1 + indexOfRefraction;\r\n const f0 = Math.pow(-a / b, 2); // Schlicks approx: (ior1 - ior2) / (ior1 + ior2) where ior2 for air is close to vacuum = 1.\r\n const eta = 1 / indexOfRefraction;\r\n\r\n effect.setFloat4(\"vClearCoatRefractionParams\", f0, eta, a, b);\r\n\r\n // Clear Coat tangent space params\r\n const mainPBRBlock = this.clearcoat.hasEndpoints ? (this.clearcoat.endpoints[0].ownerBlock as PBRMetallicRoughnessBlock) : null;\r\n const perturbedNormalBlock = mainPBRBlock?.perturbedNormal.isConnected ? (mainPBRBlock.perturbedNormal.connectedPoint!.ownerBlock as PerturbNormalBlock) : null;\r\n\r\n if (this._scene._mirroredCameraPosition) {\r\n effect.setFloat2(\"vClearCoatTangentSpaceParams\", perturbedNormalBlock?.invertX ? 1.0 : -1.0, perturbedNormalBlock?.invertY ? 1.0 : -1.0);\r\n } else {\r\n effect.setFloat2(\"vClearCoatTangentSpaceParams\", perturbedNormalBlock?.invertX ? -1.0 : 1.0, perturbedNormalBlock?.invertY ? -1.0 : 1.0);\r\n }\r\n\r\n if (mesh) {\r\n effect.setFloat(this._tangentCorrectionFactorName, mesh.getWorldMatrix().determinant() < 0 ? -1 : 1);\r\n }\r\n }\r\n\r\n private _generateTBNSpace(state: NodeMaterialBuildState, worldPositionVarName: string, worldNormalVarName: string) {\r\n let code = \"\";\r\n\r\n const comments = `//${this.name}`;\r\n const worldTangent = this.worldTangent;\r\n const isWebGPU = state.shaderLanguage === ShaderLanguage.WGSL;\r\n\r\n if (!isWebGPU) {\r\n state._emitExtension(\"derivatives\", \"#extension GL_OES_standard_derivatives : enable\");\r\n }\r\n\r\n const tangentReplaceString = { search: /defined\\(TANGENT\\)/g, replace: worldTangent.isConnected ? \"defined(TANGENT)\" : \"defined(IGNORE)\" };\r\n\r\n const TBN = this.TBN;\r\n if (TBN.isConnected) {\r\n state.compilationString += `\r\n #ifdef TBNBLOCK\r\n ${isWebGPU ? \"var TBN\" : \"mat3 TBN\"} = ${TBN.associatedVariableName};\r\n #endif\r\n `;\r\n } else if (worldTangent.isConnected) {\r\n code += `${state._declareLocalVar(\"tbnNormal\", NodeMaterialBlockConnectionPointTypes.Vector3)} = normalize(${worldNormalVarName}.xyz);\\n`;\r\n code += `${state._declareLocalVar(\"tbnTangent\", NodeMaterialBlockConnectionPointTypes.Vector3)} = normalize(${worldTangent.associatedVariableName}.xyz);\\n`;\r\n code += `${state._declareLocalVar(\"tbnBitangent\", NodeMaterialBlockConnectionPointTypes.Vector3)} = cross(tbnNormal, tbnTangent) * ${this._tangentCorrectionFactorName};\\n`;\r\n code += `${isWebGPU ? \"var vTBN\" : \"mat3 vTBN\"} = ${isWebGPU ? \"mat3x3f\" : \"mat3\"}(tbnTangent, tbnBitangent, tbnNormal);\\n`;\r\n }\r\n\r\n state._emitFunctionFromInclude(\"bumpFragmentMainFunctions\", comments, {\r\n replaceStrings: [tangentReplaceString],\r\n });\r\n\r\n return code;\r\n }\r\n\r\n /**\r\n * Gets the main code of the block (fragment side)\r\n * @param state current state of the node material building\r\n * @param ccBlock instance of a ClearCoatBlock or null if the code must be generated without an active clear coat module\r\n * @param reflectionBlock instance of a ReflectionBlock null if the code must be generated without an active reflection module\r\n * @param worldPosVarName name of the variable holding the world position\r\n * @param generateTBNSpace if true, the code needed to create the TBN coordinate space is generated\r\n * @param vTBNAvailable indicate that the vTBN variable is already existing because it has already been generated by another block (PerturbNormal or Anisotropy)\r\n * @param worldNormalVarName name of the variable holding the world normal\r\n * @returns the shader code\r\n */\r\n public static GetCode(\r\n state: NodeMaterialBuildState,\r\n ccBlock: Nullable<ClearCoatBlock>,\r\n reflectionBlock: Nullable<ReflectionBlock>,\r\n worldPosVarName: string,\r\n generateTBNSpace: boolean,\r\n vTBNAvailable: boolean,\r\n worldNormalVarName: string\r\n ): string {\r\n let code = \"\";\r\n\r\n const intensity = ccBlock?.intensity.isConnected ? ccBlock.intensity.associatedVariableName : \"1.\";\r\n const roughness = ccBlock?.roughness.isConnected ? ccBlock.roughness.associatedVariableName : \"0.\";\r\n const normalMapColor = ccBlock?.normalMapColor.isConnected ? ccBlock.normalMapColor.associatedVariableName : `vec3${state.fSuffix}(0.)`;\r\n const uv = ccBlock?.uv.isConnected ? ccBlock.uv.associatedVariableName : `vec2${state.fSuffix}(0.)`;\r\n\r\n const tintColor = ccBlock?.tintColor.isConnected ? ccBlock.tintColor.associatedVariableName : `vec3${state.fSuffix}(1.)`;\r\n const tintThickness = ccBlock?.tintThickness.isConnected ? ccBlock.tintThickness.associatedVariableName : \"1.\";\r\n const tintAtDistance = ccBlock?.tintAtDistance.isConnected ? ccBlock.tintAtDistance.associatedVariableName : \"1.\";\r\n const tintTexture = `vec4${state.fSuffix}(0.)`;\r\n\r\n if (ccBlock) {\r\n state._emitUniformFromString(\"vClearCoatRefractionParams\", NodeMaterialBlockConnectionPointTypes.Vector4);\r\n state._emitUniformFromString(\"vClearCoatTangentSpaceParams\", NodeMaterialBlockConnectionPointTypes.Vector2);\r\n\r\n const normalShading = ccBlock.worldNormal;\r\n code += `${state._declareLocalVar(\"vGeometricNormaClearCoatW\", NodeMaterialBlockConnectionPointTypes.Vector3)} = ${normalShading.isConnected ? \"normalize(\" + normalShading.associatedVariableName + \".xyz)\" : \"geometricNormalW\"};\\n`;\r\n } else {\r\n code += `${state._declareLocalVar(\"vGeometricNormaClearCoatW\", NodeMaterialBlockConnectionPointTypes.Vector3)} = geometricNormalW;\\n`;\r\n }\r\n\r\n if (generateTBNSpace && ccBlock) {\r\n code += ccBlock._generateTBNSpace(state, worldPosVarName, worldNormalVarName);\r\n vTBNAvailable = ccBlock.worldTangent.isConnected;\r\n }\r\n\r\n const isWebGPU = state.shaderLanguage === ShaderLanguage.WGSL;\r\n code += `${isWebGPU ? \"var clearcoatOut: clearcoatOutParams\" : \"clearcoatOutParams clearcoatOut\"};\r\n\r\n #ifdef CLEARCOAT\r\n ${state._declareLocalVar(\"vClearCoatParams\", NodeMaterialBlockConnectionPointTypes.Vector2)} = vec2${state.fSuffix}(${intensity}, ${roughness});\r\n ${state._declareLocalVar(\"vClearCoatTintParams\", NodeMaterialBlockConnectionPointTypes.Vector4)} = vec4${state.fSuffix}(${tintColor}, ${tintThickness});\r\n\r\n clearcoatOut = clearcoatBlock(\r\n ${worldPosVarName}.xyz\r\n , vGeometricNormaClearCoatW\r\n , viewDirectionW\r\n , vClearCoatParams\r\n , specularEnvironmentR0\r\n #ifdef CLEARCOAT_TEXTURE\r\n , vec2${state.fSuffix}(0.)\r\n #endif\r\n #ifdef CLEARCOAT_TINT\r\n , vClearCoatTintParams\r\n , ${tintAtDistance}\r\n , ${isWebGPU ? \"uniforms.\" : \"\"}vClearCoatRefractionParams\r\n #ifdef CLEARCOAT_TINT_TEXTURE\r\n , ${tintTexture}\r\n #endif\r\n #endif\r\n #ifdef CLEARCOAT_BUMP\r\n , vec2${state.fSuffix}(0., 1.)\r\n , vec4${state.fSuffix}(${normalMapColor}, 0.)\r\n , ${uv}\r\n #if defined(${vTBNAvailable ? \"TANGENT\" : \"IGNORE\"}) && defined(NORMAL)\r\n , vTBN\r\n #else\r\n , ${isWebGPU ? \"uniforms.\" : \"\"}vClearCoatTangentSpaceParams\r\n #endif\r\n #ifdef OBJECTSPACE_NORMALMAP\r\n , normalMatrix\r\n #endif\r\n #endif\r\n #if defined(FORCENORMALFORWARD) && defined(NORMAL)\r\n , faceNormal\r\n #endif\r\n #ifdef REFLECTION\r\n , ${isWebGPU ? \"uniforms.\" : \"\"}${reflectionBlock?._vReflectionMicrosurfaceInfosName}\r\n , ${reflectionBlock?._vReflectionInfosName}\r\n , ${reflectionBlock?.reflectionColor}\r\n , ${isWebGPU ? \"uniforms.\" : \"\"}vLightingIntensity\r\n #ifdef ${reflectionBlock?._define3DName}\r\n , ${reflectionBlock?._cubeSamplerName} \r\n ${isWebGPU ? `, ${reflectionBlock?._cubeSamplerName}Sampler` : \"\"}\r\n #else\r\n , ${reflectionBlock?._2DSamplerName} \r\n ${isWebGPU ? `, ${reflectionBlock?._2DSamplerName}Sampler` : \"\"}\r\n #endif\r\n #ifndef LODBASEDMICROSFURACE\r\n #ifdef ${reflectionBlock?._define3DName}\r\n , ${reflectionBlock?._cubeSamplerName} \r\n ${isWebGPU ? `, ${reflectionBlock?._cubeSamplerName}Sampler` : \"\"}\r\n , ${reflectionBlock?._cubeSamplerName}\r\n ${isWebGPU ? `, ${reflectionBlock?._cubeSamplerName}Sampler` : \"\"}\r\n #else\r\n , ${reflectionBlock?._2DSamplerName}\r\n ${isWebGPU ? `, ${reflectionBlock?._2DSamplerName}Sampler` : \"\"}\r\n , ${reflectionBlock?._2DSamplerName}\r\n ${isWebGPU ? `, ${reflectionBlock?._2DSamplerName}Sampler` : \"\"} \r\n #endif\r\n #endif\r\n #endif\r\n #if defined(CLEARCOAT_BUMP) || defined(TWOSIDEDLIGHTING)\r\n , (${state._generateTernary(\"1.\", \"-1.\", isWebGPU ? \"fragmentInputs.frontFacing\" : \"gl_FrontFacing\")})\r\n #endif\r\n );\r\n #else\r\n clearcoatOut.specularEnvironmentR0 = specularEnvironmentR0;\r\n #endif\\n`;\r\n\r\n return code;\r\n }\r\n\r\n protected override _buildBlock(state: NodeMaterialBuildState) {\r\n this._scene = state.sharedData.scene;\r\n\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 this._tangentCorrectionFactorName = state._getFreeDefineName(\"tangentCorrectionFactor\");\r\n state._emitUniformFromString(this._tangentCorrectionFactorName, NodeMaterialBlockConnectionPointTypes.Float);\r\n }\r\n\r\n return this;\r\n }\r\n\r\n protected override _dumpPropertiesCode() {\r\n let codeString = super._dumpPropertiesCode();\r\n\r\n codeString += `${this._codeVariableName}.remapF0OnInterfaceChange = ${this.remapF0OnInterfaceChange};\\n`;\r\n\r\n return codeString;\r\n }\r\n\r\n public override serialize(): any {\r\n const serializationObject = super.serialize();\r\n\r\n serializationObject.remapF0OnInterfaceChange = this.remapF0OnInterfaceChange;\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 this.remapF0OnInterfaceChange = serializationObject.remapF0OnInterfaceChange ?? true;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.ClearCoatBlock\", ClearCoatBlock);\r\n"]}
@@ -0,0 +1,36 @@
1
+ import { NodeMaterialBlock } from "../nodeMaterialBlock";
2
+ import type { NodeMaterialBuildState } from "../nodeMaterialBuildState";
3
+ import type { NodeMaterialConnectionPoint } from "../nodeMaterialBlockConnectionPoint";
4
+ /**
5
+ * Block used to apply rgb/hsl convertions
6
+ */
7
+ export declare class ColorConverterBlock extends NodeMaterialBlock {
8
+ /**
9
+ * Create a new ColorConverterBlock
10
+ * @param name defines the block name
11
+ */
12
+ constructor(name: string);
13
+ /**
14
+ * Gets the current class name
15
+ * @returns the class name
16
+ */
17
+ getClassName(): string;
18
+ /**
19
+ * Gets the rgb value (input)
20
+ */
21
+ get rgbIn(): NodeMaterialConnectionPoint;
22
+ /**
23
+ * Gets the hsl value (input)
24
+ */
25
+ get hslIn(): NodeMaterialConnectionPoint;
26
+ /**
27
+ * Gets the rgb value (output)
28
+ */
29
+ get rgbOut(): NodeMaterialConnectionPoint;
30
+ /**
31
+ * Gets the hsl value (output)
32
+ */
33
+ get hslOut(): NodeMaterialConnectionPoint;
34
+ protected _inputRename(name: string): string;
35
+ protected _buildBlock(state: NodeMaterialBuildState): this;
36
+ }
@@ -0,0 +1,192 @@
1
+ import { NodeMaterialBlock } from "../nodeMaterialBlock.js";
2
+ import { NodeMaterialBlockConnectionPointTypes } from "../Enums/nodeMaterialBlockConnectionPointTypes.js";
3
+ import { NodeMaterialBlockTargets } from "../Enums/nodeMaterialBlockTargets.js";
4
+ import { RegisterClass } from "../../../Misc/typeStore.js";
5
+ /**
6
+ * Block used to apply rgb/hsl convertions
7
+ */
8
+ export class ColorConverterBlock extends NodeMaterialBlock {
9
+ /**
10
+ * Create a new ColorConverterBlock
11
+ * @param name defines the block name
12
+ */
13
+ constructor(name) {
14
+ super(name, NodeMaterialBlockTargets.Neutral);
15
+ this.registerInput("rgb ", NodeMaterialBlockConnectionPointTypes.Color3, true);
16
+ this.registerInput("hsl ", NodeMaterialBlockConnectionPointTypes.Color3, true);
17
+ this.registerOutput("rgb", NodeMaterialBlockConnectionPointTypes.Color3);
18
+ this.registerOutput("hsl", NodeMaterialBlockConnectionPointTypes.Color3);
19
+ }
20
+ /**
21
+ * Gets the current class name
22
+ * @returns the class name
23
+ */
24
+ getClassName() {
25
+ return "ColorConverterBlock";
26
+ }
27
+ /**
28
+ * Gets the rgb value (input)
29
+ */
30
+ get rgbIn() {
31
+ return this._inputs[0];
32
+ }
33
+ /**
34
+ * Gets the hsl value (input)
35
+ */
36
+ get hslIn() {
37
+ return this._inputs[1];
38
+ }
39
+ /**
40
+ * Gets the rgb value (output)
41
+ */
42
+ get rgbOut() {
43
+ return this._outputs[0];
44
+ }
45
+ /**
46
+ * Gets the hsl value (output)
47
+ */
48
+ get hslOut() {
49
+ return this._outputs[1];
50
+ }
51
+ _inputRename(name) {
52
+ if (name === "rgb ") {
53
+ return "rgbIn";
54
+ }
55
+ if (name === "hsl ") {
56
+ return "hslIn";
57
+ }
58
+ return name;
59
+ }
60
+ _buildBlock(state) {
61
+ super._buildBlock(state);
62
+ const rgbInput = this.rgbIn;
63
+ const hslInput = this.hslIn;
64
+ const rbgOutput = this._outputs[0];
65
+ const hslOutput = this._outputs[1];
66
+ const vec3 = state._getShaderType(NodeMaterialBlockConnectionPointTypes.Vector3);
67
+ let rgb2hsl = `
68
+ vec3 rgb2hsl(vec3 color) {
69
+ float r = color.r;
70
+ float g = color.g;
71
+ float b = color.b;
72
+
73
+ float maxc = max(r, max(g, b));
74
+ float minc = min(r, min(g, b));
75
+ float h = 0.0;
76
+ float s = 0.0;
77
+ float l = (maxc + minc) / 2.0;
78
+
79
+ if (maxc != minc) {
80
+ float d = maxc - minc;
81
+ if (l > 0.5) {
82
+ s = d / (2.0 - maxc - minc);
83
+ } else {
84
+ s = d / (maxc + minc);
85
+ }
86
+
87
+ if (maxc == r) {
88
+ float add = 0.0;
89
+ if (g < b) {
90
+ add = 6.0;
91
+ }
92
+ h = (g - b) / d + add;
93
+ } else if (maxc == g) {
94
+ h = (b - r) / d + 2.0;
95
+ } else if (maxc == b) {
96
+ h = (r - g) / d + 4.0;
97
+ }
98
+ h /= 6.0;
99
+ }
100
+
101
+ return vec3(h, s, l);
102
+ }`;
103
+ let hue2rgb = `
104
+ float hue2rgb(float p, float q, float tt) {
105
+ float t = tt;
106
+ if (t < 0.0) {
107
+ t += 1.0;
108
+ }
109
+ if (t > 1.0) {
110
+ t -= 1.0;
111
+ }
112
+ if (t < 1.0/6.0) {
113
+ return p + (q - p) * 6.0 * t;
114
+ }
115
+ if (t < 1.0/2.0) {
116
+ return q;
117
+ }
118
+ if (t < 2.0/3.0) {
119
+ return p + (q - p) * (2.0/3.0 - t) * 6.0;
120
+ }
121
+ return p;
122
+ }`;
123
+ let hsl2rgb = `
124
+ vec3 hsl2rgb(vec3 hsl) {
125
+ float h = hsl.x;
126
+ float s = hsl.y;
127
+ float l = hsl.z;
128
+
129
+ float r;
130
+ float g;
131
+ float b;
132
+
133
+ if (s == 0.0) {
134
+ // Achromatic (grey)
135
+ r = l;
136
+ g = l;
137
+ b = l;
138
+ } else {
139
+ float q;
140
+
141
+ if (l < 0.5) {
142
+ q = l * (1.0 + s);
143
+ } else {
144
+ q = (l + s - l * s);
145
+ }
146
+
147
+ float p = 2.0 * l - q;
148
+
149
+ r = hue2rgb(p, q, h + 1.0/3.0);
150
+ g = hue2rgb(p, q, h);
151
+ b = hue2rgb(p, q, h - 1.0/3.0);
152
+ }
153
+
154
+ return vec3(r, g, b);
155
+ }`;
156
+ if (state.shaderLanguage === 1 /* ShaderLanguage.WGSL */) {
157
+ rgb2hsl = state._babylonSLtoWGSL(rgb2hsl);
158
+ hue2rgb = state._babylonSLtoWGSL(hue2rgb);
159
+ hsl2rgb = state._babylonSLtoWGSL(hsl2rgb);
160
+ }
161
+ state._emitFunction("rgb2hsl", rgb2hsl, "");
162
+ state._emitFunction("hue2rgb", hue2rgb, "");
163
+ state._emitFunction("hsl2rgb", hsl2rgb, "");
164
+ if (rgbInput.isConnected) {
165
+ if (rbgOutput.hasEndpoints) {
166
+ state.compilationString += state._declareOutput(rbgOutput) + ` = ${rgbInput.associatedVariableName};\n`;
167
+ }
168
+ if (hslOutput.hasEndpoints) {
169
+ state.compilationString += state._declareOutput(hslOutput) + ` = rgb2hsl(${rgbInput.associatedVariableName});\n`;
170
+ }
171
+ }
172
+ else if (hslInput.isConnected) {
173
+ if (rbgOutput.hasEndpoints) {
174
+ state.compilationString += state._declareOutput(rbgOutput) + ` = hsl2rgb(${hslInput.associatedVariableName});\n`;
175
+ }
176
+ if (hslOutput.hasEndpoints) {
177
+ state.compilationString += state._declareOutput(hslOutput) + ` = ${hslInput.associatedVariableName};\n`;
178
+ }
179
+ }
180
+ else {
181
+ if (rbgOutput.hasEndpoints) {
182
+ state.compilationString += state._declareOutput(rbgOutput) + ` = ${vec3}(0.);\n`;
183
+ }
184
+ if (hslOutput.hasEndpoints) {
185
+ state.compilationString += state._declareOutput(hslOutput) + ` = ${vec3}(0.);\n`;
186
+ }
187
+ }
188
+ return this;
189
+ }
190
+ }
191
+ RegisterClass("BABYLON.ColorConverterBlock", ColorConverterBlock);
192
+ //# sourceMappingURL=colorConverterBlock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colorConverterBlock.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Materials/Node/Blocks/colorConverterBlock.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 { NodeMaterialBlockTargets } from \"../Enums/nodeMaterialBlockTargets\";\r\nimport type { NodeMaterialConnectionPoint } from \"../nodeMaterialBlockConnectionPoint\";\r\nimport { RegisterClass } from \"../../../Misc/typeStore\";\r\nimport { ShaderLanguage } from \"core/Materials/shaderLanguage\";\r\n\r\n/**\r\n * Block used to apply rgb/hsl convertions\r\n */\r\nexport class ColorConverterBlock extends NodeMaterialBlock {\r\n /**\r\n * Create a new ColorConverterBlock\r\n * @param name defines the block name\r\n */\r\n public constructor(name: string) {\r\n super(name, NodeMaterialBlockTargets.Neutral);\r\n\r\n this.registerInput(\"rgb \", NodeMaterialBlockConnectionPointTypes.Color3, true);\r\n this.registerInput(\"hsl \", NodeMaterialBlockConnectionPointTypes.Color3, true);\r\n\r\n this.registerOutput(\"rgb\", NodeMaterialBlockConnectionPointTypes.Color3);\r\n this.registerOutput(\"hsl\", NodeMaterialBlockConnectionPointTypes.Color3);\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 \"ColorConverterBlock\";\r\n }\r\n\r\n /**\r\n * Gets the rgb value (input)\r\n */\r\n public get rgbIn(): NodeMaterialConnectionPoint {\r\n return this._inputs[0];\r\n }\r\n\r\n /**\r\n * Gets the hsl value (input)\r\n */\r\n public get hslIn(): NodeMaterialConnectionPoint {\r\n return this._inputs[1];\r\n }\r\n\r\n /**\r\n * Gets the rgb value (output)\r\n */\r\n public get rgbOut(): NodeMaterialConnectionPoint {\r\n return this._outputs[0];\r\n }\r\n\r\n /**\r\n * Gets the hsl value (output)\r\n */\r\n public get hslOut(): NodeMaterialConnectionPoint {\r\n return this._outputs[1];\r\n }\r\n\r\n protected override _inputRename(name: string) {\r\n if (name === \"rgb \") {\r\n return \"rgbIn\";\r\n }\r\n if (name === \"hsl \") {\r\n return \"hslIn\";\r\n }\r\n return name;\r\n }\r\n\r\n protected override _buildBlock(state: NodeMaterialBuildState) {\r\n super._buildBlock(state);\r\n\r\n const rgbInput = this.rgbIn;\r\n const hslInput = this.hslIn;\r\n\r\n const rbgOutput = this._outputs[0];\r\n const hslOutput = this._outputs[1];\r\n\r\n const vec3 = state._getShaderType(NodeMaterialBlockConnectionPointTypes.Vector3);\r\n\r\n let rgb2hsl = `\r\n vec3 rgb2hsl(vec3 color) {\r\n float r = color.r;\r\n float g = color.g;\r\n float b = color.b;\r\n\r\n float maxc = max(r, max(g, b));\r\n float minc = min(r, min(g, b));\r\n float h = 0.0;\r\n float s = 0.0;\r\n float l = (maxc + minc) / 2.0;\r\n\r\n if (maxc != minc) {\r\n float d = maxc - minc;\r\n if (l > 0.5) {\r\n s = d / (2.0 - maxc - minc);\r\n } else {\r\n s = d / (maxc + minc);\r\n }\r\n\r\n if (maxc == r) {\r\n float add = 0.0;\r\n if (g < b) {\r\n add = 6.0;\r\n }\r\n h = (g - b) / d + add;\r\n } else if (maxc == g) {\r\n h = (b - r) / d + 2.0;\r\n } else if (maxc == b) {\r\n h = (r - g) / d + 4.0;\r\n }\r\n h /= 6.0;\r\n }\r\n\r\n return vec3(h, s, l);\r\n }`;\r\n\r\n let hue2rgb = `\r\n float hue2rgb(float p, float q, float tt) {\r\n float t = tt;\r\n if (t < 0.0) {\r\n t += 1.0;\r\n }\r\n if (t > 1.0) {\r\n t -= 1.0;\r\n }\r\n if (t < 1.0/6.0) {\r\n return p + (q - p) * 6.0 * t;\r\n }\r\n if (t < 1.0/2.0) {\r\n return q;\r\n }\r\n if (t < 2.0/3.0) {\r\n return p + (q - p) * (2.0/3.0 - t) * 6.0;\r\n }\r\n return p;\r\n }`;\r\n\r\n let hsl2rgb = `\r\n vec3 hsl2rgb(vec3 hsl) {\r\n float h = hsl.x;\r\n float s = hsl.y;\r\n float l = hsl.z;\r\n\r\n float r;\r\n float g;\r\n float b;\r\n\r\n if (s == 0.0) {\r\n // Achromatic (grey)\r\n r = l;\r\n g = l;\r\n b = l; \r\n } else {\r\n float q;\r\n \r\n if (l < 0.5) {\r\n q = l * (1.0 + s);\r\n } else {\r\n q = (l + s - l * s);\r\n }\r\n\r\n float p = 2.0 * l - q;\r\n\r\n r = hue2rgb(p, q, h + 1.0/3.0);\r\n g = hue2rgb(p, q, h);\r\n b = hue2rgb(p, q, h - 1.0/3.0);\r\n }\r\n\r\n return vec3(r, g, b);\r\n }`;\r\n\r\n if (state.shaderLanguage === ShaderLanguage.WGSL) {\r\n rgb2hsl = state._babylonSLtoWGSL(rgb2hsl);\r\n hue2rgb = state._babylonSLtoWGSL(hue2rgb);\r\n hsl2rgb = state._babylonSLtoWGSL(hsl2rgb);\r\n }\r\n\r\n state._emitFunction(\"rgb2hsl\", rgb2hsl, \"\");\r\n state._emitFunction(\"hue2rgb\", hue2rgb, \"\");\r\n state._emitFunction(\"hsl2rgb\", hsl2rgb, \"\");\r\n\r\n if (rgbInput.isConnected) {\r\n if (rbgOutput.hasEndpoints) {\r\n state.compilationString += state._declareOutput(rbgOutput) + ` = ${rgbInput.associatedVariableName};\\n`;\r\n }\r\n\r\n if (hslOutput.hasEndpoints) {\r\n state.compilationString += state._declareOutput(hslOutput) + ` = rgb2hsl(${rgbInput.associatedVariableName});\\n`;\r\n }\r\n } else if (hslInput.isConnected) {\r\n if (rbgOutput.hasEndpoints) {\r\n state.compilationString += state._declareOutput(rbgOutput) + ` = hsl2rgb(${hslInput.associatedVariableName});\\n`;\r\n }\r\n if (hslOutput.hasEndpoints) {\r\n state.compilationString += state._declareOutput(hslOutput) + ` = ${hslInput.associatedVariableName};\\n`;\r\n }\r\n } else {\r\n if (rbgOutput.hasEndpoints) {\r\n state.compilationString += state._declareOutput(rbgOutput) + ` = ${vec3}(0.);\\n`;\r\n }\r\n\r\n if (hslOutput.hasEndpoints) {\r\n state.compilationString += state._declareOutput(hslOutput) + ` = ${vec3}(0.);\\n`;\r\n }\r\n }\r\n\r\n return this;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.ColorConverterBlock\", ColorConverterBlock);\r\n"]}
@@ -61,3 +61,4 @@ export * from "./matrixDeterminantBlock";
61
61
  export * from "./matrixTransposeBlock";
62
62
  export * from "./meshAttributeExistsBlock";
63
63
  export * from "./curveBlock";
64
+ export * from "./colorConverterBlock";
@@ -62,4 +62,5 @@ export * from "./matrixDeterminantBlock.js";
62
62
  export * from "./matrixTransposeBlock.js";
63
63
  export * from "./meshAttributeExistsBlock.js";
64
64
  export * from "./curveBlock.js";
65
+ export * from "./colorConverterBlock.js";
65
66
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Materials/Node/Blocks/index.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,cAAc,CAAC","sourcesContent":["/* eslint-disable import/no-internal-modules */\r\nexport * from \"./Vertex/index\";\r\nexport * from \"./Fragment/index\";\r\nexport * from \"./Dual/index\";\r\nexport * from \"./Input/index\";\r\nexport * from \"./Teleport/index\";\r\nexport * from \"./multiplyBlock\";\r\nexport * from \"./addBlock\";\r\nexport * from \"./scaleBlock\";\r\nexport * from \"./clampBlock\";\r\nexport * from \"./crossBlock\";\r\nexport * from \"./customBlock\";\r\nexport * from \"./dotBlock\";\r\nexport * from \"./transformBlock\";\r\nexport * from \"./remapBlock\";\r\nexport * from \"./normalizeBlock\";\r\nexport * from \"./trigonometryBlock\";\r\nexport * from \"./colorMergerBlock\";\r\nexport * from \"./vectorMergerBlock\";\r\nexport * from \"./colorSplitterBlock\";\r\nexport * from \"./vectorSplitterBlock\";\r\nexport * from \"./lerpBlock\";\r\nexport * from \"./divideBlock\";\r\nexport * from \"./subtractBlock\";\r\nexport * from \"./stepBlock\";\r\nexport * from \"./oneMinusBlock\";\r\nexport * from \"./viewDirectionBlock\";\r\nexport * from \"./fresnelBlock\";\r\nexport * from \"./maxBlock\";\r\nexport * from \"./minBlock\";\r\nexport * from \"./distanceBlock\";\r\nexport * from \"./lengthBlock\";\r\nexport * from \"./negateBlock\";\r\nexport * from \"./powBlock\";\r\nexport * from \"./randomNumberBlock\";\r\nexport * from \"./arcTan2Block\";\r\nexport * from \"./smoothStepBlock\";\r\nexport * from \"./reciprocalBlock\";\r\nexport * from \"./replaceColorBlock\";\r\nexport * from \"./posterizeBlock\";\r\nexport * from \"./waveBlock\";\r\nexport * from \"./gradientBlock\";\r\nexport * from \"./nLerpBlock\";\r\nexport * from \"./worleyNoise3DBlock\";\r\nexport * from \"./simplexPerlin3DBlock\";\r\nexport * from \"./normalBlendBlock\";\r\nexport * from \"./rotate2dBlock\";\r\nexport * from \"./reflectBlock\";\r\nexport * from \"./refractBlock\";\r\nexport * from \"./desaturateBlock\";\r\nexport * from \"./PBR/index\";\r\nexport * from \"./Particle/index\";\r\nexport * from \"./modBlock\";\r\nexport * from \"./matrixBuilderBlock\";\r\nexport * from \"./conditionalBlock\";\r\nexport * from \"./cloudBlock\";\r\nexport * from \"./voronoiNoiseBlock\";\r\nexport * from \"./elbowBlock\";\r\nexport * from \"./triPlanarBlock\";\r\nexport * from \"./biPlanarBlock\";\r\nexport * from \"./matrixDeterminantBlock\";\r\nexport * from \"./matrixTransposeBlock\";\r\nexport * from \"./meshAttributeExistsBlock\";\r\nexport * from \"./curveBlock\";\r\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Materials/Node/Blocks/index.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC","sourcesContent":["/* eslint-disable import/no-internal-modules */\r\nexport * from \"./Vertex/index\";\r\nexport * from \"./Fragment/index\";\r\nexport * from \"./Dual/index\";\r\nexport * from \"./Input/index\";\r\nexport * from \"./Teleport/index\";\r\nexport * from \"./multiplyBlock\";\r\nexport * from \"./addBlock\";\r\nexport * from \"./scaleBlock\";\r\nexport * from \"./clampBlock\";\r\nexport * from \"./crossBlock\";\r\nexport * from \"./customBlock\";\r\nexport * from \"./dotBlock\";\r\nexport * from \"./transformBlock\";\r\nexport * from \"./remapBlock\";\r\nexport * from \"./normalizeBlock\";\r\nexport * from \"./trigonometryBlock\";\r\nexport * from \"./colorMergerBlock\";\r\nexport * from \"./vectorMergerBlock\";\r\nexport * from \"./colorSplitterBlock\";\r\nexport * from \"./vectorSplitterBlock\";\r\nexport * from \"./lerpBlock\";\r\nexport * from \"./divideBlock\";\r\nexport * from \"./subtractBlock\";\r\nexport * from \"./stepBlock\";\r\nexport * from \"./oneMinusBlock\";\r\nexport * from \"./viewDirectionBlock\";\r\nexport * from \"./fresnelBlock\";\r\nexport * from \"./maxBlock\";\r\nexport * from \"./minBlock\";\r\nexport * from \"./distanceBlock\";\r\nexport * from \"./lengthBlock\";\r\nexport * from \"./negateBlock\";\r\nexport * from \"./powBlock\";\r\nexport * from \"./randomNumberBlock\";\r\nexport * from \"./arcTan2Block\";\r\nexport * from \"./smoothStepBlock\";\r\nexport * from \"./reciprocalBlock\";\r\nexport * from \"./replaceColorBlock\";\r\nexport * from \"./posterizeBlock\";\r\nexport * from \"./waveBlock\";\r\nexport * from \"./gradientBlock\";\r\nexport * from \"./nLerpBlock\";\r\nexport * from \"./worleyNoise3DBlock\";\r\nexport * from \"./simplexPerlin3DBlock\";\r\nexport * from \"./normalBlendBlock\";\r\nexport * from \"./rotate2dBlock\";\r\nexport * from \"./reflectBlock\";\r\nexport * from \"./refractBlock\";\r\nexport * from \"./desaturateBlock\";\r\nexport * from \"./PBR/index\";\r\nexport * from \"./Particle/index\";\r\nexport * from \"./modBlock\";\r\nexport * from \"./matrixBuilderBlock\";\r\nexport * from \"./conditionalBlock\";\r\nexport * from \"./cloudBlock\";\r\nexport * from \"./voronoiNoiseBlock\";\r\nexport * from \"./elbowBlock\";\r\nexport * from \"./triPlanarBlock\";\r\nexport * from \"./biPlanarBlock\";\r\nexport * from \"./matrixDeterminantBlock\";\r\nexport * from \"./matrixTransposeBlock\";\r\nexport * from \"./meshAttributeExistsBlock\";\r\nexport * from \"./curveBlock\";\r\nexport * from \"./colorConverterBlock\";\r\n"]}
@@ -88,9 +88,9 @@ export declare class NodeMaterialDefines extends MaterialDefines implements IIma
88
88
  /** Prepass depth index */
89
89
  PREPASS_DEPTH_INDEX: number;
90
90
  /** Clip-space depth */
91
- PREPASS_NDC_DEPTH: boolean;
91
+ PREPASS_SCREENSPACE_DEPTH: boolean;
92
92
  /** Clip-space depth index */
93
- PREPASS_NDC_DEPTH_INDEX: number;
93
+ PREPASS_SCREENSPACE_DEPTH_INDEX: number;
94
94
  /** Scene MRT count */
95
95
  SCENE_MRT_COUNT: number;
96
96
  /** BONES */
@@ -91,9 +91,9 @@ export class NodeMaterialDefines extends MaterialDefines {
91
91
  /** Prepass depth index */
92
92
  this.PREPASS_DEPTH_INDEX = -1;
93
93
  /** Clip-space depth */
94
- this.PREPASS_NDC_DEPTH = false;
94
+ this.PREPASS_SCREENSPACE_DEPTH = false;
95
95
  /** Clip-space depth index */
96
- this.PREPASS_NDC_DEPTH_INDEX = -1;
96
+ this.PREPASS_SCREENSPACE_DEPTH_INDEX = -1;
97
97
  /** Scene MRT count */
98
98
  this.SCENE_MRT_COUNT = 0;
99
99
  /** BONES */
@@ -791,7 +791,7 @@ export class NodeMaterial extends PushMaterial {
791
791
  if (prePassOutputBlock.viewDepth.isConnected) {
792
792
  result.push(5);
793
793
  }
794
- if (prePassOutputBlock.viewDepthNDC.isConnected) {
794
+ if (prePassOutputBlock.screenDepth.isConnected) {
795
795
  result.push(10);
796
796
  }
797
797
  if (prePassOutputBlock.viewNormal.isConnected) {
@@ -815,10 +815,13 @@ export class NodeMaterial extends PushMaterial {
815
815
  if (block.position.isConnected && !result.includes(1)) {
816
816
  result.push(1);
817
817
  }
818
+ if (block.localPosition.isConnected && !result.includes(9)) {
819
+ result.push(9);
820
+ }
818
821
  if (block.depth.isConnected && !result.includes(5)) {
819
822
  result.push(5);
820
823
  }
821
- if (block.clipSpaceDepth.isConnected && !result.includes(10)) {
824
+ if (block.screenDepth.isConnected && !result.includes(10)) {
822
825
  result.push(10);
823
826
  }
824
827
  if (block.normal.isConnected && !result.includes(6)) {