Fractal Architect 5 Help Index

Variation Sets


Applies to:FA 5

What Is a Variation Set?

Fractal Architect 3D at release supports 330 variation types (more will be added in subsequent updates). The fractal rendering engine has to run on both CPUs and GPUs using OpenCL. Targeting rendering on GPUs requires that the render engine can only support a subset of this large library of variation types. The current limit for the rendering engine is either a maximum of 128 variation types or a maximum of 199 variation types plus their named variation parameters. For example the Legacy Flam3 variation set has 98 variation types and 198 variation types + their variation parameters.

A variation set is created by choosing a set of variation types from the variations library. You can create many variation sets with different mixes of variations in them.

No DLL’s

Apophysis (a Windows app) uses a separate Windows DLL file for each variation type (beyond the built-in variation types). Apophysis can only load approximately 100 variation set DLL’s or it will crash at runtime. Apophysis users have to maintain the list of variation DLL’s that the app uses by moving them in and out of certain directory.

Fractal Architect 3D does not use this architecture and does not have a limit on the number of variation sets it can work with at a time. Each fractal file is not limited to a single variation set, for example, you may mix and match 2D and 3D fractals in the same file.

The app can handle many variation sets at once. For instance the Recently Opened tab of the Home Page window, can render thumbnails from many different variation sets.

Keyframe Animation and Cross Breeding Limitation

Currently Fractal Architect requires that cross breeding of fractals be only allowed when both fractals are from the same variation set. In the Keyframes window, you must first pick which variation set to use for Loop/Morph Animation (in the event that the keyframes use multiple variation sets).
You can also split up a file with many keyframes into separate fractal files - one file per variation set.

Custom Rendering Engine per Variation Set

A custom OpenCL rendering engine is created for each variation set. This custom rendering engine must be compiled at runtime (which you may have noticed from the OpenCL Compile warning dialog popping up) before it can be used by FA for rendering.

Custom Rendering Engine Cache

The OpenCL rendering engine for each variation set is cached so that it does not have to be recreated every time you use the app. You can delete a variation set and it will be recreated as needed when you open any fractal file that referenced that variation set (see below).

The library for each used variation set is actually embedded in the fractal file, so that the saved fractals can always be rendered in the future (even though the original variation set might have been deleted). Note: earlier versions of Fractal Architect do not have the embedded variation set. They can still be opened and will use the Legacy Flam3 variation set. This also implies that you can send a fractal file to a friend and they can render that file (even though they probably have different variation sets they’ve created)

Unlike Apophysis, where only one single variation set can be used by the application at a time, Fractal Architect 3D can handle an unlimited number of variation sets.

Variation Sets Are Immutable

Once created, a variation set cannot be changed. You can clone another variation set and make changes to the cloned copy before you save it (at which point the cloned set itself becomes immutable).

Cached Variation Sets can be Deleted

You can delete a variation set as any fractals that you created using that variation set, since for all practical purposes, each fractal file has its own copy of the variation set inside them.

Note: if a variation set is in use by the app, it will not be deletable. If a variation set is referenced by a fractal file in the Recently Opened list, that variation set will be locked.

Variation Sets Are Shareable With Friends

You can export the variation set to a file and send that file to a friend. They can then import that file and create fractals from your variation set.

2D Variation Set - Required Variation Types

2D variation sets must always have the linear variation type and pre_blur variation type, as it is used by the application as the default variation type when creating new fractals.

3D Variation Set - Required Variation Types

3D variation sets also have the required linear variation type (which works the same as the Apophysis linear3D variation type). 3D variation sets have these required variation types:

These special 3D variation types are needed to support the Pseudo 3D rendering engine. The rendering engine supports only 2D transformation matrices for all transforms These special variation types are used to do 3D point transformations relative to the Z axis.

Pre, Post, and Normal Variation Type Classes

The render engine supports 3 classes of variation types. These classes of variation types are used to enforce an order of evaluation between the 3 classes.

Pre
Evaluated before normal variations.
Normal
Evaluated before post variations and after pre variation types.
Post
Evaluated after normal variations.

Creating a New Variation Set

Opening the Make New Variation Set window
Opening the Make New Variation Set window
  1. From the Make New tab of the Home Page window, click on the Random Generation Settings button.
  2. Click the Make New Var button.
  3. Give the new variation set a good name.
  4. Choose to either clone another variation set or historic variation set or to make the new variation set from scratch. For instance you might clone the Legacy Flam3 variation set so that you can remove unused variation types and add others. Note: you can’t save
  5. Select the variation types you want from the library list on the list. Click the arrows to move the selected variation types to the library to your new variation set.
  6. Optionally, reorder the pre and post variations shown in the list to the right.
  7. Click the Make Variation Set button to save the variation set.

Selecting a Different Variation Set

Switching Variation Sets
Switching Variation Sets
  1. From the Make New tab of the Home Page window, click on the Random Generation Settings button.
  2. Click the Switch Variation Set button.
  3. Select a different variation set in the list on the left.
  4. Click the Use Selected Variation Set button.

Wide vs Narrow Variation Sets

Previously Fractal Architect had a modest limit on the number of variations that can be put into a single variation set. The original limit was 128 variation types.

A “narrow” variation set is one that only has a small number of variation types in it, less than 30. A A “wide” variation set can contain hundreds of variation types. A “mid” variation set will have about 128 variation types or less.

When creating fractals, a wide variation set is much easier to work with as you can pick from a very large number of variation types.

