PixiJS — High-Performance 2D WebGL Renderer
You are an expert in PixiJS, the fastest 2D rendering engine for the web. You help developers build games, interactive visualizations, animated ads, creative coding projects, and rich UI effects using PixiJS's WebGL-first renderer with automatic Canvas fallback — handling sprites, text, filters, masks, blend modes, and custom shaders at 60fps with hundreds of thousands of objects.
Best use case
PixiJS — High-Performance 2D WebGL Renderer is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
You are an expert in PixiJS, the fastest 2D rendering engine for the web. You help developers build games, interactive visualizations, animated ads, creative coding projects, and rich UI effects using PixiJS's WebGL-first renderer with automatic Canvas fallback — handling sprites, text, filters, masks, blend modes, and custom shaders at 60fps with hundreds of thousands of objects.
Teams using PixiJS — High-Performance 2D WebGL Renderer should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/pixijs/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How PixiJS — High-Performance 2D WebGL Renderer Compares
| Feature / Agent | PixiJS — High-Performance 2D WebGL Renderer | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
You are an expert in PixiJS, the fastest 2D rendering engine for the web. You help developers build games, interactive visualizations, animated ads, creative coding projects, and rich UI effects using PixiJS's WebGL-first renderer with automatic Canvas fallback — handling sprites, text, filters, masks, blend modes, and custom shaders at 60fps with hundreds of thousands of objects.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# PixiJS — High-Performance 2D WebGL Renderer
You are an expert in PixiJS, the fastest 2D rendering engine for the web. You help developers build games, interactive visualizations, animated ads, creative coding projects, and rich UI effects using PixiJS's WebGL-first renderer with automatic Canvas fallback — handling sprites, text, filters, masks, blend modes, and custom shaders at 60fps with hundreds of thousands of objects.
## Core Capabilities
### Application Setup
```typescript
// src/main.ts — PixiJS 8 application
import { Application, Sprite, Text, Container, Assets } from "pixi.js";
const app = new Application();
await app.init({
width: 800,
height: 600,
backgroundColor: 0x1a1a2e,
antialias: false, // Crisp pixel art
resolution: window.devicePixelRatio, // Retina support
});
document.body.appendChild(app.canvas);
// Load assets
await Assets.load([
{ alias: "hero", src: "/sprites/hero.png" },
{ alias: "tileset", src: "/sprites/tileset.png" },
{ alias: "particle", src: "/sprites/particle.png" },
]);
// Create sprite
const hero = Sprite.from("hero");
hero.anchor.set(0.5); // Center anchor for rotation
hero.position.set(400, 300);
app.stage.addChild(hero);
// Game loop
app.ticker.add((ticker) => {
hero.rotation += 0.01 * ticker.deltaTime;
});
```
### Containers and Scene Graph
```typescript
// Hierarchical scene graph
const world = new Container();
const uiLayer = new Container();
const particleLayer = new Container();
app.stage.addChild(world);
app.stage.addChild(particleLayer);
app.stage.addChild(uiLayer); // UI always on top
// Sort children by Y position (depth sorting for top-down games)
world.sortableChildren = true;
entities.forEach((entity) => {
entity.zIndex = entity.y;
});
```
### Filters and Shaders
```typescript
import { BlurFilter, ColorMatrixFilter, DisplacementFilter } from "pixi.js";
// Built-in filters
const blur = new BlurFilter({ strength: 4 });
const grayscale = new ColorMatrixFilter();
grayscale.desaturate();
background.filters = [blur]; // Depth-of-field effect
deadEnemy.filters = [grayscale]; // Desaturate on death
// Displacement map for water/heat effects
const displacementSprite = Sprite.from("displacement-map");
displacementSprite.texture.source.addressMode = "repeat";
const displacement = new DisplacementFilter({
sprite: displacementSprite,
scale: 20,
});
waterLayer.filters = [displacement];
// Animate displacement for flowing water
app.ticker.add((ticker) => {
displacementSprite.x += 0.5 * ticker.deltaTime;
displacementSprite.y += 0.3 * ticker.deltaTime;
});
```
### Spritesheet Animation
```typescript
import { AnimatedSprite, Spritesheet, Assets } from "pixi.js";
// Load spritesheet
const sheet = await Assets.load("/sprites/hero.json");
// Create animated sprite
const heroAnim = new AnimatedSprite(sheet.animations["walk"]);
heroAnim.animationSpeed = 0.15;
heroAnim.play();
app.stage.addChild(heroAnim);
// Switch animations
function setAnimation(name: string) {
heroAnim.textures = sheet.animations[name];
heroAnim.play();
}
// setAnimation("idle"), setAnimation("attack"), setAnimation("die")
```
### Text and Graphics
```typescript
import { Text, TextStyle, Graphics } from "pixi.js";
// Styled text
const style = new TextStyle({
fontFamily: "Press Start 2P", // Pixel font
fontSize: 24,
fill: ["#ffffff", "#00ff88"], // Gradient fill
stroke: { color: "#000000", width: 4 },
dropShadow: { color: "#000000", distance: 2 },
});
const scoreText = new Text({ text: "Score: 0", style });
// Procedural graphics
const healthBar = new Graphics();
healthBar.rect(0, 0, 200, 20).fill(0x333333); // Background
healthBar.rect(2, 2, 196 * hp, 16).fill(0x00ff00); // Fill
// Minimap
const minimap = new Graphics();
minimap.circle(playerX / 10, playerY / 10, 3).fill(0x00ff00);
rooms.forEach(r => minimap.rect(r.x / 10, r.y / 10, r.w / 10, r.h / 10).stroke(0x666666));
```
## Installation
```bash
npm install pixi.js
# PixiJS 8 (latest): WebGPU + WebGL, tree-shakeable
```
## Best Practices
1. **Use containers for layers** — Separate world, UI, particles, debug into containers; set `sortableChildren` for depth sorting
2. **Sprite batching** — Sprites using the same texture atlas are batched automatically; keep atlases under 4096×4096
3. **Object pooling** — Pre-create sprites and reuse them; PixiJS allocation is fast but GC pauses are not
4. **ParticleContainer** — Use `ParticleContainer` for thousands of simple sprites (no filters, no children); 10x faster than Container
5. **Filters sparingly** — Each filter triggers a render texture pass; use 1-2 filters on large containers, not per-sprite
6. **Asset loading** — Use `Assets.load` with aliases; supports spritesheets, bitmap fonts, JSON, and audio
7. **Resolution** — Set `resolution: devicePixelRatio` for sharp rendering on retina screens
8. **Destroy properly** — Call `sprite.destroy(true)` to free GPU texture; prevents memory leaks in long-running appsRelated Skills
clickhouse-performance-tuning
Optimize ClickHouse query performance with indexing, projections, settings tuning, and query analysis using system tables. Use when queries are slow, investigating performance bottlenecks, or tuning ClickHouse server settings. Trigger: "clickhouse performance", "optimize clickhouse query", "clickhouse slow query", "clickhouse indexing", "clickhouse tuning", "clickhouse projections".
clerk-performance-tuning
Optimize Clerk authentication performance. Use when improving auth response times, reducing latency, or optimizing Clerk SDK usage. Trigger with phrases like "clerk performance", "clerk optimization", "clerk slow", "clerk latency", "optimize clerk".
clay-performance-tuning
Optimize Clay table enrichment throughput, reduce processing time, and improve hit rates. Use when experiencing slow enrichment, poor email find rates, or needing to process large tables efficiently. Trigger with phrases like "clay performance", "optimize clay", "clay slow", "clay throughput", "clay fast enrichment", "clay batch optimization".
clari-performance-tuning
Optimize Clari API performance with caching, batch exports, and data pipeline efficiency. Use when exports take too long, optimizing data warehouse load times, or reducing API calls in multi-forecast environments. Trigger with phrases like "clari performance", "clari slow export", "optimize clari pipeline", "clari caching".
clade-performance-tuning
Optimize Anthropic API latency — streaming, prompt caching, model selection, Use when working with performance-tuning patterns. connection reuse, and parallel requests. Trigger with "anthropic slow", "claude latency", "speed up anthropic", "anthropic performance", "claude response time".
castai-performance-tuning
Optimize CAST AI autoscaler performance, node provisioning speed, and API efficiency. Use when nodes take too long to provision, autoscaler is not reacting fast enough, or optimizing API call patterns for multi-cluster dashboards. Trigger with phrases like "cast ai performance", "cast ai slow", "cast ai node provisioning", "cast ai autoscaler speed".
canva-performance-tuning
Optimize Canva Connect API performance with caching, pagination, and connection pooling. Use when experiencing slow API responses, implementing caching strategies, or optimizing request throughput for Canva integrations. Trigger with phrases like "canva performance", "optimize canva", "canva latency", "canva caching", "canva slow", "canva pagination".
optimizing-cache-performance
This skill enables Claude to analyze and improve application caching strategies. It optimizes cache hit rates, TTL configurations, cache key design, and invalidation strategies. Use this skill when the user requests to "optimize cache performance", "improve caching strategy", "analyze cache hit rate", or needs assistance with "cache key design", "TTL optimization", or "cache invalidation". The skill identifies potential bottlenecks and recommends adjustments for improved performance and efficiency of caching mechanisms like Redis.
brightdata-performance-tuning
Optimize Bright Data API performance with caching, batching, and connection pooling. Use when experiencing slow API responses, implementing caching strategies, or optimizing request throughput for Bright Data integrations. Trigger with phrases like "brightdata performance", "optimize brightdata", "brightdata latency", "brightdata caching", "brightdata slow", "brightdata batch".
detecting-performance-bottlenecks
This skill enables Claude to detect and resolve performance bottlenecks in applications. It analyzes CPU, memory, I/O, and database performance to identify areas of concern. Use this skill when you need to diagnose slow application performance, optimize resource usage, or proactively prevent performance issues. The skill is triggered by requests to "detect bottlenecks", "analyze performance", "find performance issues", or similar phrases related to performance optimization. It helps uncover root causes and suggest remediation strategies.
bamboohr-performance-tuning
Optimize BambooHR API performance with caching, batch reports, incremental sync, and connection pooling. Use when experiencing slow API responses, implementing caching, or optimizing sync throughput. Trigger with phrases like "bamboohr performance", "optimize bamboohr", "bamboohr latency", "bamboohr caching", "bamboohr slow", "bamboohr batch".
attio-performance-tuning
Optimize Attio API performance -- caching, batch queries, pagination strategies, connection pooling, and latency reduction. Trigger: "attio performance", "optimize attio", "attio slow", "attio latency", "attio caching", "attio batch requests".