Category Archives: Article

Deep Chains on top of Brokat3D

Andreas Maschke’s Brokat3D script is a great script to create a very beautiful type of fractal that resembles cloth brocade patterns.

With FA4, you can create a Variant script list that is applied to every fractal created by the main script.

Lets see what this Variant script list does on top of the Brokat3D main script:

  • prependNewPreGroup
  • addPreLinear
  • prependNewPreGroup
  • addPreLoonie

A script list is a list of 1 or more variant scripts that will all be applied (in order) to the fractals created by the main script.

The script list is easily created by simply selecting a script in the table and clicking the Add script to List button.

This script list randomly adds (66% chance) 2 Pre variation groups to some of the transforms created by the main script.

You can see that the Deep chain approach, using Variant script lists, is a simple, easy way to get exciting new fractals based on other random fractal creation scripts.

Power of Lua Variant Script Lists

Its so easy to explore Deep variation chains, by using a Custom Lua script list.

Pick a handful of variant scripts and just add them to the Script list. The variant scripts will be run from top-to-bottom.

To add a script to the list, select the script name to add, then click the Add Selected Script to List button.

See how I have created a list of 7 scripts to apply to every fractal produced by the main Lua script.

You will be amazed how powerful this technique is.


The coup-de-grace is to add a randomizeChains script to the end of the list. This script scrambles the variation group chain and can find some really different fractals.

With this fractal:


I ran some variants using Color gradient and the randomizeChains script. Result:


Matrix Variations

Matrix variations work just like ordinary transform Pre and Post transformation matrixes. They allow you to avoid linked transforms. Linked transforms require special Xaos matrix configuration, which is so easy to mess up in practice.

Special Support in Triangle Editor

If you select Variation for Which Matrix, and select the matrix variation instance in the Variations table, you can manipulate the Triangle representing that matrix variation.

Matrix Variation Types

  • matrix2d – embed in its own group
  • pre_matrix2d – embed in group containing other variations
  • post_matrix2d – embed in group containing other variations

For 3D variation sets, these are available:

  • matrix3d, pre_matrix3d, post_matrix3d

No special transform editing support in the Triangle editor  is available yet for the 3D matrix variations.

The best way to use matrix2d variations is to embed them in their own variation group and insert them between two other variation groups.


As you can see in this image, the second transform has a chain of 5 variation groups.

The Post #1 group has a transformation Matrix variation, matrix2d.

Note how the Triangle editor allows you to manipulate that matrix variation just like a standard Pre or Post transformation matrix.

Using these inline transform matrixes is so much simpler, than traditional linked transforms.



Apple – Are you going to fix OpenCL & Metal Compute in El Capitan?

I received this email from an angry customer:

“I have purchased FA2, FA3d, and FA4+gpu Module” 

“All programs rendered ok on the gpu’s ,  now this El Capitan has arrived  and none of the FA’s render on GPU  anymore .”

“They all render on the CPU ok, but the slow speed  defeats the  object of paying “

“So whats the score , do we have to wait for apple to update their drivers? “

“My Gpu  amd ati radeon hd 6770m – 2011 27inch imac”

At this point, both OpenCL and Metal Compute shaders are unusable for most GPUs incorporated in Mac products on El Capitan.

Back in Mountain Lion, the OpenCL drivers worked on EVERY GPU model shipped with Macs.

Does Apple test OpenCL/Metal with real world applications?

It is very, very easy with Fractal Architect 4.

  1. Download the free app.
  2.  Click the GPU Trial button to open the GPU Trial window.
  3. Turn off the Enforce Quarantine, pick a GPU, then click the button under a fractal to render it.

Is this the new status quo – advertise big new features at WWDC like Metal Compute Shaders on OS X only to find them unusable when released??

Please consider that the OpenCL compiler for all Intel GPUs was unable by this app since Mavericks (due to compile issues as reported in a bug report to Apple 2 years ago).

Metal Compute shaders have no problem compiling the app’s kernels for Intel GPUs but do cause GPU hangs – never seen before on OpenCL with Nvidia/AMD GPUs. We believe these hangs are caused by debug asserts in Apple’s Metal math library when NaN values are encountered.

I have recently successfully implemented CUDA rendering for the app for Nvidia GPUs on El Capitan, but of course CUDA is not available to customers on the Mac App store. (Important because the OpenCL + Metal drivers are now broken in El Capitan)

CUDA drivers are meticulously maintained by Nvidia and are the closest thing we have to Reference GPU compute API. And they work very well on OS X.

Neither the developer nor customers have any idea if these bugs will ever be addressed. We are all totally in the dark.

When the OpenCL/Metal drivers work, they deliver huge performance increases.

We have released multiple versions of Fractal Architect using OpenCL on the Mac App Store since 2011. Today we offer rendering on OpenCL, Metal, and CUDA (but not on Mac App store).

Render Performance comparison across different Mac models

