@@ -3,50 +3,56 @@ import { NodeUpdateType } from '../core/constants.js';
33import { addNodeClass } from '../core/Node.js' ;
44import { addNodeElement , nodeProxy } from '../shadernode/ShaderNode.js' ;
55import { viewportTopLeft } from './ViewportNode.js' ;
6- import { Vector2 } from 'three' ;
6+ import { Vector2 , FramebufferTexture } from 'three' ;
77
8- let size = new Vector2 ( ) ;
8+ const _size = new Vector2 ( ) ;
99
1010class ViewportTextureNode extends TextureNode {
1111
1212 constructor ( uv = viewportTopLeft , level = null ) {
1313
1414 super ( null , uv , level ) ;
1515
16- this . rtt = null ;
17-
1816 this . isOutputTextureNode = true ;
1917
2018 this . updateBeforeType = NodeUpdateType . FRAME ;
2119
2220 }
2321
24- constructRTT ( builder ) {
22+ constructFramebuffer ( /* builder*/ ) {
2523
26- return builder . getRenderTarget ( ) ;
24+ return new FramebufferTexture ( ) ;
2725
2826 }
2927
3028 construct ( builder ) {
3129
32- if ( this . rtt === null ) this . rtt = this . constructRTT ( builder ) ;
33-
34- this . value = this . rtt . texture ;
30+ if ( this . value === null ) this . value = this . constructFramebuffer ( builder ) ;
3531
3632 return super . construct ( builder ) ;
3733
3834 }
3935
4036 updateBefore ( frame ) {
4137
42- const rtt = this . rtt ;
43-
4438 const renderer = frame . renderer ;
45- renderer . getDrawingBufferSize ( size ) ;
39+ renderer . getDrawingBufferSize ( _size ) ;
40+
41+ //
42+
43+ const framebufferTexture = this . value ;
44+
45+ if ( framebufferTexture . image . width !== _size . width || framebufferTexture . image . height !== _size . height ) {
46+
47+ framebufferTexture . image . width = _size . width ;
48+ framebufferTexture . image . height = _size . height ;
49+ framebufferTexture . needsUpdate = true ;
50+
51+ }
4652
47- rtt . setSize ( size . width , size . height ) ;
53+ //
4854
49- renderer . copyFramebufferToRenderTarget ( rtt ) ;
55+ renderer . copyFramebufferToTexture ( framebufferTexture ) ;
5056
5157 }
5258
0 commit comments