Logo by reallybigname - Contribute your own Logo!

END OF AN ERA, FRACTALFORUMS.COM IS CONTINUED ON FRACTALFORUMS.ORG

it was a great time but no longer maintainable by c.Kleinhuis contact him for any data retrieval,
thanks and see you perhaps in 10 years again

this forum will stay online for reference
News: Visit the official fractalforums.com Youtube Channel
 
*
Welcome, Guest. Please login or register. March 19, 2024, 12:28:37 PM


Login with username, password and session length


The All New FractalForums is now in Public Beta Testing! Visit FractalForums.org and check it out!


Pages: 1 [2] 3 4   Go Down
  Print  
Share this topic on DiggShare this topic on FacebookShare this topic on GoogleShare this topic on RedditShare this topic on StumbleUponShare this topic on Twitter
Author Topic: Buddhabrot Mag(nifier) - A realtime buddhabrot zoomer  (Read 17616 times)
Description: An OpenCL accelerated interactive realtime buddhabrot zoomer
0 Members and 2 Guests are viewing this topic.
Chillheimer
Global Moderator
Fractal Schemer
******
Posts: 972


Just another fractal being floating by..


chilli.chillheimer chillheimer
WWW
« Reply #15 on: March 24, 2017, 11:04:59 AM »

Sorry it took a while..

awesome update! I love the improvements!
you are definitely going the right direction!
all these new formulars to explore so deep! smiley in colors!
early christmas!  grin



please don't approach this mereley as a tool for zooming in, but see its potential as a renderer for art!
some thoughts that would raise my output from simple playing around for fun to some beautyful renders:

-enable export of current image !   (if nothing else from this list, please this one!) taking screenshots and cropping them feels wrong... wink

-enable larger imagesizes (I usually render 4k images, preferrably with 2*aa, so at least 7680*4320 prettyplease?)

-save files for coordinates & settings (or at least: copy&paste txt for coordinates, i need to be able to revisit an exact spot)

-ad manual exposure-fader to adjust brightness as in other renderers - and if not too complicated contrast, colour saturation would also be awesome to tweak while zooming..

-please raise the limit of maximum orbit lenght to at least 1 million (or make that 50, with some headroom, just for the fun.. wink) this makes it possible to create pictures like the attached

-and add a lower limit, so that only those orbits with higher iterations are drawn. this results in fascinating pictures with distinct structures of single iterations rather than just fog.

-give the 3 RGB channels free assignable colours! And maby the possibility to add even more channels? (I love the idea of the overlapping values btw!)

-is there a way to scroll without zooming?


anyways, thanks for sharing this with us! I so much appreciate it!


* Threads-of-time-sml.jpg (53.28 KB, 1280x720 - viewed 363 times.)
Logged

--- Fractals - add some Chaos to your life and put the world in order. ---
TheRedshiftRider
Fractalist Chemist
Global Moderator
Fractal Iambus
******
Posts: 854



WWW
« Reply #16 on: March 24, 2017, 09:11:53 PM »

Wow, this seems like an amazing program. I can't wait to test it out on my new desktop.
Logged

Motivation is like a salt, once it has been dissolved it can react with things it comes into contact with to form something interesting. nerd
Sharkigator
Alien
***
Posts: 23


« Reply #17 on: March 24, 2017, 11:44:11 PM »

Thank you for the suggestions!

-enable export of current image !   (if nothing else from this list, please this one!) taking screenshots and cropping them feels wrong... wink
-enable larger imagesizes (I usually render 4k images, preferrably with 2*aa, so at least 7680*4320 prettyplease?)
I'm currently working on an update, which will allow arbitrary (as long as it fits in your RAM) resolution rendering using tiles.
It will also support using multiple OpenCL devices for final rendering (not for interactive zooming though).

-save files for coordinates & settings (or at least: copy&paste txt for coordinates, i need to be able to revisit an exact spot)
(In the bottom of the window you can already see the current coordinates, but I guess you knew that already.)
I've thought about saving and reloading, however if I do that, I'd make it so you can save a file which also includes the used formula and palette.

-ad manual exposure-fader to adjust brightness as in other renderers - and if not too complicated contrast, colour saturation would also be awesome to tweak while zooming..
I can definitely do an exposure fader.

