diff --git a/src/filters/displacement/DisplacementFilter.js b/src/filters/displacement/DisplacementFilter.js index b5d030c..a50bdc6 100644 --- a/src/filters/displacement/DisplacementFilter.js +++ b/src/filters/displacement/DisplacementFilter.js @@ -56,11 +56,9 @@ */ apply(filterManager, input, output) { - const ratio = (1 / output.destinationFrame.width) * (output.size.width / input.size.width); - this.uniforms.filterMatrix = filterManager.calculateSpriteMatrix(this.maskMatrix, this.maskSprite); - this.uniforms.scale.x = this.scale.x * ratio; - this.uniforms.scale.y = this.scale.y * ratio; + this.uniforms.scale.x = this.scale.x; + this.uniforms.scale.y = this.scale.y; // draw the filter... filterManager.applyFilter(this, input, output); diff --git a/src/filters/displacement/DisplacementFilter.js b/src/filters/displacement/DisplacementFilter.js index b5d030c..a50bdc6 100644 --- a/src/filters/displacement/DisplacementFilter.js +++ b/src/filters/displacement/DisplacementFilter.js @@ -56,11 +56,9 @@ */ apply(filterManager, input, output) { - const ratio = (1 / output.destinationFrame.width) * (output.size.width / input.size.width); - this.uniforms.filterMatrix = filterManager.calculateSpriteMatrix(this.maskMatrix, this.maskSprite); - this.uniforms.scale.x = this.scale.x * ratio; - this.uniforms.scale.y = this.scale.y * ratio; + this.uniforms.scale.x = this.scale.x; + this.uniforms.scale.y = this.scale.y; // draw the filter... filterManager.applyFilter(this, input, output); diff --git a/src/filters/displacement/displacement.frag b/src/filters/displacement/displacement.frag index e7e4053..c310299 100644 --- a/src/filters/displacement/displacement.frag +++ b/src/filters/displacement/displacement.frag @@ -6,14 +6,15 @@ uniform sampler2D uSampler; uniform sampler2D mapSampler; +uniform vec4 filterArea; uniform vec4 filterClamp; void main(void) { - vec4 map = texture2D(mapSampler, vFilterCoord); + vec4 map = texture2D(mapSampler, vFilterCoord); - map -= 0.5; - map.xy *= scale; + map -= 0.5; + map.xy *= scale / filterArea.xy; - gl_FragColor = texture2D(uSampler, clamp(vec2(vTextureCoord.x + map.x, vTextureCoord.y + map.y), filterClamp.xy, filterClamp.zw)); + gl_FragColor = texture2D(uSampler, clamp(vec2(vTextureCoord.x + map.x, vTextureCoord.y + map.y), filterClamp.xy, filterClamp.zw)); }