В библиотеке PixiJS фильтры представляют собой
мощный инструмент для постобработки графики. Одним из наиболее часто
используемых фильтров является BlurFilter, который
реализует размытие изображения с высокой производительностью и гибкостью
настройки. Этот фильтр применяется к любым объектам, наследующим
PIXI.DisplayObject, включая спрайты, контейнеры и
текст.
Фильтр создается через конструктор:
const blurFilter = new PIXI.filters.BlurFilter();
По умолчанию размытие имеет небольшой радиус, который может быть увеличен для более выраженного эффекта. BlurFilter использует разделяемое гауссово размытие (separable Gaussian blur), что обеспечивает высокую производительность, так как фильтр сначала размазывает по горизонтали, а затем по вертикали.
После создания фильтр применяется к объекту:
sprite.filters = [blurFilter];
blurОсновной параметр, определяющий степень размытия. Значение указывается в пикселях:
blurFilter.blur = 8;
0 отключает размытие.qualityОпределяет количество проходов фильтра. Чем выше значение, тем плавнее размытие:
blurFilter.quality = 4;
1 до
5.quality повышает визуальное качество, но
снижает производительность.resolutionПараметр управления разрешением фильтра. По умолчанию равен
1, что соответствует текущему разрешению рендерера:
blurFilter.resolution = 2;
1 увеличивают четкость размытия, полезно
при масштабировании.resolution требует больше видеопамяти и
снижает FPS.kernelSizeКонтролирует размер ядра фильтра. Доступны значения:
'3x3', '5x5', '7x7',
'9x9', '11x11', '15x15',
'17x17', '19x19', '21x21',
'25x25'.
blurFilter.kernelSize = PIXI.filters.BLUR_FILTER_KERNEL_SIZE.LARGE;
quality позволяет
контролировать баланс между качеством и скоростью.autoFitБулевый параметр, определяющий, будет ли фильтр автоматически увеличивать размер текстуры для предотвращения обрезки:
blurFilter.autoFit = true;
true — фильтр расширяет область текстуры, чтобы
размытие не обрезалось.false — фильтр накладывается на исходный размер, что
может привести к обрезанию края.const sprite = PIXI.Sprite.from('image.png');
const blurFilter = new PIXI.filters.BlurFilter();
blurFilter.blur = 10;
blurFilter.quality = 3;
sprite.filters = [blurFilter];
app.stage.addChild(sprite);
app.ticker.add(() => {
blurFilter.blur = Math.sin(performance.now() / 500) * 15;
});
const container = new PIXI.Container();
container.addChild(sprite1, sprite2);
container.filters = [blurFilter];
quality
2–3 оптимально для большинства случаев.BlurFilter часто используется вместе с:
sprite.filters = [blurFilter, new PIXI.filters.ColorMatrixFilter()];
blur и
quality для сохранения FPS.blur и kernelSize для более выразительных
эффектов.BlurFilter в PixiJS сочетает гибкость, простоту применения и высокий контроль над визуальным эффектом. Понимание ключевых параметров и их взаимодействия позволяет создавать как тонкие размытия для интерфейсов, так и сложные графические эффекты для игр и интерактивных приложений.