В PixiJS фильтры являются мощным инструментом для обработки визуальных эффектов на спрайтах, контейнерах и рендер-таргетах. Одним из ключевых аспектов работы с фильтрами является разрешение фильтра (filter resolution), которое напрямую влияет на качество и производительность.
Разрешение фильтра определяет, с какой детализацией
фильтр применяется к объекту. По сути, фильтр рендерится на отдельном
текстурном буфере, размеры которого зависят от свойства
resolution.
filter.resolution = 1 — стандартное разрешение,
соответствует разрешению рендерера.filter.resolution > 1 — увеличивает детализацию
фильтра, делая эффекты более чёткими, но потребляет больше видеопамяти и
снижает производительность.filter.resolution < 1 — снижает детализацию,
ускоряет рендер, но может вызвать размытость эффекта.PixiJS использует текстуры промежуточного рендера
для фильтров, и их разрешение определяется свойством
filter.resolution при создании фильтра или динамически
через filterArea.
resolution
фильтраconst blurFilter = new PIXI.filters.BlurFilter();
blurFilter.resolution = 2; // увеличивает разрешение фильтра в 2 раза
resolution является числом.app.renderer.resolution).Важно понимать, что увеличение разрешения фильтра пропорционально увеличивает нагрузку на GPU, так как текстура промежуточного рендера становится больше.
Фильтры можно применять к определённой области сцены через
filterArea:
blurFilter.filterArea = new PIXI.Rectangle(50, 50, 200, 200);
filterArea и разрешение фильтра совместно
определяют качество итогового эффекта.resolution не
создаст существенной нагрузки.resolution
может сильно снизить FPS.Каждый фильтр по умолчанию использует разрешение рендерера:
console.log(app.renderer.resolution); // например, 1
app.renderer.resolution может быть больше 1.filter.resolution для конкретного
фильтра, если требуется повысить качество независимо от рендерера.Разрешение фильтра — ключевой параметр, влияющий на баланс между качеством и производительностью.
Высокое разрешение:
Низкое разрешение:
resolution = 1 или меньше.resolution = 2–4.const app = new PIXI.Application({
width: 800,
height: 600,
resolution: window.devicePixelRatio || 1
});
document.body.appendChild(app.view);
const sprite = PIXI.Sprite.from('image.png');
app.stage.addChild(sprite);
const blurFilter = new PIXI.filters.BlurFilter();
blurFilter.resolution = 2; // повышенное качество
blurFilter.blur = 8;
blurFilter.filterArea = sprite.getBounds(); // фильтр применим только к спрайту
sprite.filters = [blurFilter];
2 делает эффект более
детализированным.Filter или использовать MultiPassFilter, чтобы
оптимизировать память и производительность.Разрешение фильтра является фундаментальным параметром для управления визуальным качеством и производительностью в PixiJS, позволяя тонко настраивать эффекты под разные устройства и сценарии рендеринга.