@@ -95,11 +95,7 @@ export class EffectPass extends Pass<EffectMaterial> {
9595
9696for ( const effect of super . subpasses ) {
9797
98- for ( const gBufferComponent of effect . input . gBuffer ) {
99-
100- this . input . gBuffer . add ( gBufferComponent ) ;
101-
102- }
98+ this . copyGBufferComponents ( effect as Effect ) ;
10399
104100effect . addEventListener ( "change" , this . effectListener ) ;
105101effect . addEventListener ( "toggle" , this . effectListener ) ;
@@ -154,6 +150,22 @@ export class EffectPass extends Pass<EffectMaterial> {
154150
155151}
156152
153+ /**
154+ * Copies the G-Buffer components of the given effect.
155+ *
156+ *@param effect - The effect.
157+ */
158+
159+ private copyGBufferComponents ( effect :Effect ) :void {
160+
161+ for ( const gBufferComponent of effect . input . gBuffer ) {
162+
163+ this . input . gBuffer . add ( gBufferComponent ) ;
164+
165+ }
166+
167+ }
168+
157169/**
158170 * Updates the fullscreen material based on the current effect combination.
159171 *
@@ -227,6 +239,7 @@ export class EffectPass extends Pass<EffectMaterial> {
227239switch ( e . type ) {
228240
229241case "change" :
242+ this . copyGBufferComponents ( e . target as Effect ) ;
230243this . effectMaterialManager . invalidateShaderData ( e . target as Effect ) ;
231244this . updateMaterial ( true ) ;
232245break ;