Fractal Architect 5 Help Index
Applies to:FA 5
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.
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.
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.
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.
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.
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).
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.
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 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 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.
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.
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).
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.
The 2 CPU render engines can both 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.
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.
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 | ??? |
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 | ??? |
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.
Warning: Many users may experience serious issues with Wide variation sets and should not use them for GPU rendering.
If the Mega3D kernel compile fails, reset the Max Variation types value to 128, then reboot your Mac.
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.
If your Mac has an AMD GPU, use that and avoid the Intel GPU.
Or use the Intel CPU: fast compiles but slow renders.
These configurations are untested and might be compatible:
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.
If you select the Intel GPU for rendering, you will not be able to select the Mega2D, Mega3D, or other wide variation sets.
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.
The active variation set will be set to either Flam3 Legacy or Core3D.
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.
On the Variation Set selection window are some utilities: