4eb8367e701e9e93130152b97793d1bfda48e2764cb761deee3d85da62bf9ef7.json 17 KB

1
  1. {"ast":null,"code":"import { __decorate } from \"../../tslib.es6.js\";\nimport { MaterialDefines } from \"../../Materials/materialDefines.js\";\nimport { MaterialPluginBase } from \"../../Materials/materialPluginBase.js\";\nimport { PBRBaseMaterial } from \"../../Materials/PBR/pbrBaseMaterial.js\";\nimport { expandToProperty, serialize } from \"../../Misc/decorators.js\";\nimport { RegisterClass } from \"../../Misc/typeStore.js\";\n/**\n * @internal\n */\nclass MaterialIBLShadowsRenderDefines extends MaterialDefines {\n constructor() {\n super(...arguments);\n this.RENDER_WITH_IBL_SHADOWS = false;\n }\n}\n/**\n * Plugin used to render the contribution from IBL shadows.\n */\nexport class IBLShadowsPluginMaterial extends MaterialPluginBase {\n _markAllSubMeshesAsTexturesDirty() {\n this._enable(this._isEnabled);\n this._internalMarkAllSubMeshesAsTexturesDirty();\n }\n /**\n * Gets a boolean indicating that the plugin is compatible with a give shader language.\n * @returns true if the plugin is compatible with the shader language\n */\n isCompatible() {\n return true;\n }\n constructor(material) {\n super(material, IBLShadowsPluginMaterial.Name, 310, new MaterialIBLShadowsRenderDefines());\n /**\n * The opacity of the shadows.\n */\n this.shadowOpacity = 1.0;\n this._isEnabled = false;\n /**\n * Defines if the plugin is enabled in the material.\n */\n this.isEnabled = false;\n this._internalMarkAllSubMeshesAsTexturesDirty = material._dirtyCallbacks[1];\n }\n prepareDefines(defines) {\n defines.RENDER_WITH_IBL_SHADOWS = this._isEnabled;\n }\n getClassName() {\n return \"IBLShadowsPluginMaterial\";\n }\n getUniforms() {\n return {\n ubo: [{\n name: \"renderTargetSize\",\n size: 2,\n type: \"vec2\"\n }, {\n name: \"shadowOpacity\",\n size: 1,\n type: \"float\"\n }],\n fragment: `#ifdef RENDER_WITH_IBL_SHADOWS\n uniform vec2 renderTargetSize;\n uniform float shadowOpacity;\n #endif`\n };\n }\n getSamplers(samplers) {\n samplers.push(\"iblShadowsTexture\");\n }\n bindForSubMesh(uniformBuffer) {\n if (this._isEnabled) {\n uniformBuffer.bindTexture(\"iblShadowsTexture\", this.iblShadowsTexture);\n uniformBuffer.updateFloat2(\"renderTargetSize\", this._material.getScene().getEngine().getRenderWidth(), this._material.getScene().getEngine().getRenderHeight());\n uniformBuffer.updateFloat(\"shadowOpacity\", this.shadowOpacity);\n }\n }\n getCustomCode(shaderType, shaderLanguage) {\n let frag;\n if (shaderLanguage === 1 /* ShaderLanguage.WGSL */) {\n frag = {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n CUSTOM_FRAGMENT_DEFINITIONS: `\n #ifdef RENDER_WITH_IBL_SHADOWS\n var iblShadowsTextureSampler: sampler;\n var iblShadowsTexture: texture_2d<f32>;\n\n fn computeIndirectShadow() -> vec2f {\n var uv = fragmentInputs.position.xy / uniforms.renderTargetSize;\n var shadowValue: vec2f = textureSample(iblShadowsTexture, iblShadowsTextureSampler, uv).rg;\n return mix(shadowValue, vec2f(1.0), 1.0 - uniforms.shadowOpacity);\n }\n #endif\n `\n };\n if (this._material instanceof PBRBaseMaterial) {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n frag[\"CUSTOM_FRAGMENT_BEFORE_FINALCOLORCOMPOSITION\"] = `\n #ifdef RENDER_WITH_IBL_SHADOWS\n #ifdef REFLECTION\n var shadowValue: vec2f = computeIndirectShadow();\n finalIrradiance *= vec3f(shadowValue.x);\n finalRadianceScaled *= vec3f(mix(pow(shadowValue.y, 4.0), shadowValue.x, roughness));\n #endif\n #endif\n `;\n } else {\n frag[\"CUSTOM_FRAGMENT_BEFORE_FRAGCOLOR\"] = `\n #ifdef RENDER_WITH_IBL_SHADOWS\n var shadowValue: vec2f = computeIndirectShadow();\n color *= toGammaSpace(vec4f(shadowValue.x, shadowValue.x, shadowValue.x, 1.0f));\n #endif\n `;\n }\n } else {\n frag = {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n CUSTOM_FRAGMENT_DEFINITIONS: `\n #ifdef RENDER_WITH_IBL_SHADOWS\n uniform sampler2D iblShadowsTexture;\n\n vec2 computeIndirectShadow() {\n vec2 uv = gl_FragCoord.xy / renderTargetSize;\n vec2 shadowValue = texture2D(iblShadowsTexture, uv).rg;\n return mix(shadowValue.rg, vec2(1.0), 1.0 - shadowOpacity);\n }\n #endif\n `\n };\n if (this._material instanceof PBRBaseMaterial) {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n frag[\"CUSTOM_FRAGMENT_BEFORE_FINALCOLORCOMPOSITION\"] = `\n #ifdef RENDER_WITH_IBL_SHADOWS\n #ifdef REFLECTION\n vec2 shadowValue = computeIndirectShadow();\n finalIrradiance *= shadowValue.x;\n finalRadianceScaled *= mix(pow(shadowValue.y, 4.0), shadowValue.x, roughness);\n #endif\n #endif\n `;\n } else {\n frag[\"CUSTOM_FRAGMENT_BEFORE_FRAGCOLOR\"] = `\n #ifdef RENDER_WITH_IBL_SHADOWS\n vec2 shadowValue = computeIndirectShadow();\n color.rgb *= toGammaSpace(shadowValue.x);\n #endif\n `;\n }\n }\n return shaderType === \"vertex\" ? null : frag;\n }\n}\n/**\n * Defines the name of the plugin.\n */\nIBLShadowsPluginMaterial.Name = \"IBLShadowsPluginMaterial\";\n__decorate([serialize()], IBLShadowsPluginMaterial.prototype, \"iblShadowsTexture\", void 0);\n__decorate([serialize()], IBLShadowsPluginMaterial.prototype, \"shadowOpacity\", void 0);\n__decorate([serialize(), expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")], IBLShadowsPluginMaterial.prototype, \"isEnabled\", void 0);\nRegisterClass(`BABYLON.IBLShadowsPluginMaterial`, IBLShadowsPluginMaterial);","map":{"version":3,"names":["__decorate","MaterialDefines","MaterialPluginBase","PBRBaseMaterial","expandToProperty","serialize","RegisterClass","MaterialIBLShadowsRenderDefines","constructor","arguments","RENDER_WITH_IBL_SHADOWS","IBLShadowsPluginMaterial","_markAllSubMeshesAsTexturesDirty","_enable","_isEnabled","_internalMarkAllSubMeshesAsTexturesDirty","isCompatible","material","Name","shadowOpacity","isEnabled","_dirtyCallbacks","prepareDefines","defines","getClassName","getUniforms","ubo","name","size","type","fragment","getSamplers","samplers","push","bindForSubMesh","uniformBuffer","bindTexture","iblShadowsTexture","updateFloat2","_material","getScene","getEngine","getRenderWidth","getRenderHeight","updateFloat","getCustomCode","shaderType","shaderLanguage","frag","CUSTOM_FRAGMENT_DEFINITIONS","prototype"],"sources":["F:/workspace/202226701027/huinongbao-app/node_modules/@babylonjs/core/Rendering/IBLShadows/iblShadowsPluginMaterial.js"],"sourcesContent":["import { __decorate } from \"../../tslib.es6.js\";\nimport { MaterialDefines } from \"../../Materials/materialDefines.js\";\nimport { MaterialPluginBase } from \"../../Materials/materialPluginBase.js\";\n\nimport { PBRBaseMaterial } from \"../../Materials/PBR/pbrBaseMaterial.js\";\nimport { expandToProperty, serialize } from \"../../Misc/decorators.js\";\nimport { RegisterClass } from \"../../Misc/typeStore.js\";\n/**\n * @internal\n */\nclass MaterialIBLShadowsRenderDefines extends MaterialDefines {\n constructor() {\n super(...arguments);\n this.RENDER_WITH_IBL_SHADOWS = false;\n }\n}\n/**\n * Plugin used to render the contribution from IBL shadows.\n */\nexport class IBLShadowsPluginMaterial extends MaterialPluginBase {\n _markAllSubMeshesAsTexturesDirty() {\n this._enable(this._isEnabled);\n this._internalMarkAllSubMeshesAsTexturesDirty();\n }\n /**\n * Gets a boolean indicating that the plugin is compatible with a give shader language.\n * @returns true if the plugin is compatible with the shader language\n */\n isCompatible() {\n return true;\n }\n constructor(material) {\n super(material, IBLShadowsPluginMaterial.Name, 310, new MaterialIBLShadowsRenderDefines());\n /**\n * The opacity of the shadows.\n */\n this.shadowOpacity = 1.0;\n this._isEnabled = false;\n /**\n * Defines if the plugin is enabled in the material.\n */\n this.isEnabled = false;\n this._internalMarkAllSubMeshesAsTexturesDirty = material._dirtyCallbacks[1];\n }\n prepareDefines(defines) {\n defines.RENDER_WITH_IBL_SHADOWS = this._isEnabled;\n }\n getClassName() {\n return \"IBLShadowsPluginMaterial\";\n }\n getUniforms() {\n return {\n ubo: [\n { name: \"renderTargetSize\", size: 2, type: \"vec2\" },\n { name: \"shadowOpacity\", size: 1, type: \"float\" },\n ],\n fragment: `#ifdef RENDER_WITH_IBL_SHADOWS\r\n uniform vec2 renderTargetSize;\r\n uniform float shadowOpacity;\r\n #endif`,\n };\n }\n getSamplers(samplers) {\n samplers.push(\"iblShadowsTexture\");\n }\n bindForSubMesh(uniformBuffer) {\n if (this._isEnabled) {\n uniformBuffer.bindTexture(\"iblShadowsTexture\", this.iblShadowsTexture);\n uniformBuffer.updateFloat2(\"renderTargetSize\", this._material.getScene().getEngine().getRenderWidth(), this._material.getScene().getEngine().getRenderHeight());\n uniformBuffer.updateFloat(\"shadowOpacity\", this.shadowOpacity);\n }\n }\n getCustomCode(shaderType, shaderLanguage) {\n let frag;\n if (shaderLanguage === 1 /* ShaderLanguage.WGSL */) {\n frag = {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n CUSTOM_FRAGMENT_DEFINITIONS: `\r\n #ifdef RENDER_WITH_IBL_SHADOWS\r\n var iblShadowsTextureSampler: sampler;\r\n var iblShadowsTexture: texture_2d<f32>;\r\n\r\n fn computeIndirectShadow() -> vec2f {\r\n var uv = fragmentInputs.position.xy / uniforms.renderTargetSize;\r\n var shadowValue: vec2f = textureSample(iblShadowsTexture, iblShadowsTextureSampler, uv).rg;\r\n return mix(shadowValue, vec2f(1.0), 1.0 - uniforms.shadowOpacity);\r\n }\r\n #endif\r\n `,\n };\n if (this._material instanceof PBRBaseMaterial) {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n frag[\"CUSTOM_FRAGMENT_BEFORE_FINALCOLORCOMPOSITION\"] = `\r\n #ifdef RENDER_WITH_IBL_SHADOWS\r\n #ifdef REFLECTION\r\n var shadowValue: vec2f = computeIndirectShadow();\r\n finalIrradiance *= vec3f(shadowValue.x);\r\n finalRadianceScaled *= vec3f(mix(pow(shadowValue.y, 4.0), shadowValue.x, roughness));\r\n #endif\r\n #endif\r\n `;\n }\n else {\n frag[\"CUSTOM_FRAGMENT_BEFORE_FRAGCOLOR\"] = `\r\n #ifdef RENDER_WITH_IBL_SHADOWS\r\n var shadowValue: vec2f = computeIndirectShadow();\r\n color *= toGammaSpace(vec4f(shadowValue.x, shadowValue.x, shadowValue.x, 1.0f));\r\n #endif\r\n `;\n }\n }\n else {\n frag = {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n CUSTOM_FRAGMENT_DEFINITIONS: `\r\n #ifdef RENDER_WITH_IBL_SHADOWS\r\n uniform sampler2D iblShadowsTexture;\r\n\r\n vec2 computeIndirectShadow() {\r\n vec2 uv = gl_FragCoord.xy / renderTargetSize;\r\n vec2 shadowValue = texture2D(iblShadowsTexture, uv).rg;\r\n return mix(shadowValue.rg, vec2(1.0), 1.0 - shadowOpacity);\r\n }\r\n #endif\r\n `,\n };\n if (this._material instanceof PBRBaseMaterial) {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n frag[\"CUSTOM_FRAGMENT_BEFORE_FINALCOLORCOMPOSITION\"] = `\r\n #ifdef RENDER_WITH_IBL_SHADOWS\r\n #ifdef REFLECTION\r\n vec2 shadowValue = computeIndirectShadow();\r\n finalIrradiance *= shadowValue.x;\r\n finalRadianceScaled *= mix(pow(shadowValue.y, 4.0), shadowValue.x, roughness);\r\n #endif\r\n #endif\r\n `;\n }\n else {\n frag[\"CUSTOM_FRAGMENT_BEFORE_FRAGCOLOR\"] = `\r\n #ifdef RENDER_WITH_IBL_SHADOWS\r\n vec2 shadowValue = computeIndirectShadow();\r\n color.rgb *= toGammaSpace(shadowValue.x);\r\n #endif\r\n `;\n }\n }\n return shaderType === \"vertex\" ? null : frag;\n }\n}\n/**\n * Defines the name of the plugin.\n */\nIBLShadowsPluginMaterial.Name = \"IBLShadowsPluginMaterial\";\n__decorate([\n serialize()\n], IBLShadowsPluginMaterial.prototype, \"iblShadowsTexture\", void 0);\n__decorate([\n serialize()\n], IBLShadowsPluginMaterial.prototype, \"shadowOpacity\", void 0);\n__decorate([\n serialize(),\n expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\n], IBLShadowsPluginMaterial.prototype, \"isEnabled\", void 0);\nRegisterClass(`BABYLON.IBLShadowsPluginMaterial`, IBLShadowsPluginMaterial);\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}