But wide variation sets may not be compatible with your render devices (especially Intel integrated GPUs).

Introducing the new “wide” Mega2D and Mega3D Variation Sets

The Mega2D variation set has 281 2D compatible variation types. The Mega3D variation set has 373 2D and 3D variation types.

If you select the Mega2D set, you will be creating 2D fractals. If you select the Mega3D set, you will be creating 3D fractals.

2D fractals render about 15% faster than 3D ones.

Intel OpenCL CPU + Native CPU can use Wide Variation Sets

The 2 CPU render engines can both use Wide variation sets.

Intel GPU can’t Use Wide Variation Sets

The whole concept, that a variation set would only allow a subset of the complete variation type library, was created so that customers could use their Intel GPUs for flame fractal rendering. These GPUs work quite well with Fractal Architect, offering 10 X faster renders for Intel Dual Core CPUs and about 5 X faster for Quad Core CPUs.

My estimate is that 95% of all Macs capable of running Fractal Architect have an integrated Intel GPU which can be used for rendering.

The OpenCL/Metal Intel GPU runtime’s kernel compiler unfortunately fails to compile the kernel source code for “wide” variation sets. It can sit there compiling, compiling, … for up to 5 minutes or more. The compile will finally be cancelled by Mac OS itself. This unfortunately leaves the OpenCL/Metal runtime in a weird state, that can be fixed by a simple reboot of your Mac.

Max Variation Types Limit for each Render Device

The app has a new set of Preference parameters, which are the Max Variation Types Limit for each Render Device type.

These are found on the Home Page > VarSets button > Make Var Set popover.

There are settings for both OpenCL and Metal. These are sticky parameters, so the values will be the same the next time you use the app.

OpenCL


Device Default Setting Max Setting Wide Compatible
CPU 1000 1000 Yes
Intel OpenCL GPU 128 128 (Not compatible) No
AMD OpenCl GPU 2015 & Later 128 1000 Yes
AMD OpenCL GPU 2014 & Earlier 128 Not Known ???
Nvidia OpenCL GPU 128 Not Known ???

Metal


Device Default Setting Max Setting Wide Compatible
AMD Metal GPU 2015 & Later 128 ??? No
AMD Metal GPU 2014 & Earlier 128 ??? No
Nvidia Metal GPU 128 Not Known ???
Max Variation Types Limit Popover
Max Variation Types Limit Popover

Wide Variation Sets for GPU Not Enabled by Default

Kernel compile failures crash the app and mess up the Mac OS OpenCL/Metal systems.
Rebooting your Mac to recover from this is mandatory.

Yet, some of you have Macs with AMD GPUs capable of handling Wide variation sets.

Enabling Wide Variation Sets for AMD GPU OpenCL

Warning: Many users may experience serious issues with Wide variation sets and should not use them for GPU rendering.

  1. Use Preferences > GPU Rendering Tab. Select your OpenCL AMD GPU for rendering.
  2. Open the Home Page > VarSets button > Make Var Set popover.
  3. Set the AMD GPU Max Variation Types limit to 1000.
  4. Switch to the Mega3D variation set.
  5. Select the Make New tab of the Home window and generate some random fractals.

If the Mega3D kernel compile fails, reset the Max Variation types value to 128, then reboot your Mac.

Variation Set Compiles are Failing - What do I do?

Set the Max Variation Type Limit for your render device to the older limit of 128.

The older limits were conservative, but did ensure reliable compiles.

Variation Set Compiles are Very Slow - What do I do?

If your Mac has an AMD GPU, use that and avoid the Intel GPU.

Or use the Intel CPU: fast compiles but slow renders.

What Render Devices are compatible with Wide variation sets

  1. Intel OpenCL CPU (not Intel GPU!)
  2. Native CPU
  3. AMD OpenCL GPU (2015 and later)

These Render Devices “Might” Be Compatible

These configurations are untested and might be compatible:

  1. AMD 2014 and earlier
  2. Nvidia GPU

These Render Devices Are Not Compatible

  1. Intel OpenCL GPU
  2. Intel Metal GPU
  3. AMD Metal GPU

Mixed Device Configurations

If you select more than one render device, the render device with the lowest limit will establish the limit for the mixed group of selected devices.

So for example, if you choose to use both the Intel GPU and the AMD GPU on a recent MacBook Pro, the limit for that combination will be the same as the Intel GPU.

Automatic Variation Set Filtering

If you select the Intel GPU for rendering, you will not be able to select the Mega2D, Mega3D, or other wide variation sets.

Automatic Narrowing

If you open a fractal that references a wide variation set, when using the Intel GPU, a temporary narrow variation set might be created for that fractal. The fractal will be rendered using that temporary variation set.

The app first checks if another permanent variation set can be used as a substitute first.

These temporary variation sets are discarded when the app is closed.

What happens if I switch from Mega2D/Mega3D + CPU to Intel GPU?

The active variation set will be set to either Flam3 Legacy or Core3D.

What happens if I open a fractal using Mega2D/Mega3D when using Intel GPU?

A temporary variation set is created for that specific fractal and used for rendering.

The app first checks if another permanent variation set can be used as a substitute first.

Variation Set Utilities

On the Variation Set selection window are some utilities:

Import
Import a variation set from a file.
Export
Export a variation set to a file.
Remove
Delete the cached variation set.
Show in Finder
Show the cached variation sets folder.
View Source Code
Show the source code for the selected variation type (from the middle list).
Search for Variation Type
Search for a variation type by its name from the selected variation set. The search field is above the Variations List.