@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.
1 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-BPURObVq.esm.min.js";import{G as ae}from"./brdfTextureTools-CdNQgSAC.esm.min.js";import{M as re,D as ne}from"./material.detailMapConfiguration-FEC73qwc.esm.min.js";import{P as le,M as he,a as ue,U as oe}from"./prepass.defines-DBIG3K_p.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"))