Update to PixiJS v8

Update GDevelop to PixiJS v8

Summary

GDevelop currently uses PixiJS v7.2. I’m requesting an update to PixiJS v8 to unlock significant new features and performance improvements that would greatly benefit the GDevelop community.

Motivation

The primary driver for this request is advanced blend modes (difference, exclusion, overlay, color-dodge, color-burn, hard-light, soft-light) which are essential for creative visual effects but unavailable in v7. However, v8 offers many additional improvements that would enhance GDevelop’s capabilities.

Key Benefits of PixiJS v8

:art: Visual Effects

  • Advanced Blend Modes: Access to difference, exclusion, overlay, and other creative blending modes currently unavailable in v7
  • Inverse Masking: Create sophisticated cut-out effects
  • SVG Fill Rule Support: Better compatibility with vector assets

:zap: Performance & Architecture

  • WebGPU Support: Substantial performance improvements with automatic WebGL fallback
  • Optimized Render Loop: More efficient rendering that only updates what’s necessary
  • Render Groups: Improved batching and optimization for complex scenes
  • Render Layers: Control rendering order independently of scene hierarchy (perfect for UI overlays like health bars)
  • Better Culling: More granular control over culling operations

:video_game: New Capabilities

  • GIF Support: Native animated GIF loading and playback controls
  • Three.js Integration: Easier integration for 3D elements
  • PerspectiveMesh: New mesh type for 3D perspective effects
  • Multiview: Render to multiple canvases without duplicating resources

:memo: Text Enhancements

  • Dynamic Font Loading: Runtime font creation
  • Text Filters: Bake effects (outlines, shadows) at creation time for zero runtime cost
  • Text Splitting: Easy character/word/line separation
  • Text Trimming: Automatic whitespace optimization
  • Improved Text Caching: Smarter texture sharing for identical text styles
  • BitmapText Word Breaking: Better layout control

:art: Graphics API Improvements

  • Intuitive Drawing Workflow: Build shapes first, then fill/stroke (more natural approach)
  • GraphicsPath: Reusable path objects
  • buildGeometryFromPath: Convert paths to mesh geometry for complex designs
  • Improved Holes: New cut() function for cleaner hole creation

:sparkles: Particle Systems

  • Massive Performance Boost: Render significantly more particles
  • Lightweight Particle Class: Optimized particle objects instead of full sprites
  • Direct Array Access: Maximum control and performance

:hammer_and_wrench: Developer Experience

  • Single Package Structure: Eliminates version conflict issues from sub-packages
  • Custom Builds: Import only needed features for smaller bundle sizes
  • Better TypeScript Support: Improved type safety with generic containers
  • Container Origin Property: Cleaner rotation/scaling without position offsets
  • replaceChild Method: Seamless object swapping with preserved transforms

:wrench: Technical Improvements

  • Unified Shader System: Support both WebGL and WebGPU shaders
  • Simplified Texture Architecture: New TextureSource system replacing BaseTexture
  • Worker Management: Better handling for long-running applications
  • Optional Feature Imports: Keep bundle size optimized (e.g., advanced blend modes as separate import)

Potential Challenges

I understand this would be a significant undertaking:

  • Breaking API changes requiring code migration
  • Extension ecosystem compatibility (custom effects, tilemaps, lighting systems)
  • Testing requirements to ensure stability
  • Migration guide needed for community extensions

Conclusion

While I recognize this is a major update with associated challenges, the performance improvements, new creative capabilities (especially blend modes), and enhanced developer experience would be tremendously valuable for the GDevelop community. The WebGPU support alone could provide significant performance gains for complex games.

Would the GDevelop team consider this for a future roadmap? Are there specific blockers or concerns that the community could help address?

11 Likes

THAT WOULD BE AWESOME!

2 Likes

I hope they do this update.

2 Likes

So I agree with the ask for the upgrade to Pixi v8, but general reminder half of the things on your list wouldn’t automatically be available in GDevelop automatically just because the renderer supports them.

Many things would need editor support to work (SVG, GIF support), while others would need additions or complete rewrites to how assets work (fonts, particles), to others that would need full renderer implementation reworks or changes (webGPU, multiview)

The only thing the upgrade itself would do would be the base performance enhancements to culling and webGL, along with anything that is an auotmatic enhancement to current implementation.

It is very unlikely they would implement all (if any) of the new features in Pixi 8 during the upgrade process.

2 Likes

WOW, seven likes in 13 hours!

1 Like

yes but isnt that enough reason to update? also all those blending modes
when updating to a new pixiJS version, you always have to rewrite a bunch of code — cause things change. But thats just how it is and thats a sacrifice we need to make

1 Like

whats " PixiJS v8"
(20 words)

Just to be clear here, this is incorrect.

Most Pixi upgrades have been just binding the existing logic to the existing but updated APIs in the renderer, not rewriting the bindings or the API implementation. This is true for many renderer upgrades in both games and engines (many games implemented Vulkan by just updating their OpenGL bindings to use the Vulkan APIs in the same manner)

Again, I think it’d be fantastic to get all of these new features, but those are unrelated to just upgrading PixiJS V8. They are mostly implementing new technology or APIs entirely, or complete rewrites of existing functionality. They are unlikely to come at the same time as any Pixi 8 upgrades to GDevelop.

This doesn’t mean that those other features won’t come at some point in the future, but it is unlikely that they’d be done at the same time as the upgrade.

I hope the upgrade happens for the automatic improvements alone, but I want to make sure people level set real-world expectations rather than get their hopes up when they hear of any eventual Pixi 8 implementation.

Edit: Also, for your specific thing about blend modes, please note the above would apply to that as well. There’s no guarantee the upgrade to PixiJS v8 would also add the new blend modes automatically, and would likely require reimplementation of that event and rendering options.

1 Like

looks like someone is already working on it

2 Likes

Rad, glad to see it.

It does look like it’s just a base update as I mentioned above, although it looks like the last update around it was February.

2 Likes

ye its probs abandoned. just a base update is fine, since we the users can just use javascript blocks to code the rest ourselves