bernds / GAPFixFractal

A program to generate pictures of Mandelbrot or Julia sets, using arbitrary precision arithmetic on CUDA GPUs.
20 stars 1 forks source link
arbitrary-precision cuda fractal mandelbrot

GAPFix Fractal

This is a tool for creating Mandelbrot and Julia sets, which differs from most of the numerous other such tools in two points. The admittedly somewhat unwieldy name stands for GPU Arbitrary Precision Fixed Point Fractals. Which is to say, it runs on CUDA-capable GPUs, and it uses arbitrary precision fixed point math, compiled on the fly to any desired precision. The goal is to be able to zoom in deeper than when using normal 64 bit floating point math, while still getting decent speed due to the power of modern GPUs.

screenshot

At the moment, this is still very new and fairly experimental code. It's slowly becoming a real application, but expect it to be rough around the edges in this early stage.

Features

GAPFix Fractal has the following main features:

A fair number of different formulas are supported, with both Mandelbrot and Julia versions:

screenshot

There is a large variety of colouring options, which can be combined freely for the most part. Distance estimation is available for several formulas, allowing both distance and shading options for colouring.

screenshot

Usage

Most of the user interface should be self-explanatory or easily understandable for anyone who has played with fractal software before.

Left-click recenters and zooms. Control-click selects parameters for Julia sets. The "Mixture" formula allows choosing an additional parameter q, currently only from a few presets in the menu.

The "Store" button saves the current position for later, with a small preview image.

Requirements

There are some prerequisites for building and running this program:

Limitations

Among the things currently known to need improvement are:

Gallery

I've uploaded a sample gallery of images created with this program.

Compiling

On Linux, make a build subdirectory, enter it, and run

  qmake ../src/frac.pro PREFIX=/where/you/want/to/install

followed by make and make install.

License

GAPFix Fractal is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

GAPFix Fractal is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with GAPFix Fractal. If not, see http://www.gnu.org/licenses/.

Additional permission under GNU GPL version 3 section 7

The source files of GAPFix Fractal have the following additional permission, as allowed under GNU GPL version 3 section 7:

If you modify this Program, or any covered work, by linking or combining it with NVIDIA Corporation's libraries from the NVIDIA CUDA Toolkit a (or a modified version of those libraries), containing parts covered by the terms of the respective license agreement, the licensors of this Program grant you additional permission to convey the resulting work.