Buddhabrot are very everything-intensive.
In most "classic rendering" (non-buddha) fractal you can have 1 thread per pixel, which is very GPU-friendly and also memory friendly (and that's why it's gpu friendly, the memory is a massive bottleneck on gpu).
In a buddhabrot you have to do the usual stuff, to test if a point escape or not (feel free to chose to plot a buddha or an anti-buddha after that), which is the easy part.
Now you have to eventually plot millions of point on the whole memory space in a pure chaotic order.
It's a 100% guaranteed cpu cache miss : ssssssssssloooooooooow.
And in theory you have to use an annoyingly global lock that kill the multi-thread performance.
In buddha++ we choosed to removed this mutex because it made no visible difference.
We used the intel profiler (free for opensource project on linux (not for windows).
Then you have to do the rendering, which require to know the max value of a pixel, and reprocess every pixel for a nice rendering.
(And there is no way to do that without a global lock this time)
And we use the metropolis-hasting algorithms to make everything so much faster when you start to zoom.
That's another problem when you're zooming on a buddhabrot compared to a mandelbrot :
- On a mandelbrot, if you zoomed on [0,0.1] and your resolution is 1000x1000 you're going to compute 1 million time in the [0,0.1] space and your job is done.
- In a buddhabrot you have no way to predict where your orbit will go. So even if you zoomed on [0,0.1] you still have to do the computation in the [-2,0.5 ; -1.3,1.3] space billions and billions and billions of time, twice. The more you zoom the less chance you have for an orbit to be visible in your screen. And you can't know it until you did the whole cpu intensive computation. The metropolis-hastings algorithm is helping and get good result even if it's less than perfect (there is a statistical chance that the neighbor of a point visible on your screen will be visible too).
And contrary to the classic mandelbrot, it can use an insane amount of ram.
A classic mandelbrot don't need much ram and adding more ram isn't going to help you in any way, using more cpu is easy and 100% efficient (you can use 1 thread per pixel and each pixel doesn't interact with other pixels).
In buddhabrot, the more ram the better and multithreading is much more difficult because it require some global lock here and there.
That's why we're focusing on z^2+c, it's fast, efficient, well known, and give good result. And there is still discovery to be done on this one before switching to something much more complex and even more everything-intensive.