Flame Fractals
When you work with flame fractals in Ultra Fractal, you can run into Out Of Memory problems. This topic explains why that happens and what you can do about it.
What are flame fractals?
Flame fractals are a special type of organic-looking fractals that is calculated differently than most fractals. In Ultra Fractal, flame fractals are produced by the Flame Fractals coloring algorithm in the enr.ucl file. There are also variations of the Flame Fractals coloring algorithm in the files apophysis.ucl and sdc.ucl, all found in the public formula library. New flame fractals are easily discovered with the Apophysis program. Examples of flame fractals are in the Showcase gallery by Mark Townsend, such as Inedible and Nightmoves.
How flame fractals are calculated
Because Ultra Fractal does not support flame fractals natively, the Flame Fractals coloring algorithm does not work like most other fractal formulas. Instead, it allocates a large block of memory at startup, and it calculates the entire flame fractal at the time Ultra Fractal is initializing the calculations for the layer. The memory block is needed to store the calculated flame fractal.
Then, when Ultra Fractal thinks it is actually calculating the layer, the Flame Fractals coloring algorithm just reads the colors for the flame fractal from the memory block. This explains why the progress indicator stays at 0% for a long time: at this point, the coloring algorithm does all the work, while Ultra Fractal assumes it is just in the initialization stage.
Memory usage
Because the entire flame fractal needs to be stored in memory, it is obvious that more memory is needed when you want to render larger flame fractals. And it gets even worse. The Flame Fractals coloring algorithm performs anti-aliasing by default to improve the image quality, but this multiplies the memory requirements. The amount of anti-aliasing is controlled by the Oversampling parameter of the Flame Fractals coloring algorithm. (If you don't know what anti-aliasing is, look it up in the help index in Ultra Fractal.)
When you render a flame fractal to disk, the amount of memory required is given by the following formula:
Memory = Width * Height * 16 * (1 + Oversampling * Oversampling)
In this formula, Memory is the amount of memory in bytes, Width and Height are the size of the fractal in pixels, and Oversampling is the Oversampling parameter in the Flame Fractals coloring algorithm.
For example, a flame fractal of 1600x1200 pixels with the default Oversampling value of 3, takes 1600*1200*16*(1+3*3) = 307,200,000 bytes or about 300 MB. If you increase the size to 4000x3000 pixels, it takes about 1.9 GB. But if you lower the Oversampling parameter to 2, it only takes about 950 MB.
How to prevent Out Of Memory errors
To render large flame fractals successfully, you have to stay below the amount of physical memory in your computer. The formula above tells you how much memory a flame fractal needs. If that is too much, you have three options:
- Reduce the Oversampling parameter. This is by far the best option. It does lower the quality of the rendered image, but if you need large images for printing, anti-aliasing is not very important and you will probably not see the difference once the fractal is printed.
- Reduce the size of the fractal. Obviously this will reduce the memory requirements, but it is often not an option.
- Install more memory. Another obvious solution, but with a major drawback. You cannot go higher than 2 GB, because 32-bit Windows programs like Ultra Fractal cannot use more than 2 GB of memory, even if you have more memory installed. There is no way around this at the moment. (A 64-bit version of Ultra Fractal is not currently planned.)
What is the largest possible flame fractal?
As explained in the previous sections, the maximum size is defined by the Oversampling parameter and the amount of memory installed. You can have a maximum of 2 GB of memory, of which about 1.9 GB would be available for the Flame Fractals coloring algorithm.
With an Oversampling value of 3, you can then just render a flame fractal of about 3500x3500 pixels. With an Oversampling value of 2, you can go up to 5000x5000 pixels. And finally, with an Oversampling of 1, the maximum size is about 7900x7900 pixels.
Applies To
Ultra Fractal 4 and 5
Notes
You can find out how much memory or RAM your computer has by double-clicking on the System icon in Control Panel.
In Ultra Fractal 3, you should never render flame fractals to disk. You have to make the fractal window as large as you need, and then click Export Image on the File menu to export the fractal. Flame fractals work much better in later versions of Ultra Fractal.