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

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...

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.

-please raise the limit of maximum orbit lenght to at least 1 million (or make that 50, with some headroom, just for the fun.. ) 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.

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).

(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.

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

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?

Colors1. 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!

Could you elaborate what exactly "warmup" is doing?

Logged

--- Fractals - add some Chaos to your life and put the world in order. ---

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.)

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.

Colors1. 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!

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.

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.

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.

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.)

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

Logged

--- Fractals - add some Chaos to your life and put the world in order. ---

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 variablesIteration (_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.