@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.56 kB
JavaScript
import{o as e}from"./index-B8IgtevW.esm.min.js";const t=0;let r=null,i=null,o=null,u=null;function n(e,n){e!==r&&(r=e,i=e.createShaderModule({code:"@id(0)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));}"}),o=null,u=null);const a=n?u:o;if(a)return a;const c=e.createComputePipeline({layout:"auto",compute:{module:i,entryPoint:"main",constants:{[t]:n?1:0}}});return n?u=c:o=c,c}function a(e,t,r,i){return e.createBindGroup({layout:t.getBindGroupLayout(0),entries:[{binding:0,resource:r},{binding:1,resource:i}]})}function c(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 s(t,r){const i=t._device,o=n(i,!1),u=r.width,s=r.height,l=i.createTexture({size:{width:u,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:u,height:s});const d=i.createTexture({size:{width:u,height:s},format:"rgba16float",usage:e.TEXTURE_BINDING|e.STORAGE_BINDING}),g=a(i,o,l.createView(),d.createView()),h=i.createCommandEncoder();return c(h,o,g,u,s),i.queue.submit([h.finish()]),l.destroy(),d}function l(t,r,i,o){const u=t._device,s=n(u,!0),l=u.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),n=u.createTexture({size:{width:o,height:o},format:"rgba8unorm",usage:e.TEXTURE_BINDING|e.COPY_DST|e.RENDER_ATTACHMENT}),d=u.createTexture({size:{width:o,height:o},format:"rgba16float",usage:e.STORAGE_BINDING|e.COPY_SRC}),g=a(u,s,n.createView(),d.createView());for(let e=0;e<6;e++){const i=6*t+e;if(i>=r.length)break;u.queue.copyExternalImageToTexture({source:r[i],flipY:!1},{texture:n,premultipliedAlpha:!1},{width:o,height:o});const a=u.createCommandEncoder();c(a,s,g,o,o),a.copyTextureToTexture({texture:d},{texture:l,origin:{x:0,y:0,z:e},mipLevel:t},{width:o,height:o}),u.queue.submit([a.finish()])}n.destroy(),d.destroy()}return l}export{s as decodeBrdfPng,l as uploadCubemapRGBD};
//# sourceMappingURL=rgbd-decode-D4WHAcMb.esm.min.js.map