@@ -39,6 +39,8 @@ import { ClearMaskPass, MaskPass } from './MaskPass.js';
3939 *
4040 * @three_import import { EffectComposer } from 'three/addons/postprocessing/EffectComposer.js';
4141 */
42+ const size = /* @__PURE__ */ new Vector2 ( ) ;
43+
4244class EffectComposer {
4345
4446 /**
@@ -62,7 +64,7 @@ class EffectComposer {
6264
6365 if ( renderTarget === undefined ) {
6466
65- const size = renderer . getSize ( new Vector2 ( ) ) ;
67+ renderer . getSize ( size ) ;
6668 this . _width = size . width ;
6769 this . _height = size . height ;
6870
@@ -128,6 +130,22 @@ class EffectComposer {
128130 */
129131 this . clock = new Clock ( ) ;
130132
133+ this . onSessionStateChange = this . onSessionStateChange . bind ( this ) ;
134+ this . renderer . xr . addEventListener ( 'sessionstart' , this . onSessionStateChange ) ;
135+ this . renderer . xr . addEventListener ( 'sessionend' , this . onSessionStateChange ) ;
136+
137+ }
138+
139+ onSessionStateChange ( ) {
140+
141+ this . renderer . getSize ( size ) ;
142+ this . _width = size . width ;
143+ this . _height = size . height ;
144+
145+ this . _pixelRatio = this . renderer . xr . isPresenting ? 1 : this . renderer . getPixelRatio ( ) ;
146+
147+ this . setSize ( this . _width , this . _height ) ;
148+
131149 }
132150
133151 /**
@@ -285,7 +303,7 @@ class EffectComposer {
285303
286304 if ( renderTarget === undefined ) {
287305
288- const size = this . renderer . getSize ( new Vector2 ( ) ) ;
306+ this . renderer . getSize ( size ) ;
289307 this . _pixelRatio = this . renderer . getPixelRatio ( ) ;
290308 this . _width = size . width ;
291309 this . _height = size . height ;
@@ -356,6 +374,9 @@ class EffectComposer {
356374
357375 this . copyPass . dispose ( ) ;
358376
377+ this . renderer . xr . removeEventListener ( 'sessionstart' , this . onSessionStateChange ) ;
378+ this . renderer . xr . removeEventListener ( 'sessionend' , this . onSessionStateChange ) ;
379+
359380 }
360381
361382}
0 commit comments