@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) • 1.83 kB
JavaScript
const e={id:"EXT_lights_image_based",async applyAsset(e,s,a){const t=a._json,n=t.extensions?.EXT_lights_image_based?.lights,i=t.scenes?.[t.scene??0],o=i?.extensions?.EXT_lights_image_based?.light;if(!n?.length||void 0===o)return{};const r=n[o];if(!r?.specularImages?.length||!r.irradianceCoefficients)return{};const l=a._engine,m=r.specularImageSize,c=r.specularImages.length,g=r.specularImages.flat(),{resolveImage:p}=await import("./ibl-env-assembly-Cmi_bHX5.esm.min.js"),u=await Promise.all(g.map(e=>p(t,a._binChunk,e,a._baseUrl))),{uploadCubemapRGBD:b}=await import("./ibl-cubemap-upload-QZ7gVQ_d.esm.min.js"),_=b(l,u,m,c);for(const e of u)e.close();const{generateBrdfLut:d}=await import("./ibl-env-assembly-Cmi_bHX5.esm.min.js"),f=d(l),h=r.intensity??1,v=function(e,s){const a=s/Math.PI,t=new Float32Array(27);for(let s=0;s<3;s++){const n=e[0][s]*a,i=e[1][s]*a,o=e[2][s]*a,r=e[3][s]*a,l=e[4][s]*a,m=e[5][s]*a,c=e[6][s]*a,g=e[7][s]*a,p=e[8][s]*a,u=1/Math.PI;t[0+s]=-1.02333*r*u,t[3+s]=-1.02333*i*u,t[6+s]=1.02333*o*u,t[9+s]=(.886277*n-.247708*c+.429043*p)*u,t[12+s]=(.886277*n-.247708*c-.429043*p)*u,t[15+s]=(.886277*n+.495417*c)*u,t[18+s]=-.858086*m*u,t[21+s]=-.858086*g*u,t[24+s]=.858086*l*u}return t}(r.irradianceCoefficients,h),y=(c-1)/Math.log2(m),{assembleEnvironmentTextures:w}=await import("./ibl-env-assembly-Cmi_bHX5.esm.min.js"),I=w(_,f,v,y,l),j=r.rotation?(x=r.rotation,-2*Math.atan2(x[1],x[3])):0;var x;const{registerEnvSceneUniforms:E}=await import("./ibl-env-assembly-Cmi_bHX5.esm.min.js");return{_sceneSetup:e=>{e._envTextures=I,j&&(e.envRotationY=j),E(e),e._disposables.push(()=>{_.destroy(),f.destroy()}),e.imageProcessing.toneMappingEnabled=!0,e.imageProcessing.exposure=.8,e.imageProcessing.contrast=1.2}}}};export{e as default};
//# sourceMappingURL=gltf-ext-lights-image-based-BuZlYOTK.esm.min.js.map