pixi.js
Version:
<p align="center"> <a href="https://pixijs.com" target="_blank" rel="noopener noreferrer"> <img height="150" src="https://files.pixijs.download/branding/pixijs-logo-transparent-dark.svg?v=1" alt="PixiJS logo"> </a> </p> <br/> <p align="center">
259 lines (258 loc) • 8.35 kB
TypeScript
import { Filter } from '../../Filter';
import { BlurFilterPass } from './BlurFilterPass';
import type { RenderSurface } from '../../../rendering/renderers/shared/renderTarget/RenderTargetSystem';
import type { Texture } from '../../../rendering/renderers/shared/texture/Texture';
import type { FilterOptions } from '../../Filter';
import type { FilterSystem } from '../../FilterSystem';
/**
* Configuration options for the BlurFilter.
* Controls how the Gaussian blur effect is applied.
* @example
* ```ts
* // Basic blur with default values
* const filter = new BlurFilter();
*
* // Custom blur configuration
* const filter = new BlurFilter({
* strength: 8, // Overall blur strength
* quality: 4, // Higher quality = better blur
* kernelSize: 5 // Size of blur kernel
* });
*
* // Different horizontal/vertical blur
* const filter = new BlurFilter({
* strengthX: 4, // Horizontal blur only
* strengthY: 12, // Stronger vertical blur
* quality: 2 // Lower quality for better performance
* });
* ```
* @remarks
* - Higher quality values produce better blur but impact performance
* - KernelSize affects blur precision and performance
* - Strength values determine blur intensity
* @see {@link BlurFilter} The filter that uses these options
* @see {@link FilterOptions} Base filter options
* @category filters
* @standard
*/
export interface BlurFilterOptions extends FilterOptions {
/**
* The strength of the blur filter.
* Applied to both horizontal and vertical blur if strengthX/Y not set.
* @default 8
*/
strength?: number;
/**
* The horizontal strength of the blur.
* Overrides strength parameter for x-axis.
* @default 8
*/
strengthX?: number;
/**
* The vertical strength of the blur.
* Overrides strength parameter for y-axis.
* @default 8
*/
strengthY?: number;
/**
* The quality of the blur filter.
* Higher values mean better quality but slower performance.
* @default 4
*/
quality?: number;
/**
* The kernelSize of the blur filter.
* Larger values create more precise blur but impact performance.
* Options: 5, 7, 9, 11, 13, 15.
* @default 5
*/
kernelSize?: number;
}
/**
* The BlurFilter applies a Gaussian blur to an object.
* The strength of the blur can be set for the x-axis and y-axis separately.
* @example
* ```ts
* import { BlurFilter } from 'pixi.js';
*
* // Create with default settings
* const filter = new BlurFilter();
*
* // Create with custom settings
* const filter = new BlurFilter({
* strength: 8, // Overall blur strength
* quality: 4, // Blur quality (higher = better but slower)
* kernelSize: 5 // Size of blur kernel matrix
* });
*
* // Apply to a display object
* sprite.filters = [filter];
*
* // Update properties
* filter.strength = 10; // Set both X and Y blur
* filter.strengthX = 5; // Set only horizontal blur
* filter.strengthY = 15; // Set only vertical blur
* filter.quality = 2; // Adjust quality
*
* // Enable edge pixel clamping
* filter.repeatEdgePixels = true;
* ```
* @remarks
* - Higher quality values produce better blur but impact performance
* - Strength controls blur intensity independently for X and Y
* - Can be optimized using quality and kernelSize settings
* - Supports edge pixel clamping for special effects
* @see {@link BlurFilterPass} For single-direction blur
* @see {@link FilterOptions} For base filter options
* @category filters
* @standard
* @noInheritDoc
*/
export declare class BlurFilter extends Filter {
/**
* Default blur filter options
* @example
* ```ts
* // Set default options for all BlurFilters
* BlurFilter.defaultOptions = {
* strength: 10, // Default blur strength
* quality: 2, // Default blur quality
* kernelSize: 7 // Default kernel size
* };
* // Create a filter with these defaults
* const filter = new BlurFilter(); // Uses default options
* ```
* @remarks
* - These options are used when creating a new BlurFilter without specific parameters
* - Can be overridden by passing options to the constructor
* - Useful for setting global defaults for all blur filters in your application
* @see {@link BlurFilterOptions} For detailed options
* @see {@link BlurFilter} The filter that uses these options
*/
static defaultOptions: Partial<BlurFilterOptions>;
/**
* The horizontal blur filter
* @advanced
*/
blurXFilter: BlurFilterPass;
/**
* The vertical blur filter
* @advanced
*/
blurYFilter: BlurFilterPass;
private _repeatEdgePixels;
/**
* @param {filters.BlurFilterOptions} options - The options of the blur filter.
*/
constructor(options?: BlurFilterOptions);
/** @deprecated since 8.0.0 */
constructor(strength?: number, quality?: number, resolution?: number | null, kernelSize?: number);
/**
* Applies the filter.
* @param filterManager - The manager.
* @param input - The input target.
* @param output - The output target.
* @param clearMode - How to clear
* @advanced
*/
apply(filterManager: FilterSystem, input: Texture, output: RenderSurface, clearMode: boolean): void;
protected updatePadding(): void;
/**
* Sets the strength of both the blurX and blurY properties simultaneously.
* Controls the overall intensity of the Gaussian blur effect.
* @example
* ```ts
* // Set equal blur strength for both axes
* filter.strength = 8;
*
* // Will throw error if X and Y are different
* filter.strengthX = 4;
* filter.strengthY = 8;
* filter.strength; // Error: BlurFilter's strengthX and strengthY are different
* ```
* @default 8
* @throws {Error} If strengthX and strengthY are different values
*/
get strength(): number;
set strength(value: number);
/**
* Sets the number of passes for blur. More passes means higher quality blurring.
* Controls the precision and smoothness of the blur effect at the cost of performance.
* @example
* ```ts
* // High quality blur (slower)
* filter.quality = 8;
*
* // Low quality blur (faster)
* filter.quality = 2;
* ```
* @default 4
* @remarks Higher values produce better quality but impact performance
*/
get quality(): number;
set quality(value: number);
/**
* Sets the strength of horizontal blur.
* Controls the blur intensity along the x-axis independently.
* @example
* ```ts
* // Apply horizontal-only blur
* filter.strengthX = 8;
* filter.strengthY = 0;
*
* // Create motion blur effect
* filter.strengthX = 16;
* filter.strengthY = 2;
* ```
* @default 8
*/
get strengthX(): number;
set strengthX(value: number);
/**
* Sets the strength of the vertical blur.
* Controls the blur intensity along the y-axis independently.
* @example
* ```ts
* // Apply vertical-only blur
* filter.strengthX = 0;
* filter.strengthY = 8;
*
* // Create radial blur effect
* filter.strengthX = 8;
* filter.strengthY = 8;
* ```
* @default 8
*/
get strengthY(): number;
set strengthY(value: number);
/**
* Sets the strength of both the blurX and blurY properties simultaneously
* @default 2
* @deprecated since 8.3.0
* @see BlurFilter.strength
*/
get blur(): number;
set blur(value: number);
/**
* Sets the strength of the blurX property
* @default 2
* @deprecated since 8.3.0
* @see BlurFilter.strengthX
*/
get blurX(): number;
set blurX(value: number);
/**
* Sets the strength of the blurY property
* @default 2
* @deprecated since 8.3.0
* @see BlurFilter.strengthY
*/
get blurY(): number;
set blurY(value: number);
/**
* If set to true the edge of the target will be clamped
* @default false
*/
get repeatEdgePixels(): boolean;
set repeatEdgePixels(value: boolean);
}