diff --git a/src/core/renderers/webgl/filters/filterTransforms.js b/src/core/renderers/webgl/filters/filterTransforms.js index 6c60b04..ec86d38 100644 --- a/src/core/renderers/webgl/filters/filterTransforms.js +++ b/src/core/renderers/webgl/filters/filterTransforms.js @@ -26,40 +26,16 @@ var calculateNormalizedScreenSpaceMatrix = function (outputMatrix, filterArea, textureSize) { - //var worldTransform = sprite.worldTransform.copy(math.Matrix.TEMP_MATRIX), - var texture = {width:800, height:600};//sprite._texture.baseTexture; - - // TODO unwrap? var mappedMatrix = outputMatrix.identity(); - // scale.. - var ratio = textureSize.height / textureSize.width; - mappedMatrix.translate(filterArea.x / textureSize.width, filterArea.y / textureSize.height ); - // mappedMatrix.scale(1 , ratio); - - var translateScaleX = (textureSize.width / texture.width); - var translateScaleY = (textureSize.height / texture.height); - - // worldTransform.tx /= texture.width * translateScaleX; - - //this...? free beer for anyone who can explain why this makes sense! - // worldTransform.ty /= texture.width * translateScaleX; - // worldTransform.ty /= texture.height * translateScaleY; - - // worldTransform.invert(); - // mappedMatrix.prepend(worldTransform); - - // apply inverse scale.. - // mappedMatrix.scale(1 , 1/ratio); + var translateScaleX = (textureSize.width / filterArea.width); + var translateScaleY = (textureSize.height / filterArea.height); mappedMatrix.scale( translateScaleX , translateScaleY ); - // mappedMatrix.translate(sprite.anchor.x, sprite.anchor.y); - return mappedMatrix; - }; // this will map the filter coord so that a texture can be used based on the transform of a sprite diff --git a/src/core/renderers/webgl/filters/filterTransforms.js b/src/core/renderers/webgl/filters/filterTransforms.js index 6c60b04..ec86d38 100644 --- a/src/core/renderers/webgl/filters/filterTransforms.js +++ b/src/core/renderers/webgl/filters/filterTransforms.js @@ -26,40 +26,16 @@ var calculateNormalizedScreenSpaceMatrix = function (outputMatrix, filterArea, textureSize) { - //var worldTransform = sprite.worldTransform.copy(math.Matrix.TEMP_MATRIX), - var texture = {width:800, height:600};//sprite._texture.baseTexture; - - // TODO unwrap? var mappedMatrix = outputMatrix.identity(); - // scale.. - var ratio = textureSize.height / textureSize.width; - mappedMatrix.translate(filterArea.x / textureSize.width, filterArea.y / textureSize.height ); - // mappedMatrix.scale(1 , ratio); - - var translateScaleX = (textureSize.width / texture.width); - var translateScaleY = (textureSize.height / texture.height); - - // worldTransform.tx /= texture.width * translateScaleX; - - //this...? free beer for anyone who can explain why this makes sense! - // worldTransform.ty /= texture.width * translateScaleX; - // worldTransform.ty /= texture.height * translateScaleY; - - // worldTransform.invert(); - // mappedMatrix.prepend(worldTransform); - - // apply inverse scale.. - // mappedMatrix.scale(1 , 1/ratio); + var translateScaleX = (textureSize.width / filterArea.width); + var translateScaleY = (textureSize.height / filterArea.height); mappedMatrix.scale( translateScaleX , translateScaleY ); - // mappedMatrix.translate(sprite.anchor.x, sprite.anchor.y); - return mappedMatrix; - }; // this will map the filter coord so that a texture can be used based on the transform of a sprite diff --git a/src/core/renderers/webgl/managers/FilterManager.js b/src/core/renderers/webgl/managers/FilterManager.js index 7e0be12..0e4086b 100644 --- a/src/core/renderers/webgl/managers/FilterManager.js +++ b/src/core/renderers/webgl/managers/FilterManager.js @@ -321,12 +321,15 @@ return filterTransforms.calculateScreenSpaceMatrix(outputMatrix, currentState.sourceFrame, currentState.renderTarget.size); }; +/** + * Multiply vTextureCoord to this matrix to achieve (0,0,1,1) for filterArea + * + * @param outputMatrix {PIXI.Matrix} + */ FilterManager.prototype.calculateNormalizedScreenSpaceMatrix = function (outputMatrix) { var currentState = this.filterData.stack[this.filterData.index]; - - return filterTransforms.calculateNormalizedScreenSpaceMatrix(outputMatrix, currentState.sourceFrame, currentState.renderTarget.size, currentState.destinationFrame); };