
After 500 commits, 10000 file edits and completing 200 tasks I finally finished JWildfireSwan 2.0 which comes as free update!
Together with some minor enhancements there comes a brand-new module: flame painter.
In short, flame painter allows to visually compose flames of flames by using an instancing-like approach.
It is a substantial extension to the "classic" fractal-flame-algorithm.
It allows to render an unlimited number of copies of the same base flame (with different attributes) at the same time.
So it can be compared to the instancing-feature of 3d-packages like Lightwave3D, which allow to render a large number of copies (instances) of the same 3d-object in a very efficient way to generate detailed structures like grass.
In flame painter you can do basically the same, but due to the nature of the fractal-flame-algorithm it is even more powerful.
You can replace most single attributes of a flame by a range of attributes and render all those flame variants together.
For the example of instancing you would do so for the position of a final linear transform (which just changes the positiom of the flame).
Having for example 10 different positions you would end up with 10 copies of the same flame at this different positions.
Hence, the name flame painter: with this method you can "paint" with a flame, using the flame as brush.
This is a very common use case, but is only one possible scenario.
Actually you can "paint" most xform attributes (the ones, which can already be animated), which really gives an infinite of new possibilities.
Also, flame-painter supports animated flames. So, when you "paint" with a flame as brush, this brush is not static during "painting", but resembles an approximation of its animation, which allows for even more nice effects.
I actually had this idea in my head for about 10 (or more) years, but for architectural reasons I was never able to implement it in JWildfire.
To get started there is both a comprehensive manual and some examples to explore. It is really recommended to read the manual which explains all concepts in detail.
Complete changelog:
VERSION 2.0.1603 (05.12.2025):
- flame-painter:
- TEXTURE-geometry: scale the texture to the desired rows/cols-setting to synchronize image
contours with fractal shapes (SWAN-365)
- TEXTURE-geometry: approximate gradient-colors by the image colors of the down-scaled image (SWAN-366)
- TEXTURE-geometry: overwrite geometry-gradient-index by information of the currently sampled
pixel (which approximates the image color at this position, when an appropriate gradient is chosen) (SWAN-367)
- created all new icons also for the LIGHT-theme and update on changing the theme (SWAN-240)
- created comprehensive internal library of flame-brushes (about 80 brushes) (SWAN-368)
- added useful presets for al geometry types (SWAN-369)
- added compehensive user-manual-section (SWAN-363)
- added some example flames to the flame-library (SWAN-371)
- added soft blur for background-images (new parameter "bg img blur") (SWAN-364)
- added bg-transparency-option to image-render-window to be able to change it on-the-fly (SWAN-352)
- created to new intro screen (SWAN-370)
- leave a border to be able to resize the main window when opening the application
VERSION 1.20.1592 (01.12.2025):
- flame-painter:
- keep selection of guide-binding-tree after refreshing it (SWAN-345)
- allow to select the current point from within the tree (for point-based geometries) (SWAN-312)
- indicate currently selected point preview (for point-based geometry) (SWAN-310)
- add possibility to select individual strokes for the FREEHAND-geometry (SWAN-289)
- allow to select brush strokes from within the tree (for FREEHAND-geometry) (SWAN-311)
- indicate currently selected brush stroke in preview (for FREEHAND geometry) (SAN-309)
- add recent files to flame-new-menu and sync these recent files with the flame-editor (SWAN-335)
- TEXT-geometry: allow arbitrary text (not only english, maybe eben arabic etc.) (SWAN-355)
- FIXED: geometry selection after guide-randomization (SWAN-341)
- FIXED: the guide-randomizer currently creates multiple different geometries with the same name
(which is wrong for most of the geometries), which is very confusing in the ui (SWAQN-354)
- improved the responsibility and stability of the flame-library-window (SWAN-161)
VERSION 1.19.1581 (30.11.2025):
- flame-painter:
- change flame-pitch-angle when holding <SHIFT> while rotating flame (SWAN-361)
- implement add/remove-points for POINT_ARRAY-geometry (SWAN-356)
- added SEED_OF_LIFE guide geometry type (SWAN-358)
- TEXT-geometry: add font_spacing attribute (and internally automatically
create font-variations) (SWAN-359)
- added a font-select-dialog for the TEXT geometry (SWAN-350)
- optimized sampling of FREEHAND and TEXT geometry (SWAN-349)
- separated geometry-selection from geometry manipulation (SWAN-317)
- introduced an important-parameter, which affect relative sampling density (SWAN-351)
- implemented select gradients for geometry from the gradient-library (SWAN-324)
- jukebox: dramatically improved performance when picking random flames (do not read all flames at start,
analyze content later in the picking process) (SWAN-362)
VERSION 1.18.1571 (29.11.2025):
- flame-painter:
- added an extemely pwoerful TEXT guide geometry type which allows fractals
to "follow text" (SWAN-348, SWAN-50)
- allow empty FREEHAND-geometry (no points yet or all points erased) without
an error (SWAN-265)
- TEXT-geometry: load/save generated contours to not necessarily generate
them all the time (SWAN-353)
- provided a collection of about 30 useful fonts for the TEXT geometry type (SWAN-357)
- jukebox: don't select flams with guides when automatically picking random
flames (because they are slower to render and currently not animated anyway) (SWAN-360)
VERSION 1.17.1566 (28.11.2025):
- flame-painter:
- added MANDELBROT guide geometry type (SWAN-339)
- made the level-of-detail-parameter a continuous value between 0.0 and 1.0 (SWAN-340)
- added JULIA_SET guide geometry type (SWAN-342)
- refresh preview in high quality after editing geometry-related values in the tree by
dragging the mouse (SWAN-344)
- added NAUTILUS_SPIRAL guide geometry type (SWAN-346)
- geometry-tree: change the mouse cursor when the mouse moves over an attribute which
may be changed by dragging the mouse (SWAN-347)
- added svg-variation (SWAN-51)
- svg-variation: add some nice preset-svg-images (SWAN-285)
- FIXED: file-dialogs: creating a new folder does not allow to enter <space>
characters (SWAN-257)
- FIXED: file-dialogs: creating a new folder does not allow to enter <space> characters (SWAN-343)
VERSION 1.16.1556 (26.11.2025):
- flame-painter:
- implement loading/saving of geometry-gradients together with the flame-file (SWAN-326)
- added function to replace one single layer by loaded flame (SWAN-337)
- added function to generate one single random layer (SWAN-336)
- added tool-button-menu for rendering flames (SWAN-256)
- add additional divisor for scaling guides (rather than entering very small
values like 0.000025) (SWAN-331)
- flame-library/flame-loading/saving-dialog:
- improved the performance of thumbnails-display (minimize micro-freezes) (SWAN-332)
- do not read flame files where alreay thumbnails exist for (SWAN-333)
- (file-dialog): do not preview flames which exceed a certain file size,
because this causes nasty freeze in the file-dialog (SWAN-334)
- improve the speed of the flame-loader (SWAN-338)
VERSION 1.15.1547 (24.11.2025):
- flame-painter:
- implemented guide-based coloring also for flames with extra-colors pass
(with image-based variations) (SWAN-320)
- implemented individual geometry-coloring (one gradient per geometry) (SWAN-322)
- implemented generating random-gradients of geometry (SWAN-323)
- added gradient-mix-value for each geometry (SWAN-325)
- added quick gradient tool (for generating a gradient by picking two colors) (SWAN-328)
- made the strength of the guide-binding editable (e.g. the strength of a
size factor can scale this up or down in a global manner) (SWAN-329)
- added filtering for name and status (bound/unbound) to the guide-binding-tree (SWAN-330)
- also link size-guide-binding to z-scaling (for 3D-fractals) (SWAN-327)
- improved the "flame paint"-random-flame-generator (SWAN-321)
VERSION 1.14.1538 (23.11.2025):
- flame-painter:
- show all bound geometries in the biding tree as sub-nodes (to preserve
UI-space) (SWAN-313)
- store the flame-brushes inside the temp-folder to avoid to generate them
at each program startup (SWAN-293)
- refresh preview in high-quality on double-click at the preview-area (SWAN-314)
- fix refresh-issue when loading a flame (not all controls are refreshed) (SWAN-307)
- indicate currently selected geometry in preview (SWAN-308)
- refactoring: move all drawing stuff outside of main class (SWAN-315)
- added context-sensitive toolbar for adding/removing points/brush strokes (SWAN-316)
- add geometry-select-mode (SWAN-303)
- implemented guide-based (extra-)coloring (SWAN-318)
- implemented duplicate()-method for all geometry types (SWAN-319)
VERSION 1.13.1528 (20.11.2025):
- flame-painter:
- optimization: add guide-initialization GLSL code only when a flame
has guides (SWAN-302)
- added option to resize the flame-background with preserving the aspect-ratio
of the image (SWAN-292)
- save guide-view-parameters together with a flame (SWAN-238)
- add more intelligent system to chose the insertion point when adding new
points to shapes (SWAN-297)
- select brush: keep guides and guide-mappings (when possible) (SWAN-252)
- create default guide-mapping when creating new geometry and there is
no mapping (SWAN-301)
- automatically re-enable guide-preview after adding a new geometry (SWAN-305)
- added duplicate-geometry-function (SWAN-295)
- implemented copy/paste/cut for geometry (SWAN-306)
- use smooth interpolation for fast-preview (for less shape noise while
drawing) (SWAN-304)
VERSION 1.12.1518 (19.11.2025):
- flame-painter:
- added CLOSED_SPLINE guide geometry type (SWAN-286)
- added function to add/remove points for CLOSED_SPLINE geometry (SWAN-287)
- added CLOSED_COMPLEX_SPLINE guide geometry type (SWAN-250)
- create different panels for selecting geometry types of different types
to preserve UI space (SWAN-291)
- implement add points for POLYLINE, SPLINE and POLYGON (SWAN-215)
- refactoring of the UI so that there is much more space for the editing area (SWAN-298)
- refactoring UI so that there is no main toolbar necessary (SWAN-299)
- added icons for all geometry types and small tool-buttons (SWAN-300)
- added "flame paint"-random-flame generator (SWAN-279)
VERSION 1.11.1509 (17.11.2025):
- flame-painter:
- suppress brush animation at all if animation speed is 0 (SWAN-229)
- added option to switch between guide-based and frame-based animation (SWAN-230)
- added options for animation speed and discrete points at flame-level (SWAN-272)
- use the same preview-system as the main editor (with both fast and high-quality-previews,
depending on the current editing operation) (SWAN-280)
- add a "level of detail"-parameter for rendering sharp details vs smooth
transitions of brush-states (SWAN-283)
- add a new parameter "edge_threshold" to detect edges (as optional feature) for the
TEXTURE-shape (SWAN-284)
- added an additional size parameter to the geometry types and use this as "brush" size (SWAN-260)
- added POINT_ARRAY guide geometry type (SWAN-253)
- added CRESCENT guide geometry type (SWAN-251)
- added POINT_GRID guide geometry type (SWAN-294)
- added 18n-labels for all new captions and buttons (SWAN-296)
VERSION 1.10.1498 (15.11.2025):
- flame-painter:
- added TEXTURE guide geometry type (SWAN-242)
- added CELTIC_CROSS guide geometry type (SWAN-245)
- added WATER_DROP guide geometry type (SWAN-281)
- added YIN_YANG guide geometry type (SWAN-247)
- added drawing of brush strokes for the FREEHAND geometry (SWAN-262)
- added erasing of line segments for the FREEHAND geometry (SAN-263)
- added support for multiple TEXTURE shapes (and therefore add
support for multiple textures) (SWAN-276)
- added realtime-preview while drawing/erasing brush strokes for
the FREEHAND geometry (SWAN-264)
- add file-dialog to select an image for the TEXTURE-geometry-type (SWAN-282)
VERSION 1.9.1489 (13.11.2025):
- flame-painter:
- added PENTAGRAM guide geometry type (SWAN-270)
- added HEXAGRAM guide geometry type (SWAN-271)
- added RING guide geometry type (SWAN-248)
- added button to select background image (SWAN-274)
- added buttons to move and scale the flame background image (SWAN-277)
- added button to clear background (image) (SWAN-275)
- added FREEHAND guide geometry type (SWAN-241)
- added show/hide controls ("fullscreen") button (SWAN-239)
- added button to toggle guides preview (SWAN-273)
- added LIMACON guide geometry type (SWAN-246)
- flame-editor: add support for *.svg-files as flame background (SWAN-278)
VERSION 1.8.1478 (11.11.2025):
- flame-painter:
- added menu-button for editing flames (SWAN-258)
- made the controls points more responsive/decreased editing tolerance (SWAN-259)
- added tool-button-menu for importing/creating flames (SWAN-254)
- added tool-button-menu for exporting/saving flames (SWAN-255)
- added support for editing geometry-parameters by dragging the mouse (SWAN-236)
- added ROUNDED_RECTANGLE guide geometry type (SWAN-249)
- added MANDALA guide geometry type (SWAN-228)
- added FLOWER guide geometry type (SWAN-267)
- added LOTUS guide geometry type (SWAN-268)
- added FLOWER_OF_LIFE guide geometry type (SWAN-269)
- added color-picker to easily change flame background color (SWAN-266)
- added damping to the WAVE geometry (SWAN-261)
VERSION 1.7.1466 (07.11.2025):
- flame-painter:
- implemented zoom/moving/rotating flame in the viewport (SWAN-222)
- implemented zoom/moving/rotating the currently selected layer in
the viewport (SWAN-223)
- added SNOWFLAKE guide geometry type (SWAN-226)
- added reset-buttons for guide/flame/layer (SWAN-227)
- added LISSAJOUS guide geometry type (SWAN-218)
- added support multiple flames and add thumbnail-container to select flame (SWAN-231)
- added thumbnail-view of all layers of a flame (SWAN-232)
- added "brush-flames" (single layered simple flames) to the flame-library (SWAN-233)
- added thumbnail-selection-container for included "brushes" (SWAN-234)
- added support for user-defined "brushes" (SWAN-235)
- added LATIN_CROSS guide geometry type (SWAN-243)
- added GREEK_CROSS guide geometry type (SWAN-244)
VERSION 1.6.1454 (01.11.2025):
- flame-painter:
- added option for discrete animation points in guide-based animations (SWAN-200)
- added support for multiple layers in the UI (SWAN-213)
- implemented remove points from POLYLINE, SPLINE and POLYGON (SWAN-214)
- added CHRISTMAS_TREE guide geometry type (SWAN-216)
- added LEMNISCATE guide geometry type (SWAN-217)
- implemented zoom/moving guide view (SWAN-221)
- added container to edit shape-properties (SWAN-224)
- added editable name-attribute for guides/geometries which are also displayed
in the preview (SWAN-225)
- added FIBONACCI-SPIRAL guide geometry type (SWAN-220)
- added HEART_CURVE guide geometry type (SWAN-219)
- create factory for generating randomized guide-shapes, which can be both
used in mutations and in the editor (SWAN-212)
- added SNOWFLAKE guide geometry type (SWAN-226)
VERSION 1.5.1442 (26.10.2025):
- flame-painter:
- added modes for guide-based and frame-based animation (SWAN-198)
- implemented motion-curve approximation for "drawing" with animated flames (SWAN-201)
- extended guide-point-sampling by sampling both guide-geometry and flame-animation-state (SWAN-202)
- add option for animation speed in guide-based animations (SWAN-199)
- added ARC guide geometry type (SWAN-203)
- added ROSE_CURVE guide geometry type (SWAN-204)
- added SPIRAL guide geometry type (SWAN-205)
- added SPIROGRAPH guide geometry type (SWAN-206)
- added STAR guide geometry type (SWAN-207)
- added SUPERELLIPSE guide geometry type (SWAN-208)
- added WAVE guide geometry type (SWAN-209)
- added COG guide geometry type (SWAN-210)
- added GRID guide geometry type (SWAN-211)
VERSION 1.4.1429 (25.10.2025):
- flame-painter:
- created framework for sampling geometric shapes (gdscript and glsl) (SWAN-169)
- extend flame-model to have "guides" (SWAN-171)
- added LINE guide geometry type (SWAN-172)
- added CIRCLE guide geometry type (SWAN-173)
- implemented the possiblity to have multiple guides per flame (SWAN-174)
- added POLYLINE guide geometry type (SWAN-175)
- added ELLIPSE guide geometry type (SWAN-176)
- added RECTANGLE guide geometry type (SWAN-177)
- created basic UI (SWAN-178)
- added visual guides for the geometric shapes in the UI (SWAN-179)
- added SQUARE guide geometry type (SWAN-180)
- added POLYGON guide geometry type (SWAN-181)
- added SPLINE guide geometry type (SWAN-182)
- added buttons and icons to add geometries (SWAN-183)
- implemented guide-binding to x- and y-coordinates of the geometries
for regular xforms (SWAN-170)
- implemented calculation of tangent/rise of the geometry shapes (SWAN-184)
VERSION 1.3.1413 (23.10.2009):
- first version of the ui of a new "flame-painter"-module (SWAN-168)
- implemented guide-binding to the rise ("alpha") the geometries, this is espacially
useful for rotation transforms (SWAN-185)
- implemented guide-binding to x-,y- and alpha-coordinates of the geometries for
final xforms (SWAN-186)
- implemented dragging of control-points for the various geometry-types in the editor (SWAN-187)
- implemented the possiblity to have multiple geometries per guide (SWAN-188)
- added a button to clear all guides (and bindings) (SWAN-189)
- added a guide randomizer (SWAN-190)
- added rotation-parameter to various geometric shapes (SWAN-191)
- added support for flames with multiple layer: moved the guides from the flame-
to the layers-node (SWAN-192)
- added the option to define a number of discrete points for each type of geometry (SWAN-193)
- added support for saving flames with guides (SWAN-194)
- added support for loading flames with guides (SWAN-195)
- mutagen-module:
- added a new RANDOM_GUIDES-mutation (SWAN-196)
VERSION 1.2.1401 (04.10.2025):
- new "image_uv"-variation for mapping fractal coordinates to the uv-space to an
image-texture
- new "ai_txt2img_uv"-variation for mapping fractal coordinates to the uv-space of
an ai-generated image
- the users manual is now openened from the official web site for all production builds
- added a new "color influence"-parameter together with an additional amount-parameter
to the new *_uv-varaitions
- improved the icon of the application
- motion curves: use variation-name instead of "variation" inside captions of
motion-curve-attributes (SWAN-197)
VERSION 1.1.1395 (01.10.2025):
- application-settings: only display top-level items in the tree-view
to make the UI more clear (SWAN-157)
- application-settings: changed the settings panel on the right to occopy
any free space available
- variation-browser: special handling for the "julian"-variation, where Godot
only shows "julia" (why?) (SWAN-155)
- flame-library-module: also added a "open folder in filesystem"- button like
in the small flame-library-window
- flame-library-module: double-click at the flame-preview hides/shows the right
container with the meta-info, to make it possible to see more of the fractal
- "pointgrid_wf"- and "pointgrid3d_wf": fixed the claculation of random distortion,
so that the seed-parameter has an effect now (SWAN-158)
- fixed the displacement-calculation in the "ppost_*_noise"-variations, they now
work as expected
- fixed a bug in the flame-loader regarding containing multiple flames into one file
- implement code signing for the macOS build (SWAN-131)