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) 1.81 kB
import{as as e,S as n}from"./index-DFZFpUG-.esm.min.js";let t=null,i=null,r=null,l=null,o=null;function a(a){const u=a._device;u!==o&&(t?.clear(),t=null,i=null,r=null,l=null,o=null,o=u),i??=u.createShaderModule({code:"@group(0)@binding(0)var t:texture_2d<f32>;@group(0)@binding(1)var s:sampler;\nstruct V{@builtin(position)p:vec4f,@location(0)u:vec2f};\n@vertex fn vs(@builtin(vertex_index)i:u32)->V{let p=array<vec2f,3>(vec2f(-1,-1),vec2f(3,-1),vec2f(-1,3))[i];return V(vec4f(p,0,1),p*vec2f(.5,-.5)+.5);}\n@fragment fn fs(v:V)->@location(0)vec4f{return textureSample(t,s,v.u);}"}),r??=e(a),l??=u.createBindGroupLayout({entries:[{binding:0,visibility:n.FRAGMENT,texture:{sampleType:"float"}},{binding:1,visibility:n.FRAGMENT,sampler:{}}]})}function u(e,n,t){const i=e._device,r=i.createCommandEncoder();s(e,n,r,t),i.queue.submit([r.finish()])}function s(e,n,o,u){if(n.mipLevelCount<=1)return;const s=e._device,c=function(e,n){const r=e._device;a(e),t??=new Map;let o=t.get(n);return o||(o=r.createRenderPipeline({layout:r.createPipelineLayout({bindGroupLayouts:[l]}),vertex:{module:i,entryPoint:"vs"},fragment:{module:i,entryPoint:"fs",targets:[{format:n}]},primitive:{topology:"triangle-list"}}),t.set(n,o)),o}(e,n.format),p=null!=u?{dimension:"2d",baseArrayLayer:u,arrayLayerCount:1}:{};for(let e=1;e<n.mipLevelCount;e++){const t=n.createView({baseMipLevel:e-1,mipLevelCount:1,...p}),i=n.createView({baseMipLevel:e,mipLevelCount:1,...p}),a=s.createBindGroup({layout:l,entries:[{binding:0,resource:t},{binding:1,resource:r}]}),u=o.beginRenderPass({colorAttachments:[{view:i,loadOp:"clear",storeOp:"store",clearValue:{r:0,g:0,b:0,a:0}}]});u.setPipeline(c),u.setBindGroup(0,a),u.draw(3),u.end()}}export{u as generateMipmaps,s as recordMipmaps}; //# sourceMappingURL=generate-mipmaps-Ciyl8G8r.esm.min.js.map