FracTest is a fractal viewer for 2D, Mandelbrot-like fractals. It's designed for in-depth fractal exploration, and fractal art.

FracTest was written largely as a software engineering project, and not to be the "best" Mandelbrot app in any specific way; however, it has some interesting features:

Just to be clear, there are a number of things FracTest does not do:

This page provides a quick overview of what it takes to get started with FracTest. However, there is much more detail in the pages you can find linked from the index at the top of any page.

Quick Start

FracTest is a Java application; as such, you will need Java SE version 8 or later installed to run it. The app is delivered as a single JAR file. See the installation page for more details on installing FracTest, and to get the JAR file.

Once you have completed the installation, double-click the JAR file to run FracTest. The main window will open, and will look something like this (click to expand):

Initial application window (click to expand).

The Window

As you can see, the window has a number of sections:

The main controls are:

"Play": render the current view parameters; if you have made a selection, the selected area will be rendered. Stop: stop the current render.
First: go back to the first view. Previous: go back to the previous view.
Next: go forward to the next view. Last: go forward to the last view.

Using It

The fractal window will show a default view of the Mandelbrot set initially. To zoom in, click and drag in the fractal view to create a selection; move it around with the mouse if needed; and click the "Play" button to render the selected area.

In the main window you will see the fractal being rendered. By default, the fractal is rendered progressively, with the first pass creating a rough view, and subsequent passes filling in more details.

As the fractal renders, you will see boxes drawn over it. These are the tiles into which the image is divided, with each tile being calculated as a unit. With multiple processors, potentially including network servers, tiles are farmed out to processors as they become ready for work, so that all of the available processors are kept working all the time until the computation is finished.

Near the bottom-left of the main window you will see the progress window. This is a map of the fractal, showing the rendering states of all the tiles. Each tile is colour-coded to show its state, with various colours used to show how many passes of progressive rendering have been completed for each tile; the number of passes can be set from 1 to 6. Black indicates that the tile hasn't started yet; subsequent passes are coloured grey, brown, red, orange, yellow, and green, with green always being the last pass – i.e. the tile is complete. In the example at right, the third-last (orange) pass is complete, with many tiles also having been rendered at the second-last (yellow) pass. If progressive rendering is turned off, tiles will go straight to green.

In the first pass, we calibrate roughly how much work is needed for each tile; in later passes, tiles are rendered from the slowest to the fastest. Hence the progress window becomes an approximate map of where the most intense parts of a fractal are, as can be seen in the example here.

During rendering the progress bar at the bottom of the window will indicate progress. Its colour also indicates the overall application state; blue is rendering, green means complete, and purple means aborted (i.e. you pressed stop). Text in the progress bar shows various statistics about the computation.

Loading and Saving a Fractal

The toolbar also contains the file load and save controls:

Open a PNG file which was previously saved by FracTest. Save the current view to a PNG file; the view parameters and computation state are saved as meta-data. Export the current view to a Jpeg file; the view parameters are not saved.

The main format for saving fractals is the PNG format. This is a lossless-compressed format, which means it saves the image exactly, with no loss of quality, so it's great for use as the master copy of a fractal image.

More importantly, when you save a PNG, FracTest saves all of the fractal parameters in the meta-data of the file. This means that quite apart from viewing the file, you can re-open it in FracTest and then adjust the view to continue exploring from where you left off. This is what the “Open” button does – it loads the fractal parameters (not the image) from a PNG file, then re-renders the fractal based on those parameters. If the file has a saved computation state, then FracTest can re-start the computation from where it left off.

So this is how you save a fractal view – not just its image, but all the parameters needed to re-create it. Click the “Save” button, save as a PNG file, and everything you need is in that file.

You don't have to wait for a fractal to finish rendering before saving it; just click stop, and save what you have. The image may be rough or incomplete, but the parameters will all be there, so you can re-load it and finish rendering it at your leisure (possibly using batch mode, which will be explained later). Since FracTest stores the current computation state in a PNG file, it will even pick up where it left off when you re-open the file, saving you from re-computing the pixels already computed.

PNG is a great format for completely precise storage of an image; but it can be quite slow. Some apps, like web sites, slideshow viewers, etc., can struggle with it. The JPEG format is a lossy-compressed format which is very efficient and widely supported. You can create a JPEG copy of your image with the “Export” button. Note that JPEG images do not contain the fractal parameters, so you always want to keep the master copies of your fractals in PNG format.


Having got started with FracTest, there is plenty more information available here: