@@ -15,135 +15,51 @@ var BitmapMask = new Class({
1515 this . mainTexture = null ;
1616 this . dirty = true ;
1717
18- if ( resourceManager !== undefined )
18+ if ( renderer . gl )
1919 {
2020 var width = renderer . width ;
2121 var height = renderer . height ;
2222 var pot = ( ( width & ( width - 1 ) ) == 0 && ( height & ( height - 1 ) ) == 0 ) ;
2323 var gl = renderer . gl ;
2424 var wrap = pot ? gl . REPEAT : gl . CLAMP_TO_EDGE ;
25+ var filter = gl . LINEAR ;
26+
27+ this . mainTexture = renderer . createTexture2D ( 0 , filter , filter , wrap , wrap , gl . RGBA , null , width , height ) ;
28+ this . maskTexture = renderer . createTexture2D ( 0 , filter , filter , wrap , wrap , gl . RGBA , null , width , height ) ;
29+ this . mainFramebuffer = renderer . createFramebuffer ( width , height , this . mainTexture , false ) ;
30+ this . maskFramebuffer = renderer . createFramebuffer ( width , height , this . maskTexture , false ) ;
31+
32+ renderer . onContextRestored ( function ( renderer ) {
33+ var width = renderer . width ;
34+ var height = renderer . height ;
35+ var pot = ( ( width & ( width - 1 ) ) == 0 && ( height & ( height - 1 ) ) == 0 ) ;
36+ var gl = renderer . gl ;
37+ var wrap = pot ? gl . REPEAT : gl . CLAMP_TO_EDGE ;
38+ var filter = gl . LINEAR ;
39+
40+ this . mainTexture = renderer . createTexture2D ( 0 , filter , filter , wrap , wrap , gl . RGBA , null , width , height ) ;
41+ this . maskTexture = renderer . createTexture2D ( 0 , filter , filter , wrap , wrap , gl . RGBA , null , width , height ) ;
42+ this . mainFramebuffer = renderer . createFramebuffer ( width , height , this . mainTexture , false ) ;
43+ this . maskFramebuffer = renderer . createFramebuffer ( width , height , this . maskTexture , false ) ;
44+
45+ } , this ) ;
2546
26- this . maskTexture = resourceManager . createTexture (
27- 0 ,
28- gl . LINEAR , gl . LINEAR ,
29- wrap , wrap ,
30- gl . RGBA ,
31- null , width , height
32- ) ;
33-
34- this . mainTexture = resourceManager . createTexture (
35- 0 ,
36- gl . LINEAR , gl . LINEAR ,
37- wrap , wrap ,
38- gl . RGBA ,
39- null , width , height
40- ) ;
41-
42- this . maskRenderTarget = resourceManager . createRenderTarget (
43- width , height ,
44- this . maskTexture ,
45- null
46- ) ;
47- this . mainRenderTarget = resourceManager . createRenderTarget (
48- width , height ,
49- this . mainTexture ,
50- null
51- ) ;
52-
53- scene . sys . game . renderer . currentTexture [ 0 ] = null ;
5447 }
55-
56- var _this = this ;
57-
58- renderer . addContextRestoredCallback ( function ( renderer ) {
59- var resourceManager = renderer . resourceManager ;
60- var gl = renderer . gl ;
61- var wrap = pot ? gl . REPEAT : gl . CLAMP_TO_EDGE ;
62-
63- _this . maskTexture = resourceManager . createTexture (
64- 0 ,
65- gl . LINEAR , gl . LINEAR ,
66- wrap , wrap ,
67- gl . RGBA ,
68- null , width , height
69- ) ;
70- _this . mainTexture = resourceManager . createTexture (
71- 0 ,
72- gl . LINEAR , gl . LINEAR ,
73- wrap , wrap ,
74- gl . RGBA ,
75- null , width , height
76- ) ;
77-
78- _this . maskRenderTarget = resourceManager . createRenderTarget (
79- width , height ,
80- _this . maskTexture ,
81- null
82- ) ;
83- _this . mainRenderTarget = resourceManager . createRenderTarget (
84- width , height ,
85- _this . mainTexture ,
86- null
87- ) ;
88-
89- // force rebinding of prev texture
90- scene . sys . game . renderer . currentTexture [ 0 ] = null ;
91- } ) ;
9248 } ,
9349
9450 setBitmap : function ( renderable )
9551 {
9652 this . bitmapMask = renderable ;
9753 } ,
9854
99- preRenderWebGL : function ( renderer , gameObject , camera )
55+ preRenderWebGL : function ( renderer , maskedObject , camera )
10056 {
101- var bitmapMask = this . bitmapMask ;
102- var maskRenderTarget = this . maskRenderTarget ;
103- var mainRenderTarget = this . mainRenderTarget ;
104- var prevRenderTarget = null ;
105- var visible = bitmapMask . visible ;
106-
107- if ( bitmapMask )
108- {
109- /* Clear render targets first */
110- var gl = renderer . gl ;
111-
112- gl . clearColor ( 0.0 , 0.0 , 0.0 , 0.0 ) ;
113- gl . bindFramebuffer ( gl . FRAMEBUFFER , maskRenderTarget . framebufferObject ) ;
114- gl . clear ( gl . COLOR_BUFFER_BIT ) ;
115- gl . bindFramebuffer ( gl . FRAMEBUFFER , mainRenderTarget . framebufferObject ) ;
116- gl . clear ( gl . COLOR_BUFFER_BIT ) ;
117- gl . bindFramebuffer ( gl . FRAMEBUFFER , null ) ;
118-
119- // Inject mask render target & reset it after rendering.
120- prevRenderTarget = bitmapMask . renderTarget ;
121- bitmapMask . renderTarget = maskRenderTarget ;
122- bitmapMask . visible = true ;
123- bitmapMask . renderWebGL ( renderer , bitmapMask , 0.0 , camera ) ;
124- renderer . currentRenderer . flush ( null , maskRenderTarget ) ;
125- bitmapMask . renderTarget = prevRenderTarget ;
126- bitmapMask . visible = visible ;
127-
128- // Inject main render target & reset it at post rendering.
129- gameObject . renderTarget = this . mainRenderTarget ;
130- renderer . setBlendMode ( 0 ) ;
131- }
132-
57+ renderer . pipelines . BitmapMaskPipeline . beginMask ( this , maskedObject , camera ) ;
13358 } ,
13459
135- postRenderWebGL : function ( renderer , gameObject )
60+ postRenderWebGL : function ( renderer )
13661 {
137- var maskRenderer = renderer . maskRenderer ;
138- var gl = renderer . gl ;
139- var prevRenderTarget = gameObject . renderTarget ;
140-
141- // flush and reset
142- renderer . currentRenderer . flush ( null , this . mainRenderTarget ) ;
143- gameObject . renderTarget = prevRenderTarget ;
144-
145- // Apply alpha masking using mask renderer
146- maskRenderer . draw ( null , null , this . mainTexture , this . maskTexture ) ;
62+ renderer . pipelines . BitmapMaskPipeline . endMask ( this ) ;
14763 } ,
14864
14965 preRenderCanvas : function ( renderer , mask , camera )
0 commit comments