While traditional iterated function systems used only linear affine transforms for each xform application, flam3 extended this design by adding the ability to use almost any mathematical calculation as well. Flam3 dubbed these new math functions as “variations” which is a catch-all name for an arbitrary math function. Apophysis allowed for users to write their own variations compiled into a separate DLL and named these “plugins”. Fractorium consolidated over 300 of the most popular variations and plugins in existence, re-implemented them in C++, added OpenCL GPU support for each one and made them all part of the program.

Variations have a great affect on performance so it’s important to use them sparingly. The reason is that when an xform is selected to be applied, every variation within it must be applied as well. Do not add numerous variations that have little to no affect on the final output image. Instead, only use ones which you can verify have an effect you desire.

Since variations can be just about anything, they behave in many different ways.

At a bare minimum, all variations have a weight and most of them use it. There are a few which ignore the weight parameter altogether. You can examine the effect of the weight parameter by adjusting it and seeing how it affects the final output image.

In addition to weight, most variations have additional parameters that can be adjusted. Some of these have wildly different behavior, such as fields which act as flags to instruct other fields how to behave.

Most use  the outputs of the affine transforms as input points which are then modified via various calculations. However, some do not use the affine points at all. For these, you will notice that dragging the affine transforms around has no effect on the final output image.

Documenting each variation is beyond the scope of this project. If you are curious what exactly a variation does internally, you have a few options:

  • Inspect the source code.
  • Use the --dump_kernel option with --opencl in EmberRender to see the exact code  that’s used.
  • Consult the original plugin package which can be usually found on Deviant Art.