Skip to content

Version 0.1.2

Choose a tag to compare

@Boy1developer Boy1developer released this 30 Sep 23:48
· 58 commits to main since this release

Carrot Particle Editor v0.1.2

A standalone Dear PyGui editor and GDevelop extension for authoring 2D/3D particle effects.
Effect format v1.1 (v1.0 files are migrated automatically).

Highlights

  • Up to ~48× fewer draw calls in 3D via GPU instancing (~580 → ~12), with pixel-identical output.
  • New blend modes: Screen, Lighten, and Overlay.
  • Deterministic playback with a per-effect seed.
  • New force fields: turbulence, vortex, attractor, and a collision plane.

Added

Editor

  • Deterministic seed for identical replay across platforms (0 keeps legacy behavior).
  • Force fields (all disabled by default): turbulence, Y-axis vortex, attractor, and a collision plane with bounce and friction.
  • Effect format v1.1 with schema validation and automatic migration from v1.0.
  • Sample effect: sample_blend_layers.json.

Blend modes

  • Screen (2D + 3D), Lighten (3D, max equation), Overlay (2D).
  • Unsupported modes fall back to Normal and log a single warning.
  • Per-emitter blendingMode, selectable from the sidebar dropdown.
    Setting the object's 'JSON' option uses each emitter's own mode; any explicit value overrides all emitters.

Improved

3D runtime performance

  • InstancedMesh batching: ~580 draw calls reduced to ~12 buckets. Output is verified pixel-identical per particle (matrix, color, alpha), including morph flips and all blend modes.
  • Buckets are created lazily per shape in use; empty buckets add no draw calls.
  • Leaner sampling: static tracks are skipped and colors are pre-parsed, with no visual change.
  • Mesh and material pooling, shared geometries, and zero per-frame allocations in steady state.
  • Automatic fallback to the classic rendering path when instancing is unavailable.

Fixed

  • Extension crash on adding an object: helper definitions ran before var F was initialized, causing a TypeError on the first frame.
  • Export / Save / Open did nothing: Dear PyGui dialogs returned empty payloads. The editor now uses native OS file dialogs.
  • 3D Subtractive blend was silently rendering as Normal because of a wrong THREE constant.
  • Incorrect GL constant: ONE_MINUS_SRC_COLOR was mapped to ONE_MINUS_DST_COLOR (found by the new pixel-comparison tests).

Downloads

File Description
CarrotParticleEditor.exe Windows build. No Python installation required.
AdvancedParticleEmitter.json GDevelop extension. Import it into GDevelop/Carrots. Each effect uses a ParticleJSON resource plus a Models GLB resource.