Skip to content

Updated PixiRenderer to v8 #110

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 15 commits into
base: master
Choose a base branch
from
Open

Conversation

rafucuk
Copy link

@rafucuk rafucuk commented Mar 7, 2025

This is an early prototype, please use with caution.

@rafucuk rafucuk marked this pull request as draft March 7, 2025 16:58
@rafucuk
Copy link
Author

rafucuk commented Mar 8, 2025

I am planning to use ParticleContainer

@rafucuk
Copy link
Author

rafucuk commented Mar 14, 2025

added "particlecontainer" to usage
added batching and texturecaching for optimizing

@drawcall
Copy link
Owner

Oh, thank you very much. merge it later. a bit busy now.

@rafucuk
Copy link
Author

rafucuk commented Mar 14, 2025

I readded batching and caching and particlecontainer, it lags at around 50k particles, needs optimizing.

@rafucuk
Copy link
Author

rafucuk commented Mar 14, 2025

I will reopen this PR from draft when I done with optimizations. I believe we can get more performance with more particles.

@rafucuk
Copy link
Author

rafucuk commented Mar 14, 2025

critical issue;

colors (and probably other behaviours too) uses old pooled particles too when using default particles, will fix soon

@rafucuk
Copy link
Author

rafucuk commented Mar 14, 2025

I fixed the issue with using EmitterAwarePool;

Store Emitter ID during the "onParticleCreated" method and store emitter ID directly on particle "particle.__emitterId"
Check null parents, particle.parent might be null
Fallback to "orphaned", if a particle somehow loses its parent reference and doesnt have a stored emitter ID, added "orphaned" so code doesn't crash

@rafucuk
Copy link
Author

rafucuk commented Mar 14, 2025

Currently added features;

Added new renderer options

    this.options = {
      useParticleContainer: true,
      autoResize: true,
      scale: 1,
      maxParticles: 10000,
      properties: {
        position: true,
        rotation: true,
        scale: true,
        uvs: true,
        alpha: true
      },
      ...options
    };

Now uses particle containers as default,
Particles are now texture-based,
Automatically routes particles to the appropriate container based on their type,
Automatically converts circle graphics to texture-based sprites when ParticleContainer is enabled.

Maintains compatibility with v7 by defaulting original behavior (WIP, not intended to work well)
Rebuilds containers when needed

Added thorough cleanup for all resources (textures, containers)
More robust parent-child relationship handling during removal

Improved error checking throughout the code

@rafucuk
Copy link
Author

rafucuk commented Mar 14, 2025

I rewrote the whole code to figure-out whats wrong with emitters using old/deleted particles, I fixed it (magic idk how), and I tried to add full backwards comp. Will try to add performance fixes later but currently this handles particles well, but as always can be better

@rafucuk rafucuk marked this pull request as ready for review March 14, 2025 21:12
@drawcall
Copy link
Owner

Oh, I've been quite busy lately, so I may not be able to respond to you immediately.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants