К основному содержанию
скилл CX Codex

pixijs-blend-modes — скилл для Claude Code: режимы наложения в PixiJS

Скилл подсказывает агенту, как смешивать объекты PixiJS v8 через blendMode: стандартные режимы, продвинутые и порядок для батчинга.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add pixijs/pixijs-skills --skill pixijs-blend-modes -a claude-code
Открыть на GitHub

Что делает pixijs-blend-modes

Скилл включается, когда в коде PixiJS v8 появляется blendMode. Агент получает готовые шаблоны: стандартные режимы (normal, add, multiply, screen, erase, min, max) работают на GPU-уравнениях и стоят дёшево, а продвинутые вроде color-burn или overlay подключаются импортом pixi.js/advanced-blend-modes и идут через фильтры.

Главная ловушка — тихий откат. Забыли импорт расширения или не включили useBackBuffer: true при инициализации на WebGL — режим молча превращается в normal, а в консоли появляется предупреждение. В v8 нет рантайм-энума BLEND_MODES, только строковый тип, поэтому старый BLEND_MODES.ADD из v7 упадёт с ошибкой.

Ещё скилл разбирает порядок детей в контейнере. Смена режима разрывает батч: два объекта с screen подряд дают 2 draw call, а чередование screen / normal / screen / normal — уже 4. Продвинутые режимы завязаны на Filter.defaultOptions с разрешением 1, поэтому на high-DPI цели объект может выглядеть обрезанным или отрисованным частично — это повод проверить разрешение фильтра.

Какие задачи решает

  • сложить glow-эффект из спрайтов через аддитивное смешивание
  • затемнить сцену multiply-слоем без ручной правки пикселей
  • подключить overlay и color-burn, которые не входят в стандартный набор
  • переставить детей в контейнере, чтобы сократить число draw call
  • перевести код с энума BLEND_MODES из v7 на строки v8

Примеры запросов агенту

  • Настрой спрайту свечения blendMode add и добавь его на сцену
  • Подключи pixi.js/advanced-blend-modes и поставь оверлею color-burn
  • Переупорядочи детей контейнера так, чтобы объекты с одинаковым blendMode шли подряд

Как установить pixijs-blend-modes

1Через Skills CLI (Vercel)

npx skills add pixijs/pixijs-skills --skill pixijs-blend-modes -a claude-code

2Вручную: положить файлы

~/.claude/skills/pixijs-blend-modes/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/pixijs-blend-modes/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о pixijs-blend-modes

Как установить pixijs-blend-modes в Claude?

Выполните npx skills add pixijs/pixijs-skills --skill pixijs-blend-modes -a claude-code. Скилл окажется в ~/.claude/skills/pixijs-blend-modes/SKILL.md.

Что делает скилл pixijs-blend-modes?

Он даёт агенту шаблоны для режимов наложения в PixiJS v8: стандартные режимы, продвинутые через pixi.js/advanced-blend-modes и порядок объектов для батчинга.

Почему color-burn молча превращается в normal?

Скорее всего не подключён импорт pixi.js/advanced-blend-modes или при инициализации на WebGL не выставлен useBackBuffer: true. Без них PixiJS пишет предупреждение и откатывается к обычному смешиванию.

Исходный текст

SKILL.md · MIT
---
name: pixijs-blend-modes
description: "Use this skill when compositing display objects with blend modes in PixiJS v8. Covers standard modes (normal, add, multiply, screen, erase, min, max), advanced modes via pixi.js/advanced-blend-modes (color-burn, overlay, hard-light, etc.), batch-friendly ordering. Triggers on: blendMode, additive, multiply, screen, overlay, color-burn, color-dodge, advanced-blend-modes, glow, erase."
license: MIT
---

Set `container.blendMode` to composite display objects with GPU blend equations (standard modes) or filter-based advanced modes. Blend-mode transitions break render batches, so group like-mode siblings together.

## Quick Start

```ts
const light = new Sprite(await Assets.load("light.png"));
light.blendMode = "add";
app.stage.addChild(light);

const shadow = new Sprite(await Assets.load("shadow.png"));
shadow.blendMode = "multiply";
app.stage.addChild(shadow);

import "pixi.js/advanced-blend-modes";
const overlay = new Sprite(await Assets.load("overlay.png"));
overlay.blendMode = "color-burn";
app.stage.addChild(overlay);
```

**Related skills:** `pixijs-filters` (advanced modes use the filter pipeline), `pixijs-performance` (batching with blend modes), `pixijs-color` (color manipulation).

## Core Patterns

### Standard blend modes

Standard modes are built in and use GPU blend equations directly:

```ts
import { Sprite } from "pixi.js";

sprite.blendMode = "normal"; // standard alpha compositing (effective default at root)
sprite.blendMode = "add"; // additive (lighten, glow effects)
sprite.blendMode = "multiply"; // multiply (darken, shadow effects)
sprite.blendMode = "screen"; // screen (lighten, dodge effects)
sprite.blendMode = "erase"; // erase pixels from render target
sprite.blendMode = "none"; // no blending, overwrites destination
sprite.blendMode = "inherit"; // inherit from parent (this is the actual default value)
sprite.blendMode = "min"; // keeps minimum of source and destination (WebGL2+ only)
sprite.blendMode = "max"; // keeps maximum of source and destination (WebGL2+ only)
```

