<!-- SOLUV · part 653 -->
.readRenderTargetPixelsAsync: renderTarget is not in UnsignedByteType or implementation defined type.");let le=P.createBuffer();P.bindBuffer(P.PIXEL_PACK_BUFFER,le),P.bufferData(P.PIXEL_PACK_BUFFER,yt.byteLength,P.STREAM_READ),P.readPixels(N,H,V,k,mt.convert($t),mt.convert(te),0),P.bindBuffer(P.PIXEL_PACK_BUFFER,null);let we=st!==null?G.get(st).__webglFramebuffer:null;y.bindFramebuffer(P.FRAMEBUFFER,we);let xe=P.fenceSync(P.SYNC_GPU_COMMANDS_COMPLETE,0);return P.flush(),await gp(P,xe,4),P.bindBuffer(P.PIXEL_PACK_BUFFER,le),P.getBufferSubData(P.PIXEL_PACK_BUFFER,0,yt),P.bindBuffer(P.PIXEL_PACK_BUFFER,null),P.deleteBuffer(le),P.deleteSync(xe),yt}else throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: requested read bounds are out of range.")},this.copyFramebufferToTexture=function(M,N=null,H=0){let V=Math.pow(2,-H),k=Math.floor(M.image.width*V),yt=Math.floor(M.image.height*V),At=N!==null?N.x:0,vt=N!==null?N.y:0;Y.setTexture2D(M,0),P.copyTexSubImage2D(P.TEXTURE_2D,H,0,0,At,vt,k,yt),y.unbindTexture()},this.copyTextureToTexture=function(M,N,H=null,V=null,k=0,yt=0){let At,vt,Ct,Pt,$t,te,Rt,le,we,xe=M.isCompressedTexture?M.mipmaps[yt]:M.image;if(H!==null)At=H.max.x-H.min.x,vt=H.max.y-H.min.y,Ct=H.isBox3?H.max.z-H.min.z:1,Pt=H.min.x,$t=H.min.y,te=H.isBox3?H.min.z:0;else{let be=Math.pow(2,-k);At=Math.floor(xe.width*be),vt=Math.floor(xe.height*be),M.isDataArrayTexture?Ct=xe.depth:M.isData3DTexture?Ct=Math.floor(xe.depth*be):Ct=1,Pt=0,$t=0,te=0}V!==null?(Rt=V.x,le=V.y,we=V.z):(Rt=0,le=0,we=0);let me=mt.convert(N.format),Be=mt.convert(N.type),Et;N.isData3DTexture?(Y.setTexture3D(N,0),Et=P.TEXTURE_3D):N.isDataArrayTexture||N.isCompressedArrayTexture?(Y.setTexture2DArray(N,0),Et=P.TEXTURE_2D_ARRAY):(Y.setTexture2D(N,0),Et=P.TEXTURE_2D),y.activeTexture(P.TEXTURE0),y.pixelStorei(P.UNPACK_FLIP_Y_WEBGL,N.flipY),y.pixelStorei(P.UNPACK_PREMULTIPLY_ALPHA_WEBGL,N.premultiplyAlpha),y.pixelStorei(P.UNPACK_ALIGNMENT,N.unpackAlignment);let Xe=y.getParameter(P.UNPACK_ROW_LENGTH),ie=y.getParameter(P.UNPACK_IMAGE_HEIGHT),dn=y.getParameter(P.UNPACK_SKIP_PIXELS),Rn=y.getParameter(P.UNPACK_SKIP_ROWS),ii=y.getParameter(P.UNPACK_SKIP_IMAGES);y.pixelStorei(P.UNPACK_ROW_LENGTH,xe.width),y.pixelStorei(P.UNPACK_IMAGE_HEIGHT,xe.height),y.pixelStorei(P.UNPACK_SKIP_PIXELS,Pt),y.pixelStorei(P.UNPACK_SKIP_ROWS,$t),y.pixelStorei(P.UNPACK_SKIP_IMAGES,te);let ji=M.isDataArrayTexture||M.isData3DTexture,pe=N.isDataArrayTexture||N.isData3DTexture;if(M.isDepthTexture){let be=G.get(M),si=G.get(N),_e=G.get(be.__renderTarget),ri=G.get(si.__renderTarget);y.bindFramebuffer(P.READ_FRAMEBUFFER,_e.__webglFramebuffer),y.bindFramebuffer(P.DRAW_FRAMEBUFFER,ri.__webglFramebuffer);for(let ts=0;ts<Ct;ts++)ji&&(P.framebufferTextureLayer(P.READ_FRAMEBUFFER,P.COLOR_ATTACHMENT0,G.get(M).__webglTexture,k,te+ts),P.framebufferTextureLayer(P.DRAW_FRAMEBUFFER,P.COLOR_ATTACHMENT0,G.get(N).__webglTexture,yt,we+ts)),P.blitFramebuffer(Pt,$t,At,vt,Rt,le,At,vt,P.DEPTH_BUFFER_BIT,P.NEAREST);y.bindFramebuffer(P.READ_FRAMEBUFFER,null),y.bindFramebuffer(P.DRAW_FRAMEBUFFER,null)}else if(k!==0||M.isRenderTargetTexture||G.has(M)){let be=G.get(M),si=G.get(N);y.bindFramebuffer(P.READ_FRAMEBUFFER,D),y.bindFramebuffer(P.DRAW_FRAMEBUFFER,B);for(let _e=0;_e<Ct;_e++)ji?P.framebufferTextureLayer(P.READ_FRAMEBUFFER,P.COLOR_ATTACHMENT0,be.__webglTexture,k,te+_e):P.framebufferTexture2D(P.READ_FRAMEBUFFER,P.COLOR_ATTACHMENT0,P.TEXTURE_2D,be.__webglTexture,k),pe?P.framebufferTextureLayer(P.DRAW_FRAMEBUFFER,P.COLOR_ATTACHMENT0,si.__webglTexture,yt,we+_e):P.framebufferTexture2D(P.DRAW_FRAMEBUFFER,P.COLOR_ATTACHMENT0,P.TEXTURE_2D,si.__webglTexture,yt),k!==0?P.blitFramebuffer(Pt,$t,At,vt,Rt,le,At,vt,P.COLOR_BUFFER_BIT,P.NEAREST):pe?P.copyTexSubImage3D(Et,yt,Rt,le,we+_e,Pt,$t,At,vt):P.copyTexSubImage2D(Et,yt,Rt,le,Pt,$t,At,vt);y.bindFramebuffer(P.READ_FRAMEBUFFER,null),y.bindFramebuffer(P.DRAW_FRAMEBUFFER,null)}else pe?M.isDataTexture||M.isData3DTexture?P.texSubImage3D(Et,yt,Rt,le,we,At,vt,Ct,me,Be,xe.data):N.isCompressedArrayTexture?P.compressedTexSubImage3D(Et,yt,Rt,le,we,At,vt,Ct,me,xe.data):P.texSubImage3D(Et,yt,Rt,le,we,At,vt,Ct,me,Be,xe):M.isDataTexture?P.texSubImage2D(P.TEXTURE_2D,yt,Rt,le,At,vt,me,Be,xe.data):M.isCompressedTexture?P.compressedTexSubImage2D(P.TEXTURE_2D,yt,Rt,le,xe.width,xe.height,me,xe.data):P.texSubImage2D(P.TEXTURE_2D,yt,Rt,le,At,vt,me,Be,xe);y.pixelStorei(P.UNPACK_ROW_LENGTH,Xe),y.pixelStorei(P.UNPACK_IMAGE_HEIGHT,ie),y.pixelStorei(P.UNPACK_SKIP_PIXELS,dn),y.pixelStorei(P.UNPACK_SKIP_ROWS,Rn),y.pixelStorei(P.UNPACK_SKIP_IMAGES,ii),yt===0&&N.generateMipmaps&&P.generateMipmap(Et),y.unbindTexture()},this.initRenderTarget=function(M){G.get(M).__webglFramebuffer===void 0&&Y.setupRenderTarget(M)},this.initTexture=function(M){M.isCubeTexture?Y.setTextureCube(M,0):M.isData3DTexture?Y.setTexture3D(M,0):M.isDataArrayTexture||M.isCompressedArrayTexture?Y.setTexture2DArray(M,0):Y.setTexture2D(M,0),y.unbindTexture()},this.resetState=function(){X=0,W=0,