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) 2.33 kB
import{T as e,bB as t,o as i,F as n}from"./index-B8IgtevW.esm.min.js";import{r}from"./gltf-uri-BbzbM-yC.esm.min.js";const a={magFilter:"linear",minFilter:"linear"},o={magFilter:"linear",minFilter:"linear",mipmapFilter:"linear"};function c(e){const t=1.4999984284682104,i=3.999982863580422,r=new n(36);for(let n=0;n<3;n++){const a=e[n],o=e[3+n],c=e[6+n],s=e[9+n],u=e[12+n],l=e[15+n],m=e[18+n],p=e[21+n],f=e[24+n];r[n]=.3333338747897695*(s+u)+.33333298856284405*l,r[4+n]=o*t,r[8+n]=c*t,r[12+n]=a*t,r[16+n]=f*i,r[20+n]=m*i,r[24+n]=1.3333326611423701*l-.6666653397393608*(s+u),r[28+n]=p*i,r[32+n]=1.999991431790211*(s-u)}return r}function s(e,t,i,n,r){return{specularCube:e,specularCubeView:e.createView({dimension:"cube"}),brdfLut:t,brdfLutView:t.createView(),cubeSampler:r._device.createSampler(o),brdfSampler:r._device.createSampler(a),irradianceSH:i,sphericalHarmonics:c(i),lodGenerationScale:n}}let u=null,l=null;function m(e){const n=e._device;u&&l===n||(u=n.createComputePipeline({layout:"auto",compute:{module:n.createShaderModule({code:t}),entryPoint:"main"}}),l=n);const r=256,a=n.createTexture({size:{width:r,height:r},format:"rgba16float",usage:i.TEXTURE_BINDING|i.STORAGE_BINDING}),o=n.createBindGroup({layout:u.getBindGroupLayout(0),entries:[{binding:0,resource:a.createView()}]}),c=n.createCommandEncoder(),s=c.beginComputePass();return s.setPipeline(u),s.setBindGroup(0,o),s.dispatchWorkgroups(Math.ceil(32),Math.ceil(32)),s.end(),n.queue.submit([c.finish()]),a}async function p(t,i,n,a){const o=t.images[n];if(void 0!==o.bufferView){const e=t.bufferViews[o.bufferView],n=i.byteOffset+(e.byteOffset??0),r=i.buffer.slice(n,n+e.byteLength),a=new Blob([r],{type:o.mimeType??"image/png"});return createImageBitmap(a,{premultiplyAlpha:"none",colorSpaceConversion:"none"})}if(o.uri){const t=r(o.uri,a),i=await fetch(t);i.ok||e(110,i.status,i.statusText);const n=await i.blob();return createImageBitmap(n,{premultiplyAlpha:"none",colorSpaceConversion:"none"})}e(111)}function f(e,t){e[36]=t._environmentRotation??0;const i=t._envTextures?.sphericalHarmonics;i&&e.set(i,40)}function d(e){const t=e._sceneUboContributors??=[];t.includes(f)||t.push(f)}export{s as assembleEnvironmentTextures,m as generateBrdfLut,d as registerEnvSceneUniforms,p as resolveImage}; //# sourceMappingURL=ibl-env-assembly-B45lwij0.esm.min.js.map