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.54 kB
import{i as e}from"./index-DFZFpUG-.esm.min.js";let t=null,r=null,i=null,o=null;function u(e,u){e!==t&&(t=e,r=e.createShaderModule({code:"override f:bool=false;@group(0)@binding(0)var t:texture_2d<f32>;@group(0)@binding(1)var o:texture_storage_2d<rgba16float,write>;@compute @workgroup_size(8,8)fn main(@builtin(global_invocation_id)g:vec3u){let d=textureDimensions(t);if(any(g.xy>=d)){return;}let c=textureLoad(t,vec2u(g.x,select(g.y,d.y-1u-g.y,f)),0);textureStore(o,g.xy,vec4f(pow(c.rgb,vec3f(2.2))/max(c.a,1.0/255.0),1));}"}),i=null,o=null);const n=u?o:i;if(n)return n;const a=e.createComputePipeline({layout:"auto",compute:{module:r,entryPoint:"main",constants:{f:u?1:0}}});return u?o=a:i=a,a}function n(e,t,r,i){return e.createBindGroup({layout:t.getBindGroupLayout(0),entries:[{binding:0,resource:r},{binding:1,resource:i}]})}function a(e,t,r,i,o){const u=e.beginComputePass();u.setPipeline(t),u.setBindGroup(0,r),u.dispatchWorkgroups(Math.ceil(i/8),Math.ceil(o/8)),u.end()}function c(t,r){const i=t._device,o=u(i,!1),c=r.width,s=r.height,l=i.createTexture({size:{width:c,height:s},format:"rgba8unorm",usage:e.TEXTURE_BINDING|e.COPY_DST|e.RENDER_ATTACHMENT});i.queue.copyExternalImageToTexture({source:r,flipY:!1},{texture:l,premultipliedAlpha:!1},{width:c,height:s});const d=i.createTexture({size:{width:c,height:s},format:"rgba16float",usage:e.TEXTURE_BINDING|e.STORAGE_BINDING}),g=n(i,o,l.createView(),d.createView()),h=i.createCommandEncoder();return a(h,o,g,c,s),i.queue.submit([h.finish()]),l.destroy(),d}function s(t,r,i,o){const c=t._device,s=u(c,!0),l=c.createTexture({size:{width:i,height:i,depthOrArrayLayers:6},format:"rgba16float",mipLevelCount:o,usage:e.TEXTURE_BINDING|e.COPY_DST|e.COPY_SRC|e.RENDER_ATTACHMENT,dimension:"2d"});for(let t=0;t<o;t++){const o=Math.max(1,i>>t),u=c.createTexture({size:{width:o,height:o},format:"rgba8unorm",usage:e.TEXTURE_BINDING|e.COPY_DST|e.RENDER_ATTACHMENT}),d=c.createTexture({size:{width:o,height:o},format:"rgba16float",usage:e.STORAGE_BINDING|e.COPY_SRC}),g=n(c,s,u.createView(),d.createView());for(let e=0;e<6;e++){const i=6*t+e;if(i>=r.length)break;c.queue.copyExternalImageToTexture({source:r[i],flipY:!1},{texture:u,premultipliedAlpha:!1},{width:o,height:o});const n=c.createCommandEncoder();a(n,s,g,o,o),n.copyTextureToTexture({texture:d},{texture:l,origin:{x:0,y:0,z:e},mipLevel:t},{width:o,height:o}),c.queue.submit([n.finish()])}u.destroy(),d.destroy()}return l}export{c as decodeBrdfPng,s as uploadCubemapRGBD}; //# sourceMappingURL=rgbd-decode-4LFzuX2l.esm.min.js.map