Releases: pixijs/pixijs
v8.15.0-rc
💾 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
🎁 Added
- feat: allow RenderTexture.create to accept dynamic option by @seanzhaoxiaoxiao in #11767
- feat: add unload method to reset GPU data by @Zyie in #11762
- feat: add unified GC by @Zyie in #11786
- feat: move GPU context storage to GraphicsContext._gpuData by @Zyie in #11763
- feat: move GPU data to Geometry._gpuData by @Zyie in #11772
- feat: move GPUData to TextureSource by @Zyie in #11774
- feat: move GL/GPU buffer storage to Buffer._gpuData and manage buffers list by @Zyie in #11775
- feat: update text GPU lifecycle and resolution updates by @Zyie in #11781
- feat: ParticleContainer type improvements by @unstoppablecarl in #11708
🐛 Fixed
- fix: SVGParser.ts Allow negative values for Polygon(s)/polyline(s) by @Raukie in #11771
- fix: prevent double returning of batches to pool by @GoodBoyDigital in #11780
- fix: Add error handling for message processing in KTX worker by @zardoy in #11768
- fix: RenderTexture ignoring format setting (WebGL) by @laino in #11777
- fix: Add Multiple Render Targets (MRT) support by @GoodBoyDigital in #11792
New Contributors
v8.14.3
💾 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: Only create stage Container on init if it doesn't exist by @lunarraid in #11766
v8.14.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: graphics memory leak and cleanup by @Zyie in #11753
- fix: typo in Application example: replace '-' with '=' in asset loading by @Aryaman1792 in #11750
- fix: parse resolution and format from URLs in object sources in assets resolver by @stereopasa in #11747
- fix: track item count in Pool class and add related tests by @Zyie in #11760
- fix: bitmanFontXMLParser should recognize xml fonts with versions by @rafalaidlaw in #11761
- fix: Remove automatically added 'resize' event listener from TextureSource on Texture destroy() by @Romans-I-XVI in #11764
- fix: resolve a typescript annoyance with Container.filters by @jimhigson in #11757
- fix: enable proper application reinitialization by @Zyie in #11759
- fix: correct uBackTexture binding for filters with blendRequired by @GoodBoyDigital in #11754
🧹 Chores
- chore: add mention of uBackTexture to Filter docs (otherwise undocumented) by @jimhigson in #11756
New Contributors
- @Aryaman1792 made their first contribution in #11750
- @stereopasa made their first contribution in #11747
- @rafalaidlaw made their first contribution in #11761
- @Romans-I-XVI made their first contribution in #11764
v8.14.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
- fix: bytesPerRow calculation for BufferImageSource in WebGPU by @koteelok in #11718
- fix: Guards mask reset from null reference by @Zyie in #11719
- fix: Prevents errors during worker manager reset by @Zyie in #11720
🧹 Chores
- chore: move transcoders off pixijs.download by @bigtimebuddy in #11730
- chore: cleanup using optional chaining by @bigtimebuddy in #11713
v8.14.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
🎁 Added
- feat: add asset loading strategies by @Zyie in #11693
- Three new loading strategies have been introduced:
throw,skip, andretrythrow: The default strategy and matches the behavior of previous versions. With this strategy enabled any asset that fails to load will throw an error and the promise will reject.skip: If any asset fails to load not error is thrown and the loader continues to load other assetsretry: Allow for multiple attempts at loading an asset before an error is thrown. The number of attempts and the delay between attempts are configurable
const options: LoadOptions = { strategy: 'retry', retryCount: 5, // Retry up to 5 times }; await Assets.load('unstable-asset.png', options);
await Assets.init({ basePath, loadOptions: { strategy: 'skip', onError: (error, asset) => console.log(error, asset.url) }, }); Assets.addBundle('testBundle', [ { alias: 'bunny', src: 'textures/bunny_no_img.png' }, { alias: 'bunny2', src: 'textures/bunny.png' }, ]); // only bunny2 is defined and did not throw an error const assets = await Assets.loadBundle('testBundle');
- Three new loading strategies have been introduced:
- feat: Adds progress size to asset loading by @Zyie in #11699
- You can provide
progressSizewhen loading assets to get a more accurate loading percentage. If no size is provide the default value is 1.
const assets = [ { src: [ { src: 'textures/texture.webp', progressSize: 900, }, ], alias: ['bunny-array', 'bunny-array2'], }, { src: 'textures/bunny.png', progressSize: 100, } ]; const res = await Assets.load(assets, progressMock);
- You can provide
- feat: added rotate to Point math-extras by @unstoppablecarl in #11704
// Basic point rotation const point = new Point(10, 20); const degrees = 45 const radians = degrees * (Math.PI / 180) const result = point.rotate(radians); console.log(result); // {x: -7.071067811865474, y: 21.213203435596427} // Using output point for efficiency const output = new Point(10, 20); point.rotate(90 * (Math.PI / 180), output); console.log(result); // {x: -7.071067811865474, y: 21.213203435596427}
- feat: add change guards to TextStyle setters to prevent redundant updates by @mayakwd in #11677
🐛 Fixed
- fix: incorrect accessibility div when recycled from the pool (#11679) by @brentmc in #11680
- fix: use updated childrenRenderablesToUpdate index in validateRenderables by @davidetan in #11688
- fix: modify conditional to skip draw call when instanceCount < 1 by @jaburwock in #11639
- fix: respect filter enabled state by @mayakwd in #11674
- fix: ensure
updateTextBoundsis called regardless of style and resolution change by @mayakwd in #11676 - fix: Allow IRenderLayer as part of the ContainerOptions children array by @albinkong in #11687
- fix: removes accessibility system event listeners correctly by @Zyie in #11700
🧹 Chores
- chore: fix outdated
textureSourceOptionsdoc example by @Caden-Hornyak in #11686
New Contributors
- @Caden-Hornyak made their first contribution in #11686
- @jaburwock made their first contribution in #11639
- @unstoppablecarl made their first contribution in #11704
v8.13.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
v8.13.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
- fix: text texture incorrectly released when destroyed by @Zyie in #11658
- fix: fix accessibility debug div tabIndex label (#11654) by @brentmc in #11655
New Contributors
v8.13.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
🎁 Added
- feat: support svg fill rule subpath rendering by @creativoma in #11604
- feat: simplified caching for text by @Zyie in #11505
- Text that shares the same
TextStylewill now share the same texture
const textStyle = new PIXI.TextStyle({ fontSize: 24, fontFamily: "Verdana", fill: 0xffffff }); const COUNT = 25000; for (let i = 0; i < COUNT; i++) { const bunny = new Text({ text: 'hello', style: textStyle }); bunny.x = (i % 100) * 105; bunny.y = Math.floor(i / 100) * 25; container.addChild(bunny); }
- Text that shares the same
- feat: add LRU cache for text measuring by @Zyie in #11644
- feat: suppression and colorization options for deprecation message by @mayakwd in #11617
import { deprecation } from 'pixi.js'; // Supresses deprecation warnings deprecation.quiet = true; // Removes color formatting from deprecation messages deprecation.noColor = true;
🐛 Fixed
- fix: destroy texture during ViewSystem cleanup to prevent resource leaks by @mayakwd in #11614
- fix: stage visible false no effect by @creativoma in #11615
- fix: reset bounds dirty flag in GraphicsContext to prevent recalculations on each access by @mayakwd in #11616
- fix: improve error message for array uniform syntax by @creativoma in #11602
- fix: Fix incompatible
parenttype onIFederatedContainerby @Mysak0CZ in #11603 - fix: handle uniform buffer bindings check in WebGL1 gracefully (#11458) by @mayakwd in #11608
- fix: avoid using createObjectURL by @UlyssesZh in #11599
- fix: take in account uRound inside particles shader (webgpu) by @steel97 in #11624
- fix:
onRendertype should includenullby @bee1an in #11627 - fix: Advanced blending modes within render groups, cached as texture render groups by @mayakwd in #11607
- fix: ignore empty renderable bounds (#11589) by @mayakwd in #11611
- fix: preserve HTMLText texture until the new texture generation completes by @mayakwd in #11621
- fix: applying nextLine to BitmapTextLayout so it renders newlines properly by @dusanradivojevic in #11605
- fix: allow canvas source options for gif asset by @bigtimebuddy in #11635
- fix: fix multiple memory leaks in Text by @Tianj0o in #11619
- fix: svg edges trimmed decimal resolutions by @creativoma in #11632
- fix: make text filters immutable by @Zyie in #11645
- fix: cast index type to number as it required by setVertexBuffer by @katmai7 in #11650
- fix: restore
buildGeometryFromPathfunctionality by @mayakwd in #11623 - fix: supports husky to run without PATH by @bigtimebuddy in #11638
- fix: unsafe-eval particle update polyfill by @westarne in #11643
- fix: memory leaks in renderer systems by @Zyie in #11581
🧹 Chores
- chore: add favicon to docs by @bigtimebuddy in #11637
- chore: conditionally disable StackBlitz publish workflow on non-origin repositories by @mayakwd in #11618
- chore: add lint rule to prevent using
documentandImageby @UlyssesZh in #11600 - chore: add time units documentation to Ticker class by @creativoma in #11601
New Contributors
- @creativoma made their first contribution in #11615
- @UlyssesZh made their first contribution in #11600
- @steel97 made their first contribution in #11624
- @bee1an made their first contribution in #11627
- @dusanradivojevic made their first contribution in #11605
- @westarne made their first contribution in #11643
Full Changelog: v8.12.0...v8.13.0
v8.12.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 🚨
lineHeightis 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:
TextandBitmapTextthat 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
GetGlobalMixinimplementation 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:
lineHeightcalculation for multi-line layout forBitmapTextby @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 [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 🚨
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