Category Archives: Article

Fractal Architect 4 render engine

The Fractal Architect 4 render engine, given robust, quality drivers, has worked on all versions of Mac OS (except partially on High Sierra because of driver problems). AMD, Nvidia, and Intel GPUs all can be used. It supports CUDA  and OpenCL.

The Apple CPU OpenCL driver has always worked over the last 7 years, so when the GPU drivers are defective, users can still use the app with CPU rendering.

Nvidia GPUs and CUDA are also supported (but not in the FA 4 Mac App store version because of app sandboxing) on both Mac OS and Windows 10.

It has  been ported to Windows 10 and there it also works with AMD and Nvidia GPUS.  Intel GPUs worked with 1 version of Intel’s OpenCL drivers but not with a later OpenCL driver update. (So the Windows platform is also affected by driver quality issues.)

Intel’s OpenCL driver for CPU on Windows 10 does not work with the FA 4 render engine.

The render engine is a fantastic test case for GPU compute and can be used by OpenCL and CUDA driver developers to validate the quality of their drivers. The render engine itself is open source and licensed with LGPL license.

FAEngine – FA 4 Open Source Render Engine

The app itself is even easier to use for driver quality testing on Mac OS. Metal is supported by the app (but not in the open source render engine).

Earlier versions of the render engine have worked on all versions of Mac OS since 2009.

Fractal Software is made by Indie Hobbyists

Let’s make sure that is understood. There has never been a commercially successful product in this app category.

Right now, myself and Andreas Maschke are the most active developers in the flame fractal app category. I am the author of Fractal Architect. Andreas is the developer of JWildfire. Both our products are huge, with multiple man years of development. (For FA, it is 9 man years.) I receive testing support from Lennart Ostman, for which I am deeply grateful.

That gives the illusion of a huge team creating these products, but it is just 2 hobbyists doing what we love best. We do it for love, as I have never been paid a single cent for my time. I receive no financial support to produce this product. All test hardware is paid using app revenues. (The remainder I pay out of my own pocket.)

Fractal Architect 5 (in development) is about 3x larger than the historic Photoshop 1 when it was first released 27 years ago.

So when you expect Facebook pages, forums, blog, and tons of support, we are not Adobe with billions in revenue and 1000’s of employees. Remember I make NO money from this app.

All app revenues pays for test hardware – nothing else.

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.

ScriptList

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:

Standard
Standard

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

randChains

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.

Example

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.

MatrixVarExample

Standard
Standard

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