<!-- SOLID-PLAYTIME · part 159 -->
.");return}let wt=Dt.get(_).__webglFramebuffer;if(_.isWebGLCubeRenderTarget&&Mt!==void 0)wt=wt[Mt];if(wt){St.bindFramebuffer(D.FRAMEBUFFER,wt);try{let Vt=_.textures[Pt],{format:$t,type:Ot}=Vt;if(!Bt.textureFormatReadable($t)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");return}if(!Bt.textureTypeReadable(Ot)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");return}if(F>=0&&F<=_.width-J&&(G>=0&&G<=_.height-N)){if(_.textures.length>1)D.readBuffer(D.COLOR_ATTACHMENT0+Pt);D.readPixels(F,G,J,N,_t.convert($t),_t.convert(Ot),ut)}}finally{let Vt=T!==null?Dt.get(T).__webglFramebuffer:null;St.bindFramebuffer(D.FRAMEBUFFER,Vt)}}},this.readRenderTargetPixelsAsync=async function(_,F,G,J,N,ut,Mt,Pt=0){if(!(_&&_.isWebGLRenderTarget))throw Error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");let wt=Dt.get(_).__webglFramebuffer;if(_.isWebGLCubeRenderTarget&&Mt!==void 0)wt=wt[Mt];if(wt)if(F>=0&&F<=_.width-J&&(G>=0&&G<=_.height-N)){St.bindFramebuffer(D.FRAMEBUFFER,wt);let Vt=_.textures[Pt],{format:$t,type:Ot}=Vt;if(!Bt.textureFormatReadable($t))throw Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in RGBA or implementation defined format.");if(!Bt.textureTypeReadable(Ot))throw Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in UnsignedByteType or implementation defined type.");let se=D.createBuffer();if(D.bindBuffer(D.PIXEL_PACK_BUFFER,se),D.bufferData(D.PIXEL_PACK_BUFFER,ut.byteLength,D.STREAM_READ),_.textures.length>1)D.readBuffer(D.COLOR_ATTACHMENT0+Pt);D.readPixels(F,G,J,N,_t.convert($t),_t.convert(Ot),0);let Re=T!==null?Dt.get(T).__webglFramebuffer:null;St.bindFramebuffer(D.FRAMEBUFFER,Re);let Qe=D.fenceSync(D.SYNC_GPU_COMMANDS_COMPLETE,0);return D.flush(),await FE(D,Qe,4),D.bindBuffer(D.PIXEL_PACK_BUFFER,se),D.getBufferSubData(D.PIXEL_PACK_BUFFER,0,ut),D.deleteBuffer(se),D.deleteSync(Qe),ut}else throw Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: requested read bounds are out of range.")},this.copyFramebufferToTexture=function(_,F=null,G=0){let J=Math.pow(2,-G),N=Math.floor(_.image.width*J),ut=Math.floor(_.image.height*J),Mt=F!==null?F.x:0,Pt=F!==null?F.y:0;It.setTexture2D(_,0),D.copyTexSubImage2D(D.TEXTURE_2D,G,0,0,Mt,Pt,N,ut),St.unbindTexture()};let u_=D.createFramebuffer(),h_=D.createFramebuffer();if(this.copyTextureToTexture=function(_,F,G=null,J=null,N=0,ut=null){if(ut===null)if(N!==0)Oo("WebGLRenderer: copyTextureToTexture function signature has changed to support src and dst mipmap levels."),ut=N,N=0;else ut=0;let Mt,Pt,wt,Vt,$t,Ot,se,Re,Qe,Oe=_.isCompressedTexture?_.mipmaps[ut]:_.image;if(G!==null)Mt=G.max.x-G.min.x,Pt=G.max.y-G.min.y,wt=G.isBox3?G.max.z-G.min.z:1,Vt=G.min.x,$t=G.min.y,Ot=G.isBox3?G.min.z:0;else{let pi=Math.pow(2,-N);if(Mt=Math.floor(Oe.width*pi),Pt=Math.floor(Oe.height*pi),_.isDataArrayTexture)wt=Oe.depth;else if(_.isData3DTexture)wt=Math.floor(Oe.depth*pi);else wt=1;Vt=0,$t=0,Ot=0}if(J!==null)se=J.x,Re=J.y,Qe=J.z;else se=0,Re=0,Qe=0;let He=_t.convert(F.format),zt=_t.convert(F.type),Je;if(F.isData3DTexture)It.setTexture3D(F,0),Je=D.TEXTURE_3D;else if(F.isDataArrayTexture||F.isCompressedArrayTexture)It.setTexture2DArray(F,0),Je=D.TEXTURE_2D_ARRAY;else It.setTexture2D(F,0),Je=D.TEXTURE_2D;D.pixelStorei(D.UNPACK_FLIP_Y_WEBGL,F.flipY),D.pixelStorei(D.UNPACK_PREMULTIPLY_ALPHA_WEBGL,F.premultiplyAlpha),D.pixelStorei(D.UNPACK_ALIGNMENT,F.unpackAlignment);let pe=D.getParameter(D.UNPACK_ROW_LENGTH),Kn=D.getParameter(D.UNPACK_IMAGE_HEIGHT),br=D.getParameter(D.UNPACK_SKIP_PIXELS),jn=D.getParameter(D.UNPACK_SKIP_ROWS),sl=D.getParameter(D.UNPACK_SKIP_IMAGES);D.pixelStorei(D.UNPACK_ROW_LENGTH,Oe.width),D.pixelStorei(D.UNPACK_IMAGE_HEIGHT,Oe.height),D.pixelStorei(D.UNPACK_SKIP_PIXELS,Vt),D.pixelStorei(D.UNPACK_SKIP_ROWS,$t),D.pixelStorei(D.UNPACK_SKIP_IMAGES,Ot);let We=_.isDataArrayTexture||_.isData3DTexture,di=F.isDataArrayTexture||F.isData3DTexture;if(_.isDepthTexture){let pi=Dt.get(_),In=Dt.get(F),zn=Dt.get(pi.__renderTarget),jf=Dt.get(In.__renderTarget);St.bindFramebuffer(D.READ_FRAMEBUFFER,zn.__webglFramebuffer),St.bindFramebuffer(D.DRAW_FRAMEBUFFER,jf.__webglFramebuffer);for(let Sa=0;Sa<wt;Sa++){if(We)D.framebufferTextureLayer(D.READ_FRAMEBUFFER,D.COLOR_ATTACHMENT0,Dt.get(_).__webglTexture,N,Ot+Sa),D.framebufferTextureLayer(D.DRAW_FRAMEBUFFER,D.COLOR_ATTACHMENT0,Dt.get(F).__webglTexture,ut,Qe+Sa);D.blitFramebuffer(Vt,$t,Mt,Pt,se,Re,Mt,Pt,D.DEPTH_BUFFER_BIT,D.NEAREST)}St.bindFramebuffer(D.READ_FRAMEBUFFER,null),St.bindFramebuffer(D.DRAW_FRAMEBUFFER,null)}else if(N!==0||_.isRenderTargetTexture||Dt.has(_)){let pi=Dt.get(_),In=Dt.get(F);St.bindFramebuffer(D.READ_FRAMEBUFFER,u_),St.bindFramebuffer(D.DRAW_FRAMEBUFFER,h_);for(let zn=0;zn<wt;zn++){if(We)D.framebufferTextureLayer(D.READ_FRAMEBUFFER,D.COLOR_AT