AlphaFilter в библиотеке PixiJS используется для изменения прозрачности графических объектов и контейнеров без прямого вмешательства в их текстуры. Это мощный инструмент для создания плавных эффектов прозрачности, затуханий и визуальных переходов, который работает на уровне GPU и поддерживается WebGL, что обеспечивает высокую производительность.
Фильтр применяет коэффициент альфа-прозрачности ко всем пикселям целевого объекта. Значение коэффициента задается числом от 0 до 1, где 0 — полностью прозрачный объект, а 1 — полностью непрозрачный.
import * as PIXI from 'pixi.js';
const app = new PIXI.Application({ width: 800, height: 600 });
document.body.appendChild(app.view);
const sprite = PIXI.Sprite.from('assets/image.png');
app.stage.addChild(sprite);
const alphaFilter = new PIXI.filters.AlphaFilter(0.5); // 50% прозрачность
sprite.filters = [alphaFilter];
В этом примере создается спрайт с применением фильтра, который делает его полупрозрачным.
AlphaFilter имеет несколько ключевых свойств:
app.ticker.add((delta) => {
alphaFilter.alpha = (Math.sin(app.ticker.lastTime / 500) + 1) / 2;
});
multiplier — внутренний множитель, который
умножает значение альфы на текущую прозрачность объекта. Полезен для
комплексных эффектов, когда требуется комбинировать прозрачность фильтра
и свойства alpha спрайта.
padding — задает отступ вокруг объекта, который учитывается при фильтрации. Этот параметр предотвращает обрезку полупрозрачных краев спрайта.
const alphaFilter = new PIXI.filters.AlphaFilter();
alphaFilter.alpha = 0.7;
alphaFilter.padding = 20;
sprite.filters = [alphaFilter];
AlphaFilter можно применять не только к отдельным
спрайтам, но и к контейнерам (PIXI.Container). В этом
случае фильтр влияет на все дочерние объекты контейнера.
const container = new PIXI.Container();
container.addChild(sprite);
const anotherSprite = PIXI.Sprite.from('assets/another.png');
container.addChild(anotherSprite);
const containerAlphaFilter = new PIXI.filters.AlphaFilter(0.6);
container.filters = [containerAlphaFilter];
app.stage.addChild(container);
Такой подход удобен для управления прозрачностью сложных сцен, групп элементов или интерфейсных панелей.
AlphaFilter оптимизирован под WebGL, поэтому на современных устройствах его использование практически не сказывается на производительности даже при анимации множества объектов. Однако при работе с большим количеством фильтров на контейнере стоит учитывать, что каждый фильтр создает дополнительный рендер-проход.
Фильтр совместим с другими базовыми фильтрами PixiJS, такими как BlurFilter, ColorMatrixFilter и пользовательскими шейдерами, что позволяет комбинировать прозрачность с визуальными эффектами.
sprite.filters = [
new PIXI.filters.AlphaFilter(0.8),
new PIXI.filters.BlurFilter(2)
];
Для создания динамических визуальных эффектов прозрачность часто анимируют через ticker или сторонние библиотеки анимации, например, GSAP.
import { gsap } from 'gsap';
gsap.to(alphaFilter, {
alpha: 0,
duration: 2,
yoyo: true,
repeat: -1,
ease: 'sine.inOut'
});
Такой способ позволяет создавать эффекты мерцания, затухания и появления объектов без изменения их исходной текстуры.
sprite.alpha, итоговая прозрачность будет
произведением фильтра и значения свойства.padding, иначе
полупрозрачные края могут быть обрезаны.mask), но важно помнить, что прозрачность фильтра
применяется после маскирования.AlphaFilter является базовым инструментом для управления прозрачностью в PixiJS и служит основой для более сложных визуальных эффектов, объединяясь с другими фильтрами и анимациями для создания богатой графической сцены.