@babylonjs/viewer
Version:
The Babylon Viewer aims to simplify a specific but common Babylon.js use case: loading, viewing, and interacting with a 3D model.
3 lines • 103 kB
JavaScript
import{z as e,D as t,l as s,C as i,q as a,aw as r,s as n,H as l,i as h,as as u,$ as o,ak as c,J as T,K as _,b3 as E,a7 as R,a$ as d,T as S,bc as A,Q as m,y as f,W as x,a4 as I,a5 as C,a6 as p,a8 as b,a9 as g,aa as M,ab as L,ae as N,af as y,ac as O,ad as D,U,X as F,Y as v,Z as P,a0 as k,a1 as H,a2 as B,a3 as G,ag as V,ah as X,ai as W,al as Y,aj as w,bf as z,am as K,an as j,ao as Q,ap as Z,aq as J,ar as $,F as q,at as ee,au as te,av as se,ay as ie}from"./index-OM-TXt9s.esm.min.js";import{G as ae}from"./brdfTextureTools-BbMLjIT3.esm.min.js";import{M as re,D as ne}from"./material.detailMapConfiguration-CnvG2ZB5.esm.min.js";import{P as le,M as he,a as ue,U as oe}from"./prepass.defines-izweOGjj.esm.min.js";class ce extends r{constructor(){super(...arguments),this.BRDF_V_HEIGHT_CORRELATED=!1,this.MS_BRDF_ENERGY_CONSERVATION=!1,this.SPHERICAL_HARMONICS=!1,this.SPECULAR_GLOSSINESS_ENERGY_CONSERVATION=!1,this.MIX_IBL_RADIANCE_WITH_IRRADIANCE=!0,this.LEGACY_SPECULAR_ENERGY_CONSERVATION=!1,this.BASE_DIFFUSE_MODEL=0,this.DIELECTRIC_SPECULAR_MODEL=0,this.CONDUCTOR_SPECULAR_MODEL=0}}let Te=(()=>{var r,h,u,o,c,T,_,E,R,d;let S,A,m,f,x,I,C,p,b,g=re,M=[],L=[],N=[],y=[],O=[],D=[],U=[],F=[],v=[],P=[],k=[],H=[],B=[],G=[],V=[],X=[],W=[],Y=[];return r=class extends g{get useEnergyConservation(){return e(this,h,"f")}set useEnergyConservation(e){t(this,h,e,"f")}get useSmithVisibilityHeightCorrelated(){return e(this,u,"f")}set useSmithVisibilityHeightCorrelated(e){t(this,u,e,"f")}get useSphericalHarmonics(){return e(this,o,"f")}set useSphericalHarmonics(e){t(this,o,e,"f")}get useSpecularGlossinessInputEnergyConservation(){return e(this,c,"f")}set useSpecularGlossinessInputEnergyConservation(e){t(this,c,e,"f")}get mixIblRadianceWithIrradiance(){return e(this,T,"f")}set mixIblRadianceWithIrradiance(e){t(this,T,e,"f")}get useLegacySpecularEnergyConservation(){return e(this,_,"f")}set useLegacySpecularEnergyConservation(e){t(this,_,e,"f")}get baseDiffuseModel(){return e(this,E,"f")}set baseDiffuseModel(e){t(this,E,e,"f")}get dielectricSpecularModel(){return e(this,R,"f")}set dielectricSpecularModel(e){t(this,R,e,"f")}get conductorSpecularModel(){return e(this,d,"f")}set conductorSpecularModel(e){t(this,d,e,"f")}_markAllSubMeshesAsMiscDirty(){this._internalMarkAllSubMeshesAsMiscDirty()}isCompatible(){return!0}constructor(e,t=!0){super(e,"PBRBRDF",90,new ce,t),this._useEnergyConservation=r.DEFAULT_USE_ENERGY_CONSERVATION,h.set(this,s(this,M,r.DEFAULT_USE_ENERGY_CONSERVATION)),this._useSmithVisibilityHeightCorrelated=(s(this,L),r.DEFAULT_USE_SMITH_VISIBILITY_HEIGHT_CORRELATED),u.set(this,s(this,N,r.DEFAULT_USE_SMITH_VISIBILITY_HEIGHT_CORRELATED)),this._useSphericalHarmonics=(s(this,y),r.DEFAULT_USE_SPHERICAL_HARMONICS),o.set(this,s(this,O,r.DEFAULT_USE_SPHERICAL_HARMONICS)),this._useSpecularGlossinessInputEnergyConservation=(s(this,D),r.DEFAULT_USE_SPECULAR_GLOSSINESS_INPUT_ENERGY_CONSERVATION),c.set(this,s(this,U,r.DEFAULT_USE_SPECULAR_GLOSSINESS_INPUT_ENERGY_CONSERVATION)),this._mixIblRadianceWithIrradiance=(s(this,F),r.DEFAULT_MIX_IBL_RADIANCE_WITH_IRRADIANCE),T.set(this,s(this,v,r.DEFAULT_MIX_IBL_RADIANCE_WITH_IRRADIANCE)),this._useLegacySpecularEnergyConservation=(s(this,P),r.DEFAULT_USE_LEGACY_SPECULAR_ENERGY_CONSERVATION),_.set(this,s(this,k,r.DEFAULT_USE_LEGACY_SPECULAR_ENERGY_CONSERVATION)),this._baseDiffuseModel=(s(this,H),r.DEFAULT_DIFFUSE_MODEL),E.set(this,s(this,B,r.DEFAULT_DIFFUSE_MODEL)),this._dielectricSpecularModel=(s(this,G),r.DEFAULT_DIELECTRIC_SPECULAR_MODEL),R.set(this,s(this,V,r.DEFAULT_DIELECTRIC_SPECULAR_MODEL)),this._conductorSpecularModel=(s(this,X),r.DEFAULT_CONDUCTOR_SPECULAR_MODEL),d.set(this,s(this,W,r.DEFAULT_CONDUCTOR_SPECULAR_MODEL)),this._internalMarkAllSubMeshesAsMiscDirty=s(this,Y),this._internalMarkAllSubMeshesAsMiscDirty=e._dirtyCallbacks[i.MATERIAL_MiscDirtyFlag],this._enable(!0)}prepareDefines(e){e.BRDF_V_HEIGHT_CORRELATED=this._useSmithVisibilityHeightCorrelated,e.MS_BRDF_ENERGY_CONSERVATION=this._useEnergyConservation&&this._useSmithVisibilityHeightCorrelated,e.SPHERICAL_HARMONICS=this._useSphericalHarmonics,e.SPECULAR_GLOSSINESS_ENERGY_CONSERVATION=this._useSpecularGlossinessInputEnergyConservation,e.MIX_IBL_RADIANCE_WITH_IRRADIANCE=this._mixIblRadianceWithIrradiance&&!this._material._disableLighting,e.LEGACY_SPECULAR_ENERGY_CONSERVATION=this._useLegacySpecularEnergyConservation,e.BASE_DIFFUSE_MODEL=this._baseDiffuseModel,e.DIELECTRIC_SPECULAR_MODEL=this._dielectricSpecularModel,e.CONDUCTOR_SPECULAR_MODEL=this._conductorSpecularModel}getClassName(){return"PBRBRDFConfiguration"}},h=new WeakMap,u=new WeakMap,o=new WeakMap,c=new WeakMap,T=new WeakMap,_=new WeakMap,E=new WeakMap,R=new WeakMap,d=new WeakMap,(()=>{const e="function"==typeof Symbol&&Symbol.metadata?Object.create(g[Symbol.metadata]??null):void 0;S=[n(),l("_markAllSubMeshesAsMiscDirty")],A=[n(),l("_markAllSubMeshesAsMiscDirty")],m=[n(),l("_markAllSubMeshesAsMiscDirty")],f=[n(),l("_markAllSubMeshesAsMiscDirty")],x=[n(),l("_markAllSubMeshesAsMiscDirty")],I=[n(),l("_markAllSubMeshesAsMiscDirty")],C=[n("baseDiffuseModel"),l("_markAllSubMeshesAsMiscDirty")],p=[n("dielectricSpecularModel"),l("_markAllSubMeshesAsMiscDirty")],b=[n("conductorSpecularModel"),l("_markAllSubMeshesAsMiscDirty")],a(r,null,S,{kind:"accessor",name:"useEnergyConservation",static:!1,private:!1,access:{has:e=>"useEnergyConservation"in e,get:e=>e.useEnergyConservation,set:(e,t)=>{e.useEnergyConservation=t}},metadata:e},M,L),a(r,null,A,{kind:"accessor",name:"useSmithVisibilityHeightCorrelated",static:!1,private:!1,access:{has:e=>"useSmithVisibilityHeightCorrelated"in e,get:e=>e.useSmithVisibilityHeightCorrelated,set:(e,t)=>{e.useSmithVisibilityHeightCorrelated=t}},metadata:e},N,y),a(r,null,m,{kind:"accessor",name:"useSphericalHarmonics",static:!1,private:!1,access:{has:e=>"useSphericalHarmonics"in e,get:e=>e.useSphericalHarmonics,set:(e,t)=>{e.useSphericalHarmonics=t}},metadata:e},O,D),a(r,null,f,{kind:"accessor",name:"useSpecularGlossinessInputEnergyConservation",static:!1,private:!1,access:{has:e=>"useSpecularGlossinessInputEnergyConservation"in e,get:e=>e.useSpecularGlossinessInputEnergyConservation,set:(e,t)=>{e.useSpecularGlossinessInputEnergyConservation=t}},metadata:e},U,F),a(r,null,x,{kind:"accessor",name:"mixIblRadianceWithIrradiance",static:!1,private:!1,access:{has:e=>"mixIblRadianceWithIrradiance"in e,get:e=>e.mixIblRadianceWithIrradiance,set:(e,t)=>{e.mixIblRadianceWithIrradiance=t}},metadata:e},v,P),a(r,null,I,{kind:"accessor",name:"useLegacySpecularEnergyConservation",static:!1,private:!1,access:{has:e=>"useLegacySpecularEnergyConservation"in e,get:e=>e.useLegacySpecularEnergyConservation,set:(e,t)=>{e.useLegacySpecularEnergyConservation=t}},metadata:e},k,H),a(r,null,C,{kind:"accessor",name:"baseDiffuseModel",static:!1,private:!1,access:{has:e=>"baseDiffuseModel"in e,get:e=>e.baseDiffuseModel,set:(e,t)=>{e.baseDiffuseModel=t}},metadata:e},B,G),a(r,null,p,{kind:"accessor",name:"dielectricSpecularModel",static:!1,private:!1,access:{has:e=>"dielectricSpecularModel"in e,get:e=>e.dielectricSpecularModel,set:(e,t)=>{e.dielectricSpecularModel=t}},metadata:e},V,X),a(r,null,b,{kind:"accessor",name:"conductorSpecularModel",static:!1,private:!1,access:{has:e=>"conductorSpecularModel"in e,get:e=>e.conductorSpecularModel,set:(e,t)=>{e.conductorSpecularModel=t}},metadata:e},W,Y),e&&Object.defineProperty(r,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:e})})(),r.DEFAULT_USE_ENERGY_CONSERVATION=!0,r.DEFAULT_USE_SMITH_VISIBILITY_HEIGHT_CORRELATED=!0,r.DEFAULT_USE_SPHERICAL_HARMONICS=!0,r.DEFAULT_USE_SPECULAR_GLOSSINESS_INPUT_ENERGY_CONSERVATION=!0,r.DEFAULT_MIX_IBL_RADIANCE_WITH_IRRADIANCE=!0,r.DEFAULT_USE_LEGACY_SPECULAR_ENERGY_CONSERVATION=!0,r.DEFAULT_DIFFUSE_MODEL=i.MATERIAL_DIFFUSE_MODEL_E_OREN_NAYAR,r.DEFAULT_DIELECTRIC_SPECULAR_MODEL=i.MATERIAL_DIELECTRIC_SPECULAR_MODEL_GLTF,r.DEFAULT_CONDUCTOR_SPECULAR_MODEL=i.MATERIAL_CONDUCTOR_SPECULAR_MODEL_GLTF,r})();class _e extends r{constructor(){super(...arguments),this.CLEARCOAT=!1,this.CLEARCOAT_DEFAULTIOR=!1,this.CLEARCOAT_TEXTURE=!1,this.CLEARCOAT_TEXTURE_ROUGHNESS=!1,this.CLEARCOAT_TEXTUREDIRECTUV=0,this.CLEARCOAT_TEXTURE_ROUGHNESSDIRECTUV=0,this.CLEARCOAT_BUMP=!1,this.CLEARCOAT_BUMPDIRECTUV=0,this.CLEARCOAT_USE_ROUGHNESS_FROM_MAINTEXTURE=!1,this.CLEARCOAT_REMAP_F0=!1,this.CLEARCOAT_TINT=!1,this.CLEARCOAT_TINT_TEXTURE=!1,this.CLEARCOAT_TINT_TEXTUREDIRECTUV=0,this.CLEARCOAT_TINT_GAMMATEXTURE=!1}}let Ee=(()=>{var r,E,R,d,S,A,m,f,x,I;let C,p,b,g,M,L,N,y,O,D,U,F,v,P,k=re,H=[],B=[],G=[],V=[],X=[],W=[],Y=[],w=[],z=[],K=[],j=[],Q=[],Z=[],J=[],$=[],q=[],ee=[],te=[],se=[],ie=[],ae=[],ne=[],le=[],he=[],ue=[],oe=[],ce=[],Te=[];return r=class extends k{get isEnabled(){return e(this,E,"f")}set isEnabled(e){t(this,E,e,"f")}get indexOfRefraction(){return e(this,R,"f")}set indexOfRefraction(e){t(this,R,e,"f")}get texture(){return e(this,d,"f")}set texture(e){t(this,d,e,"f")}get useRoughnessFromMainTexture(){return e(this,S,"f")}set useRoughnessFromMainTexture(e){t(this,S,e,"f")}get textureRoughness(){return e(this,A,"f")}set textureRoughness(e){t(this,A,e,"f")}get remapF0OnInterfaceChange(){return e(this,m,"f")}set remapF0OnInterfaceChange(e){t(this,m,e,"f")}get bumpTexture(){return e(this,f,"f")}set bumpTexture(e){t(this,f,e,"f")}get isTintEnabled(){return e(this,x,"f")}set isTintEnabled(e){t(this,x,e,"f")}get tintTexture(){return e(this,I,"f")}set tintTexture(e){t(this,I,e,"f")}_markAllSubMeshesAsTexturesDirty(){this._enable(this._isEnabled),this._internalMarkAllSubMeshesAsTexturesDirty()}isCompatible(){return!0}constructor(e,t=!0){super(e,"PBRClearCoat",100,new _e,t),this._isEnabled=!1,E.set(this,s(this,H,!1)),this.intensity=(s(this,B),s(this,G,1)),this.roughness=(s(this,V),s(this,X,0)),this._indexOfRefraction=(s(this,W),r._DefaultIndexOfRefraction),R.set(this,s(this,Y,r._DefaultIndexOfRefraction)),this._texture=(s(this,w),null),d.set(this,s(this,z,null)),this._useRoughnessFromMainTexture=(s(this,K),!0),S.set(this,s(this,j,!0)),this._textureRoughness=(s(this,Q),null),A.set(this,s(this,Z,null)),this._remapF0OnInterfaceChange=(s(this,J),!0),m.set(this,s(this,$,!0)),this._bumpTexture=(s(this,q),null),f.set(this,s(this,ee,null)),this._isTintEnabled=(s(this,te),!1),x.set(this,s(this,se,!1)),this.tintColor=(s(this,ie),s(this,ae,h.White())),this.tintColorAtDistance=(s(this,ne),s(this,le,1)),this.tintThickness=(s(this,he),s(this,ue,1)),this._tintTexture=(s(this,oe),null),I.set(this,s(this,ce,null)),this._internalMarkAllSubMeshesAsTexturesDirty=s(this,Te),this._internalMarkAllSubMeshesAsTexturesDirty=e._dirtyCallbacks[i.MATERIAL_TextureDirtyFlag]}isReadyForSubMesh(e,t,s){if(!this._isEnabled)return!0;const i=this._material._disableBumpMap;if(e._areTexturesDirty&&t.texturesEnabled){if(this._texture&&u.ClearCoatTextureEnabled&&!this._texture.isReadyOrNotBlocking())return!1;if(this._textureRoughness&&u.ClearCoatTextureEnabled&&!this._textureRoughness.isReadyOrNotBlocking())return!1;if(s.getCaps().standardDerivatives&&this._bumpTexture&&u.ClearCoatBumpTextureEnabled&&!i&&!this._bumpTexture.isReady())return!1;if(this._isTintEnabled&&this._tintTexture&&u.ClearCoatTintTextureEnabled&&!this._tintTexture.isReadyOrNotBlocking())return!1}return!0}prepareDefinesBeforeAttributes(e,t){this._isEnabled?(e.CLEARCOAT=!0,e.CLEARCOAT_USE_ROUGHNESS_FROM_MAINTEXTURE=this._useRoughnessFromMainTexture,e.CLEARCOAT_REMAP_F0=this._remapF0OnInterfaceChange,e._areTexturesDirty&&t.texturesEnabled&&(this._texture&&u.ClearCoatTextureEnabled?o(this._texture,e,"CLEARCOAT_TEXTURE"):e.CLEARCOAT_TEXTURE=!1,this._textureRoughness&&u.ClearCoatTextureEnabled?o(this._textureRoughness,e,"CLEARCOAT_TEXTURE_ROUGHNESS"):e.CLEARCOAT_TEXTURE_ROUGHNESS=!1,this._bumpTexture&&u.ClearCoatBumpTextureEnabled?o(this._bumpTexture,e,"CLEARCOAT_BUMP"):e.CLEARCOAT_BUMP=!1,e.CLEARCOAT_DEFAULTIOR=this._indexOfRefraction===r._DefaultIndexOfRefraction,this._isTintEnabled?(e.CLEARCOAT_TINT=!0,this._tintTexture&&u.ClearCoatTintTextureEnabled?(o(this._tintTexture,e,"CLEARCOAT_TINT_TEXTURE"),e.CLEARCOAT_TINT_GAMMATEXTURE=this._tintTexture.gammaSpace):e.CLEARCOAT_TINT_TEXTURE=!1):(e.CLEARCOAT_TINT=!1,e.CLEARCOAT_TINT_TEXTURE=!1))):(e.CLEARCOAT=!1,e.CLEARCOAT_TEXTURE=!1,e.CLEARCOAT_TEXTURE_ROUGHNESS=!1,e.CLEARCOAT_BUMP=!1,e.CLEARCOAT_TINT=!1,e.CLEARCOAT_TINT_TEXTURE=!1,e.CLEARCOAT_USE_ROUGHNESS_FROM_MAINTEXTURE=!1,e.CLEARCOAT_DEFAULTIOR=!1,e.CLEARCOAT_TEXTUREDIRECTUV=0,e.CLEARCOAT_TEXTURE_ROUGHNESSDIRECTUV=0,e.CLEARCOAT_BUMPDIRECTUV=0,e.CLEARCOAT_REMAP_F0=!1,e.CLEARCOAT_TINT_TEXTUREDIRECTUV=0,e.CLEARCOAT_TINT_GAMMATEXTURE=!1)}bindForSubMesh(e,t,s,i){if(!this._isEnabled)return;const a=i.materialDefines,r=this._material.isFrozen,n=this._material._disableBumpMap,l=this._material._invertNormalMapX,h=this._material._invertNormalMapY;if(!e.useUbo||!r||!e.isSync){(this._texture||this._textureRoughness)&&u.ClearCoatTextureEnabled&&(e.updateFloat4("vClearCoatInfos",this._texture?.coordinatesIndex??0,this._texture?.level??0,this._textureRoughness?.coordinatesIndex??0,this._textureRoughness?.level??0),this._texture&&c(this._texture,e,"clearCoat"),this._textureRoughness&&!a.CLEARCOAT_USE_ROUGHNESS_FROM_MAINTEXTURE&&c(this._textureRoughness,e,"clearCoatRoughness")),this._bumpTexture&&s.getCaps().standardDerivatives&&u.ClearCoatTextureEnabled&&!n&&(e.updateFloat2("vClearCoatBumpInfos",this._bumpTexture.coordinatesIndex,this._bumpTexture.level),c(this._bumpTexture,e,"clearCoatBump"),t._mirroredCameraPosition?e.updateFloat2("vClearCoatTangentSpaceParams",l?1:-1,h?1:-1):e.updateFloat2("vClearCoatTangentSpaceParams",l?-1:1,h?-1:1)),this._tintTexture&&u.ClearCoatTintTextureEnabled&&(e.updateFloat2("vClearCoatTintInfos",this._tintTexture.coordinatesIndex,this._tintTexture.level),c(this._tintTexture,e,"clearCoatTint")),e.updateFloat2("vClearCoatParams",this.intensity,this.roughness);const i=1-this._indexOfRefraction,r=1+this._indexOfRefraction,o=Math.pow(-i/r,2),T=1/this._indexOfRefraction;e.updateFloat4("vClearCoatRefractionParams",o,T,i,r),this._isTintEnabled&&(e.updateFloat4("vClearCoatTintParams",this.tintColor.r,this.tintColor.g,this.tintColor.b,Math.max(1e-5,this.tintThickness)),e.updateFloat("clearCoatColorAtDistance",Math.max(1e-5,this.tintColorAtDistance)))}t.texturesEnabled&&(this._texture&&u.ClearCoatTextureEnabled&&e.setTexture("clearCoatSampler",this._texture),this._textureRoughness&&!a.CLEARCOAT_USE_ROUGHNESS_FROM_MAINTEXTURE&&u.ClearCoatTextureEnabled&&e.setTexture("clearCoatRoughnessSampler",this._textureRoughness),this._bumpTexture&&s.getCaps().standardDerivatives&&u.ClearCoatBumpTextureEnabled&&!n&&e.setTexture("clearCoatBumpSampler",this._bumpTexture),this._isTintEnabled&&this._tintTexture&&u.ClearCoatTintTextureEnabled&&e.setTexture("clearCoatTintSampler",this._tintTexture))}hasTexture(e){return this._texture===e||(this._textureRoughness===e||(this._bumpTexture===e||this._tintTexture===e))}getActiveTextures(e){this._texture&&e.push(this._texture),this._textureRoughness&&e.push(this._textureRoughness),this._bumpTexture&&e.push(this._bumpTexture),this._tintTexture&&e.push(this._tintTexture)}getAnimatables(e){this._texture&&this._texture.animations&&this._texture.animations.length>0&&e.push(this._texture),this._textureRoughness&&this._textureRoughness.animations&&this._textureRoughness.animations.length>0&&e.push(this._textureRoughness),this._bumpTexture&&this._bumpTexture.animations&&this._bumpTexture.animations.length>0&&e.push(this._bumpTexture),this._tintTexture&&this._tintTexture.animations&&this._tintTexture.animations.length>0&&e.push(this._tintTexture)}dispose(e){e&&(this._texture?.dispose(),this._textureRoughness?.dispose(),this._bumpTexture?.dispose(),this._tintTexture?.dispose())}getClassName(){return"PBRClearCoatConfiguration"}addFallbacks(e,t,s){return e.CLEARCOAT_BUMP&&t.addFallback(s++,"CLEARCOAT_BUMP"),e.CLEARCOAT_TINT&&t.addFallback(s++,"CLEARCOAT_TINT"),e.CLEARCOAT&&t.addFallback(s++,"CLEARCOAT"),s}getSamplers(e){e.push("clearCoatSampler","clearCoatRoughnessSampler","clearCoatBumpSampler","clearCoatTintSampler")}getUniforms(){return{ubo:[{name:"vClearCoatParams",size:2,type:"vec2"},{name:"vClearCoatRefractionParams",size:4,type:"vec4"},{name:"vClearCoatInfos",size:4,type:"vec4"},{name:"clearCoatMatrix",size:16,type:"mat4"},{name:"clearCoatRoughnessMatrix",size:16,type:"mat4"},{name:"vClearCoatBumpInfos",size:2,type:"vec2"},{name:"vClearCoatTangentSpaceParams",size:2,type:"vec2"},{name:"clearCoatBumpMatrix",size:16,type:"mat4"},{name:"vClearCoatTintParams",size:4,type:"vec4"},{name:"clearCoatColorAtDistance",size:1,type:"float"},{name:"vClearCoatTintInfos",size:2,type:"vec2"},{name:"clearCoatTintMatrix",size:16,type:"mat4"}]}}},E=new WeakMap,R=new WeakMap,d=new WeakMap,S=new WeakMap,A=new WeakMap,m=new WeakMap,f=new WeakMap,x=new WeakMap,I=new WeakMap,(()=>{const e="function"==typeof Symbol&&Symbol.metadata?Object.create(k[Symbol.metadata]??null):void 0;C=[n(),l("_markAllSubMeshesAsTexturesDirty")],p=[n()],b=[n()],g=[n(),l("_markAllSubMeshesAsTexturesDirty")],M=[T(),l("_markAllSubMeshesAsTexturesDirty")],L=[n(),l("_markAllSubMeshesAsTexturesDirty")],N=[T(),l("_markAllSubMeshesAsTexturesDirty")],y=[n(),l("_markAllSubMeshesAsTexturesDirty")],O=[T(),l("_markAllSubMeshesAsTexturesDirty")],D=[n(),l("_markAllSubMeshesAsTexturesDirty")],U=[_()],F=[n()],v=[n()],P=[T(),l("_markAllSubMeshesAsTexturesDirty")],a(r,null,C,{kind:"accessor",name:"isEnabled",static:!1,private:!1,access:{has:e=>"isEnabled"in e,get:e=>e.isEnabled,set:(e,t)=>{e.isEnabled=t}},metadata:e},H,B),a(r,null,g,{kind:"accessor",name:"indexOfRefraction",static:!1,private:!1,access:{has:e=>"indexOfRefraction"in e,get:e=>e.indexOfRefraction,set:(e,t)=>{e.indexOfRefraction=t}},metadata:e},Y,w),a(r,null,M,{kind:"accessor",name:"texture",static:!1,private:!1,access:{has:e=>"texture"in e,get:e=>e.texture,set:(e,t)=>{e.texture=t}},metadata:e},z,K),a(r,null,L,{kind:"accessor",name:"useRoughnessFromMainTexture",static:!1,private:!1,access:{has:e=>"useRoughnessFromMainTexture"in e,get:e=>e.useRoughnessFromMainTexture,set:(e,t)=>{e.useRoughnessFromMainTexture=t}},metadata:e},j,Q),a(r,null,N,{kind:"accessor",name:"textureRoughness",static:!1,private:!1,access:{has:e=>"textureRoughness"in e,get:e=>e.textureRoughness,set:(e,t)=>{e.textureRoughness=t}},metadata:e},Z,J),a(r,null,y,{kind:"accessor",name:"remapF0OnInterfaceChange",static:!1,private:!1,access:{has:e=>"remapF0OnInterfaceChange"in e,get:e=>e.remapF0OnInterfaceChange,set:(e,t)=>{e.remapF0OnInterfaceChange=t}},metadata:e},$,q),a(r,null,O,{kind:"accessor",name:"bumpTexture",static:!1,private:!1,access:{has:e=>"bumpTexture"in e,get:e=>e.bumpTexture,set:(e,t)=>{e.bumpTexture=t}},metadata:e},ee,te),a(r,null,D,{kind:"accessor",name:"isTintEnabled",static:!1,private:!1,access:{has:e=>"isTintEnabled"in e,get:e=>e.isTintEnabled,set:(e,t)=>{e.isTintEnabled=t}},metadata:e},se,ie),a(r,null,P,{kind:"accessor",name:"tintTexture",static:!1,private:!1,access:{has:e=>"tintTexture"in e,get:e=>e.tintTexture,set:(e,t)=>{e.tintTexture=t}},metadata:e},ce,Te),a(null,null,p,{kind:"field",name:"intensity",static:!1,private:!1,access:{has:e=>"intensity"in e,get:e=>e.intensity,set:(e,t)=>{e.intensity=t}},metadata:e},G,V),a(null,null,b,{kind:"field",name:"roughness",static:!1,private:!1,access:{has:e=>"roughness"in e,get:e=>e.roughness,set:(e,t)=>{e.roughness=t}},metadata:e},X,W),a(null,null,U,{kind:"field",name:"tintColor",static:!1,private:!1,access:{has:e=>"tintColor"in e,get:e=>e.tintColor,set:(e,t)=>{e.tintColor=t}},metadata:e},ae,ne),a(null,null,F,{kind:"field",name:"tintColorAtDistance",static:!1,private:!1,access:{has:e=>"tintColorAtDistance"in e,get:e=>e.tintColorAtDistance,set:(e,t)=>{e.tintColorAtDistance=t}},metadata:e},le,he),a(null,null,v,{kind:"field",name:"tintThickness",static:!1,private:!1,access:{has:e=>"tintThickness"in e,get:e=>e.tintThickness,set:(e,t)=>{e.tintThickness=t}},metadata:e},ue,oe),e&&Object.defineProperty(r,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:e})})(),r._DefaultIndexOfRefraction=1.5,r})();class Re extends r{constructor(){super(...arguments),this.IRIDESCENCE=!1,this.IRIDESCENCE_TEXTURE=!1,this.IRIDESCENCE_TEXTUREDIRECTUV=0,this.IRIDESCENCE_THICKNESS_TEXTURE=!1,this.IRIDESCENCE_THICKNESS_TEXTUREDIRECTUV=0}}let de=(()=>{var r,h,_,E;let R,d,S,A,m,f,x,I=re,C=[],p=[],b=[],g=[],M=[],L=[],N=[],y=[],O=[],D=[],U=[],F=[],v=[],P=[];return r=class extends I{get isEnabled(){return e(this,h,"f")}set isEnabled(e){t(this,h,e,"f")}get texture(){return e(this,_,"f")}set texture(e){t(this,_,e,"f")}get thicknessTexture(){return e(this,E,"f")}set thicknessTexture(e){t(this,E,e,"f")}_markAllSubMeshesAsTexturesDirty(){this._enable(this._isEnabled),this._internalMarkAllSubMeshesAsTexturesDirty()}isCompatible(){return!0}constructor(e,t=!0){super(e,"PBRIridescence",110,new Re,t),this._isEnabled=!1,h.set(this,s(this,C,!1)),this.intensity=(s(this,p),s(this,b,1)),this.minimumThickness=(s(this,g),s(this,M,r._DefaultMinimumThickness)),this.maximumThickness=(s(this,L),s(this,N,r._DefaultMaximumThickness)),this.indexOfRefraction=(s(this,y),s(this,O,r._DefaultIndexOfRefraction)),this._texture=(s(this,D),null),_.set(this,s(this,U,null)),this._thicknessTexture=(s(this,F),null),E.set(this,s(this,v,null)),this._internalMarkAllSubMeshesAsTexturesDirty=s(this,P),this._internalMarkAllSubMeshesAsTexturesDirty=e._dirtyCallbacks[i.MATERIAL_TextureDirtyFlag]}isReadyForSubMesh(e,t){if(!this._isEnabled)return!0;if(e._areTexturesDirty&&t.texturesEnabled){if(this._texture&&u.IridescenceTextureEnabled&&!this._texture.isReadyOrNotBlocking())return!1;if(this._thicknessTexture&&u.IridescenceTextureEnabled&&!this._thicknessTexture.isReadyOrNotBlocking())return!1}return!0}prepareDefinesBeforeAttributes(e,t){this._isEnabled?(e.IRIDESCENCE=!0,e._areTexturesDirty&&t.texturesEnabled&&(this._texture&&u.IridescenceTextureEnabled?o(this._texture,e,"IRIDESCENCE_TEXTURE"):e.IRIDESCENCE_TEXTURE=!1,this._thicknessTexture&&u.IridescenceTextureEnabled?o(this._thicknessTexture,e,"IRIDESCENCE_THICKNESS_TEXTURE"):e.IRIDESCENCE_THICKNESS_TEXTURE=!1)):(e.IRIDESCENCE=!1,e.IRIDESCENCE_TEXTURE=!1,e.IRIDESCENCE_THICKNESS_TEXTURE=!1,e.IRIDESCENCE_TEXTUREDIRECTUV=0,e.IRIDESCENCE_THICKNESS_TEXTUREDIRECTUV=0)}bindForSubMesh(e,t){if(!this._isEnabled)return;const s=this._material.isFrozen;e.useUbo&&s&&e.isSync||((this._texture||this._thicknessTexture)&&u.IridescenceTextureEnabled&&(e.updateFloat4("vIridescenceInfos",this._texture?.coordinatesIndex??0,this._texture?.level??0,this._thicknessTexture?.coordinatesIndex??0,this._thicknessTexture?.level??0),this._texture&&c(this._texture,e,"iridescence"),this._thicknessTexture&&c(this._thicknessTexture,e,"iridescenceThickness")),e.updateFloat4("vIridescenceParams",this.intensity,this.indexOfRefraction,this.minimumThickness,this.maximumThickness)),t.texturesEnabled&&(this._texture&&u.IridescenceTextureEnabled&&e.setTexture("iridescenceSampler",this._texture),this._thicknessTexture&&u.IridescenceTextureEnabled&&e.setTexture("iridescenceThicknessSampler",this._thicknessTexture))}hasTexture(e){return this._texture===e||this._thicknessTexture===e}getActiveTextures(e){this._texture&&e.push(this._texture),this._thicknessTexture&&e.push(this._thicknessTexture)}getAnimatables(e){this._texture&&this._texture.animations&&this._texture.animations.length>0&&e.push(this._texture),this._thicknessTexture&&this._thicknessTexture.animations&&this._thicknessTexture.animations.length>0&&e.push(this._thicknessTexture)}dispose(e){e&&(this._texture?.dispose(),this._thicknessTexture?.dispose())}getClassName(){return"PBRIridescenceConfiguration"}addFallbacks(e,t,s){return e.IRIDESCENCE&&t.addFallback(s++,"IRIDESCENCE"),s}getSamplers(e){e.push("iridescenceSampler","iridescenceThicknessSampler")}getUniforms(){return{ubo:[{name:"vIridescenceParams",size:4,type:"vec4"},{name:"vIridescenceInfos",size:4,type:"vec4"},{name:"iridescenceMatrix",size:16,type:"mat4"},{name:"iridescenceThicknessMatrix",size:16,type:"mat4"}]}}},h=new WeakMap,_=new WeakMap,E=new WeakMap,(()=>{const e="function"==typeof Symbol&&Symbol.metadata?Object.create(I[Symbol.metadata]??null):void 0;R=[n(),l("_markAllSubMeshesAsTexturesDirty")],d=[n()],S=[n()],A=[n()],m=[n()],f=[T(),l("_markAllSubMeshesAsTexturesDirty")],x=[T(),l("_markAllSubMeshesAsTexturesDirty")],a(r,null,R,{kind:"accessor",name:"isEnabled",static:!1,private:!1,access:{has:e=>"isEnabled"in e,get:e=>e.isEnabled,set:(e,t)=>{e.isEnabled=t}},metadata:e},C,p),a(r,null,f,{kind:"accessor",name:"texture",static:!1,private:!1,access:{has:e=>"texture"in e,get:e=>e.texture,set:(e,t)=>{e.texture=t}},metadata:e},U,F),a(r,null,x,{kind:"accessor",name:"thicknessTexture",static:!1,private:!1,access:{has:e=>"thicknessTexture"in e,get:e=>e.thicknessTexture,set:(e,t)=>{e.thicknessTexture=t}},metadata:e},v,P),a(null,null,d,{kind:"field",name:"intensity",static:!1,private:!1,access:{has:e=>"intensity"in e,get:e=>e.intensity,set:(e,t)=>{e.intensity=t}},metadata:e},b,g),a(null,null,S,{kind:"field",name:"minimumThickness",static:!1,private:!1,access:{has:e=>"minimumThickness"in e,get:e=>e.minimumThickness,set:(e,t)=>{e.minimumThickness=t}},metadata:e},M,L),a(null,null,A,{kind:"field",name:"maximumThickness",static:!1,private:!1,access:{has:e=>"maximumThickness"in e,get:e=>e.maximumThickness,set:(e,t)=>{e.maximumThickness=t}},metadata:e},N,y),a(null,null,m,{kind:"field",name:"indexOfRefraction",static:!1,private:!1,access:{has:e=>"indexOfRefraction"in e,get:e=>e.indexOfRefraction,set:(e,t)=>{e.indexOfRefraction=t}},metadata:e},O,D),e&&Object.defineProperty(r,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:e})})(),r._DefaultMinimumThickness=100,r._DefaultMaximumThickness=400,r._DefaultIndexOfRefraction=1.3,r})();class Se extends r{constructor(){super(...arguments),this.ANISOTROPIC=!1,this.ANISOTROPIC_TEXTURE=!1,this.ANISOTROPIC_TEXTUREDIRECTUV=0,this.ANISOTROPIC_LEGACY=!1,this.MAINUV1=!1}}let Ae=(()=>{var r,h,_,S;let A,m,f,x,I,C=re,p=[],b=[],g=[],M=[],L=[],N=[],y=[],O=[],D=[],U=[];return r=class extends C{get isEnabled(){return e(this,h,"f")}set isEnabled(e){t(this,h,e,"f")}set angle(e){this.direction.x=Math.cos(e),this.direction.y=Math.sin(e)}get angle(){return Math.atan2(this.direction.y,this.direction.x)}get texture(){return e(this,_,"f")}set texture(e){t(this,_,e,"f")}get legacy(){return e(this,S,"f")}set legacy(e){t(this,S,e,"f")}_markAllSubMeshesAsTexturesDirty(){this._enable(this._isEnabled),this._internalMarkAllSubMeshesAsTexturesDirty()}_markAllSubMeshesAsMiscDirty(){this._enable(this._isEnabled),this._internalMarkAllSubMeshesAsMiscDirty()}isCompatible(){return!0}constructor(e,t=!0){super(e,"PBRAnisotropic",110,new Se,t),this._isEnabled=!1,h.set(this,s(this,p,!1)),this.intensity=(s(this,b),s(this,g,1)),this.direction=(s(this,M),s(this,L,new E(1,0))),this._texture=(s(this,N),null),_.set(this,s(this,y,null)),this._legacy=(s(this,O),!1),S.set(this,s(this,D,!1)),this._internalMarkAllSubMeshesAsTexturesDirty=s(this,U),this._internalMarkAllSubMeshesAsTexturesDirty=e._dirtyCallbacks[i.MATERIAL_TextureDirtyFlag],this._internalMarkAllSubMeshesAsMiscDirty=e._dirtyCallbacks[i.MATERIAL_MiscDirtyFlag]}isReadyForSubMesh(e,t){return!this._isEnabled||!(e._areTexturesDirty&&t.texturesEnabled&&this._texture&&u.AnisotropicTextureEnabled&&!this._texture.isReadyOrNotBlocking())}prepareDefinesBeforeAttributes(e,t,s){this._isEnabled?(e.ANISOTROPIC=this._isEnabled,this._isEnabled&&!s.isVerticesDataPresent(R.TangentKind)&&(e._needUVs=!0,e.MAINUV1=!0),e._areTexturesDirty&&t.texturesEnabled&&(this._texture&&u.AnisotropicTextureEnabled?o(this._texture,e,"ANISOTROPIC_TEXTURE"):e.ANISOTROPIC_TEXTURE=!1),e._areMiscDirty&&(e.ANISOTROPIC_LEGACY=this._legacy)):(e.ANISOTROPIC=!1,e.ANISOTROPIC_TEXTURE=!1,e.ANISOTROPIC_TEXTUREDIRECTUV=0,e.ANISOTROPIC_LEGACY=!1)}bindForSubMesh(e,t){if(!this._isEnabled)return;const s=this._material.isFrozen;e.useUbo&&s&&e.isSync||(this._texture&&u.AnisotropicTextureEnabled&&(e.updateFloat2("vAnisotropyInfos",this._texture.coordinatesIndex,this._texture.level),c(this._texture,e,"anisotropy")),e.updateFloat3("vAnisotropy",this.direction.x,this.direction.y,this.intensity)),t.texturesEnabled&&this._texture&&u.AnisotropicTextureEnabled&&e.setTexture("anisotropySampler",this._texture)}hasTexture(e){return this._texture===e}getActiveTextures(e){this._texture&&e.push(this._texture)}getAnimatables(e){this._texture&&this._texture.animations&&this._texture.animations.length>0&&e.push(this._texture)}dispose(e){e&&this._texture&&this._texture.dispose()}getClassName(){return"PBRAnisotropicConfiguration"}addFallbacks(e,t,s){return e.ANISOTROPIC&&t.addFallback(s++,"ANISOTROPIC"),s}getSamplers(e){e.push("anisotropySampler")}getUniforms(){return{ubo:[{name:"vAnisotropy",size:3,type:"vec3"},{name:"vAnisotropyInfos",size:2,type:"vec2"},{name:"anisotropyMatrix",size:16,type:"mat4"}]}}parse(e,t,s){super.parse(e,t,s),void 0===e.legacy&&(this.legacy=!0)}},h=new WeakMap,_=new WeakMap,S=new WeakMap,(()=>{const e="function"==typeof Symbol&&Symbol.metadata?Object.create(C[Symbol.metadata]??null):void 0;A=[n(),l("_markAllSubMeshesAsTexturesDirty")],m=[n()],f=[d()],x=[T(),l("_markAllSubMeshesAsTexturesDirty")],I=[n(),l("_markAllSubMeshesAsMiscDirty")],a(r,null,A,{kind:"accessor",name:"isEnabled",static:!1,private:!1,access:{has:e=>"isEnabled"in e,get:e=>e.isEnabled,set:(e,t)=>{e.isEnabled=t}},metadata:e},p,b),a(r,null,x,{kind:"accessor",name:"texture",static:!1,private:!1,access:{has:e=>"texture"in e,get:e=>e.texture,set:(e,t)=>{e.texture=t}},metadata:e},y,O),a(r,null,I,{kind:"accessor",name:"legacy",static:!1,private:!1,access:{has:e=>"legacy"in e,get:e=>e.legacy,set:(e,t)=>{e.legacy=t}},metadata:e},D,U),a(null,null,m,{kind:"field",name:"intensity",static:!1,private:!1,access:{has:e=>"intensity"in e,get:e=>e.intensity,set:(e,t)=>{e.intensity=t}},metadata:e},g,M),a(null,null,f,{kind:"field",name:"direction",static:!1,private:!1,access:{has:e=>"direction"in e,get:e=>e.direction,set:(e,t)=>{e.direction=t}},metadata:e},L,N),e&&Object.defineProperty(r,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:e})})(),r})();class me extends r{constructor(){super(...arguments),this.SHEEN=!1,this.SHEEN_TEXTURE=!1,this.SHEEN_GAMMATEXTURE=!1,this.SHEEN_TEXTURE_ROUGHNESS=!1,this.SHEEN_TEXTUREDIRECTUV=0,this.SHEEN_TEXTURE_ROUGHNESSDIRECTUV=0,this.SHEEN_LINKWITHALBEDO=!1,this.SHEEN_ROUGHNESS=!1,this.SHEEN_ALBEDOSCALING=!1,this.SHEEN_USE_ROUGHNESS_FROM_MAINTEXTURE=!1}}let fe=(()=>{var r,E,R,d,S,A,m,f;let x,I,C,p,b,g,M,L,N,y=re,O=[],D=[],U=[],F=[],v=[],P=[],k=[],H=[],B=[],G=[],V=[],X=[],W=[],Y=[],w=[],z=[],K=[],j=[];return r=class extends y{get isEnabled(){return e(this,E,"f")}set isEnabled(e){t(this,E,e,"f")}get linkSheenWithAlbedo(){return e(this,R,"f")}set linkSheenWithAlbedo(e){t(this,R,e,"f")}get texture(){return e(this,d,"f")}set texture(e){t(this,d,e,"f")}get useRoughnessFromMainTexture(){return e(this,S,"f")}set useRoughnessFromMainTexture(e){t(this,S,e,"f")}get roughness(){return e(this,A,"f")}set roughness(e){t(this,A,e,"f")}get textureRoughness(){return e(this,m,"f")}set textureRoughness(e){t(this,m,e,"f")}get albedoScaling(){return e(this,f,"f")}set albedoScaling(e){t(this,f,e,"f")}_markAllSubMeshesAsTexturesDirty(){this._enable(this._isEnabled),this._internalMarkAllSubMeshesAsTexturesDirty()}isCompatible(){return!0}constructor(e,t=!0){super(e,"Sheen",120,new me,t),this._isEnabled=!1,E.set(this,s(this,O,!1)),this._linkSheenWithAlbedo=(s(this,D),!1),R.set(this,s(this,U,!1)),this.intensity=(s(this,F),s(this,v,1)),this.color=(s(this,P),s(this,k,h.White())),this._texture=(s(this,H),null),d.set(this,s(this,B,null)),this._useRoughnessFromMainTexture=(s(this,G),!0),S.set(this,s(this,V,!0)),this._roughness=(s(this,X),null),A.set(this,s(this,W,null)),this._textureRoughness=(s(this,Y),null),m.set(this,s(this,w,null)),this._albedoScaling=(s(this,z),!1),f.set(this,s(this,K,!1)),this._internalMarkAllSubMeshesAsTexturesDirty=s(this,j),this._internalMarkAllSubMeshesAsTexturesDirty=e._dirtyCallbacks[i.MATERIAL_TextureDirtyFlag]}isReadyForSubMesh(e,t){if(!this._isEnabled)return!0;if(e._areTexturesDirty&&t.texturesEnabled){if(this._texture&&u.SheenTextureEnabled&&!this._texture.isReadyOrNotBlocking())return!1;if(this._textureRoughness&&u.SheenTextureEnabled&&!this._textureRoughness.isReadyOrNotBlocking())return!1}return!0}prepareDefinesBeforeAttributes(e,t){this._isEnabled?(e.SHEEN=!0,e.SHEEN_LINKWITHALBEDO=this._linkSheenWithAlbedo,e.SHEEN_ROUGHNESS=null!==this._roughness,e.SHEEN_ALBEDOSCALING=this._albedoScaling,e.SHEEN_USE_ROUGHNESS_FROM_MAINTEXTURE=this._useRoughnessFromMainTexture,e._areTexturesDirty&&t.texturesEnabled&&(this._texture&&u.SheenTextureEnabled?(o(this._texture,e,"SHEEN_TEXTURE"),e.SHEEN_GAMMATEXTURE=this._texture.gammaSpace):e.SHEEN_TEXTURE=!1,this._textureRoughness&&u.SheenTextureEnabled?o(this._textureRoughness,e,"SHEEN_TEXTURE_ROUGHNESS"):e.SHEEN_TEXTURE_ROUGHNESS=!1)):(e.SHEEN=!1,e.SHEEN_TEXTURE=!1,e.SHEEN_TEXTURE_ROUGHNESS=!1,e.SHEEN_LINKWITHALBEDO=!1,e.SHEEN_ROUGHNESS=!1,e.SHEEN_ALBEDOSCALING=!1,e.SHEEN_USE_ROUGHNESS_FROM_MAINTEXTURE=!1,e.SHEEN_GAMMATEXTURE=!1,e.SHEEN_TEXTUREDIRECTUV=0,e.SHEEN_TEXTURE_ROUGHNESSDIRECTUV=0)}bindForSubMesh(e,t,s,i){if(!this._isEnabled)return;const a=i.materialDefines,r=this._material.isFrozen;e.useUbo&&r&&e.isSync||((this._texture||this._textureRoughness)&&u.SheenTextureEnabled&&(e.updateFloat4("vSheenInfos",this._texture?.coordinatesIndex??0,this._texture?.level??0,this._textureRoughness?.coordinatesIndex??0,this._textureRoughness?.level??0),this._texture&&c(this._texture,e,"sheen"),this._textureRoughness&&!a.SHEEN_USE_ROUGHNESS_FROM_MAINTEXTURE&&c(this._textureRoughness,e,"sheenRoughness")),e.updateFloat4("vSheenColor",this.color.r,this.color.g,this.color.b,this.intensity),null!==this._roughness&&e.updateFloat("vSheenRoughness",this._roughness)),t.texturesEnabled&&(this._texture&&u.SheenTextureEnabled&&e.setTexture("sheenSampler",this._texture),this._textureRoughness&&!a.SHEEN_USE_ROUGHNESS_FROM_MAINTEXTURE&&u.SheenTextureEnabled&&e.setTexture("sheenRoughnessSampler",this._textureRoughness))}hasTexture(e){return this._texture===e||this._textureRoughness===e}getActiveTextures(e){this._texture&&e.push(this._texture),this._textureRoughness&&e.push(this._textureRoughness)}getAnimatables(e){this._texture&&this._texture.animations&&this._texture.animations.length>0&&e.push(this._texture),this._textureRoughness&&this._textureRoughness.animations&&this._textureRoughness.animations.length>0&&e.push(this._textureRoughness)}dispose(e){e&&(this._texture?.dispose(),this._textureRoughness?.dispose())}getClassName(){return"PBRSheenConfiguration"}addFallbacks(e,t,s){return e.SHEEN&&t.addFallback(s++,"SHEEN"),s}getSamplers(e){e.push("sheenSampler","sheenRoughnessSampler")}getUniforms(){return{ubo:[{name:"vSheenColor",size:4,type:"vec4"},{name:"vSheenRoughness",size:1,type:"float"},{name:"vSheenInfos",size:4,type:"vec4"},{name:"sheenMatrix",size:16,type:"mat4"},{name:"sheenRoughnessMatrix",size:16,type:"mat4"}]}}},E=new WeakMap,R=new WeakMap,d=new WeakMap,S=new WeakMap,A=new WeakMap,m=new WeakMap,f=new WeakMap,(()=>{const e="function"==typeof Symbol&&Symbol.metadata?Object.create(y[Symbol.metadata]??null):void 0;x=[n(),l("_markAllSubMeshesAsTexturesDirty")],I=[n(),l("_markAllSubMeshesAsTexturesDirty")],C=[n()],p=[_()],b=[T(),l("_markAllSubMeshesAsTexturesDirty")],g=[n(),l("_markAllSubMeshesAsTexturesDirty")],M=[n(),l("_markAllSubMeshesAsTexturesDirty")],L=[T(),l("_markAllSubMeshesAsTexturesDirty")],N=[n(),l("_markAllSubMeshesAsTexturesDirty")],a(r,null,x,{kind:"accessor",name:"isEnabled",static:!1,private:!1,access:{has:e=>"isEnabled"in e,get:e=>e.isEnabled,set:(e,t)=>{e.isEnabled=t}},metadata:e},O,D),a(r,null,I,{kind:"accessor",name:"linkSheenWithAlbedo",static:!1,private:!1,access:{has:e=>"linkSheenWithAlbedo"in e,get:e=>e.linkSheenWithAlbedo,set:(e,t)=>{e.linkSheenWithAlbedo=t}},metadata:e},U,F),a(r,null,b,{kind:"accessor",name:"texture",static:!1,private:!1,access:{has:e=>"texture"in e,get:e=>e.texture,set:(e,t)=>{e.texture=t}},metadata:e},B,G),a(r,null,g,{kind:"accessor",name:"useRoughnessFromMainTexture",static:!1,private:!1,access:{has:e=>"useRoughnessFromMainTexture"in e,get:e=>e.useRoughnessFromMainTexture,set:(e,t)=>{e.useRoughnessFromMainTexture=t}},metadata:e},V,X),a(r,null,M,{kind:"accessor",name:"roughness",static:!1,private:!1,access:{has:e=>"roughness"in e,get:e=>e.roughness,set:(e,t)=>{e.roughness=t}},metadata:e},W,Y),a(r,null,L,{kind:"accessor",name:"textureRoughness",static:!1,private:!1,access:{has:e=>"textureRoughness"in e,get:e=>e.textureRoughness,set:(e,t)=>{e.textureRoughness=t}},metadata:e},w,z),a(r,null,N,{kind:"accessor",name:"albedoScaling",static:!1,private:!1,access:{has:e=>"albedoScaling"in e,get:e=>e.albedoScaling,set:(e,t)=>{e.albedoScaling=t}},metadata:e},K,j),a(null,null,C,{kind:"field",name:"intensity",static:!1,private:!1,access:{has:e=>"intensity"in e,get:e=>e.intensity,set:(e,t)=>{e.intensity=t}},metadata:e},v,P),a(null,null,p,{kind:"field",name:"color",static:!1,private:!1,access:{has:e=>"color"in e,get:e=>e.color,set:(e,t)=>{e.color=t}},metadata:e},k,H),e&&Object.defineProperty(r,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:e})})(),r})();class xe extends r{constructor(){super(...arguments),this.SUBSURFACE=!1,this.SS_REFRACTION=!1,this.SS_REFRACTION_USE_INTENSITY_FROM_THICKNESS=!1,this.SS_TRANSLUCENCY=!1,this.SS_TRANSLUCENCY_USE_INTENSITY_FROM_THICKNESS=!1,this.SS_SCATTERING=!1,this.SS_DISPERSION=!1,this.SS_THICKNESSANDMASK_TEXTURE=!1,this.SS_THICKNESSANDMASK_TEXTUREDIRECTUV=0,this.SS_HAS_THICKNESS=!1,this.SS_REFRACTIONINTENSITY_TEXTURE=!1,this.SS_REFRACTIONINTENSITY_TEXTUREDIRECTUV=0,this.SS_TRANSLUCENCYINTENSITY_TEXTURE=!1,this.SS_TRANSLUCENCYINTENSITY_TEXTUREDIRECTUV=0,this.SS_TRANSLUCENCYCOLOR_TEXTURE=!1,this.SS_TRANSLUCENCYCOLOR_TEXTUREDIRECTUV=0,this.SS_TRANSLUCENCYCOLOR_TEXTURE_GAMMA=!1,this.SS_REFRACTIONMAP_3D=!1,this.SS_REFRACTIONMAP_OPPOSITEZ=!1,this.SS_LODINREFRACTIONALPHA=!1,this.SS_GAMMAREFRACTION=!1,this.SS_RGBDREFRACTION=!1,this.SS_LINEARSPECULARREFRACTION=!1,this.SS_LINKREFRACTIONTOTRANSPARENCY=!1,this.SS_ALBEDOFORREFRACTIONTINT=!1,this.SS_ALBEDOFORTRANSLUCENCYTINT=!1,this.SS_USE_LOCAL_REFRACTIONMAP_CUBIC=!1,this.SS_USE_THICKNESS_AS_DEPTH=!1,this.SS_USE_GLTF_TEXTURES=!1,this.SS_APPLY_ALBEDO_AFTER_SUBSURFACE=!1,this.SS_TRANSLUCENCY_LEGACY=!1}}let Ie=(()=>{var r,E,R,d,A,m,f,x,I,C,p,b,g,M,L,N,y;let O,D,U,F,v,P,k,H,B,G,V,X,W,Y,w,z,K,j,Q,Z,J,$,q,ee,te,se,ie,ae,ne,le,he=re,ue=[],oe=[],ce=[],Te=[],_e=[],Ee=[],Re=[],de=[],Se=[],Ae=[],me=[],fe=[],Ie=[],Ce=[],pe=[],be=[],ge=[],Me=[],Le=[],Ne=[],ye=[],Oe=[],De=[],Ue=[],Fe=[],ve=[],Pe=[],ke=[],He=[],Be=[],Ge=[],Ve=[],Xe=[],We=[],Ye=[],we=[],ze=[],Ke=[],je=[],Qe=[],Ze=[],Je=[],$e=[],qe=[],et=[],tt=[],st=[],it=[],at=[],rt=[],nt=[],lt=[],ht=[],ut=[],ot=[],ct=[],Tt=[],_t=[],Et=[],Rt=[];return r=class extends he{get isRefractionEnabled(){return e(this,E,"f")}set isRefractionEnabled(e){t(this,E,e,"f")}get isTranslucencyEnabled(){return e(this,R,"f")}set isTranslucencyEnabled(e){t(this,R,e,"f")}get isDispersionEnabled(){return e(this,d,"f")}set isDispersionEnabled(e){t(this,d,e,"f")}get isScatteringEnabled(){return e(this,A,"f")}set isScatteringEnabled(e){t(this,A,e,"f")}get scatteringDiffusionProfile(){return this._scene.subSurfaceConfiguration?this._scene.subSurfaceConfiguration.ssDiffusionProfileColors[this._scatteringDiffusionProfileIndex]:null}set scatteringDiffusionProfile(e){this._scene.enableSubSurfaceForPrePass()&&e&&(this._scatteringDiffusionProfileIndex=this._scene.subSurfaceConfiguration.addDiffusionProfile(e))}get useAlbedoToTintRefraction(){return e(this,m,"f")}set useAlbedoToTintRefraction(e){t(this,m,e,"f")}get useAlbedoToTintTranslucency(){return e(this,f,"f")}set useAlbedoToTintTranslucency(e){t(this,f,e,"f")}get thicknessTexture(){return e(this,x,"f")}set thicknessTexture(e){t(this,x,e,"f")}get refractionTexture(){return e(this,I,"f")}set refractionTexture(e){t(this,I,e,"f")}get indexOfRefraction(){return e(this,C,"f")}set indexOfRefraction(e){t(this,C,e,"f")}get volumeIndexOfRefraction(){return this._volumeIndexOfRefraction>=1?this._volumeIndexOfRefraction:this._indexOfRefraction}set volumeIndexOfRefraction(e){const t=e>=1?e:-1;this._volumeIndexOfRefraction!==t&&(this._volumeIndexOfRefraction=t,this._markAllSubMeshesAsTexturesDirty())}get invertRefractionY(){return e(this,p,"f")}set invertRefractionY(e){t(this,p,e,"f")}get linkRefractionWithTransparency(){return e(this,b,"f")}set linkRefractionWithTransparency(e){t(this,b,e,"f")}get useMaskFromThicknessTexture(){return e(this,g,"f")}set useMaskFromThicknessTexture(e){t(this,g,e,"f")}get refractionIntensityTexture(){return e(this,M,"f")}set refractionIntensityTexture(e){t(this,M,e,"f")}get translucencyIntensityTexture(){return e(this,L,"f")}set translucencyIntensityTexture(e){t(this,L,e,"f")}get translucencyColorTexture(){return e(this,N,"f")}set translucencyColorTexture(e){t(this,N,e,"f")}get useGltfStyleTextures(){return e(this,y,"f")}set useGltfStyleTextures(e){t(this,y,e,"f")}get legacyTransluceny(){return this.legacyTranslucency}set legacyTransluceny(e){this.legacyTranslucency=e}_markAllSubMeshesAsTexturesDirty(){this._enable(this._isRefractionEnabled||this._isTranslucencyEnabled||this._isScatteringEnabled),this._internalMarkAllSubMeshesAsTexturesDirty()}_markScenePrePassDirty(){this._enable(this._isRefractionEnabled||this._isTranslucencyEnabled||this._isScatteringEnabled),this._internalMarkAllSubMeshesAsTexturesDirty(),this._internalMarkScenePrePassDirty()}isCompatible(){return!0}constructor(e,t=!0){super(e,"PBRSubSurface",130,new xe,t),this._isRefractionEnabled=!1,E.set(this,s(this,ue,!1)),this._isTranslucencyEnabled=(s(this,oe),!1),R.set(this,s(this,ce,!1)),this._isDispersionEnabled=(s(this,Te),!1),d.set(this,s(this,_e,!1)),this._isScatteringEnabled=(s(this,Ee),!1),A.set(this,s(this,Re,!1)),this._scatteringDiffusionProfileIndex=(s(this,de),s(this,Se,0)),this.refractionIntensity=(s(this,Ae),s(this,me,1)),this.translucencyIntensity=(s(this,fe),s(this,Ie,1)),this._useAlbedoToTintRefraction=(s(this,Ce),!1),m.set(this,s(this,pe,!1)),this._useAlbedoToTintTranslucency=(s(this,be),!1),f.set(this,s(this,ge,!1)),this._thicknessTexture=(s(this,Me),null),x.set(this,s(this,Le,null)),this._refractionTexture=(s(this,Ne),null),I.set(this,s(this,ye,null)),this._indexOfRefraction=(s(this,Oe),1.5),C.set(this,s(this,De,1.5)),this._volumeIndexOfRefraction=(s(this,Ue),s(this,Fe,-1)),this._invertRefractionY=(s(this,ve),!1),p.set(this,s(this,Pe,!1)),this._linkRefractionWithTransparency=(s(this,ke),!1),b.set(this,s(this,He,!1)),this.minimumThickness=(s(this,Be),s(this,Ge,0)),this.maximumThickness=(s(this,Ve),s(this,Xe,1)),this.useThicknessAsDepth=(s(this,We),s(this,Ye,!1)),this.tintColor=(s(this,we),s(this,ze,h.White())),this.tintColorAtDistance=(s(this,Ke),s(this,je,1)),this.dispersion=(s(this,Qe),s(this,Ze,0)),this.diffusionDistance=(s(this,Je),s(this,$e,h.White())),this._useMaskFromThicknessTexture=(s(this,qe),!1),g.set(this,s(this,et,!1)),this._refractionIntensityTexture=(s(this,tt),null),M.set(this,s(this,st,null)),this._translucencyIntensityTexture=(s(this,it),null),L.set(this,s(this,at,null)),this.translucencyColor=(s(this,rt),s(this,nt,null)),this._translucencyColorTexture=(s(this,lt),null),N.set(this,s(this,ht,null)),this._useGltfStyleTextures=(s(this,ut),!0),y.set(this,s(this,ot,!0)),this.applyAlbedoAfterSubSurface=(s(this,ct),s(this,Tt,r.DEFAULT_APPLY_ALBEDO_AFTERSUBSURFACE)),this.legacyTranslucency=(s(this,_t),s(this,Et,r.DEFAULT_LEGACY_TRANSLUCENCY)),this._scene=s(this,Rt),this._scene=e.getScene(),this.registerForExtraEvents=!0,this._internalMarkAllSubMeshesAsTexturesDirty=e._dirtyCallbacks[i.MATERIAL_TextureDirtyFlag],this._internalMarkScenePrePassDirty=e._dirtyCallbacks[i.MATERIAL_PrePassDirtyFlag]}isReadyForSubMesh(e,t){if(!this._isRefractionEnabled&&!this._isTranslucencyEnabled&&!this._isScatteringEnabled)return!0;if(e._areTexturesDirty&&t.texturesEnabled){if(this._thicknessTexture&&u.ThicknessTextureEnabled&&!this._thicknessTexture.isReadyOrNotBlocking())return!1;if(this._refractionIntensityTexture&&u.RefractionIntensityTextureEnabled&&!this._refractionIntensityTexture.isReadyOrNotBlocking())return!1;if(this._translucencyColorTexture&&u.TranslucencyColorTextureEnabled&&!this._translucencyColorTexture.isReadyOrNotBlocking())return!1;if(this._translucencyIntensityTexture&&u.TranslucencyIntensityTextureEnabled&&!this._translucencyIntensityTexture.isReadyOrNotBlocking())return!1;const e=this._getRefractionTexture(t);if(e&&u.RefractionTextureEnabled&&!e.isReadyOrNotBlocking())return!1}return!0}prepareDefinesBeforeAttributes(e,t){if(!this._isRefractionEnabled&&!this._isTranslucencyEnabled&&!this._isScatteringEnabled)return e.SUBSURFACE=!1,e.SS_DISPERSION=!1,e.SS_TRANSLUCENCY=!1,e.SS_SCATTERING=!1,e.SS_REFRACTION=!1,e.SS_REFRACTION_USE_INTENSITY_FROM_THICKNESS=!1,e.SS_TRANSLUCENCY_USE_INTENSITY_FROM_THICKNESS=!1,e.SS_THICKNESSANDMASK_TEXTURE=!1,e.SS_THICKNESSANDMASK_TEXTUREDIRECTUV=0,e.SS_HAS_THICKNESS=!1,e.SS_REFRACTIONINTENSITY_TEXTURE=!1,e.SS_REFRACTIONINTENSITY_TEXTUREDIRECTUV=0,e.SS_TRANSLUCENCYINTENSITY_TEXTURE=!1,e.SS_TRANSLUCENCYINTENSITY_TEXTUREDIRECTUV=0,e.SS_REFRACTIONMAP_3D=!1,e.SS_REFRACTIONMAP_OPPOSITEZ=!1,e.SS_LODINREFRACTIONALPHA=!1,e.SS_GAMMAREFRACTION=!1,e.SS_RGBDREFRACTION=!1,e.SS_LINEARSPECULARREFRACTION=!1,e.SS_LINKREFRACTIONTOTRANSPARENCY=!1,e.SS_ALBEDOFORREFRACTIONTINT=!1,e.SS_ALBEDOFORTRANSLUCENCYTINT=!1,e.SS_USE_LOCAL_REFRACTIONMAP_CUBIC=!1,e.SS_USE_THICKNESS_AS_DEPTH=!1,e.SS_USE_GLTF_TEXTURES=!1,e.SS_TRANSLUCENCYCOLOR_TEXTURE=!1,e.SS_TRANSLUCENCYCOLOR_TEXTUREDIRECTUV=0,e.SS_TRANSLUCENCYCOLOR_TEXTURE_GAMMA=!1,void(e.SS_APPLY_ALBEDO_AFTER_SUBSURFACE=!1);if(e._areTexturesDirty){if(e.SUBSURFACE=!0,e.SS_DISPERSION=this._isDispersionEnabled,e.SS_TRANSLUCENCY=this._isTranslucencyEnabled,e.SS_TRANSLUCENCY_USE_INTENSITY_FROM_THICKNESS=!1,e.SS_TRANSLUCENCY_LEGACY=this.legacyTranslucency,e.SS_SCATTERING=this._isScatteringEnabled,e.SS_THICKNESSANDMASK_TEXTURE=!1,e.SS_REFRACTIONINTENSITY_TEXTURE=!1,e.SS_TRANSLUCENCYINTENSITY_TEXTURE=!1,e.SS_HAS_THICKNESS=!1,e.SS_USE_GLTF_TEXTURES=!1,e.SS_REFRACTION=!1,e.SS_REFRACTION_USE_INTENSITY_FROM_THICKNESS=!1,e.SS_REFRACTIONMAP_3D=!1,e.SS_GAMMAREFRACTION=!1,e.SS_RGBDREFRACTION=!1,e.SS_LINEARSPECULARREFRACTION=!1,e.SS_REFRACTIONMAP_OPPOSITEZ=!1,e.SS_LODINREFRACTIONALPHA=!1,e.SS_LINKREFRACTIONTOTRANSPARENCY=!1,e.SS_ALBEDOFORREFRACTIONTINT=!1,e.SS_ALBEDOFORTRANSLUCENCYTINT=!1,e.SS_USE_LOCAL_REFRACTIONMAP_CUBIC=!1,e.SS_USE_THICKNESS_AS_DEPTH=!1,e.SS_TRANSLUCENCYCOLOR_TEXTURE=!1,e.SS_APPLY_ALBEDO_AFTER_SUBSURFACE=this.applyAlbedoAfterSubSurface,e._areTexturesDirty&&t.texturesEnabled&&(this._thicknessTexture&&u.ThicknessTextureEnabled&&o(this._thicknessTexture,e,"SS_THICKNESSANDMASK_TEXTURE"),this._refractionIntensityTexture&&u.RefractionIntensityTextureEnabled&&o(this._refractionIntensityTexture,e,"SS_REFRACTIONINTENSITY_TEXTURE"),this._translucencyIntensityTexture&&u.TranslucencyIntensityTextureEnabled&&o(this._translucencyIntensityTexture,e,"SS_TRANSLUCENCYINTENSITY_TEXTURE"),this._translucencyColorTexture&&u.TranslucencyColorTextureEnabled&&(o(this._translucencyColorTexture,e,"SS_TRANSLUCENCYCOLOR_TEXTURE"),e.SS_TRANSLUCENCYCOLOR_TEXTURE_GAMMA=this._translucencyColorTexture.gammaSpace)),e.SS_HAS_THICKNESS=this.maximumThickness-this.minimumThickness!==0,e.SS_USE_GLTF_TEXTURES=this._useGltfStyleTextures,e.SS_REFRACTION_USE_INTENSITY_FROM_THICKNESS=this._useMaskFromThicknessTexture&&!this._refractionIntensityTexture,e.SS_TRANSLUCENCY_USE_INTENSITY_FROM_THICKNESS=this._useMaskFromThicknessTexture&&!this._translucencyIntensityTexture,this._isRefractionEnabled&&t.texturesEnabled){const s=this._getRefractionTexture(t);s&&u.RefractionTextureEnabled&&(e.SS_REFRACTION=!0,e.SS_REFRACTIONMAP_3D=s.isCube,e.SS_GAMMAREFRACTION=s.gammaSpace,e.SS_RGBDREFRACTION=s.isRGBD,e.SS_LINEARSPECULARREFRACTION=s.linearSpecularLOD,e.SS_REFRACTIONMAP_OPPOSITEZ=this._scene.useRightHandedSystem&&s.isCube?!s.invertZ:s.invertZ,e.SS_LODINREFRACTIONALPHA=s.lodLevelInAlpha,e.SS_LINKREFRACTIONTOTRANSPARENCY=this._linkRefractionWithTransparency,e.SS_ALBEDOFORREFRACTIONTINT=this._useAlbedoToTintRefraction,e.SS_USE_LOCAL_REFRACTIONMAP_CUBIC=s.isCube&&s.boundingBoxSize,e.SS_USE_THICKNESS_AS_DEPTH=this.useThicknessAsDepth)}this._isTranslucencyEnabled&&(e.SS_ALBEDOFORTRANSLUCENCYTINT=this._useAlbedoToTintTranslucency)}}hardBindForSubMesh(e,t,s,i){if(this._isRefractionEnabled||this._isTranslucencyEnabled||this._isScatteringEnabled)if(0===this.maximumThickness&&0===this.minimumThickness)e.updateFloat2("vThicknessParam",0,0);else{i.getRenderingMesh().getWorldMatrix().decompose(S.Vector3[0]);const t=Math.max(Math.abs(S.Vector3[0].x),Math.abs(S.Vector3[0].y),Math.abs(S.Vector3[0].z));e.updateFloat2("vThicknessParam",this.minimumThickness*t,(this.maximumThickness-this.minimumThickness)*t)}}bindForSubMesh(e,t,s,i){if(!this._isRefractionEnabled&&!this._isTranslucencyEnabled&&!this._isScatteringEnabled)return;const a=i.materialDefines,r=this._material.isFrozen,n=this._material.realTimeFiltering,l=a.LODBASEDMICROSFURACE,h=this._getRefractionTexture(t);if(!e.useUbo||!r||!e.isSync){if(this._thicknessTexture&&u.ThicknessTextureEnabled&&(e.updateFloat2("vThicknessInfos",this._thicknessTexture.coordinatesIndex,this._thicknessTexture.level),c(this._thicknessTexture,e,"thickness")),this._refractionIntensityTexture&&u.RefractionIntensityTextureEnabled&&a.SS_REFRACTIONINTENSITY_TEXTURE&&(e.updateFloat2("vRefractionIntensityInfos",this._refractionIntensityTexture.coordinatesIndex,this._refractionIntensityTexture.level),c(this._refractionIntensityTexture,e,"refractionIntensity")),this._translucencyColorTexture&&u.TranslucencyColorTextureEnabled&&a.SS_TRANSLUCENCYCOLOR_TEXTURE&&(e.updateFloat2("vTranslucencyColorInfos",this._translucencyColorTexture.coordinatesIndex,this._translucencyColorTexture.level),c(this._translucencyColorTexture,e,"translucencyColor")),this._translucencyIntensityTexture&&u.TranslucencyIntensityTextureEnabled&&a.SS_TRANSLUCENCYINTENSITY_TEXTURE&&(e.updateFloat2("vTranslucencyIntensityInfos",this._translucencyIntensityTexture.coordinatesIndex,this._translucencyIntensityTexture.level),c(this._translucencyIntensityTexture,e,"translucencyIntensity")),h&&u.RefractionTextureEnabled){e.updateMatrix("refractionMatrix",h.getRefractionTextureMatrix());let t=1;h.isCube||h.depth&&(t=h.depth);const s=h.getSize().width,i=this.volumeIndexOfRefraction;if(e.updateFloat4("vRefractionInfos",h.level,1/i,t,this._invertRefractionY?-1:1),e.updateFloat4("vRefractionMicrosurfaceInfos",s,h.lodGenerationScale,h.lodGenerationOffset,1/this.indexOfRefraction),n&&e.updateFloat2("vRefractionFilteringInfo",s,Math.log2(s)),h.boundingBoxSize){const t=h;e.updateVector3("vRefractionPosition",t.boundingBoxPosition),e.updateVector3("vRefractionSize",t.boundingBoxSize)}}this._isScatteringEnabled&&e.updateFloat("scatteringDiffusionProfile",this._scatteringDiffusionProfileIndex),e.updateColor3("vDiffusionDistance",this.diffusionDistance),e.updateFloat4("vTintColor",this.tintColor.r,this.tintColor.g,this.tintColor.b,Math.max(1e-5,this.tintColorAtDistance)),e.updateColor4("vTranslucencyColor",this.translucencyColor??this.tintColor,0),e.updateFloat3("vSubSurfaceIntensity",this.refractionIntensity,this.translucencyIntensity,0),e.updateFloat("dispersion",this.dispersion)}t.texturesEnabled&&(this._thicknessTexture&&u.ThicknessTextureEnabled&&e.setTexture("thicknessSampler",this._thicknessTexture),this._refractionIntensityTexture&&u.RefractionIntensityTextureEnabled&&a.SS_REFRACTIONINTENSITY_TEXTURE&&e.setTexture("refractionIntensitySampler",this._refractionIntensityTexture),this._translucencyIntensityTexture&&u.TranslucencyIntensityTextureEnabled&&a.SS_TRANSLUCENCYINTENSITY_TEXTURE&&e.setTexture("translucencyIntensitySampler",this._translucencyIntensityTexture),this._translucencyColorTexture&&u.TranslucencyColorTextureEnabled&&a.SS_TRANSLUCENCYCOLOR_TEXTURE&&e.setTexture("translucencyColorSampler",this._translucencyColorTexture),h&&u.RefractionTextureEnabled&&(l?e.setTexture("refractionSampler",h):(e.setTexture("refractionSampler",h._lodTextureMid||h),e.setTexture("refractionSamplerLow",h._lodTextureLow||h),e.setTexture("refractionSamplerHigh",h._lodTextureHigh||h))))}_getRefractionTexture(e){return this._refractionTexture?this._refractionTexture:this._isRefractionEnabled?e.environmentTexture:null}get disableAlphaBlending(){return this._isRefractionEnabled&&this._linkRefractionWithTransparency}fillRenderTargetTextures(e){u.RefractionTextureEnabled&&this._refractionTexture&&this._refractionTexture.isRenderTarget&&e.push(this._refractionTexture)}hasTexture(e){return this._thicknessTexture===e||(this._refractionTexture===e||(this._refractionIntensityTexture===e||(this._translucencyIntensityTexture===e||this._translucencyColorTexture===e)))}hasRenderTargetTextures(){return!!(u.RefractionTextureEnabled&&this._refractionTexture&&this._refractionTexture.isRenderTarget)}getActiveTextures(e){this._thicknessTexture&&e.push(this._thicknessTexture),this._refractionTexture&&e.push(this._refractionTexture),this._refractionIntensityTexture&&e.push(this._refractionIntensityTexture),this._translucencyColorTexture&&e.push(this._translucencyColorTexture),this._translucencyIntensityTexture&&e.push(this._translucencyIntensityTexture)}getAnimatables(e){this._thicknessTexture&&this._thicknessTexture.animations&&this._thicknessTexture.animations.length>0&&e.push(this._thicknessTexture),this._refractionTexture&&this._refractionTexture.animations&&this._refractionTexture.animations.length>0&&e.push(this._refractionTexture),this._refractionIntensityTexture&&this._refractionIntensityTexture.animations&&this._refractionIntensityTexture.animations.length>0&&e.push(this._refractionIntensityTexture),this._translucencyColorTexture&&this._translucencyColorTexture.animations&&this._translucencyColorTexture.animations.length>0&&e.push(this._translucencyColorTexture),this._translucencyIntensityTexture&&this._translucencyIntensityTexture.animations&&this._translucencyIntensityTexture.animations.length>0&&e.push(this._translucencyIntensityTexture)}dispose(e){e&&(this._thicknessTexture&&this._thicknessTexture.dispose(),this._refractionTexture&&this._refractionTexture.dispose(),this._refractionIntensityTexture&&this._refractionIntensityTexture.dispose(),this._translucencyColorTexture&&this._translucencyColorTexture.dispose(),this._translucencyIntensityTexture&&this._translucencyIntensityTexture.dispose())}getClassName(){return"PBRSubSurfaceConfiguration"}addFallbacks(e,t,s){return e.SS_SCATTERING&&t.addFallback(s++,"SS_SCATTERING"),e.SS_TRANSLUCENCY&&t.addFallback(s++,"SS_TRANSLUCENCY"),s}getSamplers(e){e.push("thicknessSampler","refractionIntensitySampler","translucencyIntensitySampler","refractionSampler","refractionSamplerLow","refractionSamplerHigh","translucencyColorSampler")}getUniforms(){return{ubo:[{name:"vRefractionMicrosurfaceInfos",size:4,type:"vec4"},{name:"vRefractionFilteringInfo",size:2,type:"vec2"},{name:"vTranslucencyIntensityInfos",size:2,type:"vec2"},{name:"vRefractionInfos",size:4,type:"vec4"},{name:"refractionMatrix",size:16,type:"mat4"},{name:"vThicknessInfos",size:2,type:"vec2"},{name:"vRefractionIntensityInfos",size:2,type:"vec2"},{name:"thicknessMatrix",size:16,type:"mat4"},{name:"refractionIntensityMatrix",size:16,type:"mat4"},{name:"translucencyIntensityMatrix",size:16,type:"mat4"},{name:"vThicknessParam",size:2,type:"vec2"},{name:"vDiffusionDistance",size:3,type:"vec3"},{name:"vTintColor",size:4,type:"vec4"},{name:"vSubSurfaceIntensity",size:3,type:"vec3"},{name:"vRefractionPosition",size:3,type:"vec3"},{name:"vRefractionSize",size:3,type:"vec3"},{name:"scatteringDiffusionProfile",size:1,type:"float"},{name:"dispersion",size:1,type:"float"},{name:"vTranslucencyColor",size:4,type:"vec4"},{name:"vTranslucencyColorInfos",size:2,type:"vec2"},{name:"translucencyColorMatrix",size:16,type:"mat4"}]}}},E=new WeakMap,R=new WeakMap,d=new WeakMap,A=new WeakMap,m=new WeakMap,f=new WeakMap,x=new WeakMap,I=new WeakMap,C=new WeakMap,p=new WeakMap,b=new WeakMap,g=new WeakMap,M=new WeakMap,L=new WeakMap,N=new WeakMap,y=new WeakMap,(()=>{const e="function"==typeof Symbol&&Symbol.metadata?Object.create(he[Symbol.metadata]??null):void 0;O=[n(),l("_markAllSubMeshesAsTexturesDirty")],D=[n(),l("_markAllSubMeshesAsTexturesDirty")],U=[n(),l("_markAllSubMeshesAsTexturesDirty")],F=[n(),l("_markScenePrePassDirty")],v=[n()],P=[n()],k=[n()],H=[n(),l("_markAllSubMeshesAsTexturesDirty")],B=[n(),l("_markAllSubMeshesAsTexturesDirty")],G=[T(),l("_markAllSubMeshesAsTexturesDirty")],V=[T(),l("_markAllSubMeshesAsTexturesDirty")],X=[n(),l("_markAllSubMeshesAsTexturesDirty")],W=[n()],Y=[n(),l("_markAllSubMeshesAsTexturesDirty")],w=[n(),l("_markAllSubMeshesAsTexturesDirty")],z=[n()],K=[n()],j=[n()],Q=[_()],Z=[n()],J=[n()],$=[_()],q=[n(),l("_markAllSubMeshesAsTexturesDirty")],ee=[T(),l("_markAllSubMeshesAsTexturesDirty")],te=[T(),l("_markAllSubMeshesAsTexturesDirty")],se=[_()],ie=[T(),l("_markAllSubMeshesAsTexturesDirty")],ae=[n(),l("_markAllSubMeshesAsTexturesDirty")],ne=[n()],le=[n()],a(r,null,O,{kind:"accessor",name:"isRefractionEnabled",static:!1,private:!1,access:{has:e=>"isRefractionEnabled"in e,get:e=>e.isRefractionEnabled,set:(e,t)=>{e.isRefractionEnabled=t}},metadata:e},ue,oe),a(r,null,D,{kind:"accessor",name:"isTranslucencyEnabled",static:!1,private:!1,access:{has:e=>"isTranslucencyEnabled"in e,get:e=>e.isTranslucencyEnabled,set:(e,t)=>{e.isTranslucencyEnabled=t}},metadata:e},ce,Te),a(r,null,U,{kind:"accessor",name:"isDispersionEnabled",static:!1,private:!1,access:{has:e=>"isDispersionEnabled"in e,get:e=>e.isDispersionEnabled,set:(e,t)=>{e.isDispersionEnabled=t}},metadata:e},_e,Ee),a(r,null,F,{kind:"accessor",name:"isScatteringEnabled",static:!1,private:!1,access:{has:e=>"isScatteringEnabled"in e,get:e=>e.isScatteringEnabled,set:(e,t)=>{e.isScatteringEnabled=t}},metadata:e},Re,de),a(r,null,H,{kind:"accessor",name:"useAlbedoToTintRefraction",static:!1,private:!1,access:{has:e=>"useAlbedoToTintRefraction"in e,get:e=>e.useAlbedoToTintRefraction,set:(e,t)=>{e.useAlbedoToTintRefraction=t}},metadata:e},pe,be),a(r,null,B,{kind:"accessor",name:"useAlbedoToTintTranslucency",static:!1,private:!1,access:{has:e=>"useAlbedoToTintTranslucency"in e,get:e=>e.useAlbedoToTintTranslucency,set:(e,t)=>{e.useAlbedoToTintTranslucency=t}},metadata:e},ge,Me),a(r,null,G,{kind:"accessor",name:"thicknessTexture",static:!1,private:!1,access:{has:e=>"thicknessTexture"in e,get:e=>e.thicknessTexture,set:(e,t)=>{e.thicknessTexture=t}},metadata:e},Le,Ne),a(r,null,V,{kind:"accessor",name:"refractionTexture",static:!1,private:!1,access:{has:e=>"refractionTexture"in e,get:e=>e.refractionTexture,set:(e,t)=>{e.refractionTexture=t}},metadata:e},ye,Oe),a(r,null,X,{kind:"accessor",name:"indexOfRefraction",static:!1,private:!1,access:{has:e=>"indexOfRefraction"in e,get:e=>e.indexOfRefraction,set:(e,t)=>{e.indexOfRefraction=t}},metadata:e},De,Ue),a(r,null,Y,{kind:"accessor",name:"invertRefractionY",static:!1,private:!1,access:{has:e=>"invertRefractionY"in e,get:e=>e.invertRefractionY,set:(e,t)=>{e.invertRefractionY=t}},metadata:e},Pe,ke),a(r,null,w,{kind:"accessor",name:"linkRefractionWithTransparency",static:!1,private:!1,access:{has:e=>"linkRefractionWithTransparency"in e,get:e=>e.linkRefractionWithTransparency,set:(e,t)=>{e.linkRefractionWithTransparency=t}},metadata:e},He,Be),a(r,null,q,{kind:"accessor",name:"useMaskFromThicknessTexture",static:!1,private:!1,access:{has:e=>"useMaskFromThicknessTexture"in e,get:e=>e.useMaskFromThicknessTexture,set:(e,t)=>{e.useMaskFromThicknessTexture=t}},metadata:e},et,tt),a(r,null,ee,{kind:"accessor",name:"refractionIntensityTexture",static:!1,private:!1,access:{has:e=>"refractionIntensityTexture"in e,get:e=>e.refractionIntensityTexture,set:(e,t)=>{e.refractionIntensityTexture=t}},metadata:e},st,it),a(r,null,te,{kind:"accessor",name:"translucencyIntensityTexture",static:!1,private:!1,access:{has:e=>"translucencyIntensityTexture"in e,get:e=>e.translucencyIntensityTexture,set:(e,t)=>{e.translucencyIntensityTexture=t}},metadata:e},at,rt),a(r,null,ie,{kind:"accessor",name:"translucencyColorTexture",static:!1,private:!1,access:{has:e=>"translucencyColorTexture"in e,get:e=>e.translucencyColorTexture,set:(e,t)=>{e.translucencyColorTexture=t}},metadata:e},ht,ut),a(r,null,ae,{kind:"accessor",name:"useGltfStyleTextures",static:!1,private:!1,access:{has:e=>"useGltfStyleTextures"in e,get:e=>e.useGltfStyleTextures,set:(e,t)=>{e.useGltfStyleTextures=t}},metadata:e},ot,ct),a(null,null,v,{kind:"field",name:"_scatteringDiffusionProfileIndex",static:!1,private:!1,access:{has:e=>"_scatteringDiffusionProfileIndex"in e,get:e=>e._scatteringDiffusionProfileIndex,set:(e,t)=>{e._scatteringDiffusionProfileIndex=t}},metadata:e},Se,Ae),a(null,null,P,{kind:"field",name:"refractionIntensity",static:!1,private:!1,access:{has:e=>"refractionIntensity"in e,get:e=>e.refractionIntensity,set:(e,t)=>{e.refractionIntensity=t}},metadata:e},me,fe),a(null,null,k,{kind:"field",name:"translucencyIntensity",static:!1,private:!1,access:{has:e=>"translucencyIntensity"in e,get:e=>e.translucencyIntensity,set:(e,t)=>{e.translucencyIntensity=t}},metadata:e},Ie,Ce),a(null,null,W,{kind:"field",name:"_volumeIndexOfRefraction",static:!1,private:!1,access:{has:e=>"_volumeIndexOfRefraction"in e,get:e=>e._volumeIndexOfRefraction,set:(e,t)=>{e._volumeIndexOfRefraction=t}},metadata:e},Fe,ve),a(null,null,z,{kind:"field",name:"minimumThickness",static:!1,private:!1,access:{has:e=>"minimumThickness"in e,get:e=>e.minimumThickness,set:(e,t)=>{e.minimumThickness=t}},metadata:e},Ge,Ve),a(null,null,K,{kind:"field",name:"maximumThickness",static:!1,private:!1,access:{has:e=>"maximumThickness"in e,get:e=>e.maximumThickness,set:(e,t)=>{e.maximumThickness=t}},metadata:e},Xe,We),a(null,null,j,{kind:"field",name:"useThicknessAsDepth",static:!1,private:!1,access:{has:e=>"useThicknessAsDepth"in e,get:e=>e.useThicknessAsDepth,set:(e,t)=>{e.useThicknessAsDepth=t}},metadata:e},Ye,we),a(null,null,Q,{kind:"field",name:"tintColor",static:!1,private:!1,access:{has:e=>"tintColor"in e,get:e=>e.tintColor,set:(e,t)=>{e.tintColor=t}},metadata:e},ze,Ke),a(null,null,Z,{kind:"field",name:"tintColorAtDistance",static:!1,private:!1,access:{has:e=>"tintColorAtDistance"in e,get:e=>e.tintColorAtDistance,set:(e,t)=>{e.tintColorAtDistance=t}},metadata:e},je,Qe),a(null,null,J,{kind:"field",name:"dispersion",static:!1,private:!1,access:{has:e=>"dispersion"in e,get:e=>e.dispersion,set:(e,t)=>{e.dispersion=t}},metadata:e},Ze,Je),a(null,null,$,{kind:"field",name:"diffusionDistance",static:!1,private:!1,access:{has:e=>"diffusionDistance"in e,get:e=>e.diffusionDistance,set:(e,t)=>{e.diffusionDistance=t}},metadata:e},$e,qe),a(null,null,se,{kind:"field",name:"translucencyColor",static:!1,private:!1,access:{has:e=>"translucencyColor"in e,get:e=>e.translucencyColor,set:(e,t)=>{e.translucencyColor=t}},metadata:e},nt,lt),a(null,null,ne,{kind:"field",name:"applyAlbedoAfterSubSurface",static:!1,private:!1,access:{has:e=>"applyAlbedoAfterSubSurface"in e,get:e=>e.applyAlbedoAfterSubSurface,set:(e,t)=>{e.applyAlbedoAfterSubSurface=t}},metadata:e},Tt,_t),a(null,null,le,{kind:"field",name:"legacyTranslucency",static:!1,private:!1,access:{has:e=>"legacyTranslucency"in e,get:e=>e.legacyTranslucency,set:(e,t)=>{e.legacyTranslucency=t}},metadata:e},Et,Rt),e&&Object.defineProperty(r,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:e})})(),r.DEFAULT_APPLY_ALBEDO_AFTERSUBSURFACE=!1,r.DEFAULT_LEGACY_TRANSLUCENCY=!1,r})();const Ce={effect:null,subMesh:null};class pe extends(ue(oe(r))){}class be extends(ee(pe)){constructor(e){super(e),this.PBR=!0,this.NUM_SAMPLES="0",this.REALTIME_FILTERING=!1,this.IBL_CDF_FILTERING=!1,this.ALBEDO=!1,this.GAMMAALBEDO=!1,this.ALBEDODIRECTUV=0,this.VERTEXCOLOR=!1,this.BASE_WEIGHT=!1,this.BASE_WEIGHTDIRECTUV=0,this.BASE_DIFFUSE_ROUGHNESS=!1,this.BASE_DIFFUSE_ROUGHNESSDIRECTUV=0,this.BAKED_VERTEX_ANIMATION_TEXTURE=!1,this.AMBIENT=!1,this.AMBIENTDIRECTUV=0,this.AMBIENTINGRAYSCALE=!1,this.OPACITY=!1,this.VERTEXALPHA=!1,this.OPACITYDIRECTUV=0,this.OPACITYRGB=!1,this.ALPHATEST=!1,this.DEPTHPREPASS=!1,this.ALPHABLEND=!1,this.ALPHAFROMALBEDO=!1,this.ALPHATESTVALUE="0.5",this.SPECULAROVERALPHA=!1,this.RADIANCEOVERALPHA=!1,this.ALPHAFRESNEL=!1,this.LINEARALPHAFRESNEL=!1,this.PREMULTIPLYALPHA=!1,this.EMISSIVE=!1,this.EMISSIVEDIRECTUV=0,this.GAMMAEMISSIVE=!1,this.REFLECTIVITY=!1,this.REFLECTIVITY_GAMMA=!1,this.REFLECTIVITYDIRECTUV=0,this.SPECULARTERM=!1,this.MICROSURFACEFROMREFLECTIVITYMAP=!1,this.MICROSURFACEAUTOMATIC=!1,this.LODBASEDMICROSFURACE=!1,this.MICROSURFACEMAP=!1,this.MICROSURFACEMAPDIRECTUV=0,this.METALLICWORKFLOW=!1,this.ROUGHNESSSTOREINMETALMAPALPHA=!1,this.ROUGHNESSSTOREINMETALMAPGREEN=!1,this.METALLNESSSTOREINMETALMAPBLUE=!1,this.AOSTOREINMETALMAPRED=!1,this.METALLIC_REFLECTANCE=!1,this.METALLIC_REFLECTANCE_GAMMA=!1,this.METALLIC_REFLECTANCEDIRECTUV=0,this.METALLIC_REFLECTANCE_USE_ALPHA_ONLY=!1,this.REFLECTANCE=!1,this.REFLECTANCE_GAMMA=!1,this.REFLECTANCEDIRECTUV=0,this.ENVIRONMENTBRDF=!1,this.ENVIRONMENTBRDF_RGBD=!1,this.NORMAL=!1,this.TANGENT=!1,this.BUMP=!1,this.BUMPDIRECTUV=0,this.OBJECTSPACE_NORMALMAP=!1,this.PARALLAX=!1,this.PARALLAX_RHS=!1,this.PARALLAXOCCLUSION=!1,this.NORMALXYSCALE=!0,this.LIGHTMAP=!1,this.LIGHTMAPDIRECTUV=0,this.USELIGHTMAPASSHADOWMAP=!1,this.GAMMALIGHTMAP=!1,this.RGBDLIGHTMAP=!1,this.REFLECTION=!1,this.REFLECTIONMAP_3D=!1,this.REFLECTIONMAP_SPHERICAL=!1,this.REFLECTIONMAP_PLANAR=!1,this.REFLECTIONMAP_CUBIC=!1,this.USE_LOCAL_REFLECTIONMAP_CUBIC=!1,this.REFLECTIONMAP_PROJECTION=!1,this.REFLECTIONMAP_SKYBOX=!1,this.REFLECTIONMAP_EXPLICIT=!1,this.REFLECTIONMAP_EQUIRECTANGULAR=!1,this.REFLECTIONMAP_EQUIRECTANGULAR_FIXED=!1,this.REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED=!1,this.INVERTCUBICMAP=!1,this.USESPHERICALFROMREFLECTIONMAP=!1,this.USEIRRADIANCEMAP=!1,this.USE_IRRADIANCE_DOMINANT_DIRECTION=!1,this.USESPHERICALINVERTEX=!1,this.REFLECTIONMAP_OPPOSITEZ=!1,this.LODINREFLECTIONALPHA=!1,this.GAMMAREFLECTION=!1,this.RGBDREFLECTION=!1,this.LINEARSPECULARREFLECTION=!1,this.RADIANCEOCCLUSION=!1,this.HORIZONOCCLUSION=!1,this.INSTANCES=!1,this.THIN_INSTANCES=!1,this.INSTANCESCOLOR=!1,this.NUM_BONE_INFLUENCERS=0,this.BonesPerMesh=0,this.BONETEXTURE=!1,this.BONES_VELOCITY_ENABLED=!1,this.NONUNIFORMSCALING=!1,this.MORPHTARGETS=!1,this.MORPHTARGETS_POSITION=!1,this.MORPHTARGETS_NORMAL=!1,this.MORPHTARGETS_TANGENT=!1,this.MORPHTARGETS_UV=!1,this.MORPHTARGETS_UV2=!1,this.MORPHTARGETS_COLOR=!1,this.MORPHTARGETTEXTURE_HASPOSITIONS=!1,this.MORPHTARGETTEXTURE_HASNORMALS=!1,this.MORPHTARGETTEXTURE_HASTANGENTS=!1,this.MORPHTARGETTEXTURE_HASUVS=!1,this.MORPHTARGETTEXTURE_HASUV2S=!1,this.MORPHTARGETTEXTURE_HASCOLORS=!1,this.NUM_MORPH_INFLUENCERS=0,this.MORPHTARGETS_TEXTURE=!1,this.MULTIVIEW=!1,this.ORDER_INDEPENDENT_TRANSPARENCY=!1,this.ORDER_INDEPENDENT_TRANSPARENCY_16BITS=!1,this.USEPHYSICALLIGHTFALLOFF=!1,this.USEGLTFLIGHTFALLOFF=!1,this.TWOSIDEDLIGHTING=!1,this.MIRRORED=!1,this.SHADOWFLOAT=!1,this.CLIPPLANE=!1,this.CLIPPLANE2=!1,this.CLIPPLANE3=!1,this.CLIPPLANE4=!1,this.CLIPPLANE5=!1,this.CLIPPLANE6=!1,this.POINTSIZE=!1,this.FOG=!1,this.LOGARITHMICDEPTH=!1,this.CAMERA_ORTHOGRAPHIC=!1,this.CAMERA_PERSPECTIVE=!1,this.AREALIGHTSUPPORTED=!0,this.FORCENORMALFORWARD=!1,this.SPECULARAA=!1,this.UNLIT=!1,this.DECAL_AFTER_DETAIL=!1,this.TEXTURE_REPETITION_MODE=0,this.DEBUGMODE=0,this.USE_VERTEX_PULLING=!1,this.VERTEX_PULLING_USE_INDEX_BUFFER=!1,this.VERTEX_PULLING_INDEX_BUFFER_32BITS=!1,this.RIGHT_HANDED=!1,this.CLUSTLIGHT_SLICES=0,this.CLUSTLIGHT_BATCH=0,this.rebuild()}reset(){super.reset(),this.ALPHATESTVALUE="0.5",this.PBR=!0,this.NORMALXYSCALE=!0}}class ge extends(te(se)){}let Me=(()=>{var r,n;let T,_=ge,E=[],d=[];return r=class extends _{get realTimeFiltering(){return this._realTimeFiltering}set realTimeFiltering(e){this._realTimeFiltering=e,this.markAsDirty(i.MATERIAL_TextureDirtyFlag)}get realTimeFilteringQuality(){return this._realTimeFilteringQuality}set realTimeFilteringQuality(e){this._realTimeFilteringQuality=e,this.markAsDirty(i.MATERIAL_TextureDirtyFlag)}get canRenderToMRT(){return!0}get debugMode(){return e(this,n,"f")}set debugMode(e){t(this,n,e,"f")}constructor(e,t,a=!1){super(e,t,void 0,a||r.ForceGLSL),this._directIntensity=1,this._emissiveIntensity=1,this._environmentIntensity=1,this._specularIntensity=1,this._lightingInfos=new A(this._directIntensity,this._emissiveIntensity,this._environmentIntensity,this._specularIntensity),this._disableBumpMap=!1,this._albedoTexture=null,this._baseWeightTexture=null,this._baseDiffuseRoughnessTexture=null,this._ambientTexture=null,this._ambientTextureStrength=1,this._ambientTextureImpactOnAnalyticalLights=r.DEFAULT_AO_ON_ANALYTICAL_LIGHTS,this._opacityTexture=null,this._reflectionTexture=null,this._emissiveTexture=null,this._reflectivityTexture=null,this._metallicTexture=null,this._metallic=null,this._roughness=null,this._metallicF0Factor=1,this._metallicReflectanceColor=h.White(),this._useOnlyMetallicFromMetallicReflectanceTexture=!1,this._metallicReflectanceTexture=null,this._reflectanceTexture=null,this._microSurfaceTexture=null,this._bumpTexture=null,this._lightmapTexture=null,this._ambientColor=new h(0,0,0),this._albedoColor=new h(1,1,1),this._baseWeight=1,this._baseDiffuseRoughness=null,this._reflectivityColor=new h(1,1,1),this._reflectionColor=new h(1,1,1),this._emissiveColor=new h(0,0,0),this._microSurface=.9,this._useLightmapAsShadowmap=!1,this._useHorizonOcclusion=!0,this._useRadianceOcclusion=!0,this._useAlphaFromAlbedoTexture=!1,this._useSpecularOverAlpha=!0,this._useMicroSurfaceFromReflectivityMapAlpha=!1,this._useRoughnessFromMetallicTextureAlpha=!0,this._useRoughnessFromMetallicTextureGreen=!1,this._useMetallnessFromMetallicTextureBlue=!1,this._useAmbientOcclusionFromMetallicTextureRed=!1,this._useAmbientInGrayScale=!1,this._useAutoMicroSurfaceFromReflectivityMap=!1,this._lightFalloff=r.LIGHTFALLOFF_PHYSICAL,this._useRadianceOverAlpha=!0,this._useObjectSpaceNormalMap=!1,this._useParallax=!1,this._useParallaxOcclusion=!1,this._parallaxScaleBias=.05,this._disableLighting=!1,this._maxSimultaneousLights=4,this._invertNormalMapX=!1,this._invertNormalMapY=!1,this._twoSidedLighting=!1,this._alphaCutOff=.4,this._useAlphaFresnel=!1,this._useLinearAlphaFresnel=!1,this._environmentBRDFTexture=null,this._forceIrradianceInFragment=!1,this._realTimeFiltering=!1,this._realTimeFilteringQuality=i.TEXTURE_FILTERING_QUALITY_LOW,this._forceNormalForward=!1,this._enableSpecularAntiAliasing=!1,this._renderTargets=new m(16),this._globalAmbientColor=new h(0,0,0),this._unlit=!1,this._applyDecalMapAfterDetailMap=!1,this._debugMode=0,this._shadersLoaded=!1,this._breakShaderLoadedCheck=!1,this._vertexPullingMetadata=null,n.set(this,s(this,E,0)),this.debugLimit=(s(this,d),-1),this.debugFactor=1,this._cacheHasRenderTargetTextures=!1,this.brdf=new Te(this),this.clearCoat=new Ee(this),this.iridescence=new de(this),this.anisotropy=new Ae(this),this.sheen=new fe(this),this.subSurface=new Ie(this),this.detailMap=new ne(this),this._attachImageProcessingConfiguration(null),this.getRenderTargetTextures=()=>(this._renderTargets.reset(),u.ReflectionTextureEnabled&&this._reflectionTexture&&this._reflectionTexture.isRenderTarget&&this._renderTargets.push(this._reflectionTexture),this._eventInfo.renderTargets=this._renderTargets,this._callbackPluginEventFillRenderTargetTextures(this._eventInfo),this._renderTargets),this._environmentBRDFTexture=ae(this.getScene()),this.prePassConfiguration=new le}get hasRenderTargetTextures(){return!!(u.ReflectionTextureEnabled&&this._reflectionTexture&&this._reflectionTexture.isRenderTarget)||this._cacheHasRenderTargetTextures}get isPrePassCapable(){return!this.disableDepthWrite}getClassName(){return"PBRBaseMaterial"}get _disableAlphaBlending(){return this._transparencyMode===r.PBRMATERIAL_OPAQUE||this._transparencyMode===r.PBRMATERIAL_ALPHATEST||this.subSurface?.disableAlphaBlending}needAlphaBlending(){return this._hasTransparencyMode?this._transparencyModeIsBlend:!this._disableAlphaBlending&&(this.alpha<1||null!=this._opacityTexture||this._shouldUseAlphaFromAlbedoTexture())}needAlphaTesting(){return this._hasTransparencyMode?this._transparencyModeIsTest:!this.subSurface?.disableAlphaBlending&&(this._hasAlphaChannel()&&(null==this._transparencyMode||this._transparencyMode===r.PBRMATERIAL_ALPHATEST))}_shouldUseAlphaFromAlbedoTexture(){return null!=this._albedoTexture&&this._albedoTexture.hasAlpha&&this._useAlphaFromAlbedoTexture&&this._transparencyMode!==r.PBRMATERIAL_OPAQUE}_hasAlphaChannel(){return null!=this._albedoTexture&&this._albedoTexture.hasAlpha||null!=this._opacityTexture}getAlphaTestTexture(){return this._albedoTexture}isReadyForSubMesh(e,t,s){this._uniformBufferLayoutBuilt||this.buildUniformLayout();const i=t._drawWrapper;if(i.effect&&this.isFrozen&&i._wasPreviouslyReady&&i._wasPreviouslyUsingInstances===s)return!0;t.materialDefines||(this._callbackPluginEventGeneric(4,this._eventInfo),t.materialDefines=new be(this._eventInfo.defineNames));const a=t.materialDefines;if(this._isReadyForSubMesh(t))return!0;const r=this.getScene(),n=r.getEngine();if(a._areTexturesDirty&&(this._eventInfo.hasRenderTargetTextures=!1,this._callbackPluginEventHasRenderTargetTextures(this._eventInfo),this._cacheHasRenderTargetTextures=this._eventInfo.hasRenderTargetTextures,r.texturesEnabled)){if(this._albedoTexture&&u.DiffuseTextureEnabled&&!this._albedoTexture.isReadyOrNotBlocking())return!1;if(this._baseWeightTexture&&u.BaseWeightTextureEnabled&&!this._baseWeightTexture.isReadyOrNotBlocking())return!1;if(this._baseDiffuseRoughnessTexture&&u.BaseDiffuseRoughnessTextureEnabled&&!this._baseDiffuseRoughnessTexture.isReadyOrNotBlocking())return!1;if(this._ambientTexture&&u.AmbientTextureEnabled&&!this._ambientTexture.isReadyOrNotBlocking())return!1;if(this._opacityTexture&&u.OpacityTextureEnabled&&!this._opacityTexture.isReadyOrNotBlocking())return!1;const e=this._getReflectionTexture();if(e&&u.ReflectionTextureEnabled){if(!e.isReadyOrNotBlocking())return!1;if(e.irradianceTexture){if(!e.irradianceTexture.isReadyOrNotBlocking())return!1}else if(!e.sphericalPolynomial&&e.getInternalTexture()?._sphericalPolynomialPromise)return!1}if(this._lightmapTexture&&u.LightmapTextureEnabled&&!this._lightmapTexture.isReadyOrNotBlocking())return!1;if(this._emissiveTexture&&u.EmissiveTextureEnabled&&!this._emissiveTexture.isReadyOrNotBlocking())return!1;if(u.SpecularTextureEnabled){if(this._metallicTexture){if(!this._metallicTexture.isReadyOrNotBlocking())return!1}else if(this._reflectivityTexture&&!this._reflectivityTexture.isReadyOrNotBlocking())return!1;if(this._metallicReflectanceTexture&&!this._metallicReflectanceTexture.isReadyOrNotBlocking())return!1;if(this._reflectanceTexture&&!this._reflectanceTexture.isReadyOrNotBlocking())return!1;if(this._microSurfaceTexture&&!this._microSurfaceTexture.isReadyOrNotBlocking())return!1}if(n.getCaps().standardDerivatives&&this._bumpTexture&&u.BumpTextureEnabled&&!this._disableBumpMap&&!this._bumpTexture.isReady())return!1;if(this._environmentBRDFTexture&&u.ReflectionTextureEnabled&&!this._environmentBRDFTexture.isReady())return!1}if(this._eventInfo.isReadyForSubMesh=!0,this._eventInfo.defines=a,this._eventInfo.subMesh=t,this._callbackPluginEventIsReadyForSubMesh(this._eventInfo),!this._eventInfo.isReadyForSubMesh)return!1;if(a._areImageProcessingDirty&&this._imageProcessingConfiguration&&!this._imageProcessingConfiguration.isReady())return!1;if(a.AREALIGHTUSED||a.CLUSTLIGHT_BATCH)for(let t=0;t<e.lightSources.length;t++)if(!e.lightSources[t]._isReady())return!1;if(n.getCaps().standardDerivatives||e.isVerticesDataPresent(R.NormalKind)||(e.createNormals(!0),f.Warn("PBRMaterial: Normals have been created for the mesh: "+e.name)),!x(r,e,this._maxSimultaneousLights,this._disableLighting))return!1;const l=t.effect,h=a._areLightsDisposed,o=this._prepareEffect(e,t.getRenderingMesh(),a,this.onCompiled,this.onError,s,null);let c=!1;if(o)if(this._onEffectCreatedObservable&&(Ce.effect=o,Ce.subMesh=t,this._onEffectCreatedObservable.notifyObservers(Ce)),this.allowShaderHotSwapping&&l&&!o.isReady()){if(a.markAsUnprocessed(),c=this.isFrozen,h)return a._areLightsDisposed=!0,!1}else r.resetCachedMaterial(),t.setEffect(o,a,this._materialContext);return!(!t.effect||!t.effect.isReady())&&(a._renderId=r.getRenderId(),i._wasPreviouslyReady=!c,i._wasPreviouslyUsingInstances=!!s,this._checkScenePerformancePriority(),!0)}isMetallicWorkflow(){return!(null==this._metallic&&null==this._roughness&&!this._metallicTexture)}_prepareEffect(e,t,s,a=null,r=null,n=null,l=null){if(this._prepareDefines(e,t,s,n,l),!s.isDirty)return null;s.markAsProcessed();const h=this.getScene().getEngine(),u=new I;let o=0;s.USESPHERICALINVERTEX&&u.addFallback(o++,"USESPHERICALINVERTEX"),s.FOG&&u.addFallback(o,"FOG"),s.SPECULARAA&&u.addFallback(o,"SPECULARAA"),s.POINTSIZE&&u.addFallback(o,"POINTSIZE"),s.LOGARITHMICDEPTH&&u.addFallback(o,"LOGARITHMICDEPTH"),s.PARALLAX&&u.addFallback(o,"PARALLAX"),s.PARALLAX_RHS&&u.addFallback(o,"PARALLAX_RHS"),s.PARALLAXOCCLUSION&&u.addFallback(o++,"PARALLAXOCCLUSION"),s.ENVIRONMENTBRDF&&u.addFallback(o++,"ENVIRONMENTBRDF"),s.TANGENT&&u.addFallback(o++,"TANGENT"),s.BUMP&&u.addFallback(o++,"BUMP"),o=C(s,u,this._maxSimultaneousLights,o),s.SPECULARTERM&&u.addFallback(o++,"SPECULARTERM"),s.USESPHERICALFROMREFLECTIONMAP&&u.addFallback(o++,"USESPHERICALFROMREFLECTIONMAP"),s.USEIRRADIANCEMAP&&u.addFallback(o++,"USEIRRADIANCEMAP"),s.LIGHTMAP&&u.addFallback(o++,"LIGHTMAP"),s.NORMAL&&u.addFallback(o++,"NORMAL"),s.AMBIENT&&u.addFallback(o++,"AMBIENT"),s.EMISSIVE&&u.addFallback(o++,"EMISSIVE"),s.VERTEXCOLOR&&u.addFallback(o++,"VERTEXCOLOR"),s.MORPHTARGETS&&u.addFallback(o++,"MORPHTARGETS"),s.MULTIVIEW&&u.addFallback(0,"MULTIVIEW");const c=[R.PositionKind];s.NORMAL&&c.push(R.NormalKind),s.TANGENT&&c.push(R.TangentKind);for(let e=1;e<=i.MAX_SUPPORTED_UV_SETS;++e)s["UV"+e]&&c.push(`uv${1===e?"":e}`);s.VERTEXCOLOR&&c.push(R.ColorKind),p(c,e,s,u),b(c,s),g(c,e,s),M(c,e,s);let T="pbr";const _=["world","view","viewProjection","vEyePosition","vLightsType","vAmbientColor","vAlbedoColor","baseWeight","baseDiffuseRoughness","vReflectivityColor","vMetallicReflectanceFactors","vEmissiveColor","visibility","vFogInfos","vFogColor","pointSize","vAlbedoInfos","vBaseWeightInfos","vBaseDiffuseRoughnessInfos","vAmbientInfos","vOpacityInfos","vEmissiveInfos","vReflectivityInfos","vMetallicReflectanceInfos","vReflectanceInfos","vMicroSurfaceSamplerInfos","vBumpInfos","vLightmapInfos","mBones","albedoMatrix","baseWeightMatrix","baseDiffuseRoughnessMatrix","ambientMatrix","opacityMatrix","emissiveMatrix","reflectivityMatrix","normalMatrix","microSurfaceSamplerMatrix","bumpMatrix","lightmapMatrix","metallicReflectanceMatrix","reflectanceMatrix","vLightingIntensity","logarithmicDepthConstant","vTangentSpaceParams","boneTextureInfo","vDebugMode","morphTargetTextureInfo","morphTargetTextureIndices","cameraInfo","vTextureRepetitionHexTilingParams"],E=["albedoSampler","baseWeightSampler","baseDiffuseRoughnessSampler","reflectivitySampler","ambientSampler","emissiveSampler","bumpSampler","lightmapSampler","opacitySampler","microSurfaceSampler","environmentBrdfSampler","boneSampler","metallicReflectanceSampler","reflectanceSampler","morphTargets","oitDepthSampler","oitFrontColorSampler","areaLightsLTC1Sampler","areaLightsLTC2Sampler"];L(_,E,!0);const d=["Material","Scene","Mesh"],S={maxSimultaneousLights:this._maxSimultaneousLights,maxSimultaneousMorphTargets:s.NUM_MORPH_INFLUENCERS};if(this._eventInfo.fallbacks=u,this._eventInfo.fallbackRank=o,this._eventInfo.defines=s,this._eventInfo.uniforms=_,this._eventInfo.attributes=c,this._eventInfo.samplers=E,this._eventInfo.uniformBuffersNames=d,this._eventInfo.customCode=void 0,this._eventInfo.mesh=e,this._eventInfo.indexParameters=S,this._callbackPluginEventGeneric(128,this._eventInfo),he.AddUniformsAndSamplers(_,E),le.AddUniforms(_),N(_),this._useVertexPulling){const e=t?.geometry;e&&(this._vertexPullingMetadata=y(e),this._vertexPullingMetadata&&this._vertexPullingMetadata.forEach((e,t)=>{_.push(`vp_${t}_info`)}))}else this._vertexPullingMetadata=null;O&&(O.PrepareUniforms(_,s),O.PrepareSamplers(E,s)),D({uniformsNames:_,uniformBuffersNames:d,samplers:E,defines:s,maxSimultaneousLights:this._maxSimultaneousLights,shaderLanguage:this._shaderLanguage});const A={};this.customShaderNameResolve&&(T=this.customShaderNameResolve(T,_,d,E,s,c,A));const m=s.toString(),f=h.createEffect(T,{attributes:c,uniformsNames:_,uniformBuffersNames:d,samplers:E,defines:m,fallbacks:u,onCompiled:a,onError:r,indexParameters:S,processFinalCode:A.processFinalCode,processCodeAfterIncludes:this._eventInfo.customCode,multiTarget:s.PREPASS,shaderLanguage:this._shaderLanguage,extraInitializationsAsync:this._shadersLoaded?void 0:async()=>{1===this.shaderLanguage?await Promise.all([import("./pbr.vertex-DEVdZ2Bz.esm.min.js"),import("./pbr.fragment-B94T1htL.esm.min.js")]):await Promise.all([import("./pbr.vertex-DC7bv7OC.esm.min.js"),import("./pbr.fragment-DMOa3ju6.esm.min.js")]),this._shadersLoaded=!0}},h);return this._eventInfo.customCode=void 0,f}_prepareDefines(e,t,s,a=null,n=null){const l=t.hasThinInstances,h=this.getScene(),c=h.getEngine();U(h,e,s,!0,this._maxSimultaneousLights,this._disableLighting),s._needNormals=!0,F(h,s);const T=this.needAlphaBlendingForMesh(e)&&this.getScene().useOrderIndependentTransparency;if(v(h,s,this.canRenderToMRT&&!T),P(h,s,T),he.PrepareDefines(c.currentRenderPassId,e,s),s.METALLICWORKFLOW=this.isMetallicWorkflow(),s._areTexturesDirty){s._needUVs=!1;for(let e=1;e<=i.MAX_SUPPORTED_UV_SETS;++e)s["MAINUV"+e]=!1;if(h.texturesEnabled){s.ALBEDODIRECTUV=0,s.BASE_WEIGHTDIRECTUV=0,s.BASE_DIFFUSE_ROUGHNESSDIRECTUV=0,s.AMBIENTDIRECTUV=0,s.OPACITYDIRECTUV=0,s.EMISSIVEDIRECTUV=0,s.REFLECTIVITYDIRECTUV=0,s.MICROSURFACEMAPDIRECTUV=0,s.METALLIC_REFLECTANCEDIRECTUV=0,s.REFLECTANCEDIRECTUV=0,s.BUMPDIRECTUV=0,s.LIGHTMAPDIRECTUV=0,c.getCaps().textureLOD&&(s.LODBASEDMICROSFURACE=!0),this._albedoTexture&&u.DiffuseTextureEnabled?(o(this._albedoTexture,s,"ALBEDO"),s.GAMMAALBEDO=this._albedoTexture.gammaSpace):s.ALBEDO=!1,this._baseWeightTexture&&u.BaseWeightTextureEnabled?o(this._baseWeightTexture,s,"BASE_WEIGHT"):s.BASE_WEIGHT=!1,this._baseDiffuseRoughnessTexture&&u.BaseDiffuseRoughnessTextureEnabled?o(this._baseDiffuseRoughnessTexture,s,"BASE_DIFFUSE_ROUGHNESS"):s.BASE_DIFFUSE_ROUGHNESS=!1,this._ambientTexture&&u.AmbientTextureEnabled?(o(this._ambientTexture,s,"AMBIENT"),s.AMBIENTINGRAYSCALE=this._useAmbientInGrayScale):s.AMBIENT=!1,this._opacityTexture&&u.OpacityTextureEnabled?(o(this._opacityTexture,s,"OPACITY"),s.OPACITYRGB=this._opacityTexture.getAlphaFromRGB):s.OPACITY=!1;const e=this._getReflectionTexture(),t=this._forceIrradianceInFragment||this.realTimeFiltering||this._twoSidedLighting||c.getCaps().maxVaryingVectors<=8||null!=this._baseDiffuseRoughnessTexture;k(h,e,s,this.realTimeFiltering,this.realTimeFilteringQuality,!t),this._lightmapTexture&&u.LightmapTextureEnabled?(o(this._lightmapTexture,s,"LIGHTMAP"),s.USELIGHTMAPASSHADOWMAP=this._useLightmapAsShadowmap,s.GAMMALIGHTMAP=this._lightmapTexture.gammaSpace,s.RGBDLIGHTMAP=this._lightmapTexture.isRGBD):s.LIGHTMAP=!1,this._emissiveTexture&&u.EmissiveTextureEnabled?(o(this._emissiveTexture,s,"EMISSIVE"),s.GAMMAEMISSIVE=this._emissiveTexture.gammaSpace):s.EMISSIVE=!1,u.SpecularTextureEnabled?(this._metallicTexture?(o(this._metallicTexture,s,"REFLECTIVITY"),s.ROUGHNESSSTOREINMETALMAPALPHA=this._useRoughnessFromMetallicTextureAlpha,s.ROUGHNESSSTOREINMETALMAPGREEN=!this._useRoughnessFromMetallicTextureAlpha&&this._useRoughnessFromMetallicTextureGreen,s.METALLNESSSTOREINMETALMAPBLUE=this._useMetallnessFromMetallicTextureBlue,s.AOSTOREINMETALMAPRED=this._useAmbientOcclusionFromMetallicTextureRed,s.REFLECTIVITY_GAMMA=!1):this._reflectivityTexture?(o(this._reflectivityTexture,s,"REFLECTIVITY"),s.MICROSURFACEFROMREFLECTIVITYMAP=this._useMicroSurfaceFromReflectivityMapAlpha,s.MICROSURFACEAUTOMATIC=this._useAutoMicroSurfaceFromReflectivityMap,s.REFLECTIVITY_GAMMA=this._reflectivityTexture.gammaSpace):s.REFLECTIVITY=!1,this._metallicReflectanceTexture||this._reflectanceTexture?(s.METALLIC_REFLECTANCE_USE_ALPHA_ONLY=this._useOnlyMetallicFromMetallicReflectanceTexture,this._metallicReflectanceTexture?(o(this._metallicReflectanceTexture,s,"METALLIC_REFLECTANCE"),s.METALLIC_REFLECTANCE_GAMMA=this._metallicReflectanceTexture.gammaSpace):s.METALLIC_REFLECTANCE=!1,this._reflectanceTexture&&(!this._metallicReflectanceTexture||this._metallicReflectanceTexture&&this._useOnlyMetallicFromMetallicReflectanceTexture)?(o(this._reflectanceTexture,s,"REFLECTANCE"),s.REFLECTANCE_GAMMA=this._reflectanceTexture.gammaSpace):s.REFLECTANCE=!1):(s.METALLIC_REFLECTANCE=!1,s.REFLECTANCE=!1),this._microSurfaceTexture?o(this._microSurfaceTexture,s,"MICROSURFACEMAP"):s.MICROSURFACEMAP=!1):(s.REFLECTIVITY=!1,s.MICROSURFACEMAP=!1),c.getCaps().standardDerivatives&&this._bumpTexture&&u.BumpTextureEnabled&&!this._disableBumpMap?(o(this._bumpTexture,s,"BUMP"),this._useParallax&&this._albedoTexture&&u.DiffuseTextureEnabled?(s.PARALLAX=!0,s.PARALLAX_RHS=h.useRightHandedSystem,s.PARALLAXOCCLUSION=!!this._useParallaxOcclusion):s.PARALLAX=!1,s.OBJECTSPACE_NORMALMAP=this._useObjectSpaceNormalMap):(s.BUMP=!1,s.PARALLAX=!1,s.PARALLAX_RHS=!1,s.PARALLAXOCCLUSION=!1,s.OBJECTSPACE_NORMALMAP=!1),this._environmentBRDFTexture&&u.ReflectionTextureEnabled?(s.ENVIRONMENTBRDF=!0,s.ENVIRONMENTBRDF_RGBD=this._environmentBRDFTexture.isRGBD):(s.ENVIRONMENTBRDF=!1,s.ENVIRONMENTBRDF_RGBD=!1),this._shouldUseAlphaFromAlbedoTexture()?s.ALPHAFROMALBEDO=!0:s.ALPHAFROMALBEDO=!1}s.SPECULAROVERALPHA=this._useSpecularOverAlpha,this._lightFalloff===r.LIGHTFALLOFF_STANDARD?(s.USEPHYSICALLIGHTFALLOFF=!1,s.USEGLTFLIGHTFALLOFF=!1):this._lightFalloff===r.LIGHTFALLOFF_GLTF?(s.USEPHYSICALLIGHTFALLOFF=!1,s.USEGLTFLIGHTFALLOFF=!0):(s.USEPHYSICALLIGHTFALLOFF=!0,s.USEGLTFLIGHTFALLOFF=!1),s.RADIANCEOVERALPHA=this._useRadianceOverAlpha,!this.backFaceCulling&&this._twoSidedLighting?s.TWOSIDEDLIGHTING=!0:s.TWOSIDEDLIGHTING=!1,s.MIRRORED=!!h._mirroredCameraPosition,s.SPECULARAA=c.getCaps().standardDerivatives&&this._enableSpecularAntiAliasing}(s._areTexturesDirty||s._areMiscDirty)&&(s.ALPHATESTVALUE=`${this._alphaCutOff}${this._alphaCutOff%1==0?".":""}`,s.PREMULTIPLYALPHA=this.alphaMode===i.ALPHA_PREMULTIPLIED||this.alphaMode===i.ALPHA_PREMULTIPLIED_PORTERDUFF,s.ALPHABLEND=this.needAlphaBlendingForMesh(e),s.ALPHAFRESNEL=this._useAlphaFresnel||this._useLinearAlphaFresnel,s.LINEARALPHAFRESNEL=this._useLinearAlphaFresnel),s._areTexturesDirty&&(s.TEXTURE_REPETITION_MODE=c.version>1||c.isWebGPU?this.textureRepetitionMode:0),s._areImageProcessingDirty&&this._imageProcessingConfiguration&&this._imageProcessingConfiguration.prepareDefines(s),s.FORCENORMALFORWARD=this._forceNormalForward,s.RADIANCEOCCLUSION=this._useRadianceOcclusion,s.HORIZONOCCLUSION=this._useHorizonOcclusion,s._areMiscDirty&&(H(e,h,this._useLogarithmicDepth,this.pointsCloud,this.fogEnabled,this.needAlphaTestingForMesh(e),s,this._applyDecalMapAfterDetailMap,this._useVertexPulling,t,this._isVertexOutputInvariant),s.UNLIT=this._unlit||(this.pointsCloud||this.wireframe)&&!e.isVerticesDataPresent(R.NormalKind),s.DEBUGMODE=this._debugMode),B(h,c,this,s,!!a,n,l),this._eventInfo.defines=s,this._eventInfo.mesh=e,this._callbackPluginEventPrepareDefinesBeforeAttributes(this._eventInfo),G(e,s,!0,!0,!0,this._transparencyMode!==r.PBRMATERIAL_OPAQUE),this._callbackPluginEventPrepareDefines(this._eventInfo)}forceCompilation(e,t,s){const i={clipPlane:!1,useInstances:!1,...s};this._uniformBufferLayoutBuilt||this.buildUniformLayout(),this._callbackPluginEventGeneric(4,this._eventInfo);(()=>{if(this._breakShaderLoadedCheck)return;const s=new be(this._eventInfo.defineNames),a=this._prepareEffect(e,e,s,void 0,void 0,i.useInstances,i.clipPlane);this._onEffectCreatedObservable&&(Ce.effect=a,Ce.subMesh=null,this._onEffectCreatedObservable.notifyObservers(Ce)),a.isReady()?t&&t(this):a.onCompileObservable.add(()=>{t&&t(this)})})()}buildUniformLayout(){const e=this._uniformBuffer;e.addUniform("vAlbedoInfos",2),e.addUniform("vBaseWeightInfos",2),e.addUniform("vBaseDiffuseRoughnessInfos",2),e.addUniform("vAmbientInfos",4),e.addUniform("vOpacityInfos",2),e.addUniform("vEmissiveInfos",2),e.addUniform("vLightmapInfos",2),e.addUniform("vReflectivityInfos",3),e.addUniform("vMicroSurfaceSamplerInfos",2),e.addUniform("vBumpInfos",3),e.addUniform("albedoMatrix",16),e.addUniform("baseWeightMatrix",16),e.addUniform("baseDiffuseRoughnessMatrix",16),e.addUniform("ambientMatrix",16),e.addUniform("opacityMatrix",16),e.addUniform("emissiveMatrix",16),e.addUniform("lightmapMatrix",16),e.addUniform("reflectivityMatrix",16),e.addUniform("microSurfaceSamplerMatrix",16),e.addUniform("bumpMatrix",16),e.addUniform("vTangentSpaceParams",2),e.addUniform("vAlbedoColor",4),e.addUniform("baseWeight",1),e.addUniform("baseDiffuseRoughness",1),e.addUniform("vLightingIntensity",4),e.addUniform("pointSize",1),e.addUniform("vReflectivityColor",4),e.addUniform("vEmissiveColor",3),e.addUniform("vAmbientColor",3),e.addUniform("vDebugMode",2),e.addUniform("vMetallicReflectanceFactors",4),e.addUniform("vMetallicReflectanceInfos",2),e.addUniform("metallicReflectanceMatrix",16),e.addUniform("vReflectanceInfos",2),e.addUniform("reflectanceMatrix",16),e.addUniform("cameraInfo",4),e.addUniform("vTextureRepetitionHexTilingParams",4),V(e,!0,!0,!0,!0,!0),super.buildUniformLayout()}bindForSubMesh(e,t,s){const i=this.getScene(),a=s.materialDefines;if(!a)return;const r=s.effect;if(!r)return;this._activeEffect=r,t.getMeshUniformBuffer().bindToEffect(r,"Mesh"),t.transferToEffect(e);const n=i.getEngine();this._uniformBuffer.bindToEffect(r,"Material"),this.prePassConfiguration.bindForSubMesh(this._activeEffect,i,t,e,this.isFrozen),he.Bind(n.currentRenderPassId,this._activeEffect,t,e,this);const l=i.activeCamera;l?this._uniformBuffer.updateFloat4("cameraInfo",l.minZ,l.maxZ,0,0):this._uniformBuffer.updateFloat4("cameraInfo",0,0,0,0);const o=this.textureRepetitionHexTilingParams;this._uniformBuffer.updateFloat4("vTextureRepetitionHexTilingParams",o[0],o[1],o[2],o[3]),this._eventInfo.subMesh=s,this._callbackPluginEventHardBindForSubMesh(this._eventInfo),a.OBJECTSPACE_NORMALMAP&&(e.toNormalMatrix(this._normalMatrix),this.bindOnlyNormalMatrix(this._normalMatrix));const T=this._mustRebind(i,r,s,t.visibility),_=n._features.needToAlwaysBindUniformBuffers;X(t,this._activeEffect,this.prePassConfiguration),this._vertexPullingMetadata&&W(this._activeEffect,this._vertexPullingMetadata);let E=null;const R=this._uniformBuffer;if(T){if(this.bindViewProjection(r),E=this._getReflectionTexture(),!R.useUbo||!this.isFrozen||!R.isSync||s._drawWrapper._forceRebindOnNextCall){if(i.texturesEnabled&&(this._albedoTexture&&u.DiffuseTextureEnabled&&(R.updateFloat2("vAlbedoInfos",this._albedoTexture.coordinatesIndex,this._albedoTexture.level),c(this._albedoTexture,R,"albedo")),this._baseWeightTexture&&u.BaseWeightTextureEnabled&&(R.updateFloat2("vBaseWeightInfos",this._baseWeightTexture.coordinatesIndex,this._baseWeightTexture.level),c(this._baseWeightTexture,R,"baseWeight")),this._baseDiffuseRoughnessTexture&&u.BaseDiffuseRoughnessTextureEnabled&&(R.updateFloat2("vBaseDiffuseRoughnessInfos",this._baseDiffuseRoughnessTexture.coordinatesIndex,this._baseDiffuseRoughnessTexture.level),c(this._baseDiffuseRoughnessTexture,R,"baseDiffuseRoughness")),this._ambientTexture&&u.AmbientTextureEnabled&&(R.updateFloat4("vAmbientInfos",this._ambientTexture.coordinatesIndex,this._ambientTexture.level,this._ambientTextureStrength,this._ambientTextureImpactOnAnalyticalLights),c(this._ambientTexture,R,"ambient")),this._opacityTexture&&u.OpacityTextureEnabled&&(R.updateFloat2("vOpacityInfos",this._opacityTexture.coordinatesIndex,this._opacityTexture.level),c(this._opacityTexture,R,"opacity")),this._emissiveTexture&&u.EmissiveTextureEnabled&&(R.updateFloat2("vEmissiveInfos",this._emissiveTexture.coordinatesIndex,this._emissiveTexture.level),c(this._emissiveTexture,R,"emissive")),this._lightmapTexture&&u.LightmapTextureEnabled&&(R.updateFloat2("vLightmapInfos",this._lightmapTexture.coordinatesIndex,this._lightmapTexture.level),c(this._lightmapTexture,R,"lightmap")),u.SpecularTextureEnabled&&(this._metallicTexture?(R.updateFloat3("vReflectivityInfos",this._metallicTexture.coordinatesIndex,this._metallicTexture.level,this._ambientTextureStrength),c(this._metallicTexture,R,"reflectivity")):this._reflectivityTexture&&(R.updateFloat3("vReflectivityInfos",this._reflectivityTexture.coordinatesIndex,this._reflectivityTexture.level,1),c(this._reflectivityTexture,R,"reflectivity")),this._metallicReflectanceTexture&&(R.updateFloat2("vMetallicReflectanceInfos",this._metallicReflectanceTexture.coordinatesIndex,this._metallicReflectanceTexture.level),c(this._metallicReflectanceTexture,R,"metallicReflectance")),this._reflectanceTexture&&a.REFLECTANCE&&(R.updateFloat2("vReflectanceInfos",this._reflectanceTexture.coordinatesIndex,this._reflectanceTexture.level),c(this._reflectanceTexture,R,"reflectance")),this._microSurfaceTexture&&(R.updateFloat2("vMicroSurfaceSamplerInfos",this._microSurfaceTexture.coordinatesIndex,this._microSurfaceTexture.level),c(this._microSurfaceTexture,R,"microSurfaceSampler"))),this._bumpTexture&&n.getCaps().standardDerivatives&&u.BumpTextureEnabled&&!this._disableBumpMap&&(R.updateFloat3("vBumpInfos",this._bumpTexture.coordinatesIndex,this._bumpTexture.level,this._parallaxScaleBias),c(this._bumpTexture,R,"bump"),i._mirroredCameraPosition?R.updateFloat2("vTangentSpaceParams",this._invertNormalMapX?1:-1,this._invertNormalMapY?1:-1):R.updateFloat2("vTangentSpaceParams",this._invertNormalMapX?-1:1,this._invertNormalMapY?-1:1)),Y(i,a,R,this._reflectionColor,E,this.realTimeFiltering,!0,!0,!0,!0,!0)),this.pointsCloud&&R.updateFloat("pointSize",this.pointSize),a.METALLICWORKFLOW){w.Color4[0].r=void 0===this._metallic||null===this._metallic?1:this._metallic,w.Color4[0].g=void 0===this._roughness||null===this._roughness?1:this._roughness;const e=this.subSurface?._indexOfRefraction??1.5,t=1;w.Color4[0].b=e;const s=Math.pow((e-t)/(e+t),2);w.Color4[0].a=s,R.updateDirectColor4("vReflectivityColor",w.Color4[0]),R.updateColor4("vMetallicReflectanceFactors",this._metallicReflectanceColor,this._metallicF0Factor)}else R.updateColor4("vReflectivityColor",this._reflectivityColor,this._microSurface);R.updateColor3("vEmissiveColor",u.EmissiveTextureEnabled?this._emissiveColor:h.BlackReadOnly),!a.SS_REFRACTION&&this.subSurface?._linkRefractionWithTransparency?R.updateColor4("vAlbedoColor",this._albedoColor,1):R.updateColor4("vAlbedoColor",this._albedoColor,this.alpha),R.updateFloat("baseWeight",this._baseWeight),R.updateFloat("baseDiffuseRoughness",this._baseDiffuseRoughness||0),this._lightingInfos.x=this._directIntensity,this._lightingInfos.y=this._emissiveIntensity,this._lightingInfos.z=this._environmentIntensity*i.environmentIntensity,this._lightingInfos.w=this._specularIntensity,R.updateVector4("vLightingIntensity",this._lightingInfos),i.ambientColor.multiplyToRef(this._ambientColor,this._globalAmbientColor),R.updateColor3("vAmbientColor",this._globalAmbientColor),R.updateFloat2("vDebugMode",this.debugLimit,this.debugFactor)}i.texturesEnabled&&(this._albedoTexture&&u.DiffuseTextureEnabled&&R.setTexture("albedoSampler",this._albedoTexture),this._baseWeightTexture&&u.BaseWeightTextureEnabled&&R.setTexture("baseWeightSampler",this._baseWeightTexture),this._baseDiffuseRoughnessTexture&&u.BaseDiffuseRoughnessTextureEnabled&&R.setTexture("baseDiffuseRoughnessSampler",this._baseDiffuseRoughnessTexture),this._ambientTexture&&u.AmbientTextureEnabled&&R.setTexture("ambientSampler",this._ambientTexture),this._opacityTexture&&u.OpacityTextureEnabled&&R.setTexture("opacitySampler",this._opacityTexture),z(i,a,R,E,this.realTimeFiltering),a.ENVIRONMENTBRDF&&R.setTexture("environmentBrdfSampler",this._environmentBRDFTexture),this._emissiveTexture&&u.EmissiveTextureEnabled&&R.setTexture("emissiveSampler",this._emissiveTexture),this._lightmapTexture&&u.LightmapTextureEnabled&&R.setTexture("lightmapSampler",this._lightmapTexture),u.SpecularTextureEnabled&&(this._metallicTexture?R.setTexture("reflectivitySampler",this._metallicTexture):this._reflectivityTexture&&R.setTexture("reflectivitySampler",this._reflectivityTexture),this._metallicReflectanceTexture&&R.setTexture("metallicReflectanceSampler",this._metallicReflectanceTexture),this._reflectanceTexture&&a.REFLECTANCE&&R.setTexture("reflectanceSampler",this._reflectanceTexture),this._microSurfaceTexture&&R.setTexture("microSurfaceSampler",this._microSurfaceTexture)),this._bumpTexture&&n.getCaps().standardDerivatives&&u.BumpTextureEnabled&&!this._disableBumpMap&&R.setTexture("bumpSampler",this._bumpTexture)),this.getScene().useOrderIndependentTransparency&&this.needAlphaBlendingForMesh(t)&&this.getScene().depthPeelingRenderer.bind(r),this._eventInfo.subMesh=s,this._callbackPluginEventBindForSubMesh(this._eventInfo),K(this._activeEffect,this,i),this.bindEyePosition(r)}else _&&(this._needToBindSceneUbo=!0);!T&&this.isFrozen&&!_||!i.lightsEnabled||this._disableLighting||j(i,t,this._activeEffect,a,this._maxSimultaneousLights),!T&&this.isFrozen||((i.fogEnabled&&t.applyFog&&i.fogMode!==Q.FOGMODE_NONE||E||this.subSurface.refractionTexture||t.receiveShadows||a.PREPASS||a.CLUSTLIGHT_BATCH)&&this.bindView(r),Z(i,t,this._activeEffect,!0),a.NUM_MORPH_INFLUENCERS&&J(t,this._activeEffect),a.BAKED_VERTEX_ANIMATION_TEXTURE&&t.bakedVertexAnimationManager?.bind(r,a.INSTANCES),this._imageProcessingConfiguration.bind(this._activeEffect),$(a,this._activeEffect,i)),this._afterBind(t,this._activeEffect,s),R.update()}getAnimatables(){const e=super.getAnimatables();return this._albedoTexture&&this._albedoTexture.animations&&this._albedoTexture.animations.length>0&&e.push(this._albedoTexture),this._baseWeightTexture&&this._baseWeightTexture.animations&&this._baseWeightTexture.animations.length>0&&e.push(this._baseWeightTexture),this._baseDiffuseRoughnessTexture&&this._baseDiffuseRoughnessTexture.animations&&this._baseDiffuseRoughnessTexture.animations.length>0&&e.push(this._baseDiffuseRoughnessTexture),this._ambientTexture&&this._ambientTexture.animations&&this._ambientTexture.animations.length>0&&e.push(this._ambientTexture),this._opacityTexture&&this._opacityTexture.animations&&this._opacityTexture.animations.length>0&&e.push(this._opacityTexture),this._reflectionTexture&&this._reflectionTexture.animations&&this._reflectionTexture.animations.length>0&&e.push(this._reflectionTexture),this._emissiveTexture&&this._emissiveTexture.animations&&this._emissiveTexture.animations.length>0&&e.push(this._emissiveTexture),this._metallicTexture&&this._metallicTexture.animations&&this._metallicTexture.animations.length>0?e.push(this._metallicTexture):this._reflectivityTexture&&this._reflectivityTexture.animations&&this._reflectivityTexture.animations.length>0&&e.push(this._reflectivityTexture),this._bumpTexture&&this._bumpTexture.animations&&this._bumpTexture.animations.length>0&&e.push(this._bumpTexture),this._lightmapTexture&&this._lightmapTexture.animations&&this._lightmapTexture.animations.length>0&&e.push(this._lightmapTexture),this._metallicReflectanceTexture&&this._metallicReflectanceTexture.animations&&this._metallicReflectanceTexture.animations.length>0&&e.push(this._metallicReflectanceTexture),this._reflectanceTexture&&this._reflectanceTexture.animations&&this._reflectanceTexture.animations.length>0&&e.push(this._reflectanceTexture),this._microSurfaceTexture&&this._microSurfaceTexture.animations&&this._microSurfaceTexture.animations.length>0&&e.push(this._microSurfaceTexture),e}_getReflectionTexture(){return this._reflectionTexture?this._reflectionTexture:this.getScene().environmentTexture}getActiveTextures(){const e=super.getActiveTextures();return this._albedoTexture&&e.push(this._albedoTexture),this._baseWeightTexture&&e.push(this._baseWeightTexture),this._baseDiffuseRoughnessTexture&&e.push(this._baseDiffuseRoughnessTexture),this._ambientTexture&&e.push(this._ambientTexture),this._opacityTexture&&e.push(this._opacityTexture),this._reflectionTexture&&e.push(this._reflectionTexture),this._emissiveTexture&&e.push(this._emissiveTexture),this._reflectivityTexture&&e.push(this._reflectivityTexture),this._metallicTexture&&e.push(this._metallicTexture),this._metallicReflectanceTexture&&e.push(this._metallicReflectanceTexture),this._reflectanceTexture&&e.push(this._reflectanceTexture),this._microSurfaceTexture&&e.push(this._microSurfaceTexture),this._bumpTexture&&e.push(this._bumpTexture),this._lightmapTexture&&e.push(this._lightmapTexture),e}hasTexture(e){return!!super.hasTexture(e)||(this._albedoTexture===e||(this._baseWeightTexture===e||(this._baseDiffuseRoughnessTexture===e||(this._ambientTexture===e||(this._opacityTexture===e||(this._reflectionTexture===e||(this._emissiveTexture===e||(this._reflectivityTexture===e||(this._metallicTexture===e||(this._metallicReflectanceTexture===e||(this._reflectanceTexture===e||(this._microSurfaceTexture===e||(this._bumpTexture===e||this._lightmapTexture===e)))))))))))))}setPrePassRenderer(){if(!this.subSurface?.isScatteringEnabled)return!1;const e=this.getScene().enableSubSurfaceForPrePass();return e&&(e.enabled=!0),!0}dispose(e,t){this._breakShaderLoadedCheck=!0,t&&(this._environmentBRDFTexture&&this.getScene().environmentBRDFTexture!==this._environmentBRDFTexture&&this._environmentBRDFTexture.dispose(),this._albedoTexture?.dispose(),this._baseWeightTexture?.dispose(),this._baseDiffuseRoughnessTexture?.dispose(),this._ambientTexture?.dispose(),this._opacityTexture?.dispose(),this._reflectionTexture?.dispose(),this._emissiveTexture?.dispose(),this._metallicTexture?.dispose(),this._reflectivityTexture?.dispose(),this._bumpTexture?.dispose(),this._lightmapTexture?.dispose(),this._metallicReflectanceTexture?.dispose(),this._reflectanceTexture?.dispose(),this._microSurfaceTexture?.dispose()),this._renderTargets.dispose(),this._imageProcessingConfiguration&&this._imageProcessingObserver&&this._imageProcessingConfiguration.onUpdateParameters.remove(this._imageProcessingObserver),super.dispose(e,t)}},n=new WeakMap,(()=>{const e="function"==typeof Symbol&&Symbol.metadata?Object.create(_[Symbol.metadata]??null):void 0;T=[l("_markAllSubMeshesAsMiscDirty")],a(r,null,T,{kind:"accessor",name:"debugMode",static:!1,private:!1,access:{has:e=>"debugMode"in e,get:e=>e.debugMode,set:(e,t)=>{e.debugMode=t}},metadata:e},E,d),e&&Object.defineProperty(r,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:e})})(),r.PBRMATERIAL_OPAQUE=q.MATERIAL_OPAQUE,r.PBRMATERIAL_ALPHATEST=q.MATERIAL_ALPHATEST,r.PBRMATERIAL_ALPHABLEND=q.MATERIAL_ALPHABLEND,r.PBRMATERIAL_ALPHATESTANDBLEND=q.MATERIAL_ALPHATESTANDBLEND,r.DEFAULT_AO_ON_ANALYTICAL_LIGHTS=0,r.LIGHTFALLOFF_PHYSICAL=0,r.LIGHTFALLOFF_GLTF=1,r.LIGHTFALLOFF_STANDARD=2,r.ForceGLSL=!1,r})();Object.getOwnPropertyDescriptor(Me.prototype,"decalMap")||Object.defineProperty(Me.prototype,"decalMap",ie("PBRBaseMaterial","decalMap"));export{Me as P};
//# sourceMappingURL=pbrBaseMaterial.pure-C7xqwtRM.esm.min.js.map