@babylonjs/core 8.47.0 → 8.47.2

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 (161) hide show
  1. package/Behaviors/Cameras/geospatialClippingBehavior.d.ts +39 -0
  2. package/Behaviors/Cameras/geospatialClippingBehavior.js +75 -0
  3. package/Behaviors/Cameras/geospatialClippingBehavior.js.map +1 -0
  4. package/Behaviors/Cameras/index.d.ts +2 -0
  5. package/Behaviors/Cameras/index.js +2 -0
  6. package/Behaviors/Cameras/index.js.map +1 -1
  7. package/Cameras/Inputs/geospatialCameraPointersInput.js +6 -4
  8. package/Cameras/Inputs/geospatialCameraPointersInput.js.map +1 -1
  9. package/Cameras/Limits/geospatialLimits.d.ts +25 -1
  10. package/Cameras/Limits/geospatialLimits.js +60 -3
  11. package/Cameras/Limits/geospatialLimits.js.map +1 -1
  12. package/Cameras/geospatialCamera.d.ts +33 -9
  13. package/Cameras/geospatialCamera.js +114 -42
  14. package/Cameras/geospatialCamera.js.map +1 -1
  15. package/Cameras/geospatialCameraMovement.d.ts +1 -3
  16. package/Cameras/geospatialCameraMovement.js +10 -4
  17. package/Cameras/geospatialCameraMovement.js.map +1 -1
  18. package/Debug/debugLayer.js +11 -3
  19. package/Debug/debugLayer.js.map +1 -1
  20. package/Engines/abstractEngine.js +2 -2
  21. package/Engines/abstractEngine.js.map +1 -1
  22. package/Engines/thinEngine.d.ts +3 -2
  23. package/Engines/thinEngine.js.map +1 -1
  24. package/IAssetContainer.d.ts +5 -0
  25. package/IAssetContainer.js.map +1 -1
  26. package/Lights/Clustered/clusteredLightContainer.js +1 -1
  27. package/Lights/Clustered/clusteredLightContainer.js.map +1 -1
  28. package/Loading/Plugins/babylonFileLoader.js +2 -0
  29. package/Loading/Plugins/babylonFileLoader.js.map +1 -1
  30. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.js +1 -1
  31. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.js.map +1 -1
  32. package/Materials/PBR/openpbrMaterial.d.ts +135 -5
  33. package/Materials/PBR/openpbrMaterial.js +205 -22
  34. package/Materials/PBR/openpbrMaterial.js.map +1 -1
  35. package/Materials/effectRenderer.d.ts +2 -1
  36. package/Materials/effectRenderer.js +2 -12
  37. package/Materials/effectRenderer.js.map +1 -1
  38. package/Materials/materialHelper.functions.js +1 -0
  39. package/Materials/materialHelper.functions.js.map +1 -1
  40. package/Meshes/GaussianSplatting/gaussianSplattingMesh.d.ts +6 -1
  41. package/Meshes/GaussianSplatting/gaussianSplattingMesh.js +21 -17
  42. package/Meshes/GaussianSplatting/gaussianSplattingMesh.js.map +1 -1
  43. package/Misc/sceneRecorder.d.ts +6 -2
  44. package/Misc/sceneRecorder.js +7 -0
  45. package/Misc/sceneRecorder.js.map +1 -1
  46. package/Particles/Node/Blocks/index.d.ts +3 -0
  47. package/Particles/Node/Blocks/index.js +3 -0
  48. package/Particles/Node/Blocks/index.js.map +1 -1
  49. package/Particles/Node/Blocks/particleNLerpBlock.d.ts +35 -0
  50. package/Particles/Node/Blocks/particleNLerpBlock.js +97 -0
  51. package/Particles/Node/Blocks/particleNLerpBlock.js.map +1 -0
  52. package/Particles/Node/Blocks/particleSmoothStepBlock.d.ts +34 -0
  53. package/Particles/Node/Blocks/particleSmoothStepBlock.js +91 -0
  54. package/Particles/Node/Blocks/particleSmoothStepBlock.js.map +1 -0
  55. package/Particles/Node/Blocks/particleStepBlock.d.ts +30 -0
  56. package/Particles/Node/Blocks/particleStepBlock.js +84 -0
  57. package/Particles/Node/Blocks/particleStepBlock.js.map +1 -0
  58. package/Particles/solidParticleSystem.d.ts +3 -0
  59. package/Particles/solidParticleSystem.js +7 -4
  60. package/Particles/solidParticleSystem.js.map +1 -1
  61. package/Rendering/IBLShadows/iblShadowsPluginMaterial.js +8 -10
  62. package/Rendering/IBLShadows/iblShadowsPluginMaterial.js.map +1 -1
  63. package/Shaders/ShadersInclude/hdrFilteringFunctions.js +7 -9
  64. package/Shaders/ShadersInclude/hdrFilteringFunctions.js.map +1 -1
  65. package/Shaders/ShadersInclude/helperFunctions.js +4 -0
  66. package/Shaders/ShadersInclude/helperFunctions.js.map +1 -1
  67. package/Shaders/ShadersInclude/{openpbrBlockAmbientOcclusion.d.ts → openpbrAmbientOcclusionData.d.ts} +1 -1
  68. package/Shaders/ShadersInclude/openpbrAmbientOcclusionData.js +15 -0
  69. package/Shaders/ShadersInclude/openpbrAmbientOcclusionData.js.map +1 -0
  70. package/{ShadersWGSL/ShadersInclude/openpbrBlockAmbientOcclusion.d.ts → Shaders/ShadersInclude/openpbrAmbientOcclusionFunctions.d.ts} +1 -1
  71. package/Shaders/ShadersInclude/openpbrAmbientOcclusionFunctions.js +13 -0
  72. package/Shaders/ShadersInclude/openpbrAmbientOcclusionFunctions.js.map +1 -0
  73. package/Shaders/ShadersInclude/openpbrBackgroundTransmission.d.ts +5 -0
  74. package/Shaders/ShadersInclude/openpbrBackgroundTransmission.js +26 -0
  75. package/Shaders/ShadersInclude/openpbrBackgroundTransmission.js.map +1 -0
  76. package/Shaders/ShadersInclude/openpbrBaseLayerData.js +18 -7
  77. package/Shaders/ShadersInclude/openpbrBaseLayerData.js.map +1 -1
  78. package/Shaders/ShadersInclude/openpbrDirectLighting.js +52 -6
  79. package/Shaders/ShadersInclude/openpbrDirectLighting.js.map +1 -1
  80. package/Shaders/ShadersInclude/openpbrEnvironmentLighting.js +109 -6
  81. package/Shaders/ShadersInclude/openpbrEnvironmentLighting.js.map +1 -1
  82. package/Shaders/ShadersInclude/openpbrFragmentDeclaration.d.ts +1 -0
  83. package/Shaders/ShadersInclude/openpbrFragmentDeclaration.js +24 -4
  84. package/Shaders/ShadersInclude/openpbrFragmentDeclaration.js.map +1 -1
  85. package/Shaders/ShadersInclude/openpbrFragmentSamplersDeclaration.js +10 -1
  86. package/Shaders/ShadersInclude/openpbrFragmentSamplersDeclaration.js.map +1 -1
  87. package/Shaders/ShadersInclude/openpbrIblFunctions.js +9 -2
  88. package/Shaders/ShadersInclude/openpbrIblFunctions.js.map +1 -1
  89. package/Shaders/ShadersInclude/openpbrThinFilmLayerData.js +1 -0
  90. package/Shaders/ShadersInclude/openpbrThinFilmLayerData.js.map +1 -1
  91. package/Shaders/ShadersInclude/openpbrTransmissionLayerData.d.ts +5 -0
  92. package/Shaders/ShadersInclude/openpbrTransmissionLayerData.js +47 -0
  93. package/Shaders/ShadersInclude/openpbrTransmissionLayerData.js.map +1 -0
  94. package/Shaders/ShadersInclude/openpbrUboDeclaration.js +1 -1
  95. package/Shaders/ShadersInclude/openpbrUboDeclaration.js.map +1 -1
  96. package/Shaders/ShadersInclude/openpbrVertexDeclaration.d.ts +1 -0
  97. package/Shaders/ShadersInclude/openpbrVertexDeclaration.js +17 -4
  98. package/Shaders/ShadersInclude/openpbrVertexDeclaration.js.map +1 -1
  99. package/Shaders/ShadersInclude/pbrDirectLightingFunctions.js +1 -1
  100. package/Shaders/ShadersInclude/pbrDirectLightingFunctions.js.map +1 -1
  101. package/Shaders/ShadersInclude/pbrHelperFunctions.js +1 -1
  102. package/Shaders/ShadersInclude/pbrHelperFunctions.js.map +1 -1
  103. package/Shaders/openpbr.fragment.d.ts +4 -1
  104. package/Shaders/openpbr.fragment.js +33 -15
  105. package/Shaders/openpbr.fragment.js.map +1 -1
  106. package/Shaders/openpbr.vertex.js +30 -18
  107. package/Shaders/openpbr.vertex.js.map +1 -1
  108. package/ShadersWGSL/ShadersInclude/hdrFilteringFunctions.js +10 -12
  109. package/ShadersWGSL/ShadersInclude/hdrFilteringFunctions.js.map +1 -1
  110. package/ShadersWGSL/ShadersInclude/helperFunctions.js +4 -0
  111. package/ShadersWGSL/ShadersInclude/helperFunctions.js.map +1 -1
  112. package/ShadersWGSL/ShadersInclude/importanceSampling.js +1 -1
  113. package/ShadersWGSL/ShadersInclude/importanceSampling.js.map +1 -1
  114. package/ShadersWGSL/ShadersInclude/openpbrAmbientOcclusionData.d.ts +5 -0
  115. package/ShadersWGSL/ShadersInclude/openpbrAmbientOcclusionData.js +15 -0
  116. package/ShadersWGSL/ShadersInclude/openpbrAmbientOcclusionData.js.map +1 -0
  117. package/ShadersWGSL/ShadersInclude/openpbrAmbientOcclusionFunctions.d.ts +5 -0
  118. package/ShadersWGSL/ShadersInclude/openpbrAmbientOcclusionFunctions.js +13 -0
  119. package/ShadersWGSL/ShadersInclude/openpbrAmbientOcclusionFunctions.js.map +1 -0
  120. package/ShadersWGSL/ShadersInclude/openpbrBackgroundTransmission.d.ts +5 -0
  121. package/ShadersWGSL/ShadersInclude/openpbrBackgroundTransmission.js +25 -0
  122. package/ShadersWGSL/ShadersInclude/openpbrBackgroundTransmission.js.map +1 -0
  123. package/ShadersWGSL/ShadersInclude/openpbrBaseLayerData.js +18 -7
  124. package/ShadersWGSL/ShadersInclude/openpbrBaseLayerData.js.map +1 -1
  125. package/ShadersWGSL/ShadersInclude/openpbrDirectLighting.js +52 -6
  126. package/ShadersWGSL/ShadersInclude/openpbrDirectLighting.js.map +1 -1
  127. package/ShadersWGSL/ShadersInclude/openpbrEnvironmentLighting.js +115 -7
  128. package/ShadersWGSL/ShadersInclude/openpbrEnvironmentLighting.js.map +1 -1
  129. package/ShadersWGSL/ShadersInclude/openpbrFragmentSamplersDeclaration.js +10 -1
  130. package/ShadersWGSL/ShadersInclude/openpbrFragmentSamplersDeclaration.js.map +1 -1
  131. package/ShadersWGSL/ShadersInclude/openpbrFuzzLayerData.js +4 -4
  132. package/ShadersWGSL/ShadersInclude/openpbrFuzzLayerData.js.map +1 -1
  133. package/ShadersWGSL/ShadersInclude/openpbrIblFunctions.js +10 -3
  134. package/ShadersWGSL/ShadersInclude/openpbrIblFunctions.js.map +1 -1
  135. package/ShadersWGSL/ShadersInclude/openpbrThinFilmLayerData.js +1 -0
  136. package/ShadersWGSL/ShadersInclude/openpbrThinFilmLayerData.js.map +1 -1
  137. package/ShadersWGSL/ShadersInclude/openpbrTransmissionLayerData.d.ts +5 -0
  138. package/ShadersWGSL/ShadersInclude/openpbrTransmissionLayerData.js +47 -0
  139. package/ShadersWGSL/ShadersInclude/openpbrTransmissionLayerData.js.map +1 -0
  140. package/ShadersWGSL/ShadersInclude/openpbrUboDeclaration.js +1 -1
  141. package/ShadersWGSL/ShadersInclude/openpbrUboDeclaration.js.map +1 -1
  142. package/ShadersWGSL/ShadersInclude/pbrDirectLightingFunctions.js +1 -1
  143. package/ShadersWGSL/ShadersInclude/pbrDirectLightingFunctions.js.map +1 -1
  144. package/ShadersWGSL/ShadersInclude/pbrHelperFunctions.js +1 -1
  145. package/ShadersWGSL/ShadersInclude/pbrHelperFunctions.js.map +1 -1
  146. package/ShadersWGSL/openpbr.fragment.d.ts +4 -1
  147. package/ShadersWGSL/openpbr.fragment.js +33 -15
  148. package/ShadersWGSL/openpbr.fragment.js.map +1 -1
  149. package/ShadersWGSL/openpbr.vertex.js +12 -0
  150. package/ShadersWGSL/openpbr.vertex.js.map +1 -1
  151. package/Sprites/spriteManager.d.ts +3 -0
  152. package/Sprites/spriteManager.js +9 -0
  153. package/Sprites/spriteManager.js.map +1 -1
  154. package/assetContainer.d.ts +5 -0
  155. package/assetContainer.js +32 -0
  156. package/assetContainer.js.map +1 -1
  157. package/package.json +2 -2
  158. package/Shaders/ShadersInclude/openpbrBlockAmbientOcclusion.js +0 -35
  159. package/Shaders/ShadersInclude/openpbrBlockAmbientOcclusion.js.map +0 -1
  160. package/ShadersWGSL/ShadersInclude/openpbrBlockAmbientOcclusion.js +0 -36
  161. package/ShadersWGSL/ShadersInclude/openpbrBlockAmbientOcclusion.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"fragmentOutputBlock.js","sourceRoot":"","sources":["../../../../../../../dev/core/src/Materials/Node/Blocks/Fragment/fragmentOutputBlock.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 type { Scene } from \"../../../../scene\";\r\nimport type { NodeMaterialDefines, NodeMaterial } from \"../../nodeMaterial\";\r\nimport { editableInPropertyPage, PropertyTypeForEdition } from \"../../../../Decorators/nodeDecorator\";\r\nimport type { Effect } from \"../../../effect\";\r\nimport type { Mesh } from \"../../../../Meshes/mesh\";\r\nimport { BindLogDepth } from \"../../../materialHelper.functions\";\r\nimport { ShaderLanguage } from \"core/Materials/shaderLanguage\";\r\n\r\n/**\r\n * Color spaces supported by the fragment output block\r\n */\r\nexport enum FragmentOutputBlockColorSpace {\r\n /** Unspecified */\r\n NoColorSpace,\r\n /** Gamma */\r\n Gamma,\r\n /** Linear */\r\n Linear,\r\n}\r\n\r\n/**\r\n * Block used to output the final color\r\n */\r\nexport class FragmentOutputBlock extends NodeMaterialBlock {\r\n private _linearDefineName: string;\r\n private _gammaDefineName: string;\r\n private _additionalColorDefineName: string;\r\n protected _outputString: string;\r\n\r\n /**\r\n * Create a new FragmentOutputBlock\r\n * @param name defines the block name\r\n */\r\n public constructor(name: string) {\r\n super(name, NodeMaterialBlockTargets.Fragment, true, true);\r\n\r\n this.registerInput(\"rgba\", NodeMaterialBlockConnectionPointTypes.Color4, true);\r\n this.registerInput(\"rgb\", NodeMaterialBlockConnectionPointTypes.Color3, true);\r\n this.registerInput(\"a\", NodeMaterialBlockConnectionPointTypes.Float, true);\r\n this.registerInput(\"glow\", NodeMaterialBlockConnectionPointTypes.Color3, true);\r\n\r\n this.rgb.acceptedConnectionPointTypes.push(NodeMaterialBlockConnectionPointTypes.Vector3);\r\n this.rgb.acceptedConnectionPointTypes.push(NodeMaterialBlockConnectionPointTypes.Float);\r\n\r\n this.additionalColor.acceptedConnectionPointTypes.push(NodeMaterialBlockConnectionPointTypes.Vector3);\r\n this.additionalColor.acceptedConnectionPointTypes.push(NodeMaterialBlockConnectionPointTypes.Float);\r\n }\r\n\r\n /** Gets or sets a boolean indicating if content needs to be converted to gamma space */\r\n public convertToGammaSpace = false;\r\n\r\n /** Gets or sets a boolean indicating if content needs to be converted to linear space */\r\n public convertToLinearSpace = false;\r\n\r\n /** Gets or sets a boolean indicating if logarithmic depth should be used */\r\n @editableInPropertyPage(\"Use logarithmic depth\", PropertyTypeForEdition.Boolean, \"PROPERTIES\", { embedded: true })\r\n public useLogarithmicDepth = false;\r\n\r\n /**\r\n * Gets or sets the color space used for the block\r\n */\r\n @editableInPropertyPage(\"Color space\", PropertyTypeForEdition.List, \"ADVANCED\", {\r\n notifiers: { rebuild: true },\r\n embedded: true,\r\n options: [\r\n { label: \"No color space\", value: FragmentOutputBlockColorSpace.NoColorSpace },\r\n { label: \"Gamma\", value: FragmentOutputBlockColorSpace.Gamma },\r\n { label: \"Linear\", value: FragmentOutputBlockColorSpace.Linear },\r\n ],\r\n })\r\n public get colorSpace() {\r\n if (this.convertToGammaSpace) {\r\n return FragmentOutputBlockColorSpace.Gamma;\r\n }\r\n if (this.convertToLinearSpace) {\r\n return FragmentOutputBlockColorSpace.Linear;\r\n }\r\n return FragmentOutputBlockColorSpace.NoColorSpace;\r\n }\r\n\r\n public set colorSpace(value: FragmentOutputBlockColorSpace) {\r\n this.convertToGammaSpace = value === FragmentOutputBlockColorSpace.Gamma;\r\n this.convertToLinearSpace = value === FragmentOutputBlockColorSpace.Linear;\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 \"FragmentOutputBlock\";\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(\"logarithmicDepthConstant\");\r\n state._excludeVariableName(\"vFragmentDepth\");\r\n }\r\n\r\n /**\r\n * Gets the rgba input component\r\n */\r\n public get rgba(): NodeMaterialConnectionPoint {\r\n return this._inputs[0];\r\n }\r\n\r\n /**\r\n * Gets the rgb input component\r\n */\r\n public get rgb(): NodeMaterialConnectionPoint {\r\n return this._inputs[1];\r\n }\r\n\r\n /**\r\n * Gets the a input component\r\n */\r\n public get a(): NodeMaterialConnectionPoint {\r\n return this._inputs[2];\r\n }\r\n\r\n /**\r\n * Gets the additionalColor input component (named glow in the UI for now)\r\n */\r\n public get additionalColor(): NodeMaterialConnectionPoint {\r\n return this._inputs[3];\r\n }\r\n\r\n /**\r\n * Gets the glow input component\r\n */\r\n public get glow(): NodeMaterialConnectionPoint {\r\n return this._inputs[3];\r\n }\r\n\r\n protected _getOutputString(state: NodeMaterialBuildState): string {\r\n return state.shaderLanguage === ShaderLanguage.WGSL ? \"fragmentOutputsColor\" : \"gl_FragColor\";\r\n }\r\n\r\n public override prepareDefines(defines: NodeMaterialDefines, nodeMaterial: NodeMaterial) {\r\n defines.setValue(this._linearDefineName, this.convertToLinearSpace, true);\r\n defines.setValue(this._gammaDefineName, this.convertToGammaSpace, true);\r\n defines.setValue(this._additionalColorDefineName, this.additionalColor.connectedPoint && nodeMaterial._useAdditionalColor, true);\r\n }\r\n\r\n public override bind(effect: Effect, nodeMaterial: NodeMaterial, mesh?: Mesh) {\r\n if ((this.useLogarithmicDepth || nodeMaterial.useLogarithmicDepth) && mesh) {\r\n BindLogDepth(undefined, effect, mesh.getScene());\r\n }\r\n }\r\n\r\n protected override _buildBlock(state: NodeMaterialBuildState) {\r\n super._buildBlock(state);\r\n\r\n const rgba = this.rgba;\r\n const rgb = this.rgb;\r\n const a = this.a;\r\n const additionalColor = this.additionalColor;\r\n\r\n const isWebGPU = state.shaderLanguage === ShaderLanguage.WGSL;\r\n state.sharedData.hints.needAlphaBlending = rgba.isConnected || a.isConnected;\r\n state.sharedData.blocksWithDefines.push(this);\r\n\r\n if (this.useLogarithmicDepth || state.sharedData.nodeMaterial.useLogarithmicDepth) {\r\n state._emitUniformFromString(\"logarithmicDepthConstant\", NodeMaterialBlockConnectionPointTypes.Float);\r\n state._emitVaryingFromString(\"vFragmentDepth\", NodeMaterialBlockConnectionPointTypes.Float);\r\n state.sharedData.bindableBlocks.push(this);\r\n }\r\n\r\n if (additionalColor.connectedPoint) {\r\n state._excludeVariableName(\"useAdditionalColor\");\r\n state._emitUniformFromString(\"useAdditionalColor\", NodeMaterialBlockConnectionPointTypes.Float);\r\n this._additionalColorDefineName = state._getFreeDefineName(\"USEADDITIONALCOLOR\");\r\n }\r\n\r\n this._linearDefineName = state._getFreeDefineName(\"CONVERTTOLINEAR\");\r\n this._gammaDefineName = state._getFreeDefineName(\"CONVERTTOGAMMA\");\r\n\r\n const comments = `//${this.name}`;\r\n state._emitFunctionFromInclude(\"helperFunctions\", comments);\r\n\r\n const outputString = this._getOutputString(state);\r\n if (state.shaderLanguage === ShaderLanguage.WGSL) {\r\n state.compilationString += `var ${outputString} : vec4<f32>;\\r\\n`;\r\n }\r\n\r\n const vec4 = state._getShaderType(NodeMaterialBlockConnectionPointTypes.Vector4);\r\n\r\n if (additionalColor.connectedPoint) {\r\n let aValue = \"1.0\";\r\n\r\n if (a.connectedPoint) {\r\n aValue = a.associatedVariableName;\r\n }\r\n state.compilationString += `#ifdef ${this._additionalColorDefineName}\\n`;\r\n if (additionalColor.connectedPoint.type === NodeMaterialBlockConnectionPointTypes.Float) {\r\n state.compilationString += `${outputString} = ${vec4}(${additionalColor.associatedVariableName}, ${additionalColor.associatedVariableName}, ${additionalColor.associatedVariableName}, ${aValue});\\n`;\r\n } else {\r\n state.compilationString += `${outputString} = ${vec4}(${additionalColor.associatedVariableName}, ${aValue});\\n`;\r\n }\r\n state.compilationString += `#else\\n`;\r\n }\r\n\r\n if (rgba.connectedPoint) {\r\n if (a.isConnected) {\r\n state.compilationString += `${outputString} = ${vec4}(${rgba.associatedVariableName}.rgb, ${a.associatedVariableName});\\n`;\r\n } else {\r\n state.compilationString += `${outputString} = ${rgba.associatedVariableName};\\n`;\r\n }\r\n } else if (rgb.connectedPoint) {\r\n let aValue = \"1.0\";\r\n\r\n if (a.connectedPoint) {\r\n aValue = a.associatedVariableName;\r\n }\r\n\r\n if (rgb.connectedPoint.type === NodeMaterialBlockConnectionPointTypes.Float) {\r\n state.compilationString += `${outputString} = ${vec4}(${rgb.associatedVariableName}, ${rgb.associatedVariableName}, ${rgb.associatedVariableName}, ${aValue});\\n`;\r\n } else {\r\n state.compilationString += `${outputString} = ${vec4}(${rgb.associatedVariableName}, ${aValue});\\n`;\r\n }\r\n } else {\r\n state.sharedData.checks.notConnectedNonOptionalInputs.push(rgba);\r\n }\r\n\r\n if (additionalColor.connectedPoint) {\r\n state.compilationString += `#endif\\n`;\r\n }\r\n\r\n state.compilationString += `#ifdef ${this._linearDefineName}\\n`;\r\n state.compilationString += `${outputString} = toLinearSpace(${outputString});\\n`;\r\n state.compilationString += `#endif\\n`;\r\n\r\n state.compilationString += `#ifdef ${this._gammaDefineName}\\n`;\r\n state.compilationString += `${outputString} = toGammaSpace(${outputString});\\n`;\r\n state.compilationString += `#endif\\n`;\r\n\r\n if (state.shaderLanguage === ShaderLanguage.WGSL) {\r\n state.compilationString += `#if !defined(PREPASS)\\r\\n`;\r\n state.compilationString += `fragmentOutputs.color = ${outputString};\\r\\n`;\r\n state.compilationString += `#endif\\r\\n`;\r\n }\r\n\r\n if (this.useLogarithmicDepth || state.sharedData.nodeMaterial.useLogarithmicDepth) {\r\n const fragDepth = isWebGPU ? \"input.vFragmentDepth\" : \"vFragmentDepth\";\r\n const uniformP = isWebGPU ? \"uniforms.\" : \"\";\r\n const output = isWebGPU ? \"fragmentOutputs.fragDepth\" : \"gl_FragDepthEXT\";\r\n\r\n state.compilationString += `${output} = log2(${fragDepth}) * ${uniformP}logarithmicDepthConstant * 0.5;\\n`;\r\n }\r\n\r\n state.compilationString += `#if defined(PREPASS)\\r\\n`;\r\n state.compilationString += `${isWebGPU ? \"fragmentOutputs.fragData0\" : \"gl_FragData[0]\"} = ${outputString};\\r\\n`;\r\n state.compilationString += `#endif\\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 codeString += `${this._codeVariableName}.convertToGammaSpace = ${this.convertToGammaSpace};\\n`;\r\n codeString += `${this._codeVariableName}.convertToLinearSpace = ${this.convertToLinearSpace};\\n`;\r\n codeString += `${this._codeVariableName}.useLogarithmicDepth = ${this.useLogarithmicDepth};\\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.convertToGammaSpace = this.convertToGammaSpace;\r\n serializationObject.convertToLinearSpace = this.convertToLinearSpace;\r\n serializationObject.useLogarithmicDepth = this.useLogarithmicDepth;\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.convertToGammaSpace = !!serializationObject.convertToGammaSpace;\r\n this.convertToLinearSpace = !!serializationObject.convertToLinearSpace;\r\n this.useLogarithmicDepth = serializationObject.useLogarithmicDepth ?? false;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.FragmentOutputBlock\", FragmentOutputBlock);\r\n"]}
