const AbstractFilter = require('../../core/renderers/webgl/filters/AbstractFilter'); const BlurXFilter = require('./BlurXFilter'); const BlurYFilter = require('./BlurYFilter'); /** * The BlurFilter applies a Gaussian blur to an object. * The strength of the blur can be set for x- and y-axis separately. * * @class * @extends AbstractFilter */ function BlurFilter() { AbstractFilter.call(this); this.blurXFilter = new BlurXFilter(); this.blurYFilter = new BlurYFilter(); } BlurFilter.prototype = Object.create(AbstractFilter.prototype); BlurFilter.prototype.constructor = BlurFilter; module.exports = BlurFilter; BlurFilter.prototype.applyFilter = function(renderer, input, output) { var renderTarget = renderer.filterManager.getRenderTarget(true); this.blurXFilter.applyFilter(renderer, input, renderTarget); this.blurYFilter.applyFilter(renderer, renderTarget, output); renderer.filterManager.returnRenderTarget(renderTarget); }; Object.defineProperties(BlurFilter.prototype, { /** * Sets the strength of both the blurX and blurY properties simultaneously * * @member {number} * @memberOf filters.BlurFilter# * @default 2 */ blur: { get: function() { return this.blurXFilter.blur; }, set: function(value) { this.padding = Math.abs(value) * 0.5; this.blurXFilter.blur = this.blurYFilter.blur = value; }, }, /** * Sets the number of passes for blur. More passes means higher quaility bluring. * * @member {number} * @memberof filters.BlurYFilter# * @default 1 */ passes: { get: function() { return this.blurXFilter.passes; }, set: function(value) { this.blurXFilter.passes = this.blurYFilter.passes = value; }, }, /** * Sets the strength of the blurX property * * @member {number} * @memberOf filters.BlurFilter# * @default 2 */ blurX: { get: function() { return this.blurXFilter.blur; }, set: function(value) { this.blurXFilter.blur = value; }, }, /** * Sets the strength of the blurY property * * @member {number} * @memberOf filters.BlurFilter# * @default 2 */ blurY: { get: function() { return this.blurYFilter.blur; }, set: function(value) { this.blurYFilter.blur = value; }, }, });