Execute the background.draw(ctx, delta) callback on the main canvas context.
Handled inline by RenderManager, not by plugins.
Auto-draw the CSS background element (background.element) via ctx.drawImage.
Handled inline by RenderManager, not by plugins.
Background mask overlay: calls plugin.canvasPaint() on all plugins in this layer.
Used by BackgroundMaskPluginInstance to draw the mask before particle compositing.
Plugin draw cleanup: calls plugin.clearDraw(ctx, delta) then plugin.drawSettingsCleanup(ctx, delta)
on all plugins in this layer. Restores canvas state after particle rendering.
Plugin draw setup: calls plugin.drawSettingsSetup(ctx, delta) on all plugins in this layer.
Used by zoom, blend, and backgroundMask plugins to configure canvas state (composite mode, transforms)
before particles are drawn.
Reserved for overlay/fx on top of everything. No default behavior — available for future plugins that need to render above particles.
Particle rendering (z-bucketed). Calls particles.drawParticles(delta) — this is the core
particle rendering step, not a plugin hook.
Plugin content drawn behind particles: calls plugin.draw(ctx, delta) on all plugins in this layer.
Fixed ordinal layer positions for the RenderManager layer-based rendering pipeline.
Each layer has a fixed position that determines drawing order (0 = back, 7 = front). Plugins declare their layer via IContainerPlugin.layer or get assigned to all applicable layers based on which hook methods they implement.
The pipeline in RenderManager.drawParticles iterates these layers in order: 0 BackgroundElement → 1 BackgroundDraw → 2 BackgroundMask → 3 CanvasSetup → 4 PluginContent → 5 Particles → 6 CanvasCleanup → 7 Foreground