Regular, non-pre/post variations usually sum their outputs. However, not all of them behave this way: some assign their outputs instead. This behavior is non-standard and began showing up in various Apophysis plugins long after it was established that variations should sum their outputs. It is unclear whether this was the actual intent of the plugin authors, or if it was accidental. Either way, Fractorium maintains the same behavior with these special variations.

Using these variations is very tricky because it completely changes the usual relationship between multiple variations within an xform. When adding variations to an xform in Fractorium, they are always added to the end of the list of variations that already exist in that xform. Since their outputs are normally summed, their order does not matter. However, when a variation that assigns its output is added to the list, its order most definitely does matter.

Consider this simple example:

You have an xform which contains the variations circlecrop and spherical, stored internally in that order. If you remove circlecrop, then re-add it, it will now be internally stored after spherical. Normally this wouldn’t matter, but since circlecrop assigns rather than sums, the output will be completely different. What ends up happening, is the contribution from spherical is lost because the results of circlecrop just overwrite them. Due to the extremely delicate nature of these variations, be sure you know what you are doing before using them.

You can change the order in which variations are applied by dragging them up or down on the Summary Tab.

You can see which variations use assign, rather than sum by observing whether it has a red square in the Type column of the Variations Tree.

Alternatively, you can find out which ones assign, rather than sum via the command line by running:

EmberGenome.exe --assignvars

which will give the following list:

circlecrop
concentric
extrude
flatten
hexaplay3D
hexcrop
hexnix3D
hypershift
hypershift2
juliaNab
mirror_x
mirror_y
mirror_z
octapol
randCubes
rays1
rays2
rays3
rotate_x
rotate_y
rotate_z
roundspher3D