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.73 kB
import{o as e,p as t,ay as i,q as r}from"./index-B8IgtevW.esm.min.js";async function a(a,s){const o=s._recoverySource;if(!o)return;if("url"===o.kind){const t=await async function(t,i,a){const s=a.mipMaps??!0,o=a.addressModeU??"repeat",d=a.addressModeV??"repeat",m=a.invertY??!0,h=a.srgb??!1,n=a.premultiplyAlpha??!1,p=h?"rgba8unorm-srgb":"rgba8unorm",l=await fetch(i),u=await l.blob(),g=await createImageBitmap(u,{premultiplyAlpha:n?"premultiply":"none",colorSpaceConversion:"none"}),c=g.width,w=g.height,T=s?Math.floor(Math.log2(Math.max(c,w)))+1:1,x=t._device.createTexture({size:{width:c,height:w},format:p,mipLevelCount:T,usage:e.TEXTURE_BINDING|e.COPY_DST|e.RENDER_ATTACHMENT});if(t._device.queue.copyExternalImageToTexture({source:g,flipY:m},{texture:x,premultipliedAlpha:n},{width:c,height:w}),g.close(),s&&T>1){const{generateMipmaps:e}=await import("./generate-mipmaps-Cs76X4rW.esm.min.js");e(t,x)}const v=a.minFilter??"linear",_=a.magFilter??"linear",M=s?"linear":"nearest",b=r(t,{addressModeU:o,addressModeV:d,minFilter:v,magFilter:_,mipmapFilter:M,maxAnisotropy:"linear"===v&&"linear"===_&&"linear"===M?4:1});return{texture:x,view:x.createView(),sampler:b,width:c,height:w}}(a,o.url,o.opts);return s.texture=t.texture,s.view=t.view,s.sampler=t.sampler,s.width=t.width,s.height=t.height,void(s._recoverySource=o)}if("solid"===o.kind){const r=a._device.createTexture({size:{width:1,height:1},format:"rgba8unorm",usage:e.TEXTURE_BINDING|e.COPY_DST}),d=new t(o.rgba.map(e=>Math.round(255*e)));return a._device.queue.writeTexture({texture:r},d,{bytesPerRow:4,rowsPerImage:1},{width:1,height:1}),s.texture=r,s.view=r.createView(),s.sampler=i(a),s.width=1,void(s.height=1)}if("dynamic"===o.kind){const{rebuildDynamicTexture2D:e}=await import("./dynamic-texture-recovery-B991ikvi.esm.min.js");return void await e(a,s)}if("pixels"===o.kind){const t=o.options,i=a._device.createTexture({size:{width:o.width,height:o.height},format:t.srgb?"rgba8unorm-srgb":"rgba8unorm",usage:e.TEXTURE_BINDING|e.COPY_DST});return a._device.queue.writeTexture({texture:i},o.data,{bytesPerRow:4*o.width,rowsPerImage:o.height},{width:o.width,height:o.height}),s.texture=i,s.view=i.createView(),s.sampler=r(a,{addressModeU:t.addressModeU??"clamp-to-edge",addressModeV:t.addressModeV??"clamp-to-edge",minFilter:t.minFilter??"nearest",magFilter:t.magFilter??"nearest"}),s.width=o.width,void(s.height=o.height)}if("render"===o.kind){const t=a._device.createTexture({size:{width:o.width,height:o.height},format:o.format,usage:e.TEXTURE_BINDING|e.RENDER_ATTACHMENT|e.COPY_DST});return s.texture=t,s.view=t.createView(),s.sampler=r(a,o.samplerDesc),s.width=o.width,void(s.height=o.height)}const d=o.bitmap?.width??1,m=o.bitmap?.height??1,h=o.srgb?"rgba8unorm-srgb":"rgba8unorm",n=o.mipMaps?Math.floor(Math.log2(Math.max(d,m)))+1:1,p=a._device.createTexture({size:{width:d,height:m},format:h,mipLevelCount:n,usage:e.TEXTURE_BINDING|e.COPY_DST|e.COPY_SRC|e.RENDER_ATTACHMENT});if(o.bitmap){if(a._device.queue.copyExternalImageToTexture({source:o.bitmap},{texture:p,premultipliedAlpha:!1},{width:d,height:m}),o.mipMaps&&n>1){const{generateMipmaps:e}=await import("./generate-mipmaps-Cs76X4rW.esm.min.js");e(a,p)}}else a._device.queue.writeTexture({texture:p},o.fallback??new t([255,255,255,255]),{bytesPerRow:4},{width:1,height:1});s.texture=p,s.view=p.createView();const l=a._deviceLostRecovery?._samplerDescriptors,u=l?.get(s.sampler),g=u??{addressModeU:"repeat",addressModeV:"repeat",minFilter:"linear",magFilter:"linear",mipmapFilter:"linear",maxAnisotropy:4},c=0===g.lodMaxClamp?a._device.createSampler(g):r(a,g);u&&l.set(c,u),s.sampler=c,s.width=d,s.height=m}export{a as rebuildTexture2D}; //# sourceMappingURL=texture-recovery-BSWaaOFa.esm.min.js.map