
Pixijs Core Concepts
Learn how PixiJS v8 picks WebGL, WebGPU, or Canvas and drives each frame so you can debug rendering and hook custom render loops in browser or worker apps.
Overview
PixiJS Core Concepts is an agent skill for the Build phase that explains PixiJS v8 renderer selection, the render loop, and environment-specific rendering behavior.
Install
npx skills add https://github.com/pixijs/pixijs-skills --skill pixijs-core-conceptsWhat is this skill?
- Explains autoDetectRenderer and WebGLRenderer vs WebGPURenderer vs CanvasRenderer selection in PixiJS v8
- Maps the systems-and-pipes renderer and manual vs Ticker-driven renderer.render() usage
- Covers environment detection for browser, Web Worker, and SSR contexts
- Points to companion skills for Application setup and scene graph concepts
- Includes quick-start snippets for ticker, texture extract, and explicit render calls
- 3 renderer backends: WebGL, WebGPU, Canvas
Adoption & trust: 1.4k installs on skills.sh; 206 GitHub stars; 3/3 security scanners passed (skills.sh audits).
What problem does it solve?
You are building with PixiJS but cannot predict which GPU backend runs, what happens each frame, or why rendering breaks in workers versus the main thread.
Who is it for?
Solo builders shipping 2D games or canvas-heavy web UIs who need a correct v8 rendering model before tuning sprites and layouts.
Skip if: Teams that only need high-level scene graph or UI layout without touching backends, tickers, or cross-environment rendering.
When should I use this skill?
Triggers on renderer, WebGL, WebGPU, Canvas, render loop, render pipeline, systems, environments, or autoDetectRenderer when learning PixiJS v8 fundamentals.
What do I get? / Deliverables
You can read app.renderer, control ticker vs manual render, and follow the documented skill chain into Application and scene-graph skills for implementation.
- Mental model of backend selection and per-frame rendering
- Correct patterns for ticker-driven vs manual render calls
Recommended Skills
Journey fit
Rendering backends and the per-frame pipeline are core product engineering work when you are actively building interactive 2D experiences. Frame loop, renderer systems, and GPU backend selection sit squarely in frontend/game client architecture rather than ship or growth work.
How it compares
Conceptual PixiJS v8 reference skill—not a generic React canvas tutorial or a full game design playbook.
Common Questions / FAQ
Who is pixijs-core-concepts for?
Indie and solo frontend or game developers using PixiJS v8 who want to understand renderers, frames, and environments before wiring Application and scene code.
When should I use pixijs-core-concepts?
During Build (frontend) when choosing WebGL vs WebGPU vs Canvas, debugging the render loop, or adapting PixiJS to workers or SSR—especially before relying on autoDetectRenderer or manual renderer.render().
Is pixijs-core-concepts safe to install?
It is instructional documentation-style guidance; review the Security Audits panel on this Prism page and inspect the skill package in your repo before enabling it in automated agents.
Workflow Chain
Then invoke: pixijs application, pixijs scene core concepts
SKILL.md
READMESKILL.md - Pixijs Core Concepts
Foundational model for how PixiJS v8 gets pixels on the screen: the renderer decides which GPU backend to use, the render loop drives per-frame work, and the environment layer adapts the library to browser, Web Worker, or SSR contexts. For the scene graph itself (Containers, transforms, destroy), see `pixijs-scene-core-concepts`. ## Quick Start ```ts console.log(app.renderer.name); // 'webgl' | 'webgpu' | 'canvas' app.ticker.add((ticker) => { sprite.rotation += 0.01 * ticker.deltaTime; }); const tex = app.renderer.extract.texture({ target: app.stage }); app.renderer.render({ container: app.stage }); ``` `app.renderer` is the `WebGLRenderer`, `WebGPURenderer`, or `CanvasRenderer` chosen by `autoDetectRenderer`. The TickerPlugin drives `renderer.render()` automatically; call it manually only with `autoStart: false`. Backend selection happens in `Application.init({ preference })`; see `pixijs-application` for setup. **Related skills:** `pixijs-application` (Application construction and lifecycle), `pixijs-ticker` (per-frame logic, priorities, FPS capping), `pixijs-environments` (Web Worker, SSR, strict CSP), `pixijs-custom-rendering` (writing a RenderPipe), `pixijs-scene-core-concepts` (scene graph basics). ## Topics | Topic | Reference | When | | ------------------- | ------------------------------------------------------ | --------------------------------------------------------- | | Choosing a backend | [references/renderers.md](references/renderers.md) | Preference forms, per-renderer options, systems and pipes | | Per-frame execution | [references/render-loop.md](references/render-loop.md) | Priority order, time units, manual rendering | For deep dives into any single topic, open the corresponding reference file. Non-browser targets (`DOMAdapter`, `WebWorkerAdapter`, custom adapters, strict CSP) are covered in the `pixijs-environments` skill. ## Decision guide - **Setting up an Application?** Start with `pixijs-application`. This skill explains what the renderer does under the hood. - **Choosing between WebGL and WebGPU?** Use `['webgpu', 'webgl']` as your preference array. WebGPU is fastest where available; WebGL is the reliable fallback. See `references/renderers.md`. - **Running in a Web Worker?** Set `DOMAdapter.set(WebWorkerAdapter)` before `app.init`. See the `pixijs-environments` skill for complete setup. - **Need manual control over when rendering happens?** Set `autoStart: false` and call `app.renderer.render(app.stage)` from your own loop. See `references/render-loop.md`. - **Integrating with a physics library?** Add your update at `UPDATE_PRIORITY.HIGH` so physics runs before the render at `LOW`. See `references/render-loop.md`. - **Writing a custom renderable?** Implement a `RenderPipe`. See `pixijs-custom-rendering` skill. - **Running under strict CSP?** Import `'pixi.js/unsafe-eval'`. See the `pixijs-environments` skill. ## Quick concepts ### Renderer = systems + pipes Each renderer is composed of `Systems` (lifecycle services: textures, buffers, state, filters, masks) and `RenderPipes` (per-renderable instruction builders: sprite, graphics, mesh, particle, text, tiling). Writing a custom renderable means implementing a `RenderPipe` and registering it via extensions. ### The render loop `app.ticker.add(fn)` registers a callback that runs every frame. The `TickerPlugin` regi