UNPKG

@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 (2 loc) 3.66 kB
import{S as e,a as t}from"./sphericalPolynomial.pure-CsRKkAN3.esm.min.js";import{C as n,o as s,aD as r,M as i,bo as a,bp as o}from"./index-BPURObVq.esm.min.js";import{_ as l}from"./environmentTextureTools.pure-DawhOrPy.esm.min.js";import{C as m}from"./cubeTexture.pure-CFZf4s_Z.esm.min.js";import{b as c,A as h}from"./glTFLoader.pure-Bdyl6AcK.esm.min.js";import"./thinEngine-DuQ_dtuu.esm.min.js";import"./abstractEngine.cubeTexture.pure-DReMqode.esm.min.js";import"./textureLoaderManager-CGf6Ha4H.esm.min.js";import"./morphTargetManager-CdEb1BHc.esm.min.js";import"./bone.pure-BcPT5kCP.esm.min.js";import"./skeleton-DinTjF3y.esm.min.js";import"./assetContainer-CAncviZo.esm.min.js";import"./objectModelMapping-ClgDmo5Q.esm.min.js";import"./spotLight.pure-5s2DDDIt.esm.min.js";class u extends m{constructor(e,t,s,r=n.TEXTUREFORMAT_RGBA,i=n.TEXTURETYPE_UNSIGNED_BYTE,a=!1,o=!1,l=n.TEXTURE_TRILINEAR_SAMPLINGMODE,m=null){super("",e),this._texture=e.getEngine().createRawCubeTexture(t,s,r,i,a,o,l,m)}update(e,t,n,s,r=null){this._texture.getEngine().updateRawCubeTexture(this._texture,e,t,n,s,r)}updateRGBDAsync(e,t=null,n=.8,s=0){return l(this._texture,e,t,n,s).then(()=>{})}clone(){return s.Clone(()=>{const e=this.getScene(),t=this._texture,n=new u(e,t._bufferViewArray,t.width,t.format,t.type,t.generateMipMaps,t.invertY,t.samplingMode,t._compression);return 13===t.source&&n.updateRGBDAsync(t._bufferViewArrayArray,t._sphericalPolynomial,t._lodGenerationScale,t._lodGenerationOffset),n},this)}}const d="EXT_lights_image_based";class g{constructor(e){this.name=d,this._loader=e,this.enabled=this._loader.isExtensionUsed(d)}dispose(){this._loader=null,delete this._lights}onLoading(){const e=this._loader.gltf.extensions;if(e&&e[this.name]){const t=e[this.name];this._lights=t.lights}}loadSceneAsync(e,t){return c.LoadExtensionAsync(e,t,this.name,async(n,s)=>{this._loader._allMaterialsDirtyRequired=!0;const r=new Array;r.push(this._loader.loadSceneAsync(e,t)),this._loader.logOpen(`${n}`);const i=h.Get(`${n}/light`,this._lights,s.light);return r.push(this._loadLightAsync(`/extensions/${this.name}/lights/${s.light}`,i).then(e=>{this._loader.babylonScene.environmentTexture=e})),this._loader.logClose(),await Promise.all(r).then(()=>{})})}_loadLightAsync(n,s){if(!s._loaded){const a=new Array;this._loader.logOpen(`${n}`);const o=new Array(s.specularImages.length);for(let e=0;e<s.specularImages.length;e++){const t=s.specularImages[e];o[e]=new Array(t.length);for(let s=0;s<t.length;s++){const r=`${n}/specularImages/${e}/${s}`;this._loader.logOpen(`${r}`);const i=t[s],l=h.Get(r,this._loader.gltf.images,i);a.push(this._loader.loadImageAsync(`/images/${i}`,l).then(t=>{o[e][s]=t})),this._loader.logClose()}}this._loader.logClose(),s._loaded=Promise.all(a).then(async()=>{const a=new u(this._loader.babylonScene,null,s.specularImageSize);if(a.name=s.name||"environment",s._babylonTexture=a,null!=s.intensity&&(a.level=s.intensity),s.rotation){let e=r.FromArray(s.rotation);this._loader.babylonScene.useRightHandedSystem||(e=r.Inverse(e)),i.FromQuaternionToRef(e,a.getReflectionTextureMatrix())}if(!s.irradianceCoefficients)throw new Error(`${n}: Irradiance coefficients are missing`);const l=e.FromArray(s.irradianceCoefficients);l.scaleInPlace(s.intensity),l.convertIrradianceToLambertianRadiance();const m=t.FromHarmonics(l),c=(o.length-1)/Math.log2(s.specularImageSize);return await a.updateRGBDAsync(o,m,c)})}return s._loaded.then(()=>s._babylonTexture)}}let p=!1;function _(){p||(p=!0,a(d),o(d,!0,e=>new g(e)))}_();export{g as EXT_lights_image_based,_ as RegisterEXT_lights_image_based}; //# sourceMappingURL=EXT_lights_image_based-CgTERlCG.esm.min.js.map