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
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
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
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
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
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
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
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
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?
