diff --git a/src/core/renderers/webgl/WebGLRenderer.js b/src/core/renderers/webgl/WebGLRenderer.js index cb267a8..00c6d53 100644 --- a/src/core/renderers/webgl/WebGLRenderer.js +++ b/src/core/renderers/webgl/WebGLRenderer.js @@ -117,6 +117,8 @@ // map some webGL blend modes.. this._mapBlendModes(); + + this._renderTargetStack = []; } // constructor @@ -213,24 +215,19 @@ */ WebGLRenderer.prototype.renderDisplayObject = function (displayObject, renderTarget)//projection, buffer) { - this.blendModeManager.setBlendMode(CONST.blendModes.NORMAL); + // TODO is this needed... + //this.blendModeManager.setBlendMode(CONST.blendModes.NORMAL); this.setRenderTarget(renderTarget); - - - // reset the render session data.. - this.drawCount = 0; - // start the filter manager - this.filterManager.begin(); + this.filterManager.setFilterStack( renderTarget.filterStack ); // render the scene! displayObject.renderWebGL(this); - // finish the sprite batch + // finish the current renderer.. this.currentRenderer.flush(); - }; WebGLRenderer.prototype.setObjectRenderer = function (objectRenderer) @@ -247,11 +244,13 @@ WebGLRenderer.prototype.setRenderTarget = function (renderTarget) { + // TODO - maybe down the line this should be a push pos thing? Leaving for now though. this.currentRenderTarget = renderTarget; this.currentRenderTarget.activate(); this.stencilManager.setMaskStack( renderTarget.stencilMaskStack ); }; + /** * Resizes the webGL view to the specified width and height. * diff --git a/src/core/renderers/webgl/WebGLRenderer.js b/src/core/renderers/webgl/WebGLRenderer.js index cb267a8..00c6d53 100644 --- a/src/core/renderers/webgl/WebGLRenderer.js +++ b/src/core/renderers/webgl/WebGLRenderer.js @@ -117,6 +117,8 @@ // map some webGL blend modes.. this._mapBlendModes(); + + this._renderTargetStack = []; } // constructor @@ -213,24 +215,19 @@ */ WebGLRenderer.prototype.renderDisplayObject = function (displayObject, renderTarget)//projection, buffer) { - this.blendModeManager.setBlendMode(CONST.blendModes.NORMAL); + // TODO is this needed... + //this.blendModeManager.setBlendMode(CONST.blendModes.NORMAL); this.setRenderTarget(renderTarget); - - - // reset the render session data.. - this.drawCount = 0; - // start the filter manager - this.filterManager.begin(); + this.filterManager.setFilterStack( renderTarget.filterStack ); // render the scene! displayObject.renderWebGL(this); - // finish the sprite batch + // finish the current renderer.. this.currentRenderer.flush(); - }; WebGLRenderer.prototype.setObjectRenderer = function (objectRenderer) @@ -247,11 +244,13 @@ WebGLRenderer.prototype.setRenderTarget = function (renderTarget) { + // TODO - maybe down the line this should be a push pos thing? Leaving for now though. this.currentRenderTarget = renderTarget; this.currentRenderTarget.activate(); this.stencilManager.setMaskStack( renderTarget.stencilMaskStack ); }; + /** * Resizes the webGL view to the specified width and height. * diff --git a/src/core/renderers/webgl/utils/RenderTarget.js b/src/core/renderers/webgl/utils/RenderTarget.js index 1eb787a..4c96bc1 100644 --- a/src/core/renderers/webgl/utils/RenderTarget.js +++ b/src/core/renderers/webgl/utils/RenderTarget.js @@ -47,9 +47,20 @@ this.frame = null; + // stores masking data for the render target this.stencilBuffer = null; this.stencilMaskStack = new StencilMaskStack(); + // stores filter data for the render target + this.filterStack = [ + { + renderTarget:this, + filter:[], + bounds:this.size + } + ]; + + /** * @property scaleMode * @type Number