96c5ce1e3c7e38f808b85aff1a31e7ce90ea70568a9b90d249c14bb72a9eab00.json 39 KB

1
  1. {"ast":null,"code":"import { NodeMaterialBlock } from \"../../nodeMaterialBlock.js\";\nimport { NodeMaterialBlockConnectionPointTypes } from \"../../Enums/nodeMaterialBlockConnectionPointTypes.js\";\nimport { NodeMaterialBlockTargets } from \"../../Enums/nodeMaterialBlockTargets.js\";\nimport { RegisterClass } from \"../../../../Misc/typeStore.js\";\nimport { InputBlock } from \"../Input/inputBlock.js\";\nimport { NodeMaterialConnectionPointCustomObject } from \"../../nodeMaterialConnectionPointCustomObject.js\";\nimport { RefractionBlock } from \"./refractionBlock.js\";\n/**\n * Block used to implement the sub surface module of the PBR material\n */\nexport class SubSurfaceBlock extends NodeMaterialBlock {\n /**\n * Create a new SubSurfaceBlock\n * @param name defines the block name\n */\n constructor(name) {\n super(name, NodeMaterialBlockTargets.Fragment);\n this._isUnique = true;\n this.registerInput(\"thickness\", NodeMaterialBlockConnectionPointTypes.Float, false, NodeMaterialBlockTargets.Fragment);\n this.registerInput(\"tintColor\", NodeMaterialBlockConnectionPointTypes.Color3, true, NodeMaterialBlockTargets.Fragment);\n this.registerInput(\"translucencyIntensity\", NodeMaterialBlockConnectionPointTypes.Float, true, NodeMaterialBlockTargets.Fragment);\n this.registerInput(\"translucencyDiffusionDist\", NodeMaterialBlockConnectionPointTypes.Color3, true, NodeMaterialBlockTargets.Fragment);\n this.registerInput(\"refraction\", NodeMaterialBlockConnectionPointTypes.Object, true, NodeMaterialBlockTargets.Fragment, new NodeMaterialConnectionPointCustomObject(\"refraction\", this, 0 /* NodeMaterialConnectionPointDirection.Input */, RefractionBlock, \"RefractionBlock\"));\n this.registerInput(\"dispersion\", NodeMaterialBlockConnectionPointTypes.Float, true, NodeMaterialBlockTargets.Fragment);\n this.registerOutput(\"subsurface\", NodeMaterialBlockConnectionPointTypes.Object, NodeMaterialBlockTargets.Fragment, new NodeMaterialConnectionPointCustomObject(\"subsurface\", this, 1 /* NodeMaterialConnectionPointDirection.Output */, SubSurfaceBlock, \"SubSurfaceBlock\"));\n }\n /**\n * Initialize the block and prepare the context for build\n * @param state defines the state that will be used for the build\n */\n initialize(state) {\n state._excludeVariableName(\"subSurfaceOut\");\n state._excludeVariableName(\"vThicknessParam\");\n state._excludeVariableName(\"vTintColor\");\n state._excludeVariableName(\"vTranslucencyColor\");\n state._excludeVariableName(\"vSubSurfaceIntensity\");\n state._excludeVariableName(\"dispersion\");\n }\n /**\n * Gets the current class name\n * @returns the class name\n */\n getClassName() {\n return \"SubSurfaceBlock\";\n }\n /**\n * Gets the thickness component\n */\n get thickness() {\n return this._inputs[0];\n }\n /**\n * Gets the tint color input component\n */\n get tintColor() {\n return this._inputs[1];\n }\n /**\n * Gets the translucency intensity input component\n */\n get translucencyIntensity() {\n return this._inputs[2];\n }\n /**\n * Gets the translucency diffusion distance input component\n */\n get translucencyDiffusionDist() {\n return this._inputs[3];\n }\n /**\n * Gets the refraction object parameters\n */\n get refraction() {\n return this._inputs[4];\n }\n /**\n * Gets the dispersion input component\n */\n get dispersion() {\n return this._inputs[5];\n }\n /**\n * Gets the sub surface object output component\n */\n get subsurface() {\n return this._outputs[0];\n }\n autoConfigure() {\n if (!this.thickness.isConnected) {\n const thicknessInput = new InputBlock(\"SubSurface thickness\", NodeMaterialBlockTargets.Fragment, NodeMaterialBlockConnectionPointTypes.Float);\n thicknessInput.value = 0;\n thicknessInput.output.connectTo(this.thickness);\n }\n }\n prepareDefines(mesh, nodeMaterial, defines) {\n super.prepareDefines(mesh, nodeMaterial, defines);\n const translucencyEnabled = this.translucencyDiffusionDist.isConnected || this.translucencyIntensity.isConnected;\n defines.setValue(\"SUBSURFACE\", translucencyEnabled || this.refraction.isConnected, true);\n defines.setValue(\"SS_TRANSLUCENCY\", translucencyEnabled, true);\n defines.setValue(\"SS_THICKNESSANDMASK_TEXTURE\", false, true);\n defines.setValue(\"SS_REFRACTIONINTENSITY_TEXTURE\", false, true);\n defines.setValue(\"SS_TRANSLUCENCYINTENSITY_TEXTURE\", false, true);\n defines.setValue(\"SS_USE_GLTF_TEXTURES\", false, true);\n defines.setValue(\"SS_DISPERSION\", this.dispersion.isConnected, true);\n }\n /**\n * Gets the main code of the block (fragment side)\n * @param state current state of the node material building\n * @param ssBlock instance of a SubSurfaceBlock or null if the code must be generated without an active sub surface module\n * @param reflectionBlock instance of a ReflectionBlock null if the code must be generated without an active reflection module\n * @param worldPosVarName name of the variable holding the world position\n * @returns the shader code\n */\n static GetCode(state, ssBlock, reflectionBlock, worldPosVarName) {\n var _ssBlock$refraction$c, _refractionBlock$getC, _ref, _ref2, _ref3, _refractionBlock$_def, _refractionBlock$_def2, _refractionBlock$_def3, _refractionBlock$_cub, _refractionBlock$_2DS, _refractionBlock$_def4, _refractionBlock$_cub2, _refractionBlock$_cub3, _refractionBlock$_2DS2, _refractionBlock$_2DS3, _refractionBlock$_vRe;\n let code = \"\";\n const thickness = ssBlock !== null && ssBlock !== void 0 && ssBlock.thickness.isConnected ? ssBlock.thickness.associatedVariableName : \"0.\";\n const tintColor = ssBlock !== null && ssBlock !== void 0 && ssBlock.tintColor.isConnected ? ssBlock.tintColor.associatedVariableName : \"vec3(1.)\";\n const translucencyIntensity = ssBlock !== null && ssBlock !== void 0 && ssBlock.translucencyIntensity.isConnected ? ssBlock === null || ssBlock === void 0 ? void 0 : ssBlock.translucencyIntensity.associatedVariableName : \"1.\";\n const translucencyDiffusionDistance = ssBlock !== null && ssBlock !== void 0 && ssBlock.translucencyDiffusionDist.isConnected ? ssBlock === null || ssBlock === void 0 ? void 0 : ssBlock.translucencyDiffusionDist.associatedVariableName : \"vec3(1.)\";\n const refractionBlock = ssBlock !== null && ssBlock !== void 0 && ssBlock.refraction.isConnected ? ssBlock === null || ssBlock === void 0 || (_ssBlock$refraction$c = ssBlock.refraction.connectedPoint) === null || _ssBlock$refraction$c === void 0 ? void 0 : _ssBlock$refraction$c.ownerBlock : null;\n const refractionTintAtDistance = refractionBlock !== null && refractionBlock !== void 0 && refractionBlock.tintAtDistance.isConnected ? refractionBlock.tintAtDistance.associatedVariableName : \"1.\";\n const refractionIntensity = refractionBlock !== null && refractionBlock !== void 0 && refractionBlock.intensity.isConnected ? refractionBlock.intensity.associatedVariableName : \"1.\";\n const refractionView = refractionBlock !== null && refractionBlock !== void 0 && refractionBlock.view.isConnected ? refractionBlock.view.associatedVariableName : \"\";\n const dispersion = ssBlock !== null && ssBlock !== void 0 && ssBlock.dispersion.isConnected ? ssBlock === null || ssBlock === void 0 ? void 0 : ssBlock.dispersion.associatedVariableName : \"0.0\";\n const isWebGPU = state.shaderLanguage === 1 /* ShaderLanguage.WGSL */;\n code += (_refractionBlock$getC = refractionBlock === null || refractionBlock === void 0 ? void 0 : refractionBlock.getCode(state)) !== null && _refractionBlock$getC !== void 0 ? _refractionBlock$getC : \"\";\n code += `${isWebGPU ? \"var subSurfaceOut: subSurfaceOutParams\" : \"subSurfaceOutParams subSurfaceOut\"};\n\n #ifdef SUBSURFACE\n ${state._declareLocalVar(\"vThicknessParam\", NodeMaterialBlockConnectionPointTypes.Vector2)} = vec2${state.fSuffix}(0., ${thickness});\n ${state._declareLocalVar(\"vTintColor\", NodeMaterialBlockConnectionPointTypes.Vector4)} = vec4${state.fSuffix}(${tintColor}, ${refractionTintAtDistance});\n ${state._declareLocalVar(\"vSubSurfaceIntensity\", NodeMaterialBlockConnectionPointTypes.Vector3)} = vec3(${refractionIntensity}, ${translucencyIntensity}, 0.);\n ${state._declareLocalVar(\"dispersion\", NodeMaterialBlockConnectionPointTypes.Float)} = ${dispersion};\n subSurfaceOut = subSurfaceBlock(\n vSubSurfaceIntensity\n , vThicknessParam\n , vTintColor\n , normalW\n , specularEnvironmentReflectance\n #ifdef SS_THICKNESSANDMASK_TEXTURE\n , vec4${state.fSuffix}(0.)\n #endif\n #ifdef REFLECTION\n #ifdef SS_TRANSLUCENCY\n , ${(isWebGPU ? \"uniforms.\" : \"\") + (reflectionBlock === null || reflectionBlock === void 0 ? void 0 : reflectionBlock._reflectionMatrixName)}\n #ifdef USESPHERICALFROMREFLECTIONMAP\n #if !defined(NORMAL) || !defined(USESPHERICALINVERTEX)\n , reflectionOut.irradianceVector\n #endif\n #if defined(REALTIME_FILTERING)\n , ${reflectionBlock === null || reflectionBlock === void 0 ? void 0 : reflectionBlock._cubeSamplerName}\n ${isWebGPU ? `, ${reflectionBlock === null || reflectionBlock === void 0 ? void 0 : reflectionBlock._cubeSamplerName}Sampler` : \"\"}\n , ${reflectionBlock === null || reflectionBlock === void 0 ? void 0 : reflectionBlock._vReflectionFilteringInfoName}\n #endif\n #endif\n #ifdef USEIRRADIANCEMAP\n , irradianceSampler\n ${isWebGPU ? `, irradianceSamplerSampler` : \"\"}\n #endif\n #endif\n #endif\n #if defined(SS_REFRACTION) || defined(SS_TRANSLUCENCY)\n , surfaceAlbedo\n #endif\n #ifdef SS_REFRACTION\n , ${worldPosVarName}.xyz\n , viewDirectionW\n , ${refractionView}\n , ${(_ref = (isWebGPU ? \"uniforms.\" : \"\") + (refractionBlock === null || refractionBlock === void 0 ? void 0 : refractionBlock._vRefractionInfosName)) !== null && _ref !== void 0 ? _ref : \"\"}\n , ${(_ref2 = (isWebGPU ? \"uniforms.\" : \"\") + (refractionBlock === null || refractionBlock === void 0 ? void 0 : refractionBlock._refractionMatrixName)) !== null && _ref2 !== void 0 ? _ref2 : \"\"}\n , ${(_ref3 = (isWebGPU ? \"uniforms.\" : \"\") + (refractionBlock === null || refractionBlock === void 0 ? void 0 : refractionBlock._vRefractionMicrosurfaceInfosName)) !== null && _ref3 !== void 0 ? _ref3 : \"\"}\n , ${isWebGPU ? \"uniforms.\" : \"\"}vLightingIntensity\n #ifdef SS_LINKREFRACTIONTOTRANSPARENCY\n , alpha\n #endif\n #ifdef ${(_refractionBlock$_def = refractionBlock === null || refractionBlock === void 0 ? void 0 : refractionBlock._defineLODRefractionAlpha) !== null && _refractionBlock$_def !== void 0 ? _refractionBlock$_def : \"IGNORE\"}\n , NdotVUnclamped\n #endif\n #ifdef ${(_refractionBlock$_def2 = refractionBlock === null || refractionBlock === void 0 ? void 0 : refractionBlock._defineLinearSpecularRefraction) !== null && _refractionBlock$_def2 !== void 0 ? _refractionBlock$_def2 : \"IGNORE\"}\n , roughness\n #endif\n , alphaG\n #ifdef ${(_refractionBlock$_def3 = refractionBlock === null || refractionBlock === void 0 ? void 0 : refractionBlock._define3DName) !== null && _refractionBlock$_def3 !== void 0 ? _refractionBlock$_def3 : \"IGNORE\"}\n , ${(_refractionBlock$_cub = refractionBlock === null || refractionBlock === void 0 ? void 0 : refractionBlock._cubeSamplerName) !== null && _refractionBlock$_cub !== void 0 ? _refractionBlock$_cub : \"\"}\n ${isWebGPU ? `, ${refractionBlock === null || refractionBlock === void 0 ? void 0 : refractionBlock._cubeSamplerName}Sampler` : \"\"}\n #else\n , ${(_refractionBlock$_2DS = refractionBlock === null || refractionBlock === void 0 ? void 0 : refractionBlock._2DSamplerName) !== null && _refractionBlock$_2DS !== void 0 ? _refractionBlock$_2DS : \"\"}\n ${isWebGPU ? `, ${refractionBlock === null || refractionBlock === void 0 ? void 0 : refractionBlock._2DSamplerName}Sampler` : \"\"}\n #endif\n #ifndef LODBASEDMICROSFURACE\n #ifdef ${(_refractionBlock$_def4 = refractionBlock === null || refractionBlock === void 0 ? void 0 : refractionBlock._define3DName) !== null && _refractionBlock$_def4 !== void 0 ? _refractionBlock$_def4 : \"IGNORE\"}\n , ${(_refractionBlock$_cub2 = refractionBlock === null || refractionBlock === void 0 ? void 0 : refractionBlock._cubeSamplerName) !== null && _refractionBlock$_cub2 !== void 0 ? _refractionBlock$_cub2 : \"\"} \n ${isWebGPU ? `, ${refractionBlock === null || refractionBlock === void 0 ? void 0 : refractionBlock._cubeSamplerName}Sampler` : \"\"}\n , ${(_refractionBlock$_cub3 = refractionBlock === null || refractionBlock === void 0 ? void 0 : refractionBlock._cubeSamplerName) !== null && _refractionBlock$_cub3 !== void 0 ? _refractionBlock$_cub3 : \"\"} \n ${isWebGPU ? `, ${refractionBlock === null || refractionBlock === void 0 ? void 0 : refractionBlock._cubeSamplerName}Sampler` : \"\"}\n #else\n , ${(_refractionBlock$_2DS2 = refractionBlock === null || refractionBlock === void 0 ? void 0 : refractionBlock._2DSamplerName) !== null && _refractionBlock$_2DS2 !== void 0 ? _refractionBlock$_2DS2 : \"\"}\n ${isWebGPU ? `, ${refractionBlock === null || refractionBlock === void 0 ? void 0 : refractionBlock._2DSamplerName}Sampler` : \"\"}\n , ${(_refractionBlock$_2DS3 = refractionBlock === null || refractionBlock === void 0 ? void 0 : refractionBlock._2DSamplerName) !== null && _refractionBlock$_2DS3 !== void 0 ? _refractionBlock$_2DS3 : \"\"}\n ${isWebGPU ? `, ${refractionBlock === null || refractionBlock === void 0 ? void 0 : refractionBlock._2DSamplerName}Sampler` : \"\"}\n #endif\n #endif\n #ifdef ANISOTROPIC\n , anisotropicOut\n #endif\n #ifdef REALTIME_FILTERING\n , ${(_refractionBlock$_vRe = refractionBlock === null || refractionBlock === void 0 ? void 0 : refractionBlock._vRefractionFilteringInfoName) !== null && _refractionBlock$_vRe !== void 0 ? _refractionBlock$_vRe : \"\"}\n #endif\n #ifdef SS_USE_LOCAL_REFRACTIONMAP_CUBIC\n , vRefractionPosition\n , vRefractionSize\n #endif\n #ifdef SS_DISPERSION\n , dispersion\n #endif\n #endif\n #ifdef SS_TRANSLUCENCY\n , ${translucencyDiffusionDistance}\n , vTintColor\n #ifdef SS_TRANSLUCENCYCOLOR_TEXTURE\n , vec4${state.fSuffix}(0.)\n #endif\n #endif \n );\n\n #ifdef SS_REFRACTION\n surfaceAlbedo = subSurfaceOut.surfaceAlbedo;\n #ifdef SS_LINKREFRACTIONTOTRANSPARENCY\n alpha = subSurfaceOut.alpha;\n #endif\n #endif\n #else\n subSurfaceOut.specularEnvironmentReflectance = specularEnvironmentReflectance;\n #endif\\n`;\n return code;\n }\n _buildBlock(state) {\n if (state.target === NodeMaterialBlockTargets.Fragment) {\n state.sharedData.blocksWithDefines.push(this);\n }\n return this;\n }\n}\nRegisterClass(\"BABYLON.SubSurfaceBlock\", SubSurfaceBlock);","map":{"version":3,"names":["NodeMaterialBlock","NodeMaterialBlockConnectionPointTypes","NodeMaterialBlockTargets","RegisterClass","InputBlock","NodeMaterialConnectionPointCustomObject","RefractionBlock","SubSurfaceBlock","constructor","name","Fragment","_isUnique","registerInput","Float","Color3","Object","registerOutput","initialize","state","_excludeVariableName","getClassName","thickness","_inputs","tintColor","translucencyIntensity","translucencyDiffusionDist","refraction","dispersion","subsurface","_outputs","autoConfigure","isConnected","thicknessInput","value","output","connectTo","prepareDefines","mesh","nodeMaterial","defines","translucencyEnabled","setValue","GetCode","ssBlock","reflectionBlock","worldPosVarName","_ssBlock$refraction$c","_refractionBlock$getC","_ref","_ref2","_ref3","_refractionBlock$_def","_refractionBlock$_def2","_refractionBlock$_def3","_refractionBlock$_cub","_refractionBlock$_2DS","_refractionBlock$_def4","_refractionBlock$_cub2","_refractionBlock$_cub3","_refractionBlock$_2DS2","_refractionBlock$_2DS3","_refractionBlock$_vRe","code","associatedVariableName","translucencyDiffusionDistance","refractionBlock","connectedPoint","ownerBlock","refractionTintAtDistance","tintAtDistance","refractionIntensity","intensity","refractionView","view","isWebGPU","shaderLanguage","getCode","_declareLocalVar","Vector2","fSuffix","Vector4","Vector3","_reflectionMatrixName","_cubeSamplerName","_vReflectionFilteringInfoName","_vRefractionInfosName","_refractionMatrixName","_vRefractionMicrosurfaceInfosName","_defineLODRefractionAlpha","_defineLinearSpecularRefraction","_define3DName","_2DSamplerName","_vRefractionFilteringInfoName","_buildBlock","target","sharedData","blocksWithDefines","push"],"sources":["F:/workspace/202226701027/huinongbao-app/node_modules/@babylonjs/core/Materials/Node/Blocks/PBR/subSurfaceBlock.js"],"sourcesContent":["import { NodeMaterialBlock } from \"../../nodeMaterialBlock.js\";\nimport { NodeMaterialBlockConnectionPointTypes } from \"../../Enums/nodeMaterialBlockConnectionPointTypes.js\";\nimport { NodeMaterialBlockTargets } from \"../../Enums/nodeMaterialBlockTargets.js\";\nimport { RegisterClass } from \"../../../../Misc/typeStore.js\";\nimport { InputBlock } from \"../Input/inputBlock.js\";\nimport { NodeMaterialConnectionPointCustomObject } from \"../../nodeMaterialConnectionPointCustomObject.js\";\nimport { RefractionBlock } from \"./refractionBlock.js\";\n/**\n * Block used to implement the sub surface module of the PBR material\n */\nexport class SubSurfaceBlock extends NodeMaterialBlock {\n /**\n * Create a new SubSurfaceBlock\n * @param name defines the block name\n */\n constructor(name) {\n super(name, NodeMaterialBlockTargets.Fragment);\n this._isUnique = true;\n this.registerInput(\"thickness\", NodeMaterialBlockConnectionPointTypes.Float, false, NodeMaterialBlockTargets.Fragment);\n this.registerInput(\"tintColor\", NodeMaterialBlockConnectionPointTypes.Color3, true, NodeMaterialBlockTargets.Fragment);\n this.registerInput(\"translucencyIntensity\", NodeMaterialBlockConnectionPointTypes.Float, true, NodeMaterialBlockTargets.Fragment);\n this.registerInput(\"translucencyDiffusionDist\", NodeMaterialBlockConnectionPointTypes.Color3, true, NodeMaterialBlockTargets.Fragment);\n this.registerInput(\"refraction\", NodeMaterialBlockConnectionPointTypes.Object, true, NodeMaterialBlockTargets.Fragment, new NodeMaterialConnectionPointCustomObject(\"refraction\", this, 0 /* NodeMaterialConnectionPointDirection.Input */, RefractionBlock, \"RefractionBlock\"));\n this.registerInput(\"dispersion\", NodeMaterialBlockConnectionPointTypes.Float, true, NodeMaterialBlockTargets.Fragment);\n this.registerOutput(\"subsurface\", NodeMaterialBlockConnectionPointTypes.Object, NodeMaterialBlockTargets.Fragment, new NodeMaterialConnectionPointCustomObject(\"subsurface\", this, 1 /* NodeMaterialConnectionPointDirection.Output */, SubSurfaceBlock, \"SubSurfaceBlock\"));\n }\n /**\n * Initialize the block and prepare the context for build\n * @param state defines the state that will be used for the build\n */\n initialize(state) {\n state._excludeVariableName(\"subSurfaceOut\");\n state._excludeVariableName(\"vThicknessParam\");\n state._excludeVariableName(\"vTintColor\");\n state._excludeVariableName(\"vTranslucencyColor\");\n state._excludeVariableName(\"vSubSurfaceIntensity\");\n state._excludeVariableName(\"dispersion\");\n }\n /**\n * Gets the current class name\n * @returns the class name\n */\n getClassName() {\n return \"SubSurfaceBlock\";\n }\n /**\n * Gets the thickness component\n */\n get thickness() {\n return this._inputs[0];\n }\n /**\n * Gets the tint color input component\n */\n get tintColor() {\n return this._inputs[1];\n }\n /**\n * Gets the translucency intensity input component\n */\n get translucencyIntensity() {\n return this._inputs[2];\n }\n /**\n * Gets the translucency diffusion distance input component\n */\n get translucencyDiffusionDist() {\n return this._inputs[3];\n }\n /**\n * Gets the refraction object parameters\n */\n get refraction() {\n return this._inputs[4];\n }\n /**\n * Gets the dispersion input component\n */\n get dispersion() {\n return this._inputs[5];\n }\n /**\n * Gets the sub surface object output component\n */\n get subsurface() {\n return this._outputs[0];\n }\n autoConfigure() {\n if (!this.thickness.isConnected) {\n const thicknessInput = new InputBlock(\"SubSurface thickness\", NodeMaterialBlockTargets.Fragment, NodeMaterialBlockConnectionPointTypes.Float);\n thicknessInput.value = 0;\n thicknessInput.output.connectTo(this.thickness);\n }\n }\n prepareDefines(mesh, nodeMaterial, defines) {\n super.prepareDefines(mesh, nodeMaterial, defines);\n const translucencyEnabled = this.translucencyDiffusionDist.isConnected || this.translucencyIntensity.isConnected;\n defines.setValue(\"SUBSURFACE\", translucencyEnabled || this.refraction.isConnected, true);\n defines.setValue(\"SS_TRANSLUCENCY\", translucencyEnabled, true);\n defines.setValue(\"SS_THICKNESSANDMASK_TEXTURE\", false, true);\n defines.setValue(\"SS_REFRACTIONINTENSITY_TEXTURE\", false, true);\n defines.setValue(\"SS_TRANSLUCENCYINTENSITY_TEXTURE\", false, true);\n defines.setValue(\"SS_USE_GLTF_TEXTURES\", false, true);\n defines.setValue(\"SS_DISPERSION\", this.dispersion.isConnected, true);\n }\n /**\n * Gets the main code of the block (fragment side)\n * @param state current state of the node material building\n * @param ssBlock instance of a SubSurfaceBlock or null if the code must be generated without an active sub surface module\n * @param reflectionBlock instance of a ReflectionBlock null if the code must be generated without an active reflection module\n * @param worldPosVarName name of the variable holding the world position\n * @returns the shader code\n */\n static GetCode(state, ssBlock, reflectionBlock, worldPosVarName) {\n let code = \"\";\n const thickness = ssBlock?.thickness.isConnected ? ssBlock.thickness.associatedVariableName : \"0.\";\n const tintColor = ssBlock?.tintColor.isConnected ? ssBlock.tintColor.associatedVariableName : \"vec3(1.)\";\n const translucencyIntensity = ssBlock?.translucencyIntensity.isConnected ? ssBlock?.translucencyIntensity.associatedVariableName : \"1.\";\n const translucencyDiffusionDistance = ssBlock?.translucencyDiffusionDist.isConnected ? ssBlock?.translucencyDiffusionDist.associatedVariableName : \"vec3(1.)\";\n const refractionBlock = (ssBlock?.refraction.isConnected ? ssBlock?.refraction.connectedPoint?.ownerBlock : null);\n const refractionTintAtDistance = refractionBlock?.tintAtDistance.isConnected ? refractionBlock.tintAtDistance.associatedVariableName : \"1.\";\n const refractionIntensity = refractionBlock?.intensity.isConnected ? refractionBlock.intensity.associatedVariableName : \"1.\";\n const refractionView = refractionBlock?.view.isConnected ? refractionBlock.view.associatedVariableName : \"\";\n const dispersion = ssBlock?.dispersion.isConnected ? ssBlock?.dispersion.associatedVariableName : \"0.0\";\n const isWebGPU = state.shaderLanguage === 1 /* ShaderLanguage.WGSL */;\n code += refractionBlock?.getCode(state) ?? \"\";\n code += `${isWebGPU ? \"var subSurfaceOut: subSurfaceOutParams\" : \"subSurfaceOutParams subSurfaceOut\"};\r\n\r\n #ifdef SUBSURFACE\r\n ${state._declareLocalVar(\"vThicknessParam\", NodeMaterialBlockConnectionPointTypes.Vector2)} = vec2${state.fSuffix}(0., ${thickness});\r\n ${state._declareLocalVar(\"vTintColor\", NodeMaterialBlockConnectionPointTypes.Vector4)} = vec4${state.fSuffix}(${tintColor}, ${refractionTintAtDistance});\r\n ${state._declareLocalVar(\"vSubSurfaceIntensity\", NodeMaterialBlockConnectionPointTypes.Vector3)} = vec3(${refractionIntensity}, ${translucencyIntensity}, 0.);\r\n ${state._declareLocalVar(\"dispersion\", NodeMaterialBlockConnectionPointTypes.Float)} = ${dispersion};\r\n subSurfaceOut = subSurfaceBlock(\r\n vSubSurfaceIntensity\r\n , vThicknessParam\r\n , vTintColor\r\n , normalW\r\n , specularEnvironmentReflectance\r\n #ifdef SS_THICKNESSANDMASK_TEXTURE\r\n , vec4${state.fSuffix}(0.)\r\n #endif\r\n #ifdef REFLECTION\r\n #ifdef SS_TRANSLUCENCY\r\n , ${(isWebGPU ? \"uniforms.\" : \"\") + reflectionBlock?._reflectionMatrixName}\r\n #ifdef USESPHERICALFROMREFLECTIONMAP\r\n #if !defined(NORMAL) || !defined(USESPHERICALINVERTEX)\r\n , reflectionOut.irradianceVector\r\n #endif\r\n #if defined(REALTIME_FILTERING)\r\n , ${reflectionBlock?._cubeSamplerName}\r\n ${isWebGPU ? `, ${reflectionBlock?._cubeSamplerName}Sampler` : \"\"}\r\n , ${reflectionBlock?._vReflectionFilteringInfoName}\r\n #endif\r\n #endif\r\n #ifdef USEIRRADIANCEMAP\r\n , irradianceSampler\r\n ${isWebGPU ? `, irradianceSamplerSampler` : \"\"}\r\n #endif\r\n #endif\r\n #endif\r\n #if defined(SS_REFRACTION) || defined(SS_TRANSLUCENCY)\r\n , surfaceAlbedo\r\n #endif\r\n #ifdef SS_REFRACTION\r\n , ${worldPosVarName}.xyz\r\n , viewDirectionW\r\n , ${refractionView}\r\n , ${(isWebGPU ? \"uniforms.\" : \"\") + refractionBlock?._vRefractionInfosName ?? \"\"}\r\n , ${(isWebGPU ? \"uniforms.\" : \"\") + refractionBlock?._refractionMatrixName ?? \"\"}\r\n , ${(isWebGPU ? \"uniforms.\" : \"\") + refractionBlock?._vRefractionMicrosurfaceInfosName ?? \"\"}\r\n , ${isWebGPU ? \"uniforms.\" : \"\"}vLightingIntensity\r\n #ifdef SS_LINKREFRACTIONTOTRANSPARENCY\r\n , alpha\r\n #endif\r\n #ifdef ${refractionBlock?._defineLODRefractionAlpha ?? \"IGNORE\"}\r\n , NdotVUnclamped\r\n #endif\r\n #ifdef ${refractionBlock?._defineLinearSpecularRefraction ?? \"IGNORE\"}\r\n , roughness\r\n #endif\r\n , alphaG\r\n #ifdef ${refractionBlock?._define3DName ?? \"IGNORE\"}\r\n , ${refractionBlock?._cubeSamplerName ?? \"\"}\r\n ${isWebGPU ? `, ${refractionBlock?._cubeSamplerName}Sampler` : \"\"}\r\n #else\r\n , ${refractionBlock?._2DSamplerName ?? \"\"}\r\n ${isWebGPU ? `, ${refractionBlock?._2DSamplerName}Sampler` : \"\"}\r\n #endif\r\n #ifndef LODBASEDMICROSFURACE\r\n #ifdef ${refractionBlock?._define3DName ?? \"IGNORE\"}\r\n , ${refractionBlock?._cubeSamplerName ?? \"\"} \r\n ${isWebGPU ? `, ${refractionBlock?._cubeSamplerName}Sampler` : \"\"}\r\n , ${refractionBlock?._cubeSamplerName ?? \"\"} \r\n ${isWebGPU ? `, ${refractionBlock?._cubeSamplerName}Sampler` : \"\"}\r\n #else\r\n , ${refractionBlock?._2DSamplerName ?? \"\"}\r\n ${isWebGPU ? `, ${refractionBlock?._2DSamplerName}Sampler` : \"\"}\r\n , ${refractionBlock?._2DSamplerName ?? \"\"}\r\n ${isWebGPU ? `, ${refractionBlock?._2DSamplerName}Sampler` : \"\"}\r\n #endif\r\n #endif\r\n #ifdef ANISOTROPIC\r\n , anisotropicOut\r\n #endif\r\n #ifdef REALTIME_FILTERING\r\n , ${refractionBlock?._vRefractionFilteringInfoName ?? \"\"}\r\n #endif\r\n #ifdef SS_USE_LOCAL_REFRACTIONMAP_CUBIC\r\n , vRefractionPosition\r\n , vRefractionSize\r\n #endif\r\n #ifdef SS_DISPERSION\r\n , dispersion\r\n #endif\r\n #endif\r\n #ifdef SS_TRANSLUCENCY\r\n , ${translucencyDiffusionDistance}\r\n , vTintColor\r\n #ifdef SS_TRANSLUCENCYCOLOR_TEXTURE\r\n , vec4${state.fSuffix}(0.)\r\n #endif\r\n #endif \r\n );\r\n\r\n #ifdef SS_REFRACTION\r\n surfaceAlbedo = subSurfaceOut.surfaceAlbedo;\r\n #ifdef SS_LINKREFRACTIONTOTRANSPARENCY\r\n alpha = subSurfaceOut.alpha;\r\n #endif\r\n #endif\r\n #else\r\n subSurfaceOut.specularEnvironmentReflectance = specularEnvironmentReflectance;\r\n #endif\\n`;\n return code;\n }\n _buildBlock(state) {\n if (state.target === NodeMaterialBlockTargets.Fragment) {\n state.sharedData.blocksWithDefines.push(this);\n }\n return this;\n }\n}\nRegisterClass(\"BABYLON.SubSurfaceBlock\", SubSurfaceBlock);\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}