diff --git a/src/core/renderers/webgl/managers/MaskManager.js b/src/core/renderers/webgl/managers/MaskManager.js index 352c7e9..4c539ee 100644 --- a/src/core/renderers/webgl/managers/MaskManager.js +++ b/src/core/renderers/webgl/managers/MaskManager.js @@ -10,7 +10,9 @@ { WebGLManager.call(this, renderer); - this.scissor = true; + this.scissor = false; + + this.enableScissor = false; this.alphaMaskPool = []; this.alphaMaskPool = []; @@ -36,7 +38,7 @@ else { // console.log( maskData.graphicsData[0].shape.type) - if(!this.scissor && !this.renderer.stencilManager.stencilMaskStack.length && maskData.graphicsData[0].shape.type === 1) + if(this.enableScissor && !this.scissor && !this.renderer.stencilManager.stencilMaskStack.length && maskData.graphicsData[0].shape.type === 1) { var matrix = maskData.worldTransform; @@ -75,7 +77,7 @@ } else { - if(!this.renderer.stencilManager.stencilMaskStack.length) + if(this.enableScissor && !this.renderer.stencilManager.stencilMaskStack.length) { this.popScissorMask(target, maskData); } @@ -154,7 +156,11 @@ maskData.renderable = false; gl.enable(gl.SCISSOR_TEST); - gl.scissor(bounds.x, this.renderer._activeRenderTarget.size.height - bounds.y - bounds.height, bounds.width , bounds.height); + + gl.scissor(bounds.x, + this.renderer._activeRenderTarget.root ? this.renderer._activeRenderTarget.size.height - bounds.y - bounds.height : bounds.y, + bounds.width , + bounds.height); this.scissor = true; }; diff --git a/src/core/renderers/webgl/managers/MaskManager.js b/src/core/renderers/webgl/managers/MaskManager.js index 352c7e9..4c539ee 100644 --- a/src/core/renderers/webgl/managers/MaskManager.js +++ b/src/core/renderers/webgl/managers/MaskManager.js @@ -10,7 +10,9 @@ { WebGLManager.call(this, renderer); - this.scissor = true; + this.scissor = false; + + this.enableScissor = false; this.alphaMaskPool = []; this.alphaMaskPool = []; @@ -36,7 +38,7 @@ else { // console.log( maskData.graphicsData[0].shape.type) - if(!this.scissor && !this.renderer.stencilManager.stencilMaskStack.length && maskData.graphicsData[0].shape.type === 1) + if(this.enableScissor && !this.scissor && !this.renderer.stencilManager.stencilMaskStack.length && maskData.graphicsData[0].shape.type === 1) { var matrix = maskData.worldTransform; @@ -75,7 +77,7 @@ } else { - if(!this.renderer.stencilManager.stencilMaskStack.length) + if(this.enableScissor && !this.renderer.stencilManager.stencilMaskStack.length) { this.popScissorMask(target, maskData); } @@ -154,7 +156,11 @@ maskData.renderable = false; gl.enable(gl.SCISSOR_TEST); - gl.scissor(bounds.x, this.renderer._activeRenderTarget.size.height - bounds.y - bounds.height, bounds.width , bounds.height); + + gl.scissor(bounds.x, + this.renderer._activeRenderTarget.root ? this.renderer._activeRenderTarget.size.height - bounds.y - bounds.height : bounds.y, + bounds.width , + bounds.height); this.scissor = true; }; diff --git a/src/core/renderers/webgl/managers/StencilManager.js b/src/core/renderers/webgl/managers/StencilManager.js index f518dcb..20e5408 100644 --- a/src/core/renderers/webgl/managers/StencilManager.js +++ b/src/core/renderers/webgl/managers/StencilManager.js @@ -45,6 +45,8 @@ */ StencilMaskManager.prototype.pushStencil = function (graphics) { + this.renderer.setObjectRenderer(this.renderer.plugins.graphics); + this.renderer._activeRenderTarget.attachStencilBuffer(); var gl = this.renderer.gl, @@ -54,23 +56,18 @@ { gl.enable(gl.STENCIL_TEST); gl.clear(gl.STENCIL_BUFFER_BIT); - sms.reverse = true; - sms.count = 0; + gl.stencilFunc(gl.ALWAYS,1,1); } sms.push(graphics); gl.colorMask(false, false, false, false); - - - gl.stencilFunc(gl.ALWAYS,1,1); gl.stencilOp(gl.KEEP,gl.KEEP,gl.INCR); this.renderer.plugins.graphics.render(graphics) - gl.stencilFunc(gl.NOTEQUAL,0, sms.length); - gl.colorMask(true, true, true, true); + gl.stencilFunc(gl.NOTEQUAL,0, sms.length); gl.stencilOp(gl.KEEP,gl.KEEP,gl.KEEP); }; @@ -81,6 +78,8 @@ */ StencilMaskManager.prototype.popStencil = function () { + renderer.setObjectRenderer(this.renderer.plugins.graphics); + var gl = this.renderer.gl, sms = this.stencilMaskStack; @@ -93,17 +92,13 @@ } else { - var level = sms.count; - gl.colorMask(false, false, false, false); - gl.stencilOp(gl.KEEP,gl.KEEP,gl.DECR); this.renderer.plugins.graphics.render(graphics) - gl.stencilFunc(gl.NOTEQUAL,0,sms.length); - gl.colorMask(true, true, true, true); + gl.stencilFunc(gl.NOTEQUAL, 0, sms.length); gl.stencilOp(gl.KEEP,gl.KEEP,gl.KEEP); } }; diff --git a/src/core/renderers/webgl/managers/MaskManager.js b/src/core/renderers/webgl/managers/MaskManager.js index 352c7e9..4c539ee 100644 --- a/src/core/renderers/webgl/managers/MaskManager.js +++ b/src/core/renderers/webgl/managers/MaskManager.js @@ -10,7 +10,9 @@ { WebGLManager.call(this, renderer); - this.scissor = true; + this.scissor = false; + + this.enableScissor = false; this.alphaMaskPool = []; this.alphaMaskPool = []; @@ -36,7 +38,7 @@ else { // console.log( maskData.graphicsData[0].shape.type) - if(!this.scissor && !this.renderer.stencilManager.stencilMaskStack.length && maskData.graphicsData[0].shape.type === 1) + if(this.enableScissor && !this.scissor && !this.renderer.stencilManager.stencilMaskStack.length && maskData.graphicsData[0].shape.type === 1) { var matrix = maskData.worldTransform; @@ -75,7 +77,7 @@ } else { - if(!this.renderer.stencilManager.stencilMaskStack.length) + if(this.enableScissor && !this.renderer.stencilManager.stencilMaskStack.length) { this.popScissorMask(target, maskData); } @@ -154,7 +156,11 @@ maskData.renderable = false; gl.enable(gl.SCISSOR_TEST); - gl.scissor(bounds.x, this.renderer._activeRenderTarget.size.height - bounds.y - bounds.height, bounds.width , bounds.height); + + gl.scissor(bounds.x, + this.renderer._activeRenderTarget.root ? this.renderer._activeRenderTarget.size.height - bounds.y - bounds.height : bounds.y, + bounds.width , + bounds.height); this.scissor = true; }; diff --git a/src/core/renderers/webgl/managers/StencilManager.js b/src/core/renderers/webgl/managers/StencilManager.js index f518dcb..20e5408 100644 --- a/src/core/renderers/webgl/managers/StencilManager.js +++ b/src/core/renderers/webgl/managers/StencilManager.js @@ -45,6 +45,8 @@ */ StencilMaskManager.prototype.pushStencil = function (graphics) { + this.renderer.setObjectRenderer(this.renderer.plugins.graphics); + this.renderer._activeRenderTarget.attachStencilBuffer(); var gl = this.renderer.gl, @@ -54,23 +56,18 @@ { gl.enable(gl.STENCIL_TEST); gl.clear(gl.STENCIL_BUFFER_BIT); - sms.reverse = true; - sms.count = 0; + gl.stencilFunc(gl.ALWAYS,1,1); } sms.push(graphics); gl.colorMask(false, false, false, false); - - - gl.stencilFunc(gl.ALWAYS,1,1); gl.stencilOp(gl.KEEP,gl.KEEP,gl.INCR); this.renderer.plugins.graphics.render(graphics) - gl.stencilFunc(gl.NOTEQUAL,0, sms.length); - gl.colorMask(true, true, true, true); + gl.stencilFunc(gl.NOTEQUAL,0, sms.length); gl.stencilOp(gl.KEEP,gl.KEEP,gl.KEEP); }; @@ -81,6 +78,8 @@ */ StencilMaskManager.prototype.popStencil = function () { + renderer.setObjectRenderer(this.renderer.plugins.graphics); + var gl = this.renderer.gl, sms = this.stencilMaskStack; @@ -93,17 +92,13 @@ } else { - var level = sms.count; - gl.colorMask(false, false, false, false); - gl.stencilOp(gl.KEEP,gl.KEEP,gl.DECR); this.renderer.plugins.graphics.render(graphics) - gl.stencilFunc(gl.NOTEQUAL,0,sms.length); - gl.colorMask(true, true, true, true); + gl.stencilFunc(gl.NOTEQUAL, 0, sms.length); gl.stencilOp(gl.KEEP,gl.KEEP,gl.KEEP); } }; diff --git a/src/core/textures/BaseRenderTexture.js b/src/core/textures/BaseRenderTexture.js index ed664d3..e61a97b 100644 --- a/src/core/textures/BaseRenderTexture.js +++ b/src/core/textures/BaseRenderTexture.js @@ -78,7 +78,7 @@ /** * @member {boolean} */ - this.valid = true; + this.valid = false; } diff --git a/src/core/renderers/webgl/managers/MaskManager.js b/src/core/renderers/webgl/managers/MaskManager.js index 352c7e9..4c539ee 100644 --- a/src/core/renderers/webgl/managers/MaskManager.js +++ b/src/core/renderers/webgl/managers/MaskManager.js @@ -10,7 +10,9 @@ { WebGLManager.call(this, renderer); - this.scissor = true; + this.scissor = false; + + this.enableScissor = false; this.alphaMaskPool = []; this.alphaMaskPool = []; @@ -36,7 +38,7 @@ else { // console.log( maskData.graphicsData[0].shape.type) - if(!this.scissor && !this.renderer.stencilManager.stencilMaskStack.length && maskData.graphicsData[0].shape.type === 1) + if(this.enableScissor && !this.scissor && !this.renderer.stencilManager.stencilMaskStack.length && maskData.graphicsData[0].shape.type === 1) { var matrix = maskData.worldTransform; @@ -75,7 +77,7 @@ } else { - if(!this.renderer.stencilManager.stencilMaskStack.length) + if(this.enableScissor && !this.renderer.stencilManager.stencilMaskStack.length) { this.popScissorMask(target, maskData); } @@ -154,7 +156,11 @@ maskData.renderable = false; gl.enable(gl.SCISSOR_TEST); - gl.scissor(bounds.x, this.renderer._activeRenderTarget.size.height - bounds.y - bounds.height, bounds.width , bounds.height); + + gl.scissor(bounds.x, + this.renderer._activeRenderTarget.root ? this.renderer._activeRenderTarget.size.height - bounds.y - bounds.height : bounds.y, + bounds.width , + bounds.height); this.scissor = true; }; diff --git a/src/core/renderers/webgl/managers/StencilManager.js b/src/core/renderers/webgl/managers/StencilManager.js index f518dcb..20e5408 100644 --- a/src/core/renderers/webgl/managers/StencilManager.js +++ b/src/core/renderers/webgl/managers/StencilManager.js @@ -45,6 +45,8 @@ */ StencilMaskManager.prototype.pushStencil = function (graphics) { + this.renderer.setObjectRenderer(this.renderer.plugins.graphics); + this.renderer._activeRenderTarget.attachStencilBuffer(); var gl = this.renderer.gl, @@ -54,23 +56,18 @@ { gl.enable(gl.STENCIL_TEST); gl.clear(gl.STENCIL_BUFFER_BIT); - sms.reverse = true; - sms.count = 0; + gl.stencilFunc(gl.ALWAYS,1,1); } sms.push(graphics); gl.colorMask(false, false, false, false); - - - gl.stencilFunc(gl.ALWAYS,1,1); gl.stencilOp(gl.KEEP,gl.KEEP,gl.INCR); this.renderer.plugins.graphics.render(graphics) - gl.stencilFunc(gl.NOTEQUAL,0, sms.length); - gl.colorMask(true, true, true, true); + gl.stencilFunc(gl.NOTEQUAL,0, sms.length); gl.stencilOp(gl.KEEP,gl.KEEP,gl.KEEP); }; @@ -81,6 +78,8 @@ */ StencilMaskManager.prototype.popStencil = function () { + renderer.setObjectRenderer(this.renderer.plugins.graphics); + var gl = this.renderer.gl, sms = this.stencilMaskStack; @@ -93,17 +92,13 @@ } else { - var level = sms.count; - gl.colorMask(false, false, false, false); - gl.stencilOp(gl.KEEP,gl.KEEP,gl.DECR); this.renderer.plugins.graphics.render(graphics) - gl.stencilFunc(gl.NOTEQUAL,0,sms.length); - gl.colorMask(true, true, true, true); + gl.stencilFunc(gl.NOTEQUAL, 0, sms.length); gl.stencilOp(gl.KEEP,gl.KEEP,gl.KEEP); } }; diff --git a/src/core/textures/BaseRenderTexture.js b/src/core/textures/BaseRenderTexture.js index ed664d3..e61a97b 100644 --- a/src/core/textures/BaseRenderTexture.js +++ b/src/core/textures/BaseRenderTexture.js @@ -78,7 +78,7 @@ /** * @member {boolean} */ - this.valid = true; + this.valid = false; } diff --git a/src/filters/displacement/DisplacementFilter.js b/src/filters/displacement/DisplacementFilter.js index 6e59e91..1a62308 100644 --- a/src/filters/displacement/DisplacementFilter.js +++ b/src/filters/displacement/DisplacementFilter.js @@ -45,12 +45,11 @@ DisplacementFilter.prototype.apply = function (filterManager, input, output) { - - + var ratio = (1/output.destinationFrame.width) * (output.size.width/input.size.width); /// // * 2 //4//this.strength / 4 / this.passes * (input.frame.width / input.size.width); this.uniforms.otherMatrix = filterManager.calculateSpriteMatrix(this.maskMatrix, this.maskSprite); - this.uniforms.scale.x = this.scale.x * (1/800)//input.frame.width); - this.uniforms.scale.y = this.scale.y * (1/600)//input.frame.height); + this.uniforms.scale.x = this.scale.x * ratio + this.uniforms.scale.y = this.scale.y * ratio // draw the filter... filterManager.applyFilter(this, input, output);