UNPKG

pixi.js

Version:

PixiJS — The HTML5 Creation Engine =============

1 lines 13.8 kB
{"version":3,"file":"BlurFilter.mjs","sources":["../../../../src/filters/defaults/blur/BlurFilter.ts"],"sourcesContent":["import { TexturePool } from '../../../rendering/renderers/shared/texture/TexturePool';\nimport { RendererType } from '../../../rendering/renderers/types';\nimport { deprecation, v8_0_0 } from '../../../utils/logging/deprecation';\nimport { Filter } from '../../Filter';\nimport { BlurFilterPass } from './BlurFilterPass';\n\nimport type { RenderSurface } from '../../../rendering/renderers/shared/renderTarget/RenderTargetSystem';\nimport type { Texture } from '../../../rendering/renderers/shared/texture/Texture';\nimport type { FilterOptions } from '../../Filter';\nimport type { FilterSystem } from '../../FilterSystem';\n\n/**\n * Options for BlurFilter\n * @memberof filters\n */\nexport interface BlurFilterOptions extends FilterOptions\n{\n /**\n * The strength of the blur filter.\n * @default 8\n */\n strength?: number;\n /**\n * The horizontal strength of the blur.\n * @default 8\n */\n strengthX?: number;\n /**\n * The vertical strength of the blur.\n * @default 8\n */\n strengthY?: number;\n /**\n * The quality of the blur filter.\n * @default 4\n */\n quality?: number;\n /**\n * The kernelSize of the blur filter.Options: 5, 7, 9, 11, 13, 15.\n * @default 5\n */\n kernelSize?: number;\n}\n\n/**\n * The BlurFilter applies a Gaussian blur to an object.\n *\n * The strength of the blur can be set for the x-axis and y-axis separately.\n * @memberof filters\n */\nexport class BlurFilter extends Filter\n{\n /** Default blur filter options */\n public static defaultOptions: Partial<BlurFilterOptions> = {\n /** The strength of the blur filter. */\n strength: 8,\n /** The quality of the blur filter. */\n quality: 4,\n /** The kernelSize of the blur filter.Options: 5, 7, 9, 11, 13, 15. */\n kernelSize: 5,\n };\n\n /** The horizontal blur filter */\n public blurXFilter: BlurFilterPass;\n /** The vertical blur filter */\n public blurYFilter: BlurFilterPass;\n\n private _repeatEdgePixels = false;\n\n /**\n * @param {filters.BlurFilterOptions} options - The options of the blur filter.\n */\n constructor(options?: BlurFilterOptions);\n /** @deprecated since 8.0.0 */\n constructor(strength?: number, quality?: number, resolution?: number | null, kernelSize?: number);\n constructor(...args: [BlurFilterOptions?] | [number?, number?, number?, number?])\n {\n let options = args[0] ?? {};\n\n // if options is a number)\n if (typeof options === 'number')\n {\n // #if _DEBUG\n // eslint-disable-next-line max-len\n deprecation(v8_0_0, 'BlurFilter constructor params are now options object. See params: { strength, quality, resolution, kernelSize }');\n // #endif\n\n options = { strength: options };\n\n if (args[1] !== undefined)options.quality = args[1];\n if (args[2] !== undefined)options.resolution = args[2] || 'inherit';\n if (args[3] !== undefined)options.kernelSize = args[3];\n }\n\n options = { ...BlurFilterPass.defaultOptions, ...options };\n\n const { strength, strengthX, strengthY, quality, ...rest } = options;\n\n super({\n ...rest,\n compatibleRenderers: RendererType.BOTH,\n resources: {}\n });\n\n this.blurXFilter = new BlurFilterPass({ horizontal: true, ...options });\n this.blurYFilter = new BlurFilterPass({ horizontal: false, ...options });\n\n this.quality = quality;\n this.strengthX = strengthX ?? strength;\n this.strengthY = strengthY ?? strength;\n this.repeatEdgePixels = false;\n }\n\n /**\n * Applies the filter.\n * @param filterManager - The manager.\n * @param input - The input target.\n * @param output - The output target.\n * @param clearMode - How to clear\n */\n public apply(\n filterManager: FilterSystem,\n input: Texture,\n output: RenderSurface,\n clearMode: boolean\n ): void\n {\n const xStrength = Math.abs(this.blurXFilter.strength);\n const yStrength = Math.abs(this.blurYFilter.strength);\n\n if (xStrength && yStrength)\n {\n const tempTexture = TexturePool.getSameSizeTexture(input);\n\n this.blurXFilter.blendMode = 'normal';\n this.blurXFilter.apply(filterManager, input, tempTexture, true);\n this.blurYFilter.blendMode = this.blendMode;\n this.blurYFilter.apply(filterManager, tempTexture, output, clearMode);\n\n TexturePool.returnTexture(tempTexture);\n }\n else if (yStrength)\n {\n this.blurYFilter.blendMode = this.blendMode;\n this.blurYFilter.apply(filterManager, input, output, clearMode);\n }\n else\n {\n this.blurXFilter.blendMode = this.blendMode;\n this.blurXFilter.apply(filterManager, input, output, clearMode);\n }\n }\n\n protected updatePadding(): void\n {\n if (this._repeatEdgePixels)\n {\n this.padding = 0;\n }\n else\n {\n this.padding = Math.max(Math.abs(this.blurXFilter.blur), Math.abs(this.blurYFilter.blur)) * 2;\n }\n }\n\n /**\n * Sets the strength of both the blurX and blurY properties simultaneously\n * @default 8\n */\n get strength(): number\n {\n if (this.strengthX !== this.strengthY)\n {\n throw new Error('BlurFilter\\'s strengthX and strengthY are different');\n }\n\n return this.strengthX;\n }\n\n set strength(value: number)\n {\n this.blurXFilter.blur = this.blurYFilter.blur = value;\n this.updatePadding();\n }\n\n /**\n * Sets the number of passes for blur. More passes means higher quality bluring.\n * @default 1\n */\n get quality(): number\n {\n return this.blurXFilter.quality;\n }\n\n set quality(value: number)\n {\n this.blurXFilter.quality = this.blurYFilter.quality = value;\n }\n\n /**\n * Sets the strength of horizontal blur\n * @default 8\n */\n get strengthX(): number\n {\n return this.blurXFilter.blur;\n }\n\n set strengthX(value: number)\n {\n this.blurXFilter.blur = value;\n this.updatePadding();\n }\n\n /**\n * Sets the strength of the vertical blur\n * @default 8\n */\n get strengthY(): number\n {\n return this.blurYFilter.blur;\n }\n\n set strengthY(value: number)\n {\n this.blurYFilter.blur = value;\n this.updatePadding();\n }\n\n /**\n * Sets the strength of both the blurX and blurY properties simultaneously\n * @default 2\n * @deprecated since 8.3.0\n * @see BlurFilter.strength\n */\n get blur(): number\n {\n // #if _DEBUG\n deprecation('8.3.0', 'BlurFilter.blur is deprecated, please use BlurFilter.strength instead.');\n // #endif\n\n return this.strength;\n }\n\n set blur(value: number)\n {\n // #if _DEBUG\n deprecation('8.3.0', 'BlurFilter.blur is deprecated, please use BlurFilter.strength instead.');\n // #endif\n this.strength = value;\n }\n\n /**\n * Sets the strength of the blurX property\n * @default 2\n * @deprecated since 8.3.0\n * @see BlurFilter.strengthX\n */\n get blurX(): number\n {\n // #if _DEBUG\n deprecation('8.3.0', 'BlurFilter.blurX is deprecated, please use BlurFilter.strengthX instead.');\n // #endif\n\n return this.strengthX;\n }\n\n set blurX(value: number)\n {\n // #if _DEBUG\n deprecation('8.3.0', 'BlurFilter.blurX is deprecated, please use BlurFilter.strengthX instead.');\n // #endif\n this.strengthX = value;\n }\n\n /**\n * Sets the strength of the blurY property\n * @default 2\n * @deprecated since 8.3.0\n * @see BlurFilter.strengthY\n */\n get blurY(): number\n {\n // #if _DEBUG\n deprecation('8.3.0', 'BlurFilter.blurY is deprecated, please use BlurFilter.strengthY instead.');\n // #endif\n\n return this.strengthY;\n }\n\n set blurY(value: number)\n {\n // #if _DEBUG\n deprecation('8.3.0', 'BlurFilter.blurY is deprecated, please use BlurFilter.strengthY instead.');\n // #endif\n this.strengthY = value;\n }\n\n /**\n * If set to true the edge of the target will be clamped\n * @default false\n */\n get repeatEdgePixels(): boolean\n {\n return this._repeatEdgePixels;\n }\n\n set repeatEdgePixels(value: boolean)\n {\n this._repeatEdgePixels = value;\n this.updatePadding();\n }\n}\n"],"names":[],"mappings":"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"}