# Fraktaler 3
A fast cross-platform deep zoomer for hybrid escape time fractals.
Developed on Debian, also supports Android and Windows, as well as running in the web browser.
# 1 Wisdom
Fraktaler 3 uses “wisdom” to know which backends are best to use for calculating fractals in different circumstances.
# 1.1 Graphical Configuration
v2 and later support wisdom configuration in the graphical user interface, for earlier versions you need to run obscure terminal commands and edit text files.
When Fraktaler 3 is run for the first time, it has defaults just for the CPU backend. The currently used backends are highlighted in yellow.
To populate it with the currently available hardware, check the enumerate unlock checkbox and click the enumerate button. The unlock checkbox prevents accidental activation of this feature.
The hardware devices are then listed in individual columns:
This hardware has two CPU-based backends, one using Portable Compute Library (PoCL for OpenCL), and one using the regular builtin CPU support. As these both use the same underlying hardware, put them both in the same group (top line cpu0):
Now only the fastest of the cpu0 backends is used:
The backends can also be renamed. This doesn’t affect anything other than what is displayed, unlike the group names in the line above.
To benchmark the currently enabled hardware (you can disable devices or per-type backends with the checkboxes), check the benchmark unlock checkbox and click the benchmark button.
This takes about 2 minutes per hardware device.
Once benchmarking has finished, the table is populated with speeds. Speeds are displayed logarithmically: an increase of 1 unit in displayed value corresponds to a factor of 2 increase in pixels per second.
On this hardware the CPU is about 5x slower than the GPU, so it can be more ergonomic to disable the CPU backends completely:
Finally, save the wisdom configuration.
If the file is named wisdom.toml
and
is saved in the default directory,
it will be loaded automatically on startup.
# 1.2 Command Line Configuration
Before v2, and on systems without GUI, the wisdom can be configured from the command line.
fraktaler-3 -W
will enumerate the hardware,
overwriting the default wisdom file
unless -w alternate-wisdom.toml
is specified.
Then edit the saved wisdom file in a text editor to do the hardware grouping, backend naming, and dis/enabling tasks.
To benchmark, run
fraktaler-3 -B
adding -w alternate-wisdom.toml
if you don’t want to process the default wisdom file.
Finally, batch and interactive usage will use the default wisdom file,
unless -w alternate-wisdom.toml
is specified.
# 2 Gallery
# 2.1 Power 2 Hybrid (Four Parts)
Formula: Mandelbrot / Burning Ship / Mandelbrot / Mandelbrot.
Location: zoomed past a tricorn mini to an embedded Julia set.
Auto stretch DE transformation applied to make features round.
With GUI on Debian Bookworm desktop:
After pressing F10 to hide windows:
Parameters: fraktaler-3-1-a.f3.toml.
# 2.2 Power 3 Hybrid (Four Parts)
Formula: Mandelbrot / Burning Ship / Mandelbrot / Mandelbrot.
With GUI on Android tablet (ASUS ZenPad P00C):
Only 2 frames because the tablet is slow.
No keyboard with F10 key to hide windows.
No parameter export from Android version yet.
# 2.3 Power 2 Hybrid (Two Parts)
Formula: Burning Ship / Mandelbrot
Location: Newton-zoomed past a couple of minis and an embedded Julia set.
Stretch transformation applied to make features round.
With GUI on Debian Bookworm desktop:
After pressing F10 to hide windows:
Parameters: fraktaler-3-1-c.f3.toml.
# 3 Videos
In reverse chronological order. Other software used typically includes zoomasm, ffmpeg, imagemagick, bash, gnu imp.
Made with Fraktaler 3 Version 0 (pre-release) unless otherwise stated.
# 3.1 Creamed Whip
Made with Fraktaler 3 Version 2 (pre-release) and Zoomasm 4 (pre-release).
Stream: diode.zone
Download: archive.org (768MB)
# 3.2 The 22-Legged Ant
Stream: diode.zone
# 3.3 lockaccum
Warning: some parts are a bit stroboscopic.
Stream: diode.zone
Download: archive.org (852MB)
# 3.4 Rocks
Stream: diode.zone
Download: archive.org (990MB)
# 3.5 Rainstorm
Stream: diode.zone
Download: archive.org (2.8GB)
# 3.6 Tree Core
Stream: diode.zone
Download: archive.org (1.5GB)
# 3.7 Cerebral Infection
Stream: diode.zone
Download: archive.org (600MB)
# 3.8 Twosday
Stream: diode.zone
Download: archive.org (965MB)
# 3.9 Zigzag
Stream: diode.zone
Download: archive.org (3.1GB)
# 3.10 Non-Smooth
Stream: diode.zone
Download: archive.org (177MB)
# 4 History
# 4.1 Bugs
These bugs are not fixed yet in any version (released or unreleased):
-
extreme OpenCL settings can cause GPU timeouts, on Linux this can exit desktop session losing unsaved data in all open applications; workaround: don’t use a GPU that is used for display; workaround: set Interactive OFF in X config (NVIDIA only, may inhibit system responsiveness);
-
fails to launch on Android 4.4.4 due to missing symbol
localeconv
required bylibgmp.so
; -
clipboard support is not fully functional in the live web version;
-
rotating display or using split screen feature skews fractal in Android 7.1;
-
fractal is not accurately framed when zooming off-center, or pixelation or other distortion may occur, when reuse reference is active and/or lock maximum iterations to period of reference is active; workaround: disable reuse reference and disable lock maximum iterations to period of reference (this will be slower but more accurate).
# 4.2 Version 0
2021-12-10 : project started.
# 4.3 Version 1
2023-03-13 : version 1 released. 423 git commits since version 0.
# 4.3.1 Bugs In Version 1
These bugs are all fixed in later versions:
-
zooming out too far crashes program:
terminate called after throwing an instance of 'std::length_error' what(): vector::_M_default_append Aborted
fixed in v1.1
-
high powers may render incorrectly (iteration bands due to overflow); workaround: reduce bailout escape radius; partially fixed in v1.1 with workaround: disable low range type
float
in wisdom;Example power 5 location: fraktaler-3-power-5.f3.toml
Bad image with version 1:
Good image with version 1-4 or later (prerelease):
-
high powers may render incorrectly (perturbation glitches); no workaround; fixed in v1.1
Example power 100 location: fraktaler-3-power-100.f3.toml
Bad image with version 1:
Good image with version 1-4 or later (prerelease):
-
non-central reference (e.g. translation after Newton zooming) can cause badly framed batch mode renders (looks fine in interactive mode); do a small batch render to check before large render; workaround: save, delete reference real imag period from toml, reload; fixed in v1.1
Example location: fraktaler-3-batch-noncentral-v1-bad.f3.toml / fraktaler-3-batch-noncentral-v1-workaround.f3.toml
Badly framed image with version 1:
Well-framed image with version 1.1 (or v1 using workaround delete reference from toml):
-
combining multiple settings files in batch mode may not work reliably leading to bad images (formula is reset to default Mandelbrot if file doesn’t have any formula); workaround: combine by hand into one toml file; fixed in v1.1
-
bad wisdom file causes abnormal program exit; for example, if a number type has no associated devices:
terminate called after throwing an instance of 'std::out_of_range' what(): [error] key "device" not found --> unknown file | 23 | [type.float] | ~~~~~~~~~~~~ in this table Aborted
workaround: delete type entirely if there are no devices for it; fixed in v1.1
-
smooth iteration count is incorrect for powers other than 2; only visible if colouring raw data externally; no workaround; fixed in v1.1
Example power 4 location: fraktaler-3-power-4.f3.toml
Example palette for KF2+: fraktaler-3-power-4.kfp
Bad image with version 1 (colourized with KF2+):
Good image with version 1-4 or later (prerelease) (colourized with KF2+):
-
EXR images saved by interactive mode are too bright (frames are summed instead of averaged) and flipped vertically workaround: adjust exposure (stops = -log2(subframes)) and flip in post; fixed in v1.1
Example with 16 subframes (same location as above): fraktaler-3-batch-noncentral-v1-workaround.f3.toml
Bad image with version 1:
Good image fixed with post processing in GNU IMP (-4 stops exposure adjustment, vertical flip):
Good image also results from version 1-5 or later (prerelease);
-
loading parameters in interactive mode may cause image size confusion; fixed in v1.1 (image size in interactive mode is locked to window size)
-
adjusting reflection/rotation in transformation dialog is not intuitive; fixed in v1.1
-
auto stretch fails when reflection is active; workaround: disable reflection and flip image in post; fixed in v1.1
-
Newton zooming fails when reflection is active; workaround: disable reflection; fixed in v1.1
-
Newton zooming may enable reflection; doesn’t cause further issues in v1.1;
-
batch mode reported tile count progress uses tiles started rather than finished; fixed in v1.1
-
interactive mode progress reporting is misleading sometimes; fixed in v1.1
-
cancelling tiles rendering on CPU without OpenCL takes too long; fixed in v1.1
-
wisdom benchmarking does not take account of hardware map (have to delete device for all types to prevent device being benchmarked) fixed in v1.1
Bugs found in later versions may also be found in this version.
# 4.4 Version 1.1
2023-03-20 : version 1.1 released. 18 git commits since version 1.
# 4.4.1 Bugs In Version 1.1
These bugs are fixed in later versions:
-
large reference (for example beyond the left tip of the needle)
leads to bad images; workaround:
- shift the view so that the reference is not too large and the fractal is visible;
- enable reuse reference in the algorithm dialog;
- frame the view to your liking;
- when it happens again after zooming deeper, disable reuse reference and repeat from step 1;
# 4.5 Version 1.2
2023-07-13 : version 1.2 released. 10 git commits since version 1.1.
-
fix bad rendering to the left of the needle.
-
fix typo in wisdom stopping.
-
documentation improvements.
-
use build-scripts for third-party dependencies.
-
upgrade third-party dependencies to latest versions.
# 4.5.1 Bugs In Version 1.2
These bugs are fixed in later versions:
-
live web version does not work (missing
ccall
symbol).fixed in v1.2.1 and v2.1
Bugs found in later versions may also be found in this version.
# 4.6 Version 1.2.1
2023-07-14 : version 1.2.1 released. 2 git commits since version 1.2.
- fix build for web with current emscripten versions.
Built for web only, as 1.2 is unaffected on other platforms.
# 4.6.1 Bugs In Version 1.2.1
Bugs found will be listed here.
# 4.7 Version 2
2023-03-31 : version 2 released. 59 git commits since version 1.1.
# 4.7.1 Bugs In Version 2
These bugs are fixed in later versions:
-
large reference (for example beyond the left tip of the needle) leads to bad images; workaround:
- shift the view so that the reference is not too large and the fractal is visible;
- enable reuse reference in the algorithm dialog;
- frame the view to your liking;
- when it happens again after zooming deeper, disable reuse reference and repeat from step 1;
fixed in v1.2 and v2.1
-
BLA steps text entry doesn’t work properly; workaround: set desired BLA steps in the perturb iterations field, edit BLA steps text entry, reset pertub iterations field to previous value;
fixed in v2.1
# 4.8 Version 2.1
2023-07-14 : version 2.1 released. 14 git commits since version 2.
# 4.8.1 Bugs In Version 2.1
Bugs found will be listed here.
# 5 Future
# 5.1 Version 1.3
Will fix bugs in version 1.2.1.
# 5.2 Version 2.2
Will fix bugs in version 2.1.
# 5.3 Version 3
Main work planned:
-
more flexible colouring.
-
return of information window (present in early pre-releases).