1
+ {"version":3,"file":"fragmentOutputBlock.js","sourceRoot":"","sources":["../../../../../../../dev/core/src/Materials/Node/Blocks/Fragment/fragmentOutputBlock.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 type { Scene } from \"../../../../scene\";\r\nimport type { NodeMaterialDefines, NodeMaterial } from \"../../nodeMaterial\";\r\nimport { editableInPropertyPage, PropertyTypeForEdition } from \"../../../../Decorators/nodeDecorator\";\r\nimport type { Effect } from \"../../../effect\";\r\nimport type { Mesh } from \"../../../../Meshes/mesh\";\r\nimport { BindLogDepth } from \"../../../materialHelper.functions\";\r\nimport { ShaderLanguage } from \"core/Materials/shaderLanguage\";\r\n\r\n/**\r\n * Color spaces supported by the fragment output block\r\n */\r\nexport enum FragmentOutputBlockColorSpace {\r\n /** Unspecified */\r\n NoColorSpace,\r\n /** Gamma */\r\n Gamma,\r\n /** Linear */\r\n Linear,\r\n}\r\n\r\n/**\r\n * Block used to output the final color\r\n */\r\nexport class FragmentOutputBlock extends NodeMaterialBlock {\r\n private _linearDefineName: string;\r\n private _gammaDefineName: string;\r\n private _additionalColorDefineName: string;\r\n protected _outputString: string;\r\n\r\n /**\r\n * Create a new FragmentOutputBlock\r\n * @param name defines the block name\r\n */\r\n public constructor(name: string) {\r\n super(name, NodeMaterialBlockTargets.Fragment, true, true);\r\n\r\n this.registerInput(\"rgba\", NodeMaterialBlockConnectionPointTypes.Color4, true);\r\n this.registerInput(\"rgb\", NodeMaterialBlockConnectionPointTypes.Color3, true);\r\n this.registerInput(\"a\", NodeMaterialBlockConnectionPointTypes.Float, true);\r\n this.registerInput(\"glow\", NodeMaterialBlockConnectionPointTypes.Color3, true);\r\n\r\n this.rgb.acceptedConnectionPointTypes.push(NodeMaterialBlockConnectionPointTypes.Vector3);\r\n this.rgb.acceptedConnectionPointTypes.push(NodeMaterialBlockConnectionPointTypes.Float);\r\n\r\n this.additionalColor.acceptedConnectionPointTypes.push(NodeMaterialBlockConnectionPointTypes.Vector3);\r\n this.additionalColor.acceptedConnectionPointTypes.push(NodeMaterialBlockConnectionPointTypes.Float);\r\n }\r\n\r\n /** Gets or sets a boolean indicating if content needs to be converted to gamma space */\r\n public convertToGammaSpace = false;\r\n\r\n /** Gets or sets a boolean indicating if content needs to be converted to linear space */\r\n public convertToLinearSpace = false;\r\n\r\n /** Gets or sets a boolean indicating if logarithmic depth should be used */\r\n @editableInPropertyPage(\"Use logarithmic depth\", PropertyTypeForEdition.Boolean, \"PROPERTIES\", { embedded: true })\r\n public useLogarithmicDepth = false;\r\n\r\n /**\r\n * Gets or sets the color space used for the block\r\n */\r\n @editableInPropertyPage(\"Color space\", PropertyTypeForEdition.List, \"ADVANCED\", {\r\n notifiers: { rebuild: true },\r\n embedded: true,\r\n options: [\r\n { label: \"No color space\", value: FragmentOutputBlockColorSpace.NoColorSpace },\r\n { label: \"Gamma\", value: FragmentOutputBlockColorSpace.Gamma },\r\n { label: \"Linear\", value: FragmentOutputBlockColorSpace.Linear },\r\n ],\r\n })\r\n public get colorSpace() {\r\n if (this.convertToGammaSpace) {\r\n return FragmentOutputBlockColorSpace.Gamma;\r\n }\r\n if (this.convertToLinearSpace) {\r\n return FragmentOutputBlockColorSpace.Linear;\r\n }\r\n return FragmentOutputBlockColorSpace.NoColorSpace;\r\n }\r\n\r\n public set colorSpace(value: FragmentOutputBlockColorSpace) {\r\n this.convertToGammaSpace = value === FragmentOutputBlockColorSpace.Gamma;\r\n this.convertToLinearSpace = value === FragmentOutputBlockColorSpace.Linear;\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 \"FragmentOutputBlock\";\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(\"logarithmicDepthConstant\");\r\n state._excludeVariableName(\"vFragmentDepth\");\r\n }\r\n\r\n /**\r\n * Gets the rgba input component\r\n */\r\n public get rgba(): NodeMaterialConnectionPoint {\r\n return this._inputs[0];\r\n }\r\n\r\n /**\r\n * Gets the rgb input component\r\n */\r\n public get rgb(): NodeMaterialConnectionPoint {\r\n return this._inputs[1];\r\n }\r\n\r\n /**\r\n * Gets the a input component\r\n */\r\n public get a(): NodeMaterialConnectionPoint {\r\n return this._inputs[2];\r\n }\r\n\r\n /**\r\n * Gets the additionalColor input component (named glow in the UI for now)\r\n */\r\n public get additionalColor(): NodeMaterialConnectionPoint {\r\n return this._inputs[3];\r\n }\r\n\r\n /**\r\n * Gets the glow input component\r\n */\r\n public get glow(): NodeMaterialConnectionPoint {\r\n return this._inputs[3];\r\n }\r\n\r\n protected _getOutputString(state: NodeMaterialBuildState): string {\r\n return state.shaderLanguage === ShaderLanguage.WGSL ? \"fragmentOutputsColor\" : \"gl_FragColor\";\r\n }\r\n\r\n public override prepareDefines(defines: NodeMaterialDefines, nodeMaterial: NodeMaterial) {\r\n defines.setValue(this._linearDefineName, this.convertToLinearSpace, true);\r\n defines.setValue(this._gammaDefineName, this.convertToGammaSpace, true);\r\n defines.setValue(this._additionalColorDefineName, this.additionalColor.connectedPoint && nodeMaterial._useAdditionalColor, true);\r\n }\r\n\r\n public override bind(effect: Effect, nodeMaterial: NodeMaterial, mesh?: Mesh) {\r\n if ((this.useLogarithmicDepth || nodeMaterial.useLogarithmicDepth) && mesh) {\r\n BindLogDepth(undefined, effect, mesh.getScene());\r\n }\r\n }\r\n\r\n protected override _buildBlock(state: NodeMaterialBuildState) {\r\n super._buildBlock(state);\r\n\r\n const rgba = this.rgba;\r\n const rgb = this.rgb;\r\n const a = this.a;\r\n const additionalColor = this.additionalColor;\r\n\r\n const isWebGPU = state.shaderLanguage === ShaderLanguage.WGSL;\r\n state.sharedData.hints.needAlphaBlending = rgba.isConnected || a.isConnected;\r\n state.sharedData.blocksWithDefines.push(this);\r\n\r\n if (this.useLogarithmicDepth || state.sharedData.nodeMaterial.useLogarithmicDepth) {\r\n state._emitUniformFromString(\"logarithmicDepthConstant\", NodeMaterialBlockConnectionPointTypes.Float);\r\n state._emitVaryingFromString(\"vFragmentDepth\", NodeMaterialBlockConnectionPointTypes.Float);\r\n state.sharedData.bindableBlocks.push(this);\r\n }\r\n\r\n if (additionalColor.connectedPoint) {\r\n state._excludeVariableName(\"useAdditionalColor\");\r\n state._emitUniformFromString(\"useAdditionalColor\", NodeMaterialBlockConnectionPointTypes.Float);\r\n this._additionalColorDefineName = state._getFreeDefineName(\"USEADDITIONALCOLOR\");\r\n }\r\n\r\n this._linearDefineName = state._getFreeDefineName(\"CONVERTTOLINEAR\");\r\n this._gammaDefineName = state._getFreeDefineName(\"CONVERTTOGAMMA\");\r\n\r\n const comments = `//${this.name}`;\r\n state._emitFunctionFromInclude(\"helperFunctions\", comments);\r\n\r\n const outputString = this._getOutputString(state);\r\n if (state.shaderLanguage === ShaderLanguage.WGSL) {\r\n state.compilationString += `var ${outputString} : vec4<f32>;\\r\\n`;\r\n }\r\n\r\n const vec4 = state._getShaderType(NodeMaterialBlockConnectionPointTypes.Vector4);\r\n\r\n if (additionalColor.connectedPoint) {\r\n let aValue = \"1.0\";\r\n\r\n if (a.connectedPoint) {\r\n aValue = a.associatedVariableName;\r\n }\r\n state.compilationString += `#ifdef ${this._additionalColorDefineName}\\n`;\r\n if (additionalColor.connectedPoint.type === NodeMaterialBlockConnectionPointTypes.Float) {\r\n state.compilationString += `${outputString} = ${vec4}(${additionalColor.associatedVariableName}, ${additionalColor.associatedVariableName}, ${additionalColor.associatedVariableName}, ${aValue});\\n`;\r\n } else {\r\n state.compilationString += `${outputString} = ${vec4}(${additionalColor.associatedVariableName}, ${aValue});\\n`;\r\n }\r\n state.compilationString += `#else\\n`;\r\n }\r\n\r\n if (rgba.connectedPoint) {\r\n if (a.isConnected) {\r\n state.compilationString += `${outputString} = ${vec4}(${rgba.associatedVariableName}.rgb, ${a.associatedVariableName});\\n`;\r\n } else {\r\n state.compilationString += `${outputString} = ${rgba.associatedVariableName};\\n`;\r\n }\r\n } else if (rgb.connectedPoint) {\r\n let aValue = \"1.0\";\r\n\r\n if (a.connectedPoint) {\r\n aValue = a.associatedVariableName;\r\n }\r\n\r\n if (rgb.connectedPoint.type === NodeMaterialBlockConnectionPointTypes.Float) {\r\n state.compilationString += `${outputString} = ${vec4}(${rgb.associatedVariableName}, ${rgb.associatedVariableName}, ${rgb.associatedVariableName}, ${aValue});\\n`;\r\n } else {\r\n state.compilationString += `${outputString} = ${vec4}(${rgb.associatedVariableName}, ${aValue});\\n`;\r\n }\r\n } else {\r\n state.sharedData.checks.notConnectedNonOptionalInputs.push(rgba);\r\n }\r\n\r\n if (additionalColor.connectedPoint) {\r\n state.compilationString += `#endif\\n`;\r\n }\r\n\r\n state.compilationString += `#ifdef ${this._linearDefineName}\\n`;\r\n state.compilationString += `${outputString} = toLinearSpaceVec4(${outputString});\\n`;\r\n state.compilationString += `#endif\\n`;\r\n\r\n state.compilationString += `#ifdef ${this._gammaDefineName}\\n`;\r\n state.compilationString += `${outputString} = toGammaSpace(${outputString});\\n`;\r\n state.compilationString += `#endif\\n`;\r\n\r\n if (state.shaderLanguage === ShaderLanguage.WGSL) {\r\n state.compilationString += `#if !defined(PREPASS)\\r\\n`;\r\n state.compilationString += `fragmentOutputs.color = ${outputString};\\r\\n`;\r\n state.compilationString += `#endif\\r\\n`;\r\n }\r\n\r\n if (this.useLogarithmicDepth || state.sharedData.nodeMaterial.useLogarithmicDepth) {\r\n const fragDepth = isWebGPU ? \"input.vFragmentDepth\" : \"vFragmentDepth\";\r\n const uniformP = isWebGPU ? \"uniforms.\" : \"\";\r\n const output = isWebGPU ? \"fragmentOutputs.fragDepth\" : \"gl_FragDepthEXT\";\r\n\r\n state.compilationString += `${output} = log2(${fragDepth}) * ${uniformP}logarithmicDepthConstant * 0.5;\\n`;\r\n }\r\n\r\n state.compilationString += `#if defined(PREPASS)\\r\\n`;\r\n state.compilationString += `${isWebGPU ? \"fragmentOutputs.fragData0\" : \"gl_FragData[0]\"} = ${outputString};\\r\\n`;\r\n state.compilationString += `#endif\\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 codeString += `${this._codeVariableName}.convertToGammaSpace = ${this.convertToGammaSpace};\\n`;\r\n codeString += `${this._codeVariableName}.convertToLinearSpace = ${this.convertToLinearSpace};\\n`;\r\n codeString += `${this._codeVariableName}.useLogarithmicDepth = ${this.useLogarithmicDepth};\\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.convertToGammaSpace = this.convertToGammaSpace;\r\n serializationObject.convertToLinearSpace = this.convertToLinearSpace;\r\n serializationObject.useLogarithmicDepth = this.useLogarithmicDepth;\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.convertToGammaSpace = !!serializationObject.convertToGammaSpace;\r\n this.convertToLinearSpace = !!serializationObject.convertToLinearSpace;\r\n this.useLogarithmicDepth = serializationObject.useLogarithmicDepth ?? false;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.FragmentOutputBlock\", FragmentOutputBlock);\r\n"]}
@@ -1,9 +1,10 @@
1
1
  import type { Nullable } from "../../types.js";
