@@ -56,7 +56,11 @@ var ContainerWebGLRenderer = function (renderer, container, interpolationPercent
5656 var scrollFactorX = container . scrollFactorX ;
5757 var scrollFactorY = container . scrollFactorY ;
5858
59- for ( var i = 0 ; i < children . length ; i ++ )
59+ var list = children ;
60+ var childCount = children . length ;
61+ var current = renderer . mask ;
62+
63+ for ( var i = 0 ; i < childCount ; i ++ )
6064 {
6165 var child = children [ i ] ;
6266
@@ -75,11 +79,31 @@ var ContainerWebGLRenderer = function (renderer, container, interpolationPercent
7579 renderer . setBlendMode ( child . blendMode ) ;
7680 }
7781
78- if ( child . mask )
82+ var mask = child . mask ;
83+
84+ current = renderer . currentMask ;
85+
86+ if ( current . mask && current . mask !== mask )
7987 {
80- child . mask . preRenderWebGL ( renderer , child , camera ) ;
88+ // Render out the previously set mask
89+ current . mask . postRenderWebGL ( renderer , current . camera ) ;
8190 }
8291
92+ if ( mask && current . mask !== mask )
93+ {
94+ mask . preRenderWebGL ( renderer , child , camera ) ;
95+ }
96+
97+ var type = child . type ;
98+
99+ if ( type !== renderer . currentType )
100+ {
101+ renderer . newType = true ;
102+ renderer . currentType = type ;
103+ }
104+
105+ renderer . nextTypeMatch = ( i < childCount - 1 ) ? ( list [ i + 1 ] . type === renderer . currentType ) : false ;
106+
83107 // Set parent values
84108 child . setScrollFactor ( childScrollFactorX * scrollFactorX , childScrollFactorY * scrollFactorY ) ;
85109 child . setAlpha ( childAlpha * alpha ) ;
@@ -91,10 +115,7 @@ var ContainerWebGLRenderer = function (renderer, container, interpolationPercent
91115 child . setAlpha ( childAlpha ) ;
92116 child . setScrollFactor ( childScrollFactorX , childScrollFactorY ) ;
93117
94- if ( child . mask )
95- {
96- child . mask . postRenderWebGL ( renderer , camera ) ;
97- }
118+ renderer . newType = false ;
98119 }
99120} ;
100121
0 commit comments