{"ast":null,"code":"import { RegisterClass } from \"../../../Misc/typeStore.js\";\nimport { TriPlanarBlock } from \"./triPlanarBlock.js\";\nimport { NodeMaterialBlockConnectionPointTypes } from \"../Enums/nodeMaterialBlockConnectionPointTypes.js\";\n\n/**\n * Block used to read a texture with triplanar mapping (see https://iquilezles.org/articles/biplanar/)\n */\nexport class BiPlanarBlock extends TriPlanarBlock {\n /**\n * Create a new BiPlanarBlock\n * @param name defines the block name\n */\n constructor(name) {\n super(name, true);\n }\n /**\n * Gets the current class name\n * @returns the class name\n */\n getClassName() {\n return \"BiPlanarBlock\";\n }\n _declareLocalVarAsVec3I(name, state) {\n if (state.shaderLanguage === 1 /* ShaderLanguage.WGSL */) {\n return `var ${name}: vec3`;\n } else {\n return `ivec3 ${name}`;\n }\n }\n _getTextureGrad(state, samplerName) {\n if (state.shaderLanguage === 1 /* ShaderLanguage.WGSL */) {\n return `textureSampleGrad(${samplerName},${samplerName + `Sampler`}`;\n }\n return `textureGrad(${samplerName}`;\n }\n _generateTextureLookup(state) {\n var _this$samplerYName;\n const samplerName = this.samplerName;\n const samplerYName = (_this$samplerYName = this.samplerYName) !== null && _this$samplerYName !== void 0 ? _this$samplerYName : this.samplerName;\n const sharpness = this.sharpness.isConnected ? this.sharpness.associatedVariableName : \"1.0\";\n const dpdx = state._getFreeVariableName(\"dxValue\");\n const dpdy = state._getFreeVariableName(\"dyValue\");\n const n = state._getFreeVariableName(\"n\");\n const ma = state._getFreeVariableName(\"ma\");\n const mi = state._getFreeVariableName(\"mi\");\n const me = state._getFreeVariableName(\"me\");\n const x = state._getFreeVariableName(\"x\");\n const y = state._getFreeVariableName(\"y\");\n const w = state._getFreeVariableName(\"w\");\n let ivec3 = \"ivec3\";\n let dpdxFunc = \"dFdx\";\n let dpdyFunc = \"dFdy\";\n const suffix = state.fSuffix;\n if (state.shaderLanguage === 1 /* ShaderLanguage.WGSL */) {\n ivec3 = \"vec3\";\n dpdxFunc = \"dpdx\";\n dpdyFunc = \"dpdy\";\n }\n state.compilationString += `\n // grab coord derivatives for texturing\n ${state._declareLocalVar(dpdx, NodeMaterialBlockConnectionPointTypes.Vector3)} = ${dpdxFunc}(${this.position.associatedVariableName}.xyz);\n ${state._declareLocalVar(dpdy, NodeMaterialBlockConnectionPointTypes.Vector3)} = ${dpdyFunc}(${this.position.associatedVariableName}.xyz);\n ${state._declareLocalVar(n, NodeMaterialBlockConnectionPointTypes.Vector3)} = abs(${this.normal.associatedVariableName}.xyz);\n \n // determine major axis (in x; yz are following axis)\n ${this._declareLocalVarAsVec3I(ma, state)} = ${state._generateTernary(`${ivec3}(0,1,2)`, `${state._generateTernary(`${ivec3}(1,2,0)`, `${ivec3}(2,0,1)`, `(${n}.y>${n}.z)`)}`, `(${n}.x>${n}.y && ${n}.x>${n}.z)`)}; \n\n // determine minor axis (in x; yz are following axis)\n ${this._declareLocalVarAsVec3I(mi, state)} = ${state._generateTernary(`${ivec3}(0,1,2)`, `${state._generateTernary(`${ivec3}(1,2,0)`, `${ivec3}(2,0,1)`, `(${n}.y<${n}.z)`)}`, `(${n}.x<${n}.y && ${n}.x<${n}.z)`)}; \n \n // determine median axis (in x; yz are following axis)\n ${this._declareLocalVarAsVec3I(me, state)} = ${ivec3}(3) - ${mi} - ${ma};\n \n // project+fetch\n ${state._declareLocalVar(x, NodeMaterialBlockConnectionPointTypes.Vector4)} = ${this._getTextureGrad(state, samplerName)}, vec2${suffix}(${this.position.associatedVariableName}[${ma}.y], ${this.position.associatedVariableName}[${ma}.z]), \n vec2${suffix}(${dpdx}[${ma}.y],${dpdx}[${ma}.z]), \n vec2${suffix}(${dpdy}[${ma}.y],${dpdy}[${ma}.z]));\n ${state._declareLocalVar(y, NodeMaterialBlockConnectionPointTypes.Vector4)} = ${this._getTextureGrad(state, samplerYName)}, vec2${suffix}(${this.position.associatedVariableName}[${me}.y], ${this.position.associatedVariableName}[${me}.z]), \n vec2${suffix}(${dpdx}[${me}.y],${dpdx}[${me}.z]),\n vec2${suffix}(${dpdy}[${me}.y],${dpdy}[${me}.z]));\n \n // blend factors\n ${state._declareLocalVar(w, NodeMaterialBlockConnectionPointTypes.Vector2)} = vec2${suffix}(${n}[${ma}.x],${n}[${me}.x]);\n // make local support\n ${w} = clamp( (${w}-0.5773)/(1.0-0.5773), vec2${suffix}(0.0), vec2${suffix}(1.0) );\n // shape transition\n ${w} = pow( ${w}, vec2${suffix}(${sharpness}/8.0) );\n // blend and return\n ${state._declareLocalVar(this._tempTextureRead, NodeMaterialBlockConnectionPointTypes.Vector4)} = (${x}*${w}.x + ${y}*${w}.y) / (${w}.x + ${w}.y);\n `;\n }\n}\nRegisterClass(\"BABYLON.BiPlanarBlock\", BiPlanarBlock);","map":{"version":3,"names":["RegisterClass","TriPlanarBlock","NodeMaterialBlockConnectionPointTypes","BiPlanarBlock","constructor","name","getClassName","_declareLocalVarAsVec3I","state","shaderLanguage","_getTextureGrad","samplerName","_generateTextureLookup","_this$samplerYName","samplerYName","sharpness","isConnected","associatedVariableName","dpdx","_getFreeVariableName","dpdy","n","ma","mi","me","x","y","w","ivec3","dpdxFunc","dpdyFunc","suffix","fSuffix","compilationString","_declareLocalVar","Vector3","position","normal","_generateTernary","Vector4","Vector2","_tempTextureRead"],"sources":["F:/workspace/202226701027/huinongbao-app/node_modules/@babylonjs/core/Materials/Node/Blocks/biPlanarBlock.js"],"sourcesContent":["import { RegisterClass } from \"../../../Misc/typeStore.js\";\nimport { TriPlanarBlock } from \"./triPlanarBlock.js\";\nimport { NodeMaterialBlockConnectionPointTypes } from \"../Enums/nodeMaterialBlockConnectionPointTypes.js\";\n\n/**\n * Block used to read a texture with triplanar mapping (see https://iquilezles.org/articles/biplanar/)\n */\nexport class BiPlanarBlock extends TriPlanarBlock {\n /**\n * Create a new BiPlanarBlock\n * @param name defines the block name\n */\n constructor(name) {\n super(name, true);\n }\n /**\n * Gets the current class name\n * @returns the class name\n */\n getClassName() {\n return \"BiPlanarBlock\";\n }\n _declareLocalVarAsVec3I(name, state) {\n if (state.shaderLanguage === 1 /* ShaderLanguage.WGSL */) {\n return `var ${name}: vec3`;\n }\n else {\n return `ivec3 ${name}`;\n }\n }\n _getTextureGrad(state, samplerName) {\n if (state.shaderLanguage === 1 /* ShaderLanguage.WGSL */) {\n return `textureSampleGrad(${samplerName},${samplerName + `Sampler`}`;\n }\n return `textureGrad(${samplerName}`;\n }\n _generateTextureLookup(state) {\n const samplerName = this.samplerName;\n const samplerYName = this.samplerYName ?? this.samplerName;\n const sharpness = this.sharpness.isConnected ? this.sharpness.associatedVariableName : \"1.0\";\n const dpdx = state._getFreeVariableName(\"dxValue\");\n const dpdy = state._getFreeVariableName(\"dyValue\");\n const n = state._getFreeVariableName(\"n\");\n const ma = state._getFreeVariableName(\"ma\");\n const mi = state._getFreeVariableName(\"mi\");\n const me = state._getFreeVariableName(\"me\");\n const x = state._getFreeVariableName(\"x\");\n const y = state._getFreeVariableName(\"y\");\n const w = state._getFreeVariableName(\"w\");\n let ivec3 = \"ivec3\";\n let dpdxFunc = \"dFdx\";\n let dpdyFunc = \"dFdy\";\n const suffix = state.fSuffix;\n if (state.shaderLanguage === 1 /* ShaderLanguage.WGSL */) {\n ivec3 = \"vec3\";\n dpdxFunc = \"dpdx\";\n dpdyFunc = \"dpdy\";\n }\n state.compilationString += `\r\n // grab coord derivatives for texturing\r\n ${state._declareLocalVar(dpdx, NodeMaterialBlockConnectionPointTypes.Vector3)} = ${dpdxFunc}(${this.position.associatedVariableName}.xyz);\r\n ${state._declareLocalVar(dpdy, NodeMaterialBlockConnectionPointTypes.Vector3)} = ${dpdyFunc}(${this.position.associatedVariableName}.xyz);\r\n ${state._declareLocalVar(n, NodeMaterialBlockConnectionPointTypes.Vector3)} = abs(${this.normal.associatedVariableName}.xyz);\r\n \r\n // determine major axis (in x; yz are following axis)\r\n ${this._declareLocalVarAsVec3I(ma, state)} = ${state._generateTernary(`${ivec3}(0,1,2)`, `${state._generateTernary(`${ivec3}(1,2,0)`, `${ivec3}(2,0,1)`, `(${n}.y>${n}.z)`)}`, `(${n}.x>${n}.y && ${n}.x>${n}.z)`)}; \r\n\r\n // determine minor axis (in x; yz are following axis)\r\n ${this._declareLocalVarAsVec3I(mi, state)} = ${state._generateTernary(`${ivec3}(0,1,2)`, `${state._generateTernary(`${ivec3}(1,2,0)`, `${ivec3}(2,0,1)`, `(${n}.y<${n}.z)`)}`, `(${n}.x<${n}.y && ${n}.x<${n}.z)`)}; \r\n \r\n // determine median axis (in x; yz are following axis)\r\n ${this._declareLocalVarAsVec3I(me, state)} = ${ivec3}(3) - ${mi} - ${ma};\r\n \r\n // project+fetch\r\n ${state._declareLocalVar(x, NodeMaterialBlockConnectionPointTypes.Vector4)} = ${this._getTextureGrad(state, samplerName)}, vec2${suffix}(${this.position.associatedVariableName}[${ma}.y], ${this.position.associatedVariableName}[${ma}.z]), \r\n vec2${suffix}(${dpdx}[${ma}.y],${dpdx}[${ma}.z]), \r\n vec2${suffix}(${dpdy}[${ma}.y],${dpdy}[${ma}.z]));\r\n ${state._declareLocalVar(y, NodeMaterialBlockConnectionPointTypes.Vector4)} = ${this._getTextureGrad(state, samplerYName)}, vec2${suffix}(${this.position.associatedVariableName}[${me}.y], ${this.position.associatedVariableName}[${me}.z]), \r\n vec2${suffix}(${dpdx}[${me}.y],${dpdx}[${me}.z]),\r\n vec2${suffix}(${dpdy}[${me}.y],${dpdy}[${me}.z]));\r\n \r\n // blend factors\r\n ${state._declareLocalVar(w, NodeMaterialBlockConnectionPointTypes.Vector2)} = vec2${suffix}(${n}[${ma}.x],${n}[${me}.x]);\r\n // make local support\r\n ${w} = clamp( (${w}-0.5773)/(1.0-0.5773), vec2${suffix}(0.0), vec2${suffix}(1.0) );\r\n // shape transition\r\n ${w} = pow( ${w}, vec2${suffix}(${sharpness}/8.0) );\r\n // blend and return\r\n ${state._declareLocalVar(this._tempTextureRead, NodeMaterialBlockConnectionPointTypes.Vector4)} = (${x}*${w}.x + ${y}*${w}.y) / (${w}.x + ${w}.y);\r\n `;\n }\n}\nRegisterClass(\"BABYLON.BiPlanarBlock\", BiPlanarBlock);\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}