|
|
@@ -1284,11 +1284,56 @@ class Renderer {
|
|
|
|
|
|
copyFramebufferToTexture( framebufferTexture, rectangle = null ) {
|
|
|
|
|
|
- const renderContext = this._currentRenderContext;
|
|
|
+ if ( rectangle !== null ) {
|
|
|
+
|
|
|
+ if ( rectangle.isVector2 ) {
|
|
|
+
|
|
|
+ rectangle = _vector4.set( rectangle.x, rectangle.y, framebufferTexture.image.width, framebufferTexture.image.height ).floor();
|
|
|
+
|
|
|
+ } else if ( rectangle.isVector4 ) {
|
|
|
+
|
|
|
+ rectangle = _vector4.copy( rectangle ).floor();
|
|
|
+
|
|
|
+ } else {
|
|
|
+
|
|
|
+ console.error( 'THREE.Renderer.copyFramebufferToTexture: Invalid rectangle.' );
|
|
|
+
|
|
|
+ return;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ } else {
|
|
|
+
|
|
|
+ rectangle = _vector4.set( 0, 0, framebufferTexture.image.width, framebufferTexture.image.height );
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ //
|
|
|
+
|
|
|
+ let renderContext = this._currentRenderContext;
|
|
|
+ let renderTarget;
|
|
|
+
|
|
|
+ if ( renderContext !== null ) {
|
|
|
+
|
|
|
+ renderTarget = renderContext.renderTarget;
|
|
|
+
|
|
|
+ } else {
|
|
|
+
|
|
|
+ renderTarget = this._renderTarget || this._getFrameBufferTarget();
|
|
|
+
|
|
|
+ if ( renderTarget !== null ) {
|
|
|
|
|
|
- this._textures.updateTexture( framebufferTexture );
|
|
|
+ this._textures.updateRenderTarget( renderTarget );
|
|
|
|
|
|
- rectangle = rectangle === null ? _vector4.set( 0, 0, framebufferTexture.image.width, framebufferTexture.image.height ) : rectangle;
|
|
|
+ renderContext = this._textures.get( renderTarget );
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ //
|
|
|
+
|
|
|
+ this._textures.updateTexture( framebufferTexture, { renderTarget } );
|
|
|
|
|
|
this.backend.copyFramebufferToTexture( framebufferTexture, renderContext, rectangle );
|
|
|
|
|
|
@@ -1303,7 +1348,6 @@ class Renderer {
|
|
|
|
|
|
}
|
|
|
|
|
|
-
|
|
|
readRenderTargetPixelsAsync( renderTarget, x, y, width, height, index = 0, faceIndex = 0 ) {
|
|
|
|
|
|
return this.backend.copyTextureToBuffer( renderTarget.textures[ index ], x, y, width, height, faceIndex );
|