diff --git a/packages/filters/filter-displacement/src/DisplacementFilter.js b/packages/filters/filter-displacement/src/DisplacementFilter.js index 73ab7ec..29a4624 100644 --- a/packages/filters/filter-displacement/src/DisplacementFilter.js +++ b/packages/filters/filter-displacement/src/DisplacementFilter.js @@ -52,11 +52,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/packages/filters/filter-displacement/src/DisplacementFilter.js b/packages/filters/filter-displacement/src/DisplacementFilter.js index 73ab7ec..29a4624 100644 --- a/packages/filters/filter-displacement/src/DisplacementFilter.js +++ b/packages/filters/filter-displacement/src/DisplacementFilter.js @@ -52,11 +52,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/packages/filters/filter-displacement/src/displacement.frag b/packages/filters/filter-displacement/src/displacement.frag index e7e4053..c310299 100644 --- a/packages/filters/filter-displacement/src/displacement.frag +++ b/packages/filters/filter-displacement/src/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)); }