Releases: pixijs/pixijs
v8.10.1
💾 Download
Installation:
npm install [email protected]
Development Build:
- https://cdn.jsdelivr.net/npm/[email protected]/dist/pixi.js
- https://cdn.jsdelivr.net/npm/[email protected]/dist/pixi.mjs
Production Build:
- https://cdn.jsdelivr.net/npm/[email protected]/dist/pixi.min.js
- https://cdn.jsdelivr.net/npm/[email protected]/dist/pixi.min.mjs
Documentation:
Changed
🐛 Fixed
v8.10.0
💾 Download
Installation:
npm install [email protected]
Development Build:
- https://cdn.jsdelivr.net/npm/[email protected]/dist/pixi.js
- https://cdn.jsdelivr.net/npm/[email protected]/dist/pixi.mjs
Production Build:
- https://cdn.jsdelivr.net/npm/[email protected]/dist/pixi.min.js
- https://cdn.jsdelivr.net/npm/[email protected]/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 [email protected]
Development Build:
- https://cdn.jsdelivr.net/npm/[email protected]/dist/pixi.js
- https://cdn.jsdelivr.net/npm/[email protected]/dist/pixi.mjs
Production Build:
- https://cdn.jsdelivr.net/npm/[email protected]/dist/pixi.min.js
- https://cdn.jsdelivr.net/npm/[email protected]/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
v8.8.0
💾 Download
Development Build:
Production Build:
Documentation:
Changed
🚨 Behavior Change 🚨
Since 8.0.0 PixiJS has been incorrectly applying gradients and graphics fill textures. Instead of using normalized "local space" coordinates (0–1), gradients were using "global space" values in pixels. This was an unintended change that made working with gradients/texture fills much harder. In this release, we have changed the default behavior back to "local space" to match v7.
For anyone who needs the old behavior, you can change the default options globally or you can control it individually as all APIs now accept a textureSpace
property that can be set to "global"
. For example:
FillGradient.defaultLinearOptions.textureSpace = 'global'
FillGradient.defaultRadialOptions.textureSpace = 'global'
// or individually
new FillGraident(0, 0, 100, 100, 'global')
GraphicsContext.defaultFillStyle.textureSpace = 'global'
GraphicsContext.defaultStrokeStyle.textureSpace = 'global'
// or individually
new Graphics().fill({ texture, textureSpace: 'global' })
new Graphics().stroke({ texture, textureSpace: 'global' })
🚨 Behavior Change 🚨
Since version 8.0.0, TilingSprite has returned negative values for tilingSprite.bounds.width
and tilingSprite.bounds.height
. This has been corrected in this release, and these properties now return positive values. If your code relies on bounds, you may need to adjust it accordingly.
🎁 Added
- feat: svg and textureSpace update by @GoodBoyDigital in #11074
- feat: add configurable props to
AnimatedSpriteOptions
by @trezy in #11241 - feat: add anchor to nine slice sprite by @GoodBoyDigital in #11233
- feat: enhance how gradients are applied to text objects by @GoodBoyDigital in #11075
- feat: support SVG non-zero fills by @GoodBoyDigital in #11080
- feat: allow for graphics.fill(texture) by @GoodBoyDigital in #11152
- feat: add
autoPlay
toAnimatedSprite
by @trezy in #11243 - feat: add returnTexture for CanvasTextSystem by @GoodBoyDigital in #11269
- feat: add mixins for leaf nodes by @Zyie in #11253
🐛 Fixed
- fix: texture space incorrectly set to global by @Zyie in #11246
- fix: texture update bug on mesh by @GoodBoyDigital in #11259
- fix: multiview rendering by @GoodBoyDigital in #11260
- fix: mask resetState bug by @GoodBoyDigital in #11261
- fix: measure bug in render layer by @GoodBoyDigital in #11262
- fix: tiling sprite and nine slice sprite bounds being negative by @Zyie in #11267
- fix: graphics prepare bug by @GoodBoyDigital in #11258
- fix: increase didViewChangeTick on removeChildren call by @dapi303 in #11245
- fix: texture options set for spritesheet aren't propagating to multipacked spritesheets by @sam007mac in #11270
v8.8.0-rc.1
💾 Download
Development Build:
Production Build:
Documentation:
Changed
🚨 NOTE 🚨
Since the release of v8, PixiJS has been incorrectly applying gradients and graphics fill textures. Instead of using normalized "local space" coordinates (0–1), gradients were using "global space" values in pixels. This made working with gradients/texture fills more complicated than necessary. In this release, we have changed the default behavior back to "local space" to match v7.
For anyone who needs the old behavior, you can change the default options globally or you can control it individually as all APIs now accept a textureSpace
property that can be set to "global"
. For example:
FillGradient.defaultLinearOptions.textureSpace = 'global'
FillGradient.defaultRadialOptions.textureSpace = 'global'
// or individually
new FillGraident(0, 0, 100, 100, 'global')
GraphicsContext.defaultFillStyle.textureSpace = 'global'
GraphicsContext.defaultStrokeStyle.textureSpace = 'global'
// or individually
new Graphics().fill({ texture, textureSpace: 'global' })
new Graphics().stroke({ texture, textureSpace: 'global' })
🎁 Added
- feat: svg and textureSpace update by @GoodBoyDigital in #11074
- feat: add configurable props to
AnimatedSpriteOptions
by @trezy in #11241 - feat: add anchor to nine slice sprite by @GoodBoyDigital in #11233
- feat: enhance how gradients are applied to text objects by @GoodBoyDigital in #11075
- feat: support SVG non-zero fills by @GoodBoyDigital in #11080
- feat: allow for graphics.fill(texture) by @GoodBoyDigital in #11152
- feat: add
autoPlay
toAnimatedSprite
by @trezy in #11243
🐛 Fixed
v8.7.3
💾 Download
Development Build:
Production Build:
Documentation:
Changed
🐛 Fixed
- fix: set texture bug on batched mesh by @GoodBoyDigital in #11228
- fix: correct texture dimension comparison in glUploadImageResource by @GoodBoyDigital in #11230
- fix: advanced blend mode not applying when only belnd modes are active by @GoodBoyDigital in #11231
- fix: MeshGeometry match uv size if non is provided by @GoodBoyDigital in #11234