@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.93 kB
JavaScript
import{bT as e,C as a,b as n,G as r,L as t,a as s,E as i}from"./index-yNtOWHHe.esm.min.js";let o=null;async function p(){return o||(o=async function(){const e=r.LastCreatedEngine?.createCanvas(100,100)??new OffscreenCanvas(100,100);e instanceof OffscreenCanvas&&t.Warn("DumpData: OffscreenCanvas will be used for dumping data. This may result in lossy alpha values.");const{ThinEngine:a}=await import("./index-yNtOWHHe.esm.min.js").then((function(e){return e.ch}));if(!a.IsSupported){if(!e.getContext("bitmaprenderer"))throw new Error("DumpData: No WebGL or bitmap rendering context available. Cannot dump data.");return{canvas:e}}const n=new a(e,!1,{preserveDrawingBuffer:!0,depth:!1,stencil:!1,alpha:!0,premultipliedAlpha:!1,antialias:!1,failIfMajorPerformanceCaveat:!1});r.Instances.pop(),r.OnEnginesDisposedObservable.add((e=>{n&&e!==n&&!n.isDisposed&&0===r.Instances.length&&l()})),n.getCaps().parallelShaderCompile=void 0;const o=new s(n),{passPixelShader:p}=await import("./pass.fragment-DUvbXFMW.esm.min.js"),m=new i({engine:n,name:p.name,fragmentShader:p.shader,samplerNames:["textureSampler"]});return{canvas:e,dumpEngine:{engine:n,renderer:o,wrapper:m}}}()),await o}async function m(e,a,n,r,t="image/png",s,i){const o=await n.readPixels(0,0,e,a);d(e,a,new Uint8Array(o.buffer),r,t,s,!0,void 0,i)}async function c(r,t,s,i="image/png",o,m=!1,c=!1,d){if(s instanceof Float32Array){const a=new Uint8Array(s.length);let n=s.length;for(;n--;){const r=s[n];a[n]=Math.round(255*e(r))}s=a}const l=await p();return await new Promise((async e=>{if(l.dumpEngine){const e=l.dumpEngine;e.engine.setSize(r,t,!0);const n=e.engine.createRawTexture(s,r,t,a.TEXTUREFORMAT_RGBA,!1,!m,a.TEXTURE_NEAREST_NEAREST);e.renderer.setViewport(),e.renderer.applyEffectWrapper(e.wrapper),e.wrapper.effect._bindTexture("textureSampler",n),e.renderer.draw(),n.dispose()}else{const e=l.canvas.getContext("bitmaprenderer");l.canvas.width=r,l.canvas.height=t;const a=new ImageData(r,t);a.data.set(s);const n=await createImageBitmap(a,{premultiplyAlpha:"none",imageOrientation:m?"flipY":"from-image"});e.transferFromImageBitmap(n)}n.ToBlob(l.canvas,(a=>{if(!a)throw new Error("DumpData: Failed to convert canvas to blob.");void 0!==o&&n.DownloadBlob(a,o);const r=new FileReader;r.onload=a=>{const n=a.target.result;e(n)},c?r.readAsArrayBuffer(a):r.readAsDataURL(a)}),i,d)}))}function d(e,a,n,r,t="image/png",s,i=!1,o=!1,p){void 0!==s||r||(s=""),c(e,a,n,t,s,i,o,p).then((e=>{r&&r(e)}))}function l(){o&&(o?.then((e=>{e.canvas instanceof HTMLCanvasElement&&e.canvas.remove(),e.dumpEngine&&(e.dumpEngine.engine.dispose(),e.dumpEngine.renderer.dispose(),e.dumpEngine.wrapper.dispose())})),o=null)}const u={DumpData:d,DumpDataAsync:c,DumpFramebuffer:m,Dispose:l};n.DumpData=d,n.DumpDataAsync=c,n.DumpFramebuffer=m;export{l as Dispose,d as DumpData,c as DumpDataAsync,m as DumpFramebuffer,u as DumpTools};
//# sourceMappingURL=dumpTools-BG9TiKaF.esm.min.js.map