mathr / blog / #

KF 2.14.10 released

Today I released a new version of KF. Kalles Fraktaler 2 + is my fork of Kalle's Fraktaler 2, with many enhancements. KF is a fast deep zoom fractal renderer for Mandelbrot, Burning Ship, and many other formulas. It uses perturbation techniques and series approximation to allow fast low precision deltas per pixel to be used relative to a slow high precision reference orbit per image. The changelog entry is large; over 50 commits since the previous release, affecting 47 files and over 3000 lines. You can download 64bit Windows binaries from the homepage: mathr.co.uk/kf/kf.html (they work in Wine on Linux, and are cross-compiled with MINGW64). I won't replicate the full list of changes, but here are some highlights.

The most visible change is that the old Iterations dialog is gone. In its place are three new dialogs: Formula, Bailout and Information. Some of the controls have moved to the Advanced menu as they shouldn't usually need to be adjusted. The Formula dialog has the fractal type and power and a few other things, the Bailout dialog has things that affect the exit from the inner loop (maximum iteration count, escape radius, and so on).

The main new feature in these dialogs is the ability to control the bailout test with 4 variables: custom escape radius, real and imaginary weights (which can now be any number, including fractions or negative, instead of previously limited to 0 or 1), and norm power. Together these allow for the shape of the iteration bands to be changed in many different ways. The glitch test is now always done with Euclidean norm (unweighted), and reference calculations are simpler because they don't need to calculate their own pixel any more (I prevent the infinite loop of reference being detected as glitch in a different way now).

Colouring-wise, there is the return of the Texture option which had been broken for many years, there is a fourth-root transfer function, and a new phase channel is computed (saved in EXR as T channel in [0..1)). So far it is exposed to colouring only as a "phase strength" setting. It works best with Linear bailout smooth method (Log gives seams as it is independent of escape radius). There is also a new Flat toggle, if you can't stand palette interpolation.

More code is parallelized, as well as significant speedups for Mandelbrot power 3, and faster Newton-zooming for analytic formulas (arbitrary power Mandelbrot and the Redshifter formulas). Upgrading to GMP 6.2 should improve performance especially on AMD Ryzen CPUs.

Lots of bugfixes, including directional DE for NanoMB1+2 and an off-by-one in NanoMB1 that was making colours different vs normal rendering. EXR load and save uses much less memory, and there are new options to select which channels to export for smaller files if you don't need the data.