These are hardware-accelerated and cheap. They do not require filters.

### Advanced blend modes

Advanced modes require an explicit import to register the extensions. On the WebGL renderer they also require `useBackBuffer: true` at init time, or PixiJS logs a warning and the blend silently falls back:

```ts
import "pixi.js/advanced-blend-modes";
import { Application, Sprite, Assets } from "pixi.js";

const app = new Application();
await app.init({ useBackBuffer: true }); // required for advanced modes on WebGL

const texture = await Assets.load("overlay.png");
const overlay = new Sprite(texture);
overlay.blendMode = "color-burn";
```

Available advanced modes:

| Mode           | Effect                                          |
| -------------- | ----------------------------------------------- |
| `color-burn`   | Darkens by increasing contrast                  |
| `color-dodge`  | Brightens by decreasing contrast                |
| `darken`       | Keeps darker of two layers                      |
| `difference`   | Absolute difference                             |
| `divide`       | Divides bottom by top                           |
| `exclusion`    | Similar to difference, lower contrast           |
| `hard-light`   | Multiply or screen based on top layer           |
| `hard-mix`     | High contrast threshold blend                   |
| `lighten`      | Keeps lighter of two layers                     |
| `linear-burn`  | Adds and subtracts to darken                    |
| `linear-dodge` | Adds layers together                            |
| `linear-light` | Linear burn or dodge based on top layer         |
| `luminosity`   | Luminosity of top, hue/saturation of bottom     |
| `negation`     | Inverted difference                             |
| `overlay`      | Multiply or screen based on bottom layer        |
| `pin-light`    | Replaces based on lightness comparison          |
| `saturation`   | Saturation of top, hue/luminosity of bottom     |
| `soft-light`   | Gentle overlay effect                           |
| `subtract`     | Subtracts top from bottom                       |
| `vivid-light`  | Color burn or dodge based on top layer          |
| `color`        | Hue and saturation of top, luminosity of bottom |

You set advanced blend modes the same way as standard ones, via the `blendMode` property. They use filters internally, so they cost more than standard modes.

### Batch-friendly ordering

Different blend modes break the rendering batch. Order objects to minimize transitions:

```ts
import { Container, Sprite } from "pixi.js";

const scene = new Container();
scene.addChild(screenSprite1); // 'screen'
scene.addChild(screenSprite2); // 'screen'
scene.addChild(normalSprite1); // 'normal'
scene.addChild(normalSprite2); // 'normal'
```

2 draw calls. Alternating order (`screen, normal, screen, normal`) would produce 4.

## Common Mistakes

### [HIGH] Not importing advanced-blend-modes extension

Wrong:

```ts
import { Sprite } from "pixi.js";

sprite.blendMode = "color-burn"; // silently falls back to normal
```

Correct:

```ts
import "pixi.js/advanced-blend-modes";
import { Sprite } from "pixi.js";

sprite.blendMode = "color-burn";
```

Advanced blend modes (color-burn, overlay, etc.) require the extension import. Without it, only standard modes (normal, add, multiply, screen) are available. The invalid mode silently falls back.


### [MEDIUM] Mixing blend modes across adjacent objects

Different blend modes break the render batch. `screen / normal / screen / normal` produces 4 draw calls, while `screen / screen / normal / normal` produces 2. Sort children so objects with the same blend mode are adjacent.


### [HIGH] Using the v7 BLEND_MODES enum

Wrong:

```ts
import { BLEND_MODES } from "pixi.js";

sprite.blendMode = BLEND_MODES.ADD; // runtime error: BLEND_MODES is undefined
```

Correct:

```ts
sprite.blendMode = "add";
```

In v8, `BLEND_MODES` is a TypeScript type only (a union of string literals). There is no runtime enum export, so `BLEND_MODES.ADD` evaluates to accessing a property on `undefined`. Use the string form.


### [HIGH] Advanced blend modes without useBackBuffer

Wrong:

```ts
import "pixi.js/advanced-blend-modes";
await app.init({
  /* no useBackBuffer */
});
sprite.blendMode = "color-burn"; // logs a warning, falls back
```

Correct:

```ts
import "pixi.js/advanced-blend-modes";
await app.init({ useBackBuffer: true });
sprite.blendMode = "color-burn";
```

Advanced modes read from the back buffer. On WebGL, the blend silently falls back if the back buffer is not enabled. WebGPU enables the back buffer unconditionally.


### [MEDIUM] Advanced blend modes clipped or scaled on high-DPI renderers

Advanced blend modes are filter-based and use `Filter.defaultOptions`, whose resolution defaults to `1`. On a high-DPI render target the blended object can look clipped, scaled, or only partially applied.

