Releases: pixijs/pixijs
v8.12.0
💾 Download
Installation:
npm install pixi.js@8.12.0
Development Build:
- https://cdn.jsdelivr.net/npm/pixi.js@8.12.0/dist/pixi.js
- https://cdn.jsdelivr.net/npm/pixi.js@8.12.0/dist/pixi.mjs
Production Build:
- https://cdn.jsdelivr.net/npm/pixi.js@8.12.0/dist/pixi.min.js
- https://cdn.jsdelivr.net/npm/pixi.js@8.12.0/dist/pixi.min.mjs
Documentation:
Changed
🚨 Behavior Change 🚨
lineHeight
is now correctly calculated forBitmapText
. This change may result in some text elements changing position slightly. See #11531.
🎁 Added
- feat: support scaleMode for cacheAsTexture options by @mayakwd in #11578
container.cacheAsTexture({ scaleMode: 'nearest', });
- feat: Adds max anisotropy passthrough property by @Zyie in #11588
texture.source.maxAnisotropy = 16;
- feat: use DomAdapter for new Image by @Zyie in #11565
const image = DomAdapter.get().createImage(); image.src = 'path/to/image.svg';
- feat: allow sharing device and adaptor with other engine by @littleboarx in #11435
const adapter = await navigator.gpu.requestAdapter(); const device = await adapter.requestDevice(); const app = new Application(); await app.init({ gpu: { adapter, device } });
- feat: Refactors asset parser configuration by @Zyie in #11557
// Old way await Assets.load({ src: 'path/to/asset', data: { loadParser: 'loadJson' } }); // New way await Assets.load({ src: 'path/to/asset', data: { parser: 'json' } }); // Name changes // 'loadJson' -> 'json' // 'loadSvg' -> 'svg' // 'loadTxt' -> 'text' // 'loadVideo' -> 'video' // 'loadWebFont' -> 'web-font' // 'loadBitmapFont' -> 'bitmap-font' // 'spritesheetLoader' -> 'spritesheet' // 'loadTextures' -> 'texture' // 'loadBasis' -> 'basis' // 'loadDds' -> 'dds' // 'loadKtx2' -> 'ktx2' // 'loadKtx' -> 'ktx'
- feat: add WorkerManager.reset by @Zyie in #11562
app.destroy(true, true); // Destroy the app WorkerManager.reset(); // Reset the worker pool
🐛 Fixed
- fix: Add missing createCanvas calls by @bigtimebuddy in #11553
- fix: Boost classes in the docs search results by @bigtimebuddy in #11555
- fix: video texture loading with no extension by @Zyie in #11546
- fix: fillGradientStop logic in TextStyle by @Zyie in #11549
- fix: resource leak in Graphics and fills by @Zyie in #11543
- fix: AnimatedSprite destroy method by @Zyie in #11544
- fix: text fill and stroke with padding by @Zyie in #11524
- fix: HTMLText incorrectly handling font weights by @Zyie in #11520
- fix: HTML text rendering with broken tags by @Zyie in #11521
- fix: progress tracking for asset bundles by @Zyie in #11558
- fix: earcut triangulation issues by @Zyie in #11559
- fix: allow for culler plugin to update transforms by @Zyie in #11548
- fix: text fill documentation by @Zyie in #11561
- fix: DOMContainer scaling if canvas width/height is percentage by @Zyie in #11539
- fix: MeshPipe.addRenderable does not set the current geometry parameters by @midiusRed in #11534
- fix:
Text
andBitmapText
that doesn't render it's new value on some condition by @privatestefans in #11547 - fix: Container.parent type not being nullable and possibly undefined by @ch1ll0ut1 in #11567
- fix: masking turns off when the mask texture is out of the viewport bounds by @mayakwd in #11569
- fix: BitmapFont's texture frame handling for rotated spritesheet regions by @privatestefans in #11525
- fix: incorrect trim mask rendering by @littleboarx in #11529
- fix: origin calculation to ensure it scales from origin point by @Zyie in #11538
- fix: loading unsupported video formats by @Zyie in #11541
- fix: trimmed text rendereing with non default resolution by @mayakwd in #11570
- fix: Align
GetGlobalMixin
implementation with documentation by @albinkong in #11574 - fix: accessibility scaling issues by @Zyie in #11579
- fix: Remove deprecation version constants by @albinkong in #11582
- fix: Installed bitmap text showing wrong fill by @Zyie in #11523
- fix:
lineHeight
calculation for multi-line layout forBitmapText
by @privatestefans in #11531 - fix: minor typos in comments and docs, add missing @params and @returns by @afarber in #11590
🧹 Chores
- chore: add code owners and support newer node versions by @Zyie in #11572
- chore: Increases timeout for HTMLText test by @Zyie in #11580
- chore: adds needs reproduction automation by @Zyie in #11552
- chore: Enables StackBlitz integration by @Zyie in #11571
- chore: update issue templates by @Zyie in #11563
- chore: Fix missing constructors by @bigtimebuddy in #11583
- chore: fix Assets docs typos by @bigtimebuddy in #11586
New Contributors
- @privatestefans made their first contribution in #11547
- @ch1ll0ut1 made their first contribution in #11567
- @mayakwd made their first contribution in #11569
- @littleboarx made their first contribution in #11529
- @albinkong made their first contribution in #11574
- @afarber made their first contribution in #11590
v8.11.0
💾 Download
Installation:
npm install pixi.js@8.11.0
Development Build:
- https://cdn.jsdelivr.net/npm/pixi.js@8.11.0/dist/pixi.js
- https://cdn.jsdelivr.net/npm/pixi.js@8.11.0/dist/pixi.mjs
Production Build:
- https://cdn.jsdelivr.net/npm/pixi.js@8.11.0/dist/pixi.min.js
- https://cdn.jsdelivr.net/npm/pixi.js@8.11.0/dist/pixi.min.mjs
Documentation:
Changed
🚨 Behavior Change 🚨
In this release, we've corrected how textStyle.padding
interacts with text positioning when anchor
values are set. Previously, padding could incorrectly offset the position of text objects. With this fix, text objects now behave consistently but you may notice some text elements appear slightly repositioned as a result. This is expected and reflects the intended, more predictable layout.
🎁 Added
- feat: adds text splitting functionality by @Zyie in #11496
- feat: Implements replaceChild method for Container by @Zyie in #11506
- feat: Adds origin point for container transformations by @Zyie in #11501
- feat: break words for bitmap text by @iamDecode in #11502
🐛 Fixed
- fix: text bounds calculation to account for anchor and padding by @GoodBoyDigital in #11483
- fix: dynamic bitmap font shadow applied twice by @Zyie in #11504
- fix: reset transform when returning canvas to CanvasPool by @BOTDan in #11460
- fix: TextMetrics tokenize didn't handle CRLF line ending by @maliut in #11469
- fix: remove special number casing for particle tint by @bigtimebuddy in #11484
- fix: polygon x/y returning incorrect value by @Zyie in #11457
- fix: warn if transparent background is set after opaque init by @Ashish050488 in #11514
🧹 Chores
New Contributors
- @BOTDan made their first contribution in #11460
- @iamDecode made their first contribution in #11502
- @Ashish050488 made their first contribution in #11514
v8.10.2
💾 Download
Installation:
npm install pixi.js@8.10.2
Development Build:
- https://cdn.jsdelivr.net/npm/pixi.js@8.10.2/dist/pixi.js
- https://cdn.jsdelivr.net/npm/pixi.js@8.10.2/dist/pixi.mjs
Production Build:
- https://cdn.jsdelivr.net/npm/pixi.js@8.10.2/dist/pixi.min.js
- https://cdn.jsdelivr.net/npm/pixi.js@8.10.2/dist/pixi.min.mjs
Documentation:
Changed
🐛 Fixed
- fix: Fix type error on DOMContainer in strict codebases by @Mysak0CZ in #11479
- fix: filter offset by @GoodBoyDigital in #11482
🧹 Chores
v8.10.1
💾 Download
Installation:
npm install pixi.js@8.10.1
Development Build:
- https://cdn.jsdelivr.net/npm/pixi.js@8.10.1/dist/pixi.js
- https://cdn.jsdelivr.net/npm/pixi.js@8.10.1/dist/pixi.mjs
Production Build:
- https://cdn.jsdelivr.net/npm/pixi.js@8.10.1/dist/pixi.min.js
- https://cdn.jsdelivr.net/npm/pixi.js@8.10.1/dist/pixi.min.mjs
Documentation:
Changed
🐛 Fixed
v8.10.0
💾 Download
Installation:
npm install pixi.js@8.10.0
Development Build:
- https://cdn.jsdelivr.net/npm/pixi.js@8.10.0/dist/pixi.js
- https://cdn.jsdelivr.net/npm/pixi.js@8.10.0/dist/pixi.mjs
Production Build:
- https://cdn.jsdelivr.net/npm/pixi.js@8.10.0/dist/pixi.min.js
- https://cdn.jsdelivr.net/npm/pixi.js@8.10.0/dist/pixi.min.mjs
Documentation:
Changed
🚨 Behavior Change 🚨
With this release we have fixed the ParticleContainer.removeParticles(startIndex, endIndex)
logic to correctly set the endIndex
to this.particleChildren.length
by default. This now matches the behavior of container.removeChildren()
🎁 Added
- feat: support trimmed text by @GoodBoyDigital in #11456
- Text can now be trimmed!
const text2 = new Text({ text: 'TRIM', style: { trim: true, // New API }, });
- feat: textStyle filters by @GoodBoyDigital in #11282
- Filters can now be baked into a Text on creation. When setting filters this way, the filter is actually baked into the texture at creation time, rather than having to be calculated at run time, eliminating the runtime cost.
const blurFilter = new BlurFilter(); const text = new Text({ text: 'HI', style: { fontSize: 100, fill: 'white', filters: [blurFilter], // add some filters to the style } });
- feat: support textureStyle options on text rendering by @GoodBoyDigital in #11403
- Text, HTMLText, and BitmapText now all support customising how the texture is generated by passing in the
textureStyle
object
const text = new Text({ text: 'Hello Pixi!', style: {...}, textureStyle: { scaleMode: 'nearest', } });
- Text, HTMLText, and BitmapText now all support customising how the texture is generated by passing in the
- feat: spritesheet option cachePrefix by @F-star in #11237
- feat: add a limits system to WebGL and WebGPU renderers by @GoodBoyDigital in #11417
- feat: allow for autocomplete on cursor strings by @Zyie in #11438
- feat: The build (ShapeBuilder) method should report its success by @midiusRed in #11283
- feat: update Earcut to v3.0.0 by @LukeAbby in #11214
🐛 Fixed
- fix: ObservablePoint toString by @Zyie in #11430
- fix: HTMLTextStyle clone and css overrides assignment by @Zyie in #11442
- fix: iOS issue loading video when autoplay is false and preload is true. by @jgelens in #11451
- fix: letter spacing support getter by @GoodBoyDigital in #11429
- fix: bitmap text emoji render by @rnike in #11275
- fix: Inverse stencil mask should not modify stencil buffer during normal draws by @Mysak0CZ in #11352
- fix: default values on removeParticles logic by @PaulKokhanov1 in #11374
- fix: Dom Container on scaled canvas by @GoodBoyDigital in #11400
- fix: dynamic bitmap font rendering by @GoodBoyDigital in #11416
- fix: events firing PointerEvent when not supported by @midiusRed in #11217
🧹 Chores
- chore: add funding link to npm package by @tddyco in #11405
- chore: update links in README by @tddyco in #11406
- chore: Improve handling of HTMLImageElement in texture uploads by @GoodBoyDigital in #11343
- chore: simplify text systems by @GoodBoyDigital in #11345
- chore: remove renderable hashes by @GoodBoyDigital in #11346
- chore: Update BitmapFont.ts doc for 8.x by @JonDegn in #11420
- chore: documentation overhaul with typedoc by @Zyie in #11423
- chore: add standard/advanced tags to documentation by @Zyie in #11448
- chore: improve api doc comments by @Zyie in #11455
New Contributors
v8.9.2
💾 Download
Installation:
npm install pixi.js@8.9.2
Development Build:
- https://cdn.jsdelivr.net/npm/pixi.js@8.9.2/dist/pixi.js
- https://cdn.jsdelivr.net/npm/pixi.js@8.9.2/dist/pixi.mjs
Production Build:
- https://cdn.jsdelivr.net/npm/pixi.js@8.9.2/dist/pixi.min.js
- https://cdn.jsdelivr.net/npm/pixi.js@8.9.2/dist/pixi.min.mjs
Documentation:
Changed
🐛 Fixed
- fix: render layer detachment when destroying. by @GoodBoyDigital in #11384
- fix: documentation regarding anchor values in spritesheet by @SanjoSolutions in #11363
- fix: gradient issue with non 0,0 shapes in graphics by @GoodBoyDigital in #11383
New Contributors
- @SanjoSolutions made their first contribution in #11363
v8.9.1
💾 Download
Development Build:
Production Build:
Documentation:
Changed
🐛 Fixed
- fix: bad aliased imports by @bigtimebuddy in #11355
- fix: reset premultiply alpha state on resetState call and update WebGL settings by @GoodBoyDigital in #11342
- fix: state culling was flipped when rendering to a texture by @GoodBoyDigital in #11356
v8.9.0
💾 Download
Development Build:
Production Build:
Documentation:
Changed
🎁 Added
- feat: DOMContainer by @GoodBoyDigital in #11340
- Experimental support for integrating DOM elements within the PixiJS scene graph, allowing HTML elements to be positioned and transformed alongside other PixiJS objects.
import 'pixi.js/dom'
import { DOMContainer } from 'pixi.js';
// Create a DOM element
const element = document.createElement('div');
element.innerHTML = 'Hello World!';
// Create a DOM container
const domContainer = new DOMContainer({ element });
// Add it to your scene
app.stage.addChild(domContainer);
// Position and transform like any other DisplayObject
domContainer.x = 100;
domContainer.y = 100;
domContainer.rotation = 0.5;
domContainer.anchor.set(0.5);
🐛 Fixed
- fix: Ignore autoDensity for OffscreenCanvas by @bigtimebuddy in #11313
- fix: Restore gl extensions state on context restore by @ddenisyuk in #11299
- fix: don't use alias for
PointData
import by @kosmotema in #11308
New Contributors
- @kosmotema made their first contribution in #11308
v7.4.3
v8.8.1
💾 Download
Development Build:
Production Build:
Documentation:
Changed
🐛 Fixed
- fix: gif loader base64 path matching by @MechaKnightz in #11285
- fix: Don't bundle GIF dependencies by @bigtimebuddy in #11298
New Contributors
- @MechaKnightz made their first contribution in #11285