Skip to content

Releases: pixijs/pixijs

v8.15.0-rc

08 Dec 17:43

Choose a tag to compare

v8.15.0-rc Pre-release
Pre-release

💾 Download

Installation:

npm install [email protected]

Development Build:

Production Build:

Documentation:

Changed

v8.14.3...v8.15.0-rc

🎁 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

New Contributors

v8.14.3

20 Nov 12:35

Choose a tag to compare

v8.14.2

18 Nov 09:23

Choose a tag to compare

💾 Download

Installation:

npm install [email protected]

Development Build:

Production Build:

Documentation:

Changed

v8.14.1...v8.14.2

🐛 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

v8.14.1

10 Nov 09:32

Choose a tag to compare

💾 Download

Installation:

npm install [email protected]

Development Build:

Production Build:

Documentation:

Changed

v8.14.0...v8.14.1

🐛 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

v8.14.0

06 Oct 21:29

Choose a tag to compare

💾 Download

Installation:

npm install [email protected]

Development Build:

Production Build:

Documentation:

Changed

v8.13.2...v8.14.0

🎁 Added

  • feat: add asset loading strategies by @Zyie in #11693
    • Three new loading strategies have been introduced: throw, skip, and retry
      • throw: 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 assets
      • retry: 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');
  • feat: Adds progress size to asset loading by @Zyie in #11699
    • You can provide progressSize when 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);
  • 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 updateTextBounds is 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

New Contributors

v8.13.2

10 Sep 07:41

Choose a tag to compare

💾 Download

Installation:

npm install [email protected]

Development Build:

Production Build:

Documentation:

Changed

v8.13.1...v8.13.2

🐛 Fixed

  • fix: application destroy for graphics by @Zyie in #11659
  • fix: recalculate the boundaries of GraphicsContext regardless of rendering dirty state by @mayakwd in #11671
  • fix: destroy of prepared but not rendered text should not throw an error by @mayakwd in #11672

v8.13.1

03 Sep 20:09

Choose a tag to compare

💾 Download

Installation:

npm install [email protected]

Development Build:

Production Build:

Documentation:

Changed

v8.13.0...v8.13.1

🐛 Fixed

New Contributors

v8.13.0

02 Sep 13:12

Choose a tag to compare

💾 Download

Installation:

npm install [email protected]

Development Build:

Production Build:

Documentation:

Changed

v8.12.0...v8.13.0

🎁 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 TextStyle will 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);
    }
  • 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

🧹 Chores

New Contributors

Full Changelog: v8.12.0...v8.13.0

v8.12.0

05 Aug 08:50

Choose a tag to compare

💾 Download

Installation:

npm install [email protected]

Development Build:

Production Build:

Documentation:

Changed

v8.11.0...v8.12.0

🚨 Behavior Change 🚨

  • lineHeight is now correctly calculated for BitmapText. 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 and BitmapText 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 for BitmapText by @privatestefans in #11531
  • fix: minor typos in comments and docs, add missing @params and @returns by @afarber in #11590

🧹 Chores

New Contributors

v8.11.0

03 Jul 15:04

Choose a tag to compare

💾 Download

Installation:

npm install [email protected]

Development Build:

Production Build:

Documentation:

Changed

v8.10.2...v8.11.0

🚨 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

  • chore: update typedoc and minor doc fixes by @Zyie in #11512

New Contributors