2
- import { Scene } from "../../scene.js";
2
+ import type { Scene } from "../../scene.js";
3
3
  import { Color3 } from "../../Maths/math.color.js";
4
4
  import { ImageProcessingConfiguration } from "../imageProcessingConfiguration.js";
5
5
  import type { BaseTexture } from "../../Materials/Textures/baseTexture.js";
6
6
  import { Material } from "../material.js";
7
+ import type { Engine } from "../../Engines/engine.js";
7
8
  import type { AbstractMesh } from "../../Meshes/abstractMesh.js";
8
9
  import { MaterialDefines } from "../materialDefines.js";
9
10
  import { PrePassConfiguration } from "../prePassConfiguration.js";
@@ -14,6 +15,7 @@ import type { Matrix } from "../../Maths/math.vector.js";
14
15
  import type { Mesh } from "../../Meshes/mesh.js";
15
16
  import { PushMaterial } from "../pushMaterial.js";
16
17
  import type { IAnimatable } from "../../Animations/animatable.interface.js";
18
+ import type { UniformBuffer } from "../../Materials/uniformBuffer.js";
17
19
  declare const OpenPBRMaterialDefinesBase_base: {
18
20
  new (...args: any[]): {
19
21
  MAINUV1: boolean;
@@ -72,10 +74,8 @@ export declare class OpenPBRMaterialDefines extends OpenPBRMaterialDefines_base
72
74
  REFLECTIVITYDIRECTUV: number;
73
75
  SPECULARTERM: boolean;
74
76
  LODBASEDMICROSFURACE: boolean;
75
- METALLICWORKFLOW: boolean;
76
- ROUGHNESSSTOREINMETALMAPALPHA: boolean;
77
- ROUGHNESSSTOREINMETALMAPGREEN: boolean;
78
- METALLNESSSTOREINMETALMAPBLUE: boolean;
77
+ SPECULAR_ROUGHNESS_FROM_METALNESS_TEXTURE_GREEN: boolean;
78
+ BASE_METALNESS_FROM_METALNESS_TEXTURE_BLUE: boolean;
79
79
  AOSTOREINMETALMAPRED: boolean;
80
80
  SPECULAR_WEIGHT_IN_ALPHA: boolean;
81
81
  SPECULAR_WEIGHT_FROM_SPECULAR_COLOR_TEXTURE: boolean;
@@ -85,6 +85,7 @@ export declare class OpenPBRMaterialDefines extends OpenPBRMaterialDefines_base
85
85
  USE_GLTF_STYLE_ANISOTROPY: boolean;
86
86
  THIN_FILM_THICKNESS_FROM_THIN_FILM_TEXTURE: boolean;
87
87
  FUZZ_ROUGHNESS_FROM_TEXTURE_ALPHA: boolean;
88
+ GEOMETRY_THICKNESS_FROM_GREEN_CHANNEL: boolean;
88
89
  ENVIRONMENTBRDF: boolean;
89
90
  ENVIRONMENTBRDF_RGBD: boolean;
90
91
  FUZZENVIRONMENTBRDF: boolean;
@@ -128,6 +129,28 @@ export declare class OpenPBRMaterialDefines extends OpenPBRMaterialDefines_base
128
129
  * Iridescence is the name of thin film interference in the PBR material.
129
130
  */
130
131
  IRIDESCENCE: boolean;
132
+ /**
133
+ * Tells the shader to enable dispersion in refraction
134
+ */
135
+ DISPERSION: boolean;
136
+ /**
137
+ * Enables subsurface scattering
138
+ */
139
+ SCATTERING: boolean;
140
+ /**
141
+ * Refraction of the 2D background texture. Might include the rest of the scene or just the background.
142
+ */
143
+ REFRACTED_BACKGROUND: boolean;
144
+ /**
145
+ * Refraction of direct lights.
146
+ */
147
+ REFRACTED_LIGHTS: boolean;
148
+ /**
149
+ * Refraction of the environment texture (IBL).
150
+ */
151
+ REFRACTED_ENVIRONMENT: boolean;
152
+ REFRACTED_ENVIRONMENT_OPPOSITEZ: boolean;
153
+ REFRACTED_ENVIRONMENT_LOCAL_CUBE: boolean;
131
154
  REFLECTION: boolean;
132
155
  REFLECTIONMAP_3D: boolean;
133
156
  REFLECTIONMAP_SPHERICAL: boolean;
@@ -379,6 +402,78 @@ export declare class OpenPBRMaterial extends OpenPBRMaterialBase {
379
402
  */
380
403
  specularIor: number;
381
404
  private _specularIor;
405
+ /**
406
+ * Transmission weight of the surface.
407
+ * See OpenPBR's specs for transmission_weight
408
+ */
409
+ transmissionWeight: number;
410
+ private _transmissionWeight;
411
+ /**
412
+ * Transmission weight texture.
413
+ * See OpenPBR's specs for transmission_weight
414
+ */
415
+ transmissionWeightTexture: Nullable<BaseTexture>;
416
+ private _transmissionWeightTexture;
417
+ /**
418
+ * Transmission color of the surface.
419
+ * See OpenPBR's specs for transmission_color
420
+ */
421
+ transmissionColor: Color3;
422
+ private _transmissionColor;
423
+ /**
424
+ * Transmission color texture.
425
+ * See OpenPBR's specs for transmission_color
426
+ */
427
+ transmissionColorTexture: Nullable<BaseTexture>;
428
+ private _transmissionColorTexture;
429
+ /**
430
+ * Transmission depth of the volume
431
+ * See OpenPBR's specs for transmission_depth
432
+ */
433
+ transmissionDepth: number;
434
+ private _transmissionDepth;
435
+ /**
436
+ * Transmission depth texture.
437
+ * See OpenPBR's specs for transmission_depth
438
+ */
439
+ transmissionDepthTexture: Nullable<BaseTexture>;
440
+ private _transmissionDepthTexture;
441
+ /**
442
+ * Transmission scatter of the surface.
443
+ * See OpenPBR's specs for transmission_scatter
444
+ */
445
+ transmissionScatter: Color3;
446
+ private _transmissionScatter;
447
+ /**
448
+ * Transmission scatter texture.
449
+ * See OpenPBR's specs for transmission_scatter
450
+ */
451
+ transmissionScatterTexture: Nullable<BaseTexture>;
452
+ private _transmissionScatterTexture;
453
+ /**
454
+ * Transmission scatter anisotropy
455
+ * See OpenPBR's specs for transmission_scatter_anisotropy
456
+ */
457
+ transmissionScatterAnisotropy: number;
458
+ private _transmissionScatterAnisotropy;
459
+ /**
460
+ * Transmission Dispersion Scale factor.
461
+ * See OpenPBR's specs for transmission_dispersion_scale
462
+ */
463
+ transmissionDispersionScale: number;
464
+ private _transmissionDispersionScale;
465
+ /**
466
+ * Transmission Dispersion Scale texture.
467
+ * See OpenPBR's specs for transmission_dispersion_scale
468
+ */
469
+ transmissionDispersionScaleTexture: Nullable<BaseTexture>;
470
+ private _transmissionDispersionScaleTexture;
471
+ /**
472
+ * Transmission Dispersion Abbe number.
473
+ * See OpenPBR's specs for transmission_dispersion_abbe_number
474
+ */
475
+ transmissionDispersionAbbeNumber: number;
476
+ private _transmissionDispersionAbbeNumber;
382
477
  /**
383
478
  * Defines the amount of clear coat on the surface.
384
479
  * See OpenPBR's specs for coat_weight
@@ -552,6 +647,18 @@ export declare class OpenPBRMaterial extends OpenPBRMaterialBase {
552
647
  */
553
648
  geometryOpacityTexture: Nullable<BaseTexture>;
554
649
  private _geometryOpacityTexture;
650
+ /**
651
+ * Defines the thickness of the material's geometry.
652
+ * Not part of OpenPBR's specs but useful for rasterization approximations of volume.
653
+ */
654
+ geometryThickness: number;
655
+ private _geometryThickness;
656
+ /**
657
+ * Defines the thickness of the material's geometry.
658
+ * Not part of OpenPBR's specs but useful for rasterization approximations of volume.
659
+ */
660
+ geometryThicknessTexture: Nullable<BaseTexture>;
661
+ private _geometryThicknessTexture;
555
662
  /**
556
663
  * Defines the luminance of the material's emission.
557
664
  * See OpenPBR's specs for emission_luminance
@@ -845,8 +952,16 @@ export declare class OpenPBRMaterial extends OpenPBRMaterialBase {
845
952
  _useMetallicFromMetallicTextureBlue: boolean;
846
953
  /**
847
954
  * Specifies if the thin film thickness is stored in the green channel of the thin film thickness texture.
955
+ * This is for compatibility with glTF.
956
+ * @internal
848
957
  */
849
958
  _useThinFilmThicknessFromTextureGreen: boolean;
959
+ /**
960
+ * Specifies if the geometry thickness is stored in the green channel of the geometry thickness texture.
961
+ * This is for compatibility with glTF.
962
+ * @internal
963
+ */
964
+ _useGeometryThicknessFromGreenChannel: boolean;
850
965
  /**
851
966
  * Defines the falloff type used in this material.
852
967
  * It by default is Physical.
@@ -929,6 +1044,13 @@ export declare class OpenPBRMaterial extends OpenPBRMaterialBase {
929
1044
  * @internal
930
1045
  */
931
1046
  _environmentFuzzBRDFTexture: Nullable<BaseTexture>;
1047
+ private _backgroundRefractionTexture;
1048
+ /**
1049
+ * Set the texture used for refraction of the background of transparent materials
1050
+ * @internal
1051
+ */
1052
+ get backgroundRefractionTexture(): Nullable<BaseTexture>;
1053
+ set backgroundRefractionTexture(texture: Nullable<BaseTexture>);
932
1054
  /**
933
1055
  * Force the shader to compute irradiance in the fragment shader in order to take normal mapping into account.
934
1056
  * @internal
@@ -1082,6 +1204,14 @@ export declare class OpenPBRMaterial extends OpenPBRMaterialBase {
1082
1204
  * Initializes the uniform buffer layout for the shader.
1083
1205
  */
1084
1206
  buildUniformLayout(): void;
1207
+ /**
1208
+ * Binds the material data (this function is called even if mustRebind() returns false)
1209
+ * @param uniformBuffer defines the Uniform buffer to fill in.
1210
+ * @param scene defines the scene the material belongs to.
1211
+ * @param engine defines the engine the material belongs to.
1212
+ * @param subMesh the submesh to bind data for
1213
+ */
1214
+ bindPropertiesForSubMesh(uniformBuffer: UniformBuffer, scene: Scene, engine: Engine, subMesh: SubMesh): void;
1085
1215
  /**
1086
1216
  * Binds the submesh data.
1087
1217
  * @param world - The world matrix.