diff --git a/src/core/renderers/webgl/managers/FilterManager.js b/src/core/renderers/webgl/managers/FilterManager.js index 62b3a44..aeb5db6 100644 --- a/src/core/renderers/webgl/managers/FilterManager.js +++ b/src/core/renderers/webgl/managers/FilterManager.js @@ -35,6 +35,8 @@ this.shaderCache = {}; // todo add default! this.pool = {}; + + this.filterData = null; } FilterManager.prototype = Object.create(WebGLManager.prototype); @@ -264,7 +266,22 @@ if(uniformData[i].type === 'sampler2D') { shader.uniforms[i] = textureCount; - this.renderer.bindTexture(uniforms[i].baseTexture, textureCount); + + if(uniforms[i].baseTexture) + { + this.renderer.bindTexture(uniforms[i].baseTexture, textureCount); + } + else + { + // this is helpful as renderTargets can also be set. + // Although thinking about it, we could probably + // make the filter texture cache return a RenderTexture + // rather than a renderTarget + var gl = this.renderer.gl; + this.renderer._activeTextureLocation = gl.TEXTURE0 + textureCount + gl.activeTexture(gl.TEXTURE0 + textureCount ); + uniforms[i].texture.bind(); + } textureCount++; } @@ -310,10 +327,10 @@ }; -FilterManager.prototype.getRenderTarget = function() +FilterManager.prototype.getRenderTarget = function(clear, resolution) { var currentState = this.filterData.stack[this.filterData.index]; - var renderTarget = this.getPotRenderTarget(this.renderer.gl, currentState.sourceFrame.width, currentState.sourceFrame.height, currentState.resolution); + var renderTarget = this.getPotRenderTarget(this.renderer.gl, currentState.sourceFrame.width, currentState.sourceFrame.height, resolution || currentState.resolution); renderTarget.setFrame(currentState.destinationFrame, currentState.sourceFrame); return renderTarget;