Wrong:

```ts
import "pixi.js/advanced-blend-modes";

sprite.blendMode = "overlay"; // renders at resolution 1, can clip on retina
```

Correct:

```ts
import { Filter } from "pixi.js";
import "pixi.js/advanced-blend-modes";

Filter.defaultOptions.resolution = "inherit"; // set before creating affected objects

sprite.blendMode = "overlay";
```

Setting `Filter.defaultOptions.resolution = "inherit"` makes advanced blend modes render at the render target's resolution. This costs more memory and runtime, so apply it where fidelity matters.


## API Reference

- [Container.blendMode](https://pixijs.download/release/docs/scene.Container.html.md)
- [OverlayBlend](https://pixijs.download/release/docs/filters.OverlayBlend.html.md)
- [ColorBurnBlend](https://pixijs.download/release/docs/filters.ColorBurnBlend.html.md)
- [ColorDodgeBlend](https://pixijs.download/release/docs/filters.ColorDodgeBlend.html.md)
- [HardLightBlend](https://pixijs.download/release/docs/filters.HardLightBlend.html.md)
- [SoftLightBlend](https://pixijs.download/release/docs/filters.SoftLightBlend.html.md)
- [DifferenceBlend](https://pixijs.download/release/docs/filters.DifferenceBlend.html.md)

© pixijs · MIT · pixijs/pixijs-skills

Похожие скиллы

Всё по теме «Фронтенд и UI» →
pixijs-2d freshtechbro Скилл обучает агента создавать 2D-графику на PixiJS с WebGL и WebGPU: анимировать спрайты, выводить частицы и рисовать векторные фигуры на холсте. CX Codex +1 2 500установок threejs-postprocessing CloudAI-X Скилл добавляет в Three.js цепочки постобработки: bloom, глубину резкости, ambient occlusion и пользовательские экранные шейдеры. Пригодится, когда нужны визуальные эффекты, цветокоррекция или размытие на WebGL и WebGPU. CX Codex +1 13 700установок pixijs-rendering gamedev-skills Скилл для сборки слоя рендера на PixiJS v8: асинхронный Application, загрузка текстур, сцена на Container, тикер и события указателя. CX Codex +1 5 400установок shader-dev MiniMax-AI Набор руководств по 36 техникам GLSL для генерации шейдеров под ShaderToy и WebGL2. Пригодится для процедурного 3D, рей-марчинга и визуальных эффектов прямо в коде. CX Codex +1 2 500установок glsl martinholovsky Скилл по GLSL для голографических эффектов в HUD: панели со сканлайнами, энергетические поля, постобработка. Пригодится, если пишете шейдеры для WebGL и хотите держать 60 FPS. CX Codex +1 369установок threejs-animation CloudAI-X Скилл для работы с keyframe-анимацией, костями и морф-целями в Three.js. Помогает воспроизводить glTF-анимации, управлять костями скелета, миксировать и кроссфейдить клипы на WebGL и WebGPU. CX Codex +1 20 400установок

Из того же набора25

pixijs-scene-core-concepts Объясняет, как устроено дерево сцены PixiJS v8: контейнеры, листья, трансформы и порядок отрисовки. Пригодится, когда агент пишет код на PixiJS. CX Codex +1 5 900установок pixijs-math Скилл для работы с координатами, матрицами, фигурами и проверкой попаданий в PixiJS v8. Пригодится, когда нужно перевести точку между системами координат или собрать хит-зону. CX Codex +1 5 900установок pixijs-scene-mesh Помогает настраивать кастомную 2D-геометрию в PixiJS v8 через Mesh, MeshPlane, MeshRope и PerspectiveMesh. Пригодится при анимации вершин, деформации текстур и рисовании путей. CX Codex +1 5 700установок pixijs-scene-dom-container Подсказывает агенту, как накладывать HTML-элементы на canvas PixiJS v8 через DOMContainer и DOMPipe. Пригодится, когда нужны поля ввода, iframe или видео поверх сцены. CX Codex +1 5 700установок pixijs-color Скилл по классу Color в PixiJS v8. Помогает переводить форматы цвета, настраивать tint и альфу, а также оптимизировать вызовы в циклах рендера через Color.shared и буферы. CX Codex +1 5 700установок pixijs-create Скилл ведёт агента через создание нового проекта PixiJS v8 или подключение библиотеки к уже существующему: шаблоны, пакетные менеджеры, настройка TypeScript. CX Codex +1 5 700установок pixijs-custom-rendering Помогает писать кастомные шейдеры, юниформы, фильтры и батчеры в PixiJS v8 — на GLSL и WGSL, под WebGL и WebGPU. CX Codex +1 5 700установок pixijs-scene-gif Обучает агента загружать и воспроизводить анимации GIF в PixiJS v8 через GifSprite и GifSource. Пригодится при переносе гифок на сцену без ручной нарезки на спрайты. CX Codex +1 5 600установок

Спонсоры проекта

Компании, которые помогают держать аналитику открытой