-please raise the limit of maximum orbit lenght to at least 1 million (or make that 50, with some headroom, just for the fun.. wink) this makes it possible to create pictures like the attached
-and add a lower limit, so that only those orbits with higher iterations are drawn. this results in fascinating pictures with distinct structures of single iterations rather than just fog.
I limited it to prevent possible crashes (if the a program on GPU takes too long the watchdog causes a reset and I have not yet implemented splitting the rendering of single orbits across multiple kernel executions), and because it is meant as a realtime zoomer.
But I can raise the maximum to 2 billion if you want that.
And I have already implemented a lower limit, it will be in the next release.

-give the 3 RGB channels free assignable colours! And maby the possibility to add even more channels? (I love the idea of the overlapping values btw!)
I do not understand how that would work?
And for more complex colors you can already load palettes. (Short orbits will be assigned the colors on the left of the palette, long orbits get the colors on the right.)
The next release will have a quick select menu for your favorite palettes.

-is there a way to scroll without zooming?
Not yet. I could probably add it for pressing the middle mouse button / both mouse buttons.


The update will also include some performance settings and improvements in the formula compiler. (Formulas with negative exponents will render at least one order of magnitude faster.)
Logged
Chillheimer
Global Moderator
Fractal Schemer
******
Posts: 972


Just another fractal being floating by..


chilli.chillheimer chillheimer
WWW
« Reply #18 on: March 26, 2017, 11:22:25 AM »

awesome! this will be great! smiley looking forward to that next version.

