Buddhabrot Mag(nifier) - A realtime buddhabrot zoomer

  • 15 Replies
  • 1039 Views

0 Members and 1 Guest are viewing this topic.

Offline Sharkigator

  • *
  • Fractal Friend
  • **
  • Posts: 14
« on: September 30, 2017, 11:23:42 AM »
Continuation of the thread from the old forum. (http://www.fractalforums.com/announcements-and-news/buddhabrot-mag(nifier)-a-realtime-buddhabrot-zoomer/)



Buddhabrot Mag is a renderer for orbit escape time fractals (like the Buddhabrot).

Features
  • Realtime zoom!
  • OpenCL accelerated
  • Custom Formula support (Built-in formula editor)
  • Double precision support
  • Multiple coloring modes
  • Rendering set-inside (Anti-Buddhabrot)
  • (Tiled) Offline Rendering
  • OpenEXR and PNG support
  • Saving and reloading settings

System Requirements
  • OpenCL >= 1.2
  • OpenCL Extension cl_khr_gl_sharing must be supported.
  • OpenCL image support

Control:
  • Left Mouse Button: Zoom In
  • Right Mouse Button: Zoom Out
  • Middle Mouse Button: Pan/Move

Download: https://sourceforge.net/projects/buddhabrot-max/files/Mag%200.8/BuddhabrotMag_0_8_1.zip/download
Manual Page / Troubleshooting: https://sourceforge.net/p/buddhabrot-max/manual/Buddhabrot%20Mag/
Sourceforge Project Page: (of both Buddhabrot Max and Mag) https://sourceforge.net/p/buddhabrot-max/

If it does not work for you, please check the manual page (I set up a little troubleshooting page) or leave a reply here.
Also, if you've got ideas on how to improve it, please tell me.

Thank you!
« Last Edit: December 17, 2017, 11:06:30 AM by Sharkigator »

Offline Sharkigator

  • *
  • Fractal Friend
  • **
  • Posts: 14
« Reply #1 on: September 30, 2017, 11:25:39 AM »
Version 0.8 Released
Various fixes
Colors now use 3 components internally instead of 4 to save memory
Offline Renderer rewritten, now should distribute work more evenly across OpenCL devices
Preview for RGB ranges
Added support for replacing primary colors
Reduced UI lag (?)

Download in first post.

Offline Fraktalist

  • *
  • Administrator
  • *******
  • Strange Attractor
  • Posts: 944
« Reply #2 on: October 03, 2017, 12:38:38 PM »
This program is a must-try for anyone interested in the Mandelbrot-set. And it has so much more to offer.
It's grown into the by far best buddhabrot-renderer out there!  :thumbs:

Thanks for implementing the realtime color-picker thing! it is awesome and adds another huge dimension to my workflow and fun with this!

Offline Bill Snowzell

  • *
  • Fractal Friar
  • *
  • Posts: 140
« Reply #3 on: October 13, 2017, 03:01:29 PM »
Going to give this a try... :yes:

Offline ker2x

  • *
  • Fractal Friend
  • **
  • Posts: 11
« Reply #4 on: October 24, 2017, 07:53:09 PM »
Do you have a website or a blog that talk about all the stuff you implemented ?

Offline ker2x

  • *
  • Fractal Friend
  • **
  • Posts: 11
« Reply #5 on: October 24, 2017, 08:17:49 PM »
I don't understand how you made it so fast.
When i tried to implement buddhabrot in openCL (a long time ago) it was very inefficient...

Offline Sharkigator

  • *
  • Fractal Friend
  • **
  • Posts: 14
« Reply #6 on: October 26, 2017, 11:58:25 AM »
Do you have a website or a blog that talk about all the stuff you implemented ?
I don't. You can try to read the source code though.

I don't understand how you made it so fast.
When i tried to implement buddhabrot in openCL (a long time ago) it was very inefficient...
I gave a short explanation in the old forum:
Quote
The current implementation works like this:
I've got a list of the "best" orbits. On program start this list is filled with random numbers. (The length of this list can be chosen when starting the program, so the default setting "9" would be 2^9 = 512).
Every orbit in that list is "mutated" 64 times, all these orbits are drawn and assigned a score depending on how much they affect the current image.
So now we've got a list that is 64*512 = 32.768 values long.
Then the orbits with the lowest scores are discarded, so the list only contains the "best" orbits again and it's length is back to 512.

This process is repeated infinitely.

So, the first thing I did was implementing a regular Buddhabrot Renderer for CPU, just to get familiar with it.
And then I wanted to try hardware acceleration, so I simply tried to find a way to make it work efficiently on GPUs.
And in order for something to work efficiently with OpenCL, you first have to understand what kind of algorithms run fast on a GPU.
My first implementation with OpenCL was slow, too.

Offline ker2x

  • *
  • Fractal Friend
  • **
  • Posts: 11
« Reply #7 on: October 26, 2017, 03:17:28 PM »
I'm reading it but it's a large codebase   :-\\

The whole "increment a point in a large buffer" is what's slow and hated by gpu.
If i understand correctly you do it anyway but you do extra processing to make sure that you only do it when the orbit is contributing enough to the render ?

Offline Sharkigator

  • *
  • Fractal Friend
  • **
  • Posts: 14
« Reply #8 on: October 26, 2017, 07:12:37 PM »
All of renderer is inside the .cl files. The most important kernel is probably "mutateOrbits" in "Renderer2.cl".
Most of the code is just UI and stuff.

It's a bit ugly to read, because I use lots of preprocessing to support the different settings one can choose.

I think the incrementing actually does not make such a big difference, because 99% of the time is spent computing orbits, which don't bail out and are thrown away anyways.

And I generally try to find orbits which will be drawn, as described before.

Offline Fraktalist

  • *
  • Administrator
  • *******
  • Strange Attractor
  • Posts: 944
« Reply #9 on: October 30, 2017, 09:54:37 PM »
I love how accessible your software makes these uncharted territories!

here are some views from my journeys:
https://fractalforums.org/image-threads/25/buddhaset-explorations/151

a little feature wish:
can you add that contrast(?) exponential/linear.. dropbox from the preview export dialog to main views gain fader area to change it in realtime. it changes the focus on the different features in the fractals drastically and would be a great tool for zooming around for fun.
(and having the freeze preview renderer use exactly the same settings as there, currently I have to finetune export settings to match the image I already see in preview.)

and - small but awesome: a checkbox to rotate 90 degrees? would make so much sense for many of these fractals, as a vertical symetry axis evokes so much more mindblowing parodeilia features.
« Last Edit: October 31, 2017, 10:10:19 PM by Fraktalist »

Offline Sharkigator

  • *
  • Fractal Friend
  • **
  • Posts: 14
« Reply #10 on: November 02, 2017, 01:20:44 PM »
a little feature wish:
can you add that contrast(?) exponential/linear.. dropbox from the preview export dialog to main views gain fader area to change it in realtime. it changes the focus on the different features in the fractals drastically and would be a great tool for zooming around for fun.
(and having the freeze preview renderer use exactly the same settings as there, currently I have to finetune export settings to match the image I already see in preview.)
Well, in the realtime preview, the color transform is always set to exponential, because I thought it offered the best view experience.
If I added that dropdown, I would have to add the gamma setting as well, and together they would take away a lot of space in the user interface, which is already very scarce. So if I added it, I would not add it to the slider at the top.
The save having the same expose/gain as in the preview is no problem.

and - small but awesome: a checkbox to rotate 90 degrees? would make so much sense for many of these fractals, as a vertical symetry axis evokes so much more mindblowing parodeilia features.
Hm, I had that feature in Buddhabrot Max, where it caused me a lot of headache and special cases, so I had decided not to implement it again. I'll have to check how much effort it would need.

Offline hobold

  • *
  • Fractal Phenom
  • ****
  • Posts: 46
« Reply #11 on: November 09, 2017, 06:18:48 AM »
And I generally try to find orbits which will be drawn, as described before.

Did you ever try to plot the starting points of all contributing orbits, with respect to a specific zoomed image? In other words, a map of all the ancestors of a particular zoomed Buddhabrot image.

(Asking for no particular reason. Just curious what it looks like.)

Offline Sharkigator

  • *
  • Fractal Friend
  • **
  • Posts: 14
« Reply #12 on: November 09, 2017, 01:04:17 PM »
Did you ever try to plot the starting points of all contributing orbits, with respect to a specific zoomed image? In other words, a map of all the ancestors of a particular zoomed Buddhabrot image.
I have never done this, but I'd guess it looks like the border of the fractal, with some parts brighter than others.

Offline Sharkigator

  • *
  • Fractal Friend
  • **
  • Posts: 14
« Reply #13 on: December 17, 2017, 11:10:30 AM »
Update: Version 0.8.1

Various bugfixes
Added Sqrt checkbox for palette
Added Rotate90? Checkbox
Show filename of palette as tooltip on palette dropdown
Disabled dtd processing and resolving external resources for xml parsing (security)
Save Preview now uses the gain that was chosen with the slider
Maximum Gain when saving increased to 8192 (was 1024)
ColorPrimaries can now also be selected in grayscale mode
Little performance improvement with constant complex exponents that evaluate to real integers


Download via the link in the first post.

Offline Sharkigator

  • *
  • Fractal Friend
  • **
  • Posts: 14
« Reply #14 on: December 23, 2017, 11:29:06 AM »
I created a few snowflake-like fractals.
The file formulas.upr is actually a .zip archive containing the formulas.

Merry Christmas!


xx
Buddhabrot

Started by FractalStefan on Image Threads

3 Replies
298 Views
Last post February 26, 2018, 11:28:21 PM
by FractalStefan
xx
Buddhabrot

Started by Bill Snowzell on Fractal Image Gallery

0 Replies
160 Views
Last post October 12, 2017, 09:53:06 PM
by Bill Snowzell
xx
A Buddhabrot animation

Started by F. Bernkastel on Fractal movie gallery

5 Replies
389 Views
Last post April 20, 2018, 02:55:35 PM
by F. Bernkastel
xx
Buddhabrot Angel

Started by Sharkigator on Fractal Image Gallery

3 Replies
124 Views
Last post August 30, 2018, 05:56:00 PM
by tavis
xx
Buddhabrot sprout

Started by F. Bernkastel on Fractal Image Gallery

0 Replies
218 Views
Last post November 23, 2017, 07:00:48 PM
by F. Bernkastel