<!-- SOLID-PLAYTIME · part 147 -->
,_t,E.depth,0,Tt,z,null);else n.texImage2D(st,Q,j,rt,_t,0,Tt,z,null)}if(n.bindFramebuffer(t.FRAMEBUFFER,L),It(E))o.framebufferTexture2DMultisampleEXT(t.FRAMEBUFFER,tt,st,K.__webglTexture,0,Dt(E));else if(st===t.TEXTURE_2D||st>=t.TEXTURE_CUBE_MAP_POSITIVE_X&&st<=t.TEXTURE_CUBE_MAP_NEGATIVE_Z)t.framebufferTexture2D(t.FRAMEBUFFER,tt,st,K.__webglTexture,Q);n.bindFramebuffer(t.FRAMEBUFFER,null)}function Ht(L,E,B){if(t.bindRenderbuffer(t.RENDERBUFFER,L),E.depthBuffer){let tt=E.depthTexture,st=tt&&tt.isDepthTexture?tt.type:null,Q=x(E.stencilBuffer,st),Tt=E.stencilBuffer?t.DEPTH_STENCIL_ATTACHMENT:t.DEPTH_ATTACHMENT,z=Dt(E);if(It(E))o.renderbufferStorageMultisampleEXT(t.RENDERBUFFER,z,Q,E.width,E.height);else if(B)t.renderbufferStorageMultisample(t.RENDERBUFFER,z,Q,E.width,E.height);else t.renderbufferStorage(t.RENDERBUFFER,Q,E.width,E.height);t.framebufferRenderbuffer(t.FRAMEBUFFER,Tt,t.RENDERBUFFER,L)}else{let tt=E.textures;for(let st=0;st<tt.length;st++){let Q=tt[st],Tt=a.convert(Q.format,Q.colorSpace),z=a.convert(Q.type),j=m(Q.internalFormat,Tt,z,Q.colorSpace),ft=Dt(E);if(B&&It(E)===!1)t.renderbufferStorageMultisample(t.RENDERBUFFER,ft,j,E.width,E.height);else if(It(E))o.renderbufferStorageMultisampleEXT(t.RENDERBUFFER,ft,j,E.width,E.height);else t.renderbufferStorage(t.RENDERBUFFER,j,E.width,E.height)}}t.bindRenderbuffer(t.RENDERBUFFER,null)}function vt(L,E){if(E&&E.isWebGLCubeRenderTarget)throw Error("Depth Texture with cube render targets is not supported");if(n.bindFramebuffer(t.FRAMEBUFFER,L),!(E.depthTexture&&E.depthTexture.isDepthTexture))throw Error("renderTarget.depthTexture must be an instance of THREE.DepthTexture");let tt=i.get(E.depthTexture);if(tt.__renderTarget=E,!tt.__webglTexture||E.depthTexture.image.width!==E.width||E.depthTexture.image.height!==E.height)E.depthTexture.image.width=E.width,E.depthTexture.image.height=E.height,E.depthTexture.needsUpdate=!0;et(E.depthTexture,0);let st=tt.__webglTexture,Q=Dt(E);if(E.depthTexture.format===Sf)if(It(E))o.framebufferTexture2DMultisampleEXT(t.FRAMEBUFFER,t.DEPTH_ATTACHMENT,t.TEXTURE_2D,st,0,Q);else t.framebufferTexture2D(t.FRAMEBUFFER,t.DEPTH_ATTACHMENT,t.TEXTURE_2D,st,0);else if(E.depthTexture.format===Dc)if(It(E))o.framebufferTexture2DMultisampleEXT(t.FRAMEBUFFER,t.DEPTH_STENCIL_ATTACHMENT,t.TEXTURE_2D,st,0,Q);else t.framebufferTexture2D(t.FRAMEBUFFER,t.DEPTH_STENCIL_ATTACHMENT,t.TEXTURE_2D,st,0);else throw Error("Unknown depthTexture format")}function ye(L){let E=i.get(L),B=L.isWebGLCubeRenderTarget===!0;if(E.__boundDepthTexture!==L.depthTexture){let tt=L.depthTexture;if(E.__depthDisposeCallback)E.__depthDisposeCallback();if(tt){let st=()=>{delete E.__boundDepthTexture,delete E.__depthDisposeCallback,tt.removeEventListener("dispose",st)};tt.addEventListener("dispose",st),E.__depthDisposeCallback=st}E.__boundDepthTexture=tt}if(L.depthTexture&&!E.__autoAllocateDepthBuffer){if(B)throw Error("target.depthTexture not supported in Cube render targets");let tt=L.texture.mipmaps;if(tt&&tt.length>0)vt(E.__webglFramebuffer[0],L);else vt(E.__webglFramebuffer,L)}else if(B){E.__webglDepthbuffer=[];for(let tt=0;tt<6;tt++)if(n.bindFramebuffer(t.FRAMEBUFFER,E.__webglFramebuffer[tt]),E.__webglDepthbuffer[tt]===void 0)E.__webglDepthbuffer[tt]=t.createRenderbuffer(),Ht(E.__webglDepthbuffer[tt],L,!1);else{let st=L.stencilBuffer?t.DEPTH_STENCIL_ATTACHMENT:t.DEPTH_ATTACHMENT,Q=E.__webglDepthbuffer[tt];t.bindRenderbuffer(t.RENDERBUFFER,Q),t.framebufferRenderbuffer(t.FRAMEBUFFER,st,t.RENDERBUFFER,Q)}}else{let tt=L.texture.mipmaps;if(tt&&tt.length>0)n.bindFramebuffer(t.FRAMEBUFFER,E.__webglFramebuffer[0]);else n.bindFramebuffer(t.FRAMEBUFFER,E.__webglFramebuffer);if(E.__webglDepthbuffer===void 0)E.__webglDepthbuffer=t.createRenderbuffer(),Ht(E.__webglDepthbuffer,L,!1);else{let st=L.stencilBuffer?t.DEPTH_STENCIL_ATTACHMENT:t.DEPTH_ATTACHMENT,Q=E.__webglDepthbuffer;t.bindRenderbuffer(t.RENDERBUFFER,Q),t.framebufferRenderbuffer(t.FRAMEBUFFER,st,t.RENDERBUFFER,Q)}}n.bindFramebuffer(t.FRAMEBUFFER,null)}function D(L,E,B){let tt=i.get(L);if(E!==void 0)yt(tt.__webglFramebuffer,L,L.texture,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,0);if(B!==void 0)ye(L)}function ce(L){let E=L.texture,B=i.get(L),tt=i.get(E);L.addEventListener("dispose",T);let st=L.textures,Q=L.isWebGLCubeRenderTarget===!0,Tt=st.length>1;if(!Tt){if(tt.__webglTexture===void 0)tt.__webglTexture=t.createTexture();tt.__version=E.version,r.memory.textures++}if(Q){B.__webglFramebuffer=[];for(let z=0;z<6;z++)if(E.mipmaps&&E.mipmaps.length>0){B.__webglFramebuffer[z]=[];for(let j=0;j<E.mipmaps.length;j++)B.__webglFramebuffer[z][j]=t.createFramebuffer()}else B.__webglFramebuffer[z]=t.createFramebuffer()}else{if(E.mipmaps&&E.mipmaps.length>0){B.__webglFramebuffer=[];for(let z=0;z<E.mipmaps.length;z++)B.__webglFramebuffer[z]=t.createFramebuffer()}else B.__webglFramebuffer=t.createFramebuffer();if(Tt)for(let z=0,j=st.length;z<j;z++){let ft=i.get(st[z]);if(ft.__webglTexture===void 0)ft.__webglTexture=t.