another idea: if there is a way to give each channel its own exposure fader, it would be possible to dynamically change the viewers focus from the low iteration "mainfog", to the high iteration chains, bands and intricate details. (whithin this balance the actual buddhaset-magic happens if you ask me. it puts single orbits into the context of the fractal

might be complicated though? i guess you would have to keep the channels separated?
(I'd personally sacrifice 3* speed for that feature (if it can be disabled).


* mandelbar-buddhamag4.jpg (90.44 KB, 1024x1024 - viewed 395 times.)
« Last Edit: March 26, 2017, 11:28:45 AM by Chillheimer » Logged

--- Fractals - add some Chaos to your life and put the world in order. ---
Sharkigator
Alien
***
Posts: 23


« Reply #19 on: March 29, 2017, 11:04:06 PM »

New version released: 0.4
See the first post for download link!

New features:
  • (Tiled) Offline Rendering in high resolution and saving to 8- or 16-bit png
  • Extra options to select math precision
  • Gain slider (and better automatic brightness estimation for preview)
  • Palette Quick Select (+ 1024 random palettes)
  • Minimum orbit length setting

Notes:
The preview for offline renders can be very dark (it may even look black). Just enter a high gain and click update.
You can use multiple OpenCL devices for offline rendering. (So if you have a fast CPU as well, you can install a driver for it and use it to speed up rendering further.)
Using tiles usually does not improve performance and is meant to lower the required memory for GPUs. Tile borders are faded into each other, so you should not be able to see them.
I have already managed to render 20000 x 30000 images.
Estimated render times may not be accurate.
The "Mirror Imaginary Axis" option may introduce artifacts in a tiled rendering, so you should disable it for that.
The rendering uses the settings that were set when you last clicked "Apply Settings".

I also don't know how self explanatory the UI is, so don't hesitate to ask.
Logged
Chillheimer
Global Moderator
Fractal Schemer
******
Posts: 972


Just another fractal being floating by..


chilli.chillheimer chillheimer
WWW
« Reply #20 on: March 30, 2017, 12:28:38 PM »

I've been looking forward to this the last week! smiley

Basically awesome! I won't mention all the good things. too much to write wink

Here's what I'm missing:

Resolution&Rendering
-I understand the approach to render in a second step. This is definitely an option to keep for extreme sizes and with the nice settings like correct aspect ratio and using cpu+gpu combined!
But:
I want to work with the current view! When I go for beautiful single orbits, I want to use exactly the ones that I see building up.
At some point I press "pause" and THIS is exactly the image to export without having to take a screenshot.

So how to get huge images on a limited monitor?
I like woronois approach with BuddhabrotCL: You set the rendersize at the beginning and then let it run, you see the result in realtime..
if image size is larger than your screen resolution, you get horizontal and vertical scrollbars. then you just export that full view. I was able to render 10800*10800 sized images in realtime and just stop when I like the result. Downside is that I'm not able to get an overview of the whole image.
Depending on the resolution I sometimes have 5-6 instances open in parallel and let some of them calculate 2-3 days. Then I choose the ones that are nice and rotate/crop the interesting area. If I have enough 'resolution' left I scale things down for aa. (Just to give you an idea how a workflow can look like.)

the best from both worlds would be adding image zoom. (not to confuse with fractal depth zoom)
-full view (shrinks the image to fit your program window.
-original size (original resolution with scrollbars if image size is larger than window size)
-optional1: your own zoom by fader
-optional2: real full view of the whole image without any program interface, like f11 in browser


-for the regular rendering you already implemented: why not update the view in realtime while rendering?

Colors
1. I wish I could change colors after (realtime) rendering.  (and not only for the points calculated after I pressed "apply settings".
You will see completely different details in the current render.
Of course I could do this in photoshop, but it's much nicer to have this in the "idea-finding-stage" within your renderer.
It works for the RGB-Method in BuddhabrotCL, so there is a way to achieve this.

2. If you are able to implement 1, please also give us the "Color transform" options from the render/save image dialog in the realtime color settings


----
The Gain Fader should also wwork when the rendering is paused.


Please tell me if I should stop or slow down bombarding you with wishes and ideas.. I don't want you to loose the fun in this project through what could be perceived as nagging.
I'm just excited about this great new tool! grin



Could you elaborate what exactly "warmup" is doing?


Logged

--- Fractals - add some Chaos to your life and put the world in order. ---
lycium
Fractal Supremo
*****
Posts: 1158



WWW
« Reply #21 on: March 30, 2017, 12:47:49 PM »

Could you elaborate what exactly "warmup" is doing?

I think I can answer this, since I've written quite a few implementations of Metropolis-Hastings sampling before: M-H sampling allows you to sample proportionally to some distribution - this is what you want when doing deep Buddhabrot zooms, since you can then directly sample the image contribution function, rather than blindly (uniformly) following all paths, most of which will have no contribution. However, the constant of proportionality is still unknown, and needed to scale the histogram to the correct average brightness; so in the warmup period, this constant of proportionality is estimated by doing a bunch (e.g. 1 million) of uniform samples. (It's also useful to eliminate so-called "start-up bias", but that's a mathematical detail.)
Logged

Sharkigator
Alien
***
Posts: 23


« Reply #22 on: March 30, 2017, 03:01:32 PM »

Resolution&Rendering
-I understand the approach to render in a second step. This is definitely an option to keep for extreme sizes and with the nice settings like correct aspect ratio and using cpu+gpu combined!
But:
I want to work with the current view! When I go for beautiful single orbits, I want to use exactly the ones that I see building up.
At some point I press "pause" and THIS is exactly the image to export without having to take a screenshot.

So how to get huge images on a limited monitor?
I like woronois approach with BuddhabrotCL: You set the rendersize at the beginning and then let it run, you see the result in realtime..
if image size is larger than your screen resolution, you get horizontal and vertical scrollbars. then you just export that full view. I was able to render 10800*10800 sized images in realtime and just stop when I like the result. Downside is that I'm not able to get an overview of the whole image.
Depending on the resolution I sometimes have 5-6 instances open in parallel and let some of them calculate 2-3 days. Then I choose the ones that are nice and rotate/crop the interesting area. If I have enough 'resolution' left I scale things down for aa. (Just to give you an idea how a workflow can look like.)

the best from both worlds would be adding image zoom. (not to confuse with fractal depth zoom)
-full view (shrinks the image to fit your program window.
-original size (original resolution with scrollbars if image size is larger than window size)
-optional1: your own zoom by fader
-optional2: real full view of the whole image without any program interface, like f11 in browser
Rendering in the preview window should not really be necessary?
I really don't want two ways of doing the same thing, because that makes the code unmaintainable.
The preview window also currently uses dynamic resolution and because of the way I implemented it, it would not allow for high resolutions without requiring insane amounts of memory.
Usually, the preview should be clear enough after a few seconds for you to decide whether you want to do a full render of it.
And the offline render should not differ too much from the preview, unless you have chosen too few iterations so the render has not converged yet.

Also the renderer is currently not really meant to support very long orbits, but I could try to find a way to speed up rendering of long orbits (because you are talking about rendering for multiple days!?)

-for the regular rendering you already implemented: why not update the view in realtime while rendering?
I assume by "regular rendering" you mean offline rendering.
It has no preview, because that makes it faster (the data of each tile is only transferred once it's done) and because you don't need a preview because it's too late to change something.
Also, because the image can be computed on multiple OpenCL devices at once, the preview could be inconsistent.

But what I can do is add a "Show Preview" button to the offline renderer and a "Stop" function, which will allow you to save the render as it currently is without aborting.

Colors
1. I wish I could change colors after (realtime) rendering.  (and not only for the points calculated after I pressed "apply settings".
You will see completely different details in the current render.
Of course I could do this in photoshop, but it's much nicer to have this in the "idea-finding-stage" within your renderer.
It works for the RGB-Method in BuddhabrotCL, so there is a way to achieve this.

2. If you are able to implement 1, please also give us the "Color transform" options from the render/save image dialog in the realtime color settings

The Gain Fader should also wwork when the rendering is paused.
What BuddhabrotCL does is swizzling the RGB channels, that's all.
And I don't really want to build a full color correction pipeline into Buddhabrot Mag.

And I can fix the gain fader, yes.
(And the preview currently always uses exponential color transform, but I guess I can make it selectable as well.)

Please tell me if I should stop or slow down bombarding you with wishes and ideas.. I don't want you to loose the fun in this project through what could be perceived as nagging.
I'm just excited about this great new tool! grin
I don't mind suggestions.

Could you elaborate what exactly "warmup" is doing?
Sometimes when you are zoomed in and apply new options, it can seemingly stop rendering or be very slow, because it lost it's list of orbits it previously had.
So warmup basically zooms out and back in to help it find good orbits again.
Logged
Chillheimer
Global Moderator
Fractal Schemer
******
Posts: 972


Just another fractal being floating by..


chilli.chillheimer chillheimer
WWW
« Reply #23 on: April 02, 2017, 10:59:55 AM »

Rendering in the preview window should not really be necessary?
for me, the realtime preview rendering is the only thing that is necessary. As long as I'm able to just save what I see as png.
I'm happy to sacrifice a bit of speed if I get the exact picture I see.

And the offline render should not differ too much from the preview, unless you have chosen too few iterations so the render has not converged yet.
well, that is exactly what I do and where in my opinion the really interesting things happen. see attached image - it's all about exactly these single orbits forming unique patterns. in a second run this would look totally different.


But what I can do is add a "Show Preview" button to the offline renderer and a "Stop" function, which will allow you to save the render as it currently is without aborting.
not what I prefer, but I guess it can be used as a workaround to achieve what I want.


one more suggestion:
could you change or add a different method of zooming? though zooming to where you click is a nice experience when you zoom in continuously, it is very hard to "place" a feature at a certain position of the screen, like in the exact center. I think adding the standard "draw a rectangle and zoom there" method is much better suited for creating still images.





* the-cell-small.jpg (98.53 KB, 1024x1024 - viewed 349 times.)
Logged

--- Fractals - add some Chaos to your life and put the world in order. ---
Sharkigator
Alien
***
Posts: 23


« Reply #24 on: April 02, 2017, 04:34:49 PM »

one more suggestion:
could you change or add a different method of zooming? though zooming to where you click is a nice experience when you zoom in continuously, it is very hard to "place" a feature at a certain position of the screen, like in the exact center. I think adding the standard "draw a rectangle and zoom there" method is much better suited for creating still images.
You can move/pan with the middle mouse button or both mouse buttons, that should allow you to center the image.
But I can try.
Logged
Sharkigator
Alien
***
Posts: 23


« Reply #25 on: April 08, 2017, 04:26:46 PM »

Feature Teaser: Curvature Coloring

Previously, colors were chosen based on the orbit length.
However, this can sometimes look too uniform, so I came up a new coloring method.
It computes the curvature of each orbit and selects color based on that.

This also allows for colored renderings of the "inside" of a fractal (only the orbits which do not escape).
Previously, every orbit would have the same length (the maximum) and therefore the same color.
This new coloring method is slower than orbit length coloring.

The first two images are regular buddhabrot renderings, the third is the inside of the Lifesmith0524 fractal.

PS: I will also eventually implement the functionality to facilitate render large orbits and improving the offline renderer in general. But implementing a new coloring method was just more fun.
PPS: Should I explain how to write custom formulas for BuddhabrotMag (in a tutorial-like post)? And maybe implement a UI for directly writing formulas? Or is that something you are not interested in? (Because I think there are still many undiscovered formulas that could yield pretty images.)


* buddhabrot01.jpg (34.92 KB, 428x400 - viewed 471 times.)

* buddhabrot02.jpg (49.47 KB, 428x400 - viewed 465 times.)

* lifesmith0524.jpg (86.15 KB, 428x400 - viewed 475 times.)
Logged
Chillheimer
Global Moderator
Fractal Schemer
******
Posts: 972


Just another fractal being floating by..


chilli.chillheimer chillheimer
WWW
« Reply #26 on: April 10, 2017, 12:20:04 PM »

I didn't know about many of these formulas (like that lifesmith-series). To see them written out in the program and being able to test them in realtime might not be used by all users but it would add a whole new dimension to the software. So I'm sold!

Curvature Colouring sounds very exciting smiley
Logged

--- Fractals - add some Chaos to your life and put the world in order. ---
Sharkigator
Alien
***
Posts: 23


« Reply #27 on: April 18, 2017, 11:21:51 AM »

Updated: Version 0.5
Download link in the first post.

New features:
- Curvature Coloring
- Built-in formula editor
- OpenEXR file saving support
- (Many small improvements)

Fixed resolution for the preview is not implemented yet, maybe in the next release.

On writing formulas:
In the "Formula"-tab, you can either start typing directly or choose a formula from the list and edit it.

A formula basically consists of 3 parts:
Initialization (_INIT_), used for setting up stuff before the first iteration and declaring extra variables
Iteration (_LOOP_), used for computing the next Z.
Bailout test (_BAIL_), a condition for determining whether this orbit is or is not part of the set. In most cases this will just check wether the Z is inside a certain circle around the origin.

The code for the simple Mandelbrot (Zn+1 = Zn2 + C, bailout radius = 2) would look like this:

_INIT_
_LOOP_
Z[n+1] = Z[n]^2 + C;
_BAIL_
absSq(Z[n+1]) > 4;


(absSq returns the squared magnitude of a number, so |Z|²)

For a list of all available constants and functions, please see FormulaHelp.txt in the Formulas folder.

If you come up with cool formulas, please share them! (Or if you find bugs.)
Logged
Sharkigator
Alien
***
Posts: 23


« Reply #28 on: April 19, 2017, 09:47:56 AM »

Hotfix: 0.5.1

Fixed incorrect operator precedence for unary plus and minus.
Logged
Chillheimer
Global Moderator
Fractal Schemer
******
Posts: 972


Just another fractal being floating by..


chilli.chillheimer chillheimer
WWW
« Reply #29 on: April 19, 2017, 05:00:27 PM »

thanks - looking forward to play around it as soon as I find time!
Logged

--- Fractals - add some Chaos to your life and put the world in order. ---
Pages: 1 [2] 3 4   Go Down
  Print  
 
Jump to:  

Related Topics
Subject Started by Replies Views Last post
3D Buddhabrot 3D Fractal Generation David Makin 1 3852 Last post January 12, 2008, 02:36:31 PM
by twinbee
Relatively new to here, my Buddhabrot Images Showcase (Rate My Fractal) aluminumstudios 1 4248 Last post February 15, 2010, 11:49:43 AM
by Nahee_Enterprises
BuddhaBrot! Images Showcase (Rate My Fractal) « 1 2 » emmmile 17 7102 Last post June 22, 2010, 11:53:15 PM
by Nahee_Enterprises
Buddhabrot on GPU Programming « 1 2 ... 6 7 » ker2x 97 34895 Last post April 03, 2011, 11:58:16 PM
by ant123
High detail Buddhabrot - "Buddhabrot Echos" Images Showcase (Rate My Fractal) aluminumstudios 4 3253 Last post December 13, 2012, 04:42:29 PM
by tit_toinou

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2015, Simple Machines

Valid XHTML 1.0! Valid CSS! Dilber MC Theme by HarzeM
Page created in 0.202 seconds with 25 queries. (Pretty URLs adds 0.016s, 2q)