One of the minor changes in FA 4 is that it reports render performance in a manner that allows you to compare the performance between CPU and GPU and between different Mac models. The app reports performance in Mips (millions of iterations per second) which is  the number of iterations per second done by the outermost loop in the Fractal flame algorithm. It measures the render time only during histogram construction, as that is the performance bottleneck in flame fractal rendering. I hope other flame fractal products report this figure in the future.

You can find the render performance in the Window > Render Status Log menu after a render to file is finished.

I have been using the Worlds Gallery fractal as the basis of comparison. I always render it at 1440 x 900 pixels at quality 3000.

There is a huge difference in render performance across different Mac models from the same model year.

A 2013 Macbook Air with 1.3 GHz Intel Core i5 CPU achieves 9.71 mips (400.61 secs to render the final image with FA 4 v 4.0.1 Yosemite 10.10.3).

A 2013 Mac Pro with upgraded twin D700 GPUs and Intel(R) Xeon(R) CPU E5-1650 v2 @ 3.50GHz – 6 core CPU achieves 778.22 Mips (5.00 sec to renderr the final image with FA 4 v 4.0.1 Yosemite 10.10.3).

Rendering with just the CPU on the 2013 Mac Pro achieves 37.72 Mips (103.13 sec to renderr the final image with FA 4 v 4.0.1 Yosemite 10.10.3). . On this Mac Pro, the twin GPU rendering time is 20.6X faster than on its CPU.

So the Mac Pro renders  over 80X faster than the Macbook Air (same year model)!

Even using its CPUs alone, it is almost 4X faster rendering than the 2013 Macbook Air.

For single image renders, FA 4 on a 2013 Macbook Air has reasonable performance during a typical editing session.  But movie rendering will be painfully slow.

Apple’s 2013 Mac Pro is a spectacular rendering workhorse. And the price difference over 2013 Macbook Airs is very reasonable (about 3.5X higher cost for 80X rendering performance).

Note: 2015 Macbook Airs are faster than 2013 ones at the same price point – but I did not want to compare Macs across different model years.

Way to go Apple!

Why GPU Rendering is an Optional In-App Purchase

Today in 2015, my guess is that only in 1 in 4 customers have Macs whose GPUs are compatible with FA 4 GPU OpenCL rendering. Before Mavericks, almost 100% of Macs (those with Nvidia or ATI GPUs)  could use FA 2’s GPU rendering.
There are multiple OpenCL driver issues causing this and frankly there is nothing that can be done to fix it as a small app developer.
That is why free GPU Trial was put in the app and why GPU rendering is an optional purchase.  We did not want customers to feel they spent money on a broken feature, especially when we have no ability to fix the underlying bugs in Mac OS X’s OpenCL drivers.

Keeping GPU Rendering Support in the Product

When FA 3D was under development in 2012, Mountain Lion was the current of OS X and its OpenCL GPU drivers worked very well. Basically GPU rendering worked on all Macs with discrete Nvidia or AMD (excepting the AMD 4XXX series GPUs) from 2009 and later.

Then Mavericks appeared and OpenCL driver hell began for so many FA customers. FA 3D was released right after Mavericks release. We had no idea that Apple would release such bad drivers and for most Mac models, never fix them. Continue reading Keeping GPU Rendering Support in the Product

State of OpenCL GPU Rendering on Macs in 2015

Fractal Architect is testament to the power of OpenCL powered GPU rendering.

The 2013 Mac Pro OpenCL drivers are world-class and deliver amazing performance. The 2011 and 2012 Macbook Pros are solid GPU rendering workhorses.

The Intel CPU OpenCL driver was greatly improved in Yosemite with a doubling of performance over Mavericks.

It is also serves as a stark reminder of what happens when the OpenCL driver/compiler/runtime provided by Mac OS X is not maintained and bugs are ignored. The Intel OpenCL GPU drivers on the Mac OS X platform are best described as: unusable, broken.

We have no control over the state of these drivers. Apple can do amazing things with their drivers, as the Mac Pro team did. They can also give you a miserable experience, when bug reports are ignored and years go by without useable drivers.

Unfortunately, for most of you having Macs that are powered by Intel GPUs, you will not have the chance of using GPU rendering.

These are the Mac models currently having OpenCL driver issues and a short comment on why they don’t work:

  • All Intel Iris, HD 5×00, HD 4000 GPUs

    OpenCL LLVM compiler targeting those GPU’s can’t compile our kernels.

  • 2014 Macbook Pro with Nvidia 750M GPU

    Automatic GPU switching breaks OpenCL apps. Other Macbook Pro models also use automatic GPU switching, but they work fine.

  • 2010 and earlier Macbook Pros

    GPU rendering worked fine on Mountain Lion. Mavericks and Yosemite drivers are broken/useless.

Apple – you have shown what you can do. Please give attention to your OpenCL driver stack.