Releases: pixijs/pixijs
v8.0.0-alpha.0
🚨 WARNING 🚨
This project is currently highly experimental and subject to large changes before we reach an official launch.
🎁 NEW 🎁
- WebGPU Renderer and overhaul of WebGL renderer
- up to 2.5x faster!
- Reactive renderer, only update transform of something that changes. If nothing changes then nothing is updated.
- Advanced Blend Modes - All them cool photoshop filters? Pixi v8 has them all! Vivid Light, Color burn the lot! Parity with Canvas and more
🔥 Breaking Changes
Below is a non complete list of breaking changes. This will be updated fully before the official release
-
PixiJS will now need to be initialised asynchronously. With the introduction of the WebGPU renderer PixiJS will now need to be awaited before being used
Old:import { Application } from 'pixi.js' const app = new Application(); // do pixi things
New:
import { Application } from 'pixi.js' const app = new Application(); (async () => { await app.init({ // application options }); // do pixi things })()
-
Graphics API has been overhauled
Old:graphics .beginFill(0xDE3249) .drawRect(50, 50, 100, 100); .endFill();
New:
graphics .rect(50, 50, 100, 100) .fill(0xDE3249)
-
Text
is now one unified class. You specify the rendering mode in the constructor
Old:new Text('hello') new BitmapText('hello')
New:
new Text({ text: 'hello', renderMode: 'canvas' }); new Text({ text: 'hello', renderMode: 'bitmap' });
-
A
Ticker
instance is now passed to the callback
Old:Ticker.shared.add((dt)=> { bunny.rotation += dt });
New:
Ticker.shared.add((ticker)=> { bunny.rotation += ticker.deltaTime; });
v7.2.4
💾 Download
Development Build:
- https://pixijs.download/v7.2.4/pixi.js
- https://pixijs.download/v7.2.4/pixi.mjs
- https://pixijs.download/v7.2.4/pixi-legacy.js
- https://pixijs.download/v7.2.4/pixi-legacy.mjs
- https://pixijs.download/v7.2.4/webworker.js
- https://pixijs.download/v7.2.4/webworker.mjs
Production Build:
- https://pixijs.download/v7.2.4/pixi.min.js
- https://pixijs.download/v7.2.4/pixi.min.mjs
- https://pixijs.download/v7.2.4/pixi-legacy.min.js
- https://pixijs.download/v7.2.4/pixi-legacy.min.mjs
- https://pixijs.download/v7.2.4/webworker.min.js
- https://pixijs.download/v7.2.4/webworker.min.mjs
Documentation:
Changed
🐛 Fixed
- Fix: Avoid object creation in Color.normalize (#9295) @dev7355608
- Fix: Wrap non CSS ident-token font names in quotes (#9302) @SuperSodaSea
- Fix: Add missing background and autoDensity types to IRenderer (#9309) @bigtimebuddy
- Fix nested interaction (#9301) @Zyie
- Fix: cache canUseBlendMode value (#9305) @romgrk
- Fix: non-premultiply alpha blending (#9313) @dev7355608
- Fix: Always await loading of resource in loadSVG (#9317) @dev7355608
- Fix: Use renderer resolution for the generated texture in Extract._rawPixels (#9323) @dev7355608
- Fix: BaseTexture.fromBuffer creating float texture with wrong type (#9330) @dev7355608
- Fix: Extract performance improvements (#9324) @dev7355608
- Fix: Prevent
BlobResource.load
from loading the data multiple times (#9331) @dev7355608 - Fix: utils dependencies in assets and events (#9334) @bigtimebuddy
- Fix: Premultiply clear color if render target has premultiplied alpha (#9341) @dev7355608
- Fix: Flip pixels in Extract.pixels from renderer (#9347) @dev7355608
- Fix: Extract correctly when resolution is not 1 (#9352) @SuperSodaSea
🧹 Chores
v7.2.3
💾 Download
Development Build:
- https://pixijs.download/v7.2.3/pixi.js
- https://pixijs.download/v7.2.3/pixi.mjs
- https://pixijs.download/v7.2.3/pixi-legacy.js
- https://pixijs.download/v7.2.3/pixi-legacy.mjs
- https://pixijs.download/v7.2.3/webworker.js
- https://pixijs.download/v7.2.3/webworker.mjs
Production Build:
- https://pixijs.download/v7.2.3/pixi.min.js
- https://pixijs.download/v7.2.3/pixi.min.mjs
- https://pixijs.download/v7.2.3/pixi-legacy.min.js
- https://pixijs.download/v7.2.3/pixi-legacy.min.mjs
- https://pixijs.download/v7.2.3/webworker.min.js
- https://pixijs.download/v7.2.3/webworker.min.mjs
Documentation:
Changed
🐛 Fixed
- Fix passing unclamped values to Color (#9283) @Zyie
- Fix over/out events for objects with hitArea (#9289) @Zyie
- Fix Graphics premultiply world alpha efficiently (#9293) @dev7355608
- Fix implementation of Color.round (#9294) @dev7355608
🧹 Chores
v7.2.2
💾 Download
Development Build:
- https://pixijs.download/v7.2.2/pixi.js
- https://pixijs.download/v7.2.2/pixi.mjs
- https://pixijs.download/v7.2.2/pixi-legacy.js
- https://pixijs.download/v7.2.2/pixi-legacy.mjs
- https://pixijs.download/v7.2.2/webworker.js
- https://pixijs.download/v7.2.2/webworker.mjs
Production Build:
- https://pixijs.download/v7.2.2/pixi.min.js
- https://pixijs.download/v7.2.2/pixi.min.mjs
- https://pixijs.download/v7.2.2/pixi-legacy.min.js
- https://pixijs.download/v7.2.2/pixi-legacy.min.mjs
- https://pixijs.download/v7.2.2/webworker.min.js
- https://pixijs.download/v7.2.2/webworker.min.mjs
Documentation:
Changed
🐛 Fixed
- Fix: Ensure input color channels are clamped (#9281) @bigtimebuddy
- Fix: Clone and deep equal the Color's value when setting (#9280) @bigtimebuddy
v7.2.1
💾 Download
Development Build:
- https://pixijs.download/v7.2.1/pixi.js
- https://pixijs.download/v7.2.1/pixi.mjs
- https://pixijs.download/v7.2.1/pixi-legacy.js
- https://pixijs.download/v7.2.1/pixi-legacy.mjs
- https://pixijs.download/v7.2.1/webworker.js
- https://pixijs.download/v7.2.1/webworker.mjs
Production Build:
- https://pixijs.download/v7.2.1/pixi.min.js
- https://pixijs.download/v7.2.1/pixi.min.mjs
- https://pixijs.download/v7.2.1/pixi-legacy.min.js
- https://pixijs.download/v7.2.1/pixi-legacy.min.mjs
- https://pixijs.download/v7.2.1/webworker.min.js
- https://pixijs.download/v7.2.1/webworker.min.mjs
Documentation:
Changed
🐛 Fixed
- Fix: Broken link for filter example (#9268) @SuperSodaSea
- Fix: TypeScript 5.0 compatibility (#9270) @SuperSodaSea
- Fix: global move events with hit areas and masks (#9273) @Zyie
Warning
About TypeScript 5.0: There's a fix in this release to support TypeScript 5.0, however, PixiJS includes a dependency for@types/css-font-loading-module
(0.0.7) this package that is only compatible with TS 4.x. For errors related to this dependency, you can suppress it by overriding the version to be^0.0.8
in package.json:{ "overrides": { "@types/css-font-loading-module": "^0.0.8" } }
v7.2.0
📣 Overview
This is a big release that we've been working on for awhile. We want to highlight some of the new features available in this release which we think will make developer's lives much easier.
🔠 HTMLText
This release adds HTMLText. Previously this was available as a plugin but we have decided to make it available by default in pixi.js, pixi.js-legacy (the Web Worker and node bundles does not support HTMLText yet).
🌈 Color
We have standardized color inputs all over PixiJS by creating a Color class. No longer do some color inputs accept only integers, some accept RGBA floats, some strings. You can now use whatever color format you choose for things like backgroundColor
, tint
, Graphics fill and stroke, text colors. Color inputs include: #ff0000
, #f00
, "red"
, "rgb(255, 0, 0)"
, 0xff0000
, and many more!
💻 Event Modes
The new event-based system that replaced InteractionManager from v6 still had some work in order to fully support old features. In order to bridge the gap, we have deprecated interactive
(boolean) and replaced with eventMode
.
eventMode | Description |
---|---|
none |
Ignores all interaction events, similar to CSS's pointer-events: none , good optimization for non-interactive children |
passive |
Does not emit events and ignores hit testing on itself but does allow for events and hit testing only its interactive children. If you want to be compatible with v6, set this as your default eventMode (see options in Renderer, Application, etc) |
auto |
Does not emit events and but is hit tested if parent is interactive. Same as interactive = false in v7 |
static |
Emit events and is hit tested. Same as interaction = true in v7, useful for objects like buttons that do not move. |
dynamic |
Emits events and is hit tested but will also receive mock interaction events fired from a ticker to allow for interaction when the mouse isn't moving. This is useful for elements that independently moving or animating. |
👟 Global Move Events
Introduces new global move events that are dispatched globally regardless of hit-testing the current object. These are similar to *move
events in v6 and are useful for creating drag interactions with a reference to the main root stage Container.
globalpointermove
globaltouchmove
globalmousemove
❗ Other Important Changes
Node Bundle Moving
We have decided to move @pixi/node
to it's own repository and will no longer be part of this repository. There are a few reasons: lack of adoption, burden of installing Node-based canvas and gl dependencies, stability of Adapter and extension APIs. We will continue to support this bundle but will do releases independent of PixiJS.
Return of peerDependencies
We reverted a major change in v7 which was to eliminate the use of peerDependencies
. This unfortunately broke CDN delivery systems that ship ESM builds (jsdelivr, skypack, etc) also it had negative impact on new tools like Yarn 3. Because we rolled-back this change, it's very important that when you update PixiJS from now on, you complete remove the old version before installing the new one. Please see this wiki page on Upgrading PixiJS.
💾 Download
Development Build:
- https://pixijs.download/v7.2.0/pixi.js
- https://pixijs.download/v7.2.0/pixi.mjs
- https://pixijs.download/v7.2.0/pixi-legacy.js
- https://pixijs.download/v7.2.0/pixi-legacy.mjs
- https://pixijs.download/v7.2.0/webworker.js
- https://pixijs.download/v7.2.0/webworker.mjs
Production Build:
- https://pixijs.download/v7.2.0/pixi.min.js
- https://pixijs.download/v7.2.0/pixi.min.mjs
- https://pixijs.download/v7.2.0/pixi-legacy.min.js
- https://pixijs.download/v7.2.0/pixi-legacy.min.mjs
- https://pixijs.download/v7.2.0/webworker.min.js
- https://pixijs.download/v7.2.0/webworker.min.mjs
Documentation:
Changed
🎁 Added
- Add new Color class (#9061, #9087, #9096, #9097, #9145, #9147, #9154, #9165, #9171, #9199) @bigtimebuddy
- Add ColorSource support for Graphics line and fill style
- Add ColorSource support for BaseRenderTexture's
clearColor
- Add ColorSource support for RenderTextureSystem's
clear
- Add ColorSource support for CanvasContextSystem's
clear
- Add
backgroundColor
Color getter to BackgroundSystem - Support ColorSource with Graphics tint (#9180)
- Support ColorSource with Mesh & BitmapText tint (#9181)
- Support ColorSource with Sprite tint (#9182)
- Support ColorSource with ParticleContainer tint (#9183)
import { Graphics } from 'pixi.js';
const graphics = new Graphics()
.beginFill('red')
.lineStyle({ color: 'yellow', width: 10 })
.drawCircle(0, 0, 100);
- Add new API to replace
interactive
calledeventMode
(#9089, #9166, #9172) @Zyie - Add new global mouse events
globalpointermove
,globaltouchmove
, andglobalmousemove
(#9067) @Zyie - Adds new renderer option
eventMode
(#9089, #9157, #9172) @Zyie @SuperSodaSea - Add EventsTicker to mimic events when mouse is stationary (#9092) @Zyie
- Add HTMLText (#9127, #9193, #9214) @bigtimebuddy
- Support Texture borders (e.g., NineSlicePlane) with Spritesheets (#9128) @CodeAndWeb
- Re-adds
getLocalPosition
from v6 interaction events (#9170) @Zyie - Add ability to set Color object on
vec3
orvec4
uniforms (#9169) @GoodBoyDigital - Add
crossOrigin
andpreferCreateImageBitmap
config options in loadTextures (#9168) @Zyie - Add Asset preferences for setting
preferWorkers
,crossOrigin
, etc (#9184) @bigtimebuddy - Add ability to override loadParser when loading assets (#9226) @GoodBoyDigital
await Assets.load({
src: `textures/file.other`, // extension is unknown
loadParser: 'loadTextures' // will force it to be handled as a texture
});
- Expose root global pointer position (#9255) @Zyie
- Support loading SVG, JSON, TXT assets from data URLs (#9259) @SuperSodaSea
🚽 Deprecated
- Deprecates the following color utilities (#9061) @bigtimebuddy
utils.rgb2hex
=>new Color(rgb).toNumber()
utils.string2hex
=>new Color(string).toNumber()
utils.hex2string
=>new Color(hex).toHex()
utils.hex2rgb
=>new Color(hex).toRgbArray()
utils.premultiplyRgba
=>new Color(rgba).premultiply(alpha).toArray()
utils.premultiplyTint
=>new Color(tint).toPremultiplied(alpha)
utils.premultiplyTintToRgba
=>new Color(tint).premultiply(alpha).toArray()
- Deprecates
interactive
boolean setting, see neweventMode
instead (#9089, #9172) @Zyie - Deprecates
Asset.preferWorkers
, useAsset.setPreferences
instead (#9184) @bigtimebuddy - Migrate
@pixi/node
bundle to separate project (#9217) @bigtimebuddy
🐛 Fixed
- Revert to using peerDependencies for internal package dependencies (#9219) @bigtimebuddy
- Fix: TypeScript error with ICanvas (#9224) @SuperSodaSea
- Fix interaction performance with global events (#9228) @Zyie
- Suppress blit framebuffer delete call if context was lost (#9238) @dev7355608
- Fix missing shiftKey copy from originalEvent (#9243) @bigtimebuddy
- Fix: Improve interaction performance (#9246, #9258) @Zyie
- Fix: Remove the check when installing unsafe-eval (#9252) @SuperSodaSea
- Fix MSDF fragment shader "alpha" more like it was "coverage" (#9261) @jakerdy
🧹 Chores
- Chore: Add financial sponsors badge (#9134) @bigtimebuddy
- Chore: Update docs for ColorSource (#9133) @SuperSodaSea
- Chore: Bump required Node.js in repo to 18+ (#9135) @bigtimebuddy
- Chore: Remove Lerna for versioning and publishing (#9125, #9152, #9163, #9173) @bigtimebuddy
- Chore: Update grammer in README.md (#9151) @OOPS-Studio
- Chore: update documentation (#9161) @Zyie
- Chore: Cleanup documentation (#9162) @SuperSodaSea
- Chore: Decentralize IRendererOptions and settings.RENDER_OPTIONS (#9112) @Zyie @bigtimebuddy
- Chore: Bundle
@pixi/color
correctly (#9196) @SuperSodaSea - Chore: Fix prerelease tag (#9202) @bigtimebuddy
- Chore: Remove all dependencies from module bundles (#9203) @SuperSodaSea
- Chore: Add strict null checks (#9211, #9215, #9223, #9188, #9229, #9236, #9242, #9247) @SuperSodaSea
- Chore: Update package-lock.json (#9225) @SuperSodaSea
- Chore: Cache-bust banner image (#9232) @bigtimebuddy
- Chore: Bump workflow improvements (#9262) @bigtimebuddy
v7.2.0-rc.3
💾 Download
Development Build:
- https://pixijs.download/v7.2.0-rc.3/pixi.js
- https://pixijs.download/v7.2.0-rc.3/pixi.mjs
- https://pixijs.download/v7.2.0-rc.3/pixi-legacy.js
- https://pixijs.download/v7.2.0-rc.3/pixi-legacy.mjs
- https://pixijs.download/v7.2.0-rc.3/webworker.js
- https://pixijs.download/v7.2.0-rc.3/webworker.mjs
Production Build:
- https://pixijs.download/v7.2.0-rc.3/pixi.min.js
- https://pixijs.download/v7.2.0-rc.3/pixi.min.mjs
- https://pixijs.download/v7.2.0-rc.3/pixi-legacy.min.js
- https://pixijs.download/v7.2.0-rc.3/pixi-legacy.min.mjs
- https://pixijs.download/v7.2.0-rc.3/webworker.min.js
- https://pixijs.download/v7.2.0-rc.3/webworker.min.mjs
Documentation:
Changed
v7.2.0-rc.2
💾 Download
Development Build:
- https://pixijs.download/v7.2.0-rc.2/pixi.js
- https://pixijs.download/v7.2.0-rc.2/pixi.mjs
- https://pixijs.download/v7.2.0-rc.2/pixi-legacy.js
- https://pixijs.download/v7.2.0-rc.2/pixi-legacy.mjs
- https://pixijs.download/v7.2.0-rc.2/webworker.js
- https://pixijs.download/v7.2.0-rc.2/webworker.mjs
Production Build:
- https://pixijs.download/v7.2.0-rc.2/pixi.min.js
- https://pixijs.download/v7.2.0-rc.2/pixi.min.mjs
- https://pixijs.download/v7.2.0-rc.2/pixi-legacy.min.js
- https://pixijs.download/v7.2.0-rc.2/pixi-legacy.min.mjs
- https://pixijs.download/v7.2.0-rc.2/webworker.min.js
- https://pixijs.download/v7.2.0-rc.2/webworker.min.mjs
Documentation:
Changed
v7.2.0-rc
💾 Download
Development Build:
- https://pixijs.download/v7.2.0-rc/pixi.js
- https://pixijs.download/v7.2.0-rc/pixi.mjs
- https://pixijs.download/v7.2.0-rc/pixi-legacy.js
- https://pixijs.download/v7.2.0-rc/pixi-legacy.mjs
- https://pixijs.download/v7.2.0-rc/webworker.js
- https://pixijs.download/v7.2.0-rc/webworker.mjs
Production Build:
- https://pixijs.download/v7.2.0-rc/pixi.min.js
- https://pixijs.download/v7.2.0-rc/pixi.min.mjs
- https://pixijs.download/v7.2.0-rc/pixi-legacy.min.js
- https://pixijs.download/v7.2.0-rc/pixi-legacy.min.mjs
- https://pixijs.download/v7.2.0-rc/webworker.min.js
- https://pixijs.download/v7.2.0-rc/webworker.min.mjs
Documentation:
Changed
v7.1.4
💾 Download
Development Build:
- https://pixijs.download/v7.1.4/pixi.js
- https://pixijs.download/v7.1.4/pixi.mjs
- https://pixijs.download/v7.1.4/pixi-legacy.js
- https://pixijs.download/v7.1.4/pixi-legacy.mjs
- https://pixijs.download/v7.1.4/webworker.js
- https://pixijs.download/v7.1.4/webworker.mjs
Production Build:
- https://pixijs.download/v7.1.4/pixi.min.js
- https://pixijs.download/v7.1.4/pixi.min.mjs
- https://pixijs.download/v7.1.4/pixi-legacy.min.js
- https://pixijs.download/v7.1.4/pixi-legacy.min.mjs
- https://pixijs.download/v7.1.4/webworker.min.js
- https://pixijs.download/v7.1.4/webworker.min.mjs
Documentation:
Changed
🐛 Fixed
- Fix: Line Join Round and Miter Limit (#9031) @SuperSodaSea
- Fix: Renderer#type not available (#9218) @SuperSodaSea
- Fix: Prevent NaN in RopeGeometry vertex data (#9220) @SuperSodaSea
- Fix: Ensure prepare and extract systems are available from IRenderer (#9222) @bigtimebuddy