# Fraktaler 3

fraktaler.mathr.co.uk

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.

screenshot

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.

screenshot

The hardware devices are then listed in individual columns:

screenshot

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):

screenshot

Now only the fastest of the cpu0 backends is used:

screenshot

The backends can also be renamed. This doesn’t affect anything other than what is displayed, unlike the group names in the line above.

screenshot

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.

screenshot

This takes about 2 minutes per hardware device.

screenshot

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.

screenshot

On this hardware the CPU is about 5x slower than the GPU, so it can be more ergonomic to disable the CPU backends completely:

screenshot

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.

# 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

Creamed Whip video still

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

The 22-Legged Ant video still

Stream: diode.zone

# 3.3 lockaccum

lockaccum video still

Warning: some parts are a bit stroboscopic.

Stream: diode.zone

Download: archive.org (852MB)

# 3.4 Rocks

Rocks video still

Stream: diode.zone

Download: archive.org (990MB)

# 3.5 Rainstorm

Rainstorm video still

Stream: diode.zone

Download: archive.org (2.8GB)

# 3.6 Tree Core

Tree Core video still

Stream: diode.zone

Download: archive.org (1.5GB)

# 3.7 Cerebral Infection

Cerebral Infection video still

Stream: diode.zone

Download: archive.org (600MB)

# 3.8 Twosday

Twosday video still

Stream: diode.zone

Download: archive.org (965MB)

# 3.9 Zigzag

Zigzag video still

Stream: diode.zone

Download: archive.org (3.1GB)

# 3.10 Non-Smooth

Non-Smooth video still

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 by libgmp.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:

    fraktaler 3 version 1 power 5 bad

    Good image with version 1-4 or later (prerelease):

    fraktaler 3 version 1-4 power 5 ok

  • 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:

    fraktaler 3 version 1 power 100 bad

    Good image with version 1-4 or later (prerelease):

    fraktaler 3 version 1-4 power 100 ok

  • 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:

    fraktaler 3 version 1 batch noncentral reference bad

    Well-framed image with version 1.1 (or v1 using workaround delete reference from toml):

    fraktaler 3 version 1.1 batch noncentral reference ok

  • 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+):

    fraktaler 3 version 1 power 4 bad

    Good image with version 1-4 or later (prerelease) (colourized with KF2+):

    fraktaler 3 version 1-4 power 4 ok

  • 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:

    fraktaler 3 version 1 gui export bad

    Good image fixed with post processing in GNU IMP (-4 stops exposure adjustment, vertical flip):

    fraktaler 3 version 1 gui export fixed in post

    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:
    1. shift the view so that the reference is not too large and the fractal is visible;
    2. enable reuse reference in the algorithm dialog;
    3. frame the view to your liking;
    4. when it happens again after zooming deeper, disable reuse reference and repeat from step 1;
    fixed in v1.2 and v2.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:

    1. shift the view so that the reference is not too large and the fractal is visible;
    2. enable reuse reference in the algorithm dialog;
    3. frame the view to your liking;
    4. 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).