@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.25 kB
JavaScript
import{j as e,aY as a,y as n,d4 as t,C as s,q as r,l as i,a as o,c6 as c,c5 as p,d5 as m,cA as d}from"./index-BPURObVq.esm.min.js";let l=null;async function u(){return l||(l=async function(){const e=o.LastCreatedEngine?.createCanvas(100,100)??new OffscreenCanvas(100,100);e instanceof OffscreenCanvas&&n.Warn("DumpData: OffscreenCanvas will be used for dumping data. This may result in lossy alpha values.");const{ThinEngine:a}=await Promise.resolve().then(function(){return A});if(!a.IsSupported)throw new Error("DumpData: No WebGL context available. Cannot dump data.");const t=new a(e,!1,{preserveDrawingBuffer:!0,depth:!1,stencil:!1,alpha:!0,premultipliedAlpha:!1,antialias:!1,failIfMajorPerformanceCaveat:!1});o.Instances.pop(),o.OnEnginesDisposedObservable.add(e=>{t&&e!==t&&!t.isDisposed&&0===o.Instances.length&&v()}),t.getCaps().parallelShaderCompile=void 0;const s=new c(t),{passPixelShader:r}=await import("./pass.fragment-KUh_d6Eh.esm.min.js"),i=new p({engine:t,name:r.name,fragmentShader:r.shader,samplerNames:["textureSampler"]});return{canvas:e,dumpEngine:{engine:t,renderer:s,wrapper:i}}}()),await l}let f=(()=>{var e;let n,t=[];return e=class{static async EncodeImageAsync(e,n,t,r,i,o){const c=await u(),p=c.dumpEngine;p.engine.setSize(n,t,!0);const m=p.engine.createRawTexture(e,n,t,s.TEXTUREFORMAT_RGBA,!1,!i,s.TEXTURE_NEAREST_NEAREST);return p.renderer.setViewport(),p.renderer.applyEffectWrapper(p.wrapper),p.wrapper.effect._bindTexture("textureSampler",m),p.renderer.draw(),m.dispose(),await new Promise((e,n)=>{a.ToBlob(c.canvas,a=>{a?e(a):n(new Error("EncodeImageAsync: Failed to convert canvas to blob."))},r,o)})}},(()=>{const a="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;n=[m],r(e,null,n,{kind:"method",name:"EncodeImageAsync",static:!0,private:!1,access:{has:e=>"EncodeImageAsync"in e,get:e=>e.EncodeImageAsync},metadata:a},null,t),a&&Object.defineProperty(e,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:a}),i(e,t)})(),e})();const g=f.EncodeImageAsync;async function y(e,a,n,t,s="image/png",r,i){const o=await n.readPixels(0,0,e,a);w(e,a,new Uint8Array(o.buffer),t,s,r,!0,void 0,i)}async function E(s,r,i,o="image/png",c,p=!1,m=!1,d){if(i instanceof Float32Array){const a=new Uint8Array(i.length);let n=i.length;for(;n--;){const t=i[n];a[n]=Math.round(255*e(t))}i=a}const l=await f.EncodeImageAsync(i,s,r,o,p,d);void 0!==c&&a.DownloadBlob(l,c),l.type!==o&&n.Warn(`DumpData: The requested mimeType '${o}' is not supported. The result has mimeType '${l.type}' instead.`);const u=await l.arrayBuffer();return m?u:`data:${o};base64,${t(u)}`}function w(e,a,n,t,s="image/png",r,i=!1,o=!1,c){void 0!==r||t||(r=""),E(e,a,n,s,r,i,o,c).then(e=>{t&&t(e)})}function v(){l&&(l?.then(e=>{e.canvas instanceof HTMLCanvasElement&&e.canvas.remove(),e.dumpEngine&&(e.dumpEngine.engine.dispose(),e.dumpEngine.renderer.dispose(),e.dumpEngine.wrapper.dispose())}),l=null)}const b={DumpData:w,DumpDataAsync:E,DumpFramebuffer:y,Dispose:v};let h=!1;function D(){if(h)return;h=!0;a.DumpData=w,a.DumpDataAsync=E,a.DumpFramebuffer=y}var A=Object.freeze({__proto__:null,ThinEngine:d});export{v as D,g as E,D as R,w as a,E as b,y as c,b as d};
//# sourceMappingURL=thinEngine-DuQ_dtuu.esm.min.js.map