Title: Buddhabrot Mag(nifier) - A realtime buddhabrot zoomer Post by: Sharkigator on March 02, 2017, 02:00:35 PM (http://sourceforge.net/p/buddhabrot-max/screenshot/buddhabrot_mag_ui_4.png)
So, recently I've been interested in orbit escape time fractals (especially the Buddhabrot). So I coded a fairly average fractal renderer (which I called Buddhabrot Max), so I could render the Buddhabrot in high resolution for a poster print. (But that's not what this post is about.) Then I got interested in writing an OpenCL accelerator for it and realized how powerful computers are nowadays. So I started wondering if it was possible to zoom into the Buddhabrot in realtime. And since I could not find a program which allowed interactive zooming, I decided to program it myself. (And I called it Buddhabrot Mag(nifier)) This is program is currently kind of a proof of concept and therefore has very limited features. Buddhabrot Mag is in a very early stage, so please don't expect too much. Features:
System Requirements:
Control:
Manual Page / Troubleshooting: https://sourceforge.net/p/buddhabrot-max/manual/Buddhabrot%20Mag/ (https://sourceforge.net/p/buddhabrot-max/manual/Buddhabrot%20Mag/) Sourceforge Project Page: (of both Buddhabrot Max and Mag) https://sourceforge.net/p/buddhabrot-max/ (https://sourceforge.net/p/buddhabrot-max/) This thread is continued in the new forum: https://fractalforums.org/other/55/buddhabrot-magnifier-a-realtime-buddhabrot-zoomer/384 (https://fractalforums.org/other/55/buddhabrot-magnifier-a-realtime-buddhabrot-zoomer/384) 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! Title: Re: Buddhabrot Mag(nifier) - A realtime buddhabrot zoomer Post by: Sabine on March 03, 2017, 08:41:42 AM Very nice! :beer:
Tested on GTX 980Ti, works well Title: Re: Buddhabrot Mag(nifier) - A realtime buddhabrot zoomer Post by: Chillheimer on March 03, 2017, 12:00:25 PM Wow!
Thank YOU! It works fine here and the speed is amazing! intel core i3770 and amd radeon r9 290 (with open cl adapter thing installed that i don't remember) The buddhaset has blown my mind since I started exploring it with http://www.fractalforums.com/announcements-and-news/buddhabrotcl-v1-3/ Sadly there is no development there currently. You really raise my hope for a deeper exploration of the buddhaset! Most important wishes: -Colours, obviously! Assign different colours according to the number of iterations it takes until a point escapes (I'll shorten this to NIPE for now ;) For a start you could copy the functionality of BuddhabrotCL (If you need help/input, I'll happily provide, just write me a pm or ask specific questions. Even better Colours? If possible don't only use 3 colours but make use of palettes, spreaded over all NIPE? (though I don't know if this actually will look good.) -To get some really outstanding pictures we need the possibility to only display certain areas of NIPE. I got the most astounding images filtering out the low values and for example just show NIPE 250.000 to 500.000. In my understanding, you have to calculate all the NIPEs below anyway, so why not add a "lower limit"-fader, that allows to filter out the low iteration points in real-time, while not throwing them away. -of course: image export! and in unlimited resolution of course ;) At least 15360*8640 -Long term: store all data that has been calculated once, so when zooming to a place you've been before your calculation will only add up. over time this will lead to the most detailed buddhaset-picture ever. next level: upload and combine the data of all users to make this a community project. I'd definitely host that on my server! -I would love to explore how a full view of the buddhaset would look like if you take only the starting values of a deeply zoomed section of the mset, like a julia-set deep in the seahorse value. so the possibility to limit the input-starting-point values to a small section of the mset. (if possibleby using copy-paste coordinates from kalles fraktaler) -->combine mag and max! why keeping these seperate? (probably some programming issues I have never heard of.., excuse my ignorance ;)) many more ideas, but I don't want to drown you - for now ;) Welcome to the forum by the way! ps, yes I know it's called buddhabrot. but that name sounds so stupid in german, translates to buttered bread... 88) - heyyour name from the contact.txt sounds like you know this already.. fellow german? Title: Re: Buddhabrot Mag(nifier) - A realtime buddhabrot zoomer Post by: Chillheimer on March 03, 2017, 12:19:13 PM how the hell are you doing this?!?
deep zooms like this should technically be impossible! :alien: How did you solve that?!! I've discussed this with user stardust4ever here in the comments https://www.fractal.institute/buddhabrot/ If you really found a solution you deserve some MAJOR credits!! :o This is an absolute game changer! edit: i notice it becomes pixely/lines when going deeper than e05. stil this is a thousand times deeper than I've been before with buddhabrotcl (that uses gpu as well)... unbelievable! Title: Re: Buddhabrot Mag(nifier) - A realtime buddhabrot zoomer Post by: quaz0r on March 03, 2017, 04:03:31 PM i notice it becomes pixely/lines when going deeper than e05. that would be the limit of single-precision floating point Title: Re: Buddhabrot Mag(nifier) - A realtime buddhabrot zoomer Post by: PieMan597 on March 04, 2017, 04:04:12 AM This program is really cool, thanks!
Title: Re: Buddhabrot Mag(nifier) - A realtime buddhabrot zoomer Post by: Sharkigator on March 04, 2017, 10:32:58 AM A few replies:
-Colours, obviously! Assign different colours according to the number of iterations it takes until a point escapes (I'll shorten this to NIPE for now ;) I will soon upload an update, which has simple color support, assigning different Zs to different RGB channels depending on current iteration.For a start you could copy the functionality of BuddhabrotCL (If you need help/input, I'll happily provide, just write me a pm or ask specific questions. Even better Colours? If possible don't only use 3 colours but make use of palettes, spreaded over all NIPE? (though I don't know if this actually will look good.) -To get some really outstanding pictures we need the possibility to only display certain areas of NIPE. I got the most astounding images filtering out the low values and for example just show NIPE 250.000 to 500.000. In my understanding, you have to calculate all the NIPEs below anyway, so why not add a "lower limit"-fader, that allows to filter out the low iteration points in real-time, while not throwing them away. I could try to use a palette based on orbit length, however you will probably be able to see banding or get a loss of dynamic range, since I encode colors as integers (see: https://en.wikipedia.org/wiki/Colour_banding (https://en.wikipedia.org/wiki/Colour_banding)) Also I could add a "low limit" setting, however it will have to clear the image and restart the rendering, since there is no way of remembering which pixel were drawn at which iteration. (Also you are talking about very high orbit lengths here, at least for realtime rendering. The current version uses a maximum of 5.000 iterations.) -of course: image export! and in unlimited resolution of course ;) At least 15360*8640 Well, first of all a single image of that resolution would take up more than 2 GiB of memory and the rendering would still take hours, probably even longer if you were to render in tiles.-Long term: store all data that has been calculated once, so when zooming to a place you've been before your calculation will only add up. over time this will lead to the most detailed buddhaset-picture ever. next level: upload and combine the data of all users to make this a community project. I'd definitely host that on my server! This is also not my first priority for this project, since it is meant as a realtime zoomer, not an offline renderer. (Buddhabrot Max is meant for stuff like that, though I admit it currently does not perform well when rendering a zoomed part of the Buddhabrot). Also storing all orbits would cost multiple GiB in a few seconds, so that won't ever be possible. (Unless we get really big and fast SSDs). -->combine mag and max! why keeping these seperate? (probably some programming issues I have never heard of.., excuse my ignorance ;)) I started Mag as a new project because I did not know if it would actually work, and because it is often easier to work on a small project than on a big one.Also, I might merge some of their functionality and settings (like all the extra formulas and settings that are available in Max), but they will remain separate projects a one of the is focused on high resolution rendering and the other on realtime zooming and therefore they work differently internally. -I would love to explore how a full view of the buddhaset would look like if you take only the starting values of a deeply zoomed section of the mset, like a julia-set deep in the seahorse value. I've attached an image how it would look if you zoomed in to {-0.8, -0.19} x {-0.67, -0.12}, but zoomed out. (It looks the same, except some parts are brighter than usual.)so the possibility to limit the input-starting-point values to a small section of the mset. (if possibleby using copy-paste coordinates from kalles fraktaler) ps, yes I know it's called buddhabrot. but that name sounds so stupid in german, translates to buttered bread... 88) - heyyour name from the contact.txt sounds like you know this already.. fellow german? Yes, I am German.how the hell are you doing this?!? The current implementation works like this:deep zooms like this should technically be impossible! :alien: How did you solve that?!! 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. edit: i notice it becomes pixely/lines when going deeper than e05. stil this is a thousand times deeper than I've been before with buddhabrotcl (that uses gpu as well)... unbelievable! As quaz0r points out, this is indeed the limit of single floats. However, I will update to support double precision (which is slower by a factor of 32x on many GPUs, sadly).Title: Re: Buddhabrot Mag(nifier) - A realtime buddhabrot zoomer Post by: Sharkigator on March 04, 2017, 12:11:52 PM Updated: Version 0.2
See first post for download link. Changes: - Color support - Improved performance Title: Re: Buddhabrot Mag(nifier) - A realtime buddhabrot zoomer Post by: claude on March 04, 2017, 11:44:16 PM I tried to run it in WINE on GNU/Linux/Debian/Stretch, but it failed to start:
Code: $ wine BuddhabrotMag.exe I have NVIDIA GTX 550 Ti with proprietary drivers, which I've used with CL/GL sharing in my own code; I also have pocl installed which provides a CPU-based CL implementation without CL/GL sharing - maybe the presence of two platforms is confusing your code? Re the "how is this possible??" thing, here's an earlier approach which seems similar: http://www.moleculardensity.net/buddhabrot/appendix/1 Title: Re: Buddhabrot Mag(nifier) - A realtime buddhabrot zoomer Post by: Sharkigator on March 05, 2017, 03:07:03 PM It supports multiple platforms.
Code -1001 is CL_PLATFORM_NOT_FOUND_KHR, which is returned by clGetPlatformIDs if "the cl_khr_icd extension is enabled and no platforms are found". https://www.khronos.org/registry/OpenCL/sdk/2.0/docs/man/xhtml/clGetPlatformIDs.html (https://www.khronos.org/registry/OpenCL/sdk/2.0/docs/man/xhtml/clGetPlatformIDs.html) So you could maybe try to check whether you icd cofiguration is correct? Or maybe it is some incompatibility cause by WINE. However I did not expect that it would run on Linux. Title: Re: Buddhabrot Mag(nifier) - A realtime buddhabrot zoomer Post by: Chillheimer on March 06, 2017, 12:30:18 PM thanks for explaining in detail!
fascinating method. :) looking forward to updates! until then I'll enjoy diving into depths never seen before! Title: Updated: Version 0.3! Post by: Sharkigator on March 12, 2017, 05:53:23 PM New version released: 0.3
See the first post for download link! New features:
Notes: You have to select a formula first. (Some of the formulas don't look too good. Just ignore them then... If you find cool formulas, please tell me!) After changing settings, click "Apply Settings" to apply them. Applying settings (even when changing the formula) won't automatically clear the rendering as this may not be your intention. You'll have to do it manually if you want it. Zooming is not supported when paused. Clearing happens immediately after unpausing when paused. Palette size is preset to 16, usually you won't see much of a difference if you set it higher. You can write you own formulas! See the Formulas folder. Title: Re: Buddhabrot Mag(nifier) - A realtime buddhabrot zoomer Post by: claude on March 13, 2017, 08:59:09 AM It supports multiple platforms. Code -1001 is CL_PLATFORM_NOT_FOUND_KHR, which is returned by clGetPlatformIDs if "the cl_khr_icd extension is enabled and no platforms are found". https://www.khronos.org/registry/OpenCL/sdk/2.0/docs/man/xhtml/clGetPlatformIDs.html (https://www.khronos.org/registry/OpenCL/sdk/2.0/docs/man/xhtml/clGetPlatformIDs.html) So you could maybe try to check whether you icd cofiguration is correct? Or maybe it is some incompatibility cause by WINE. However I did not expect that it would run on Linux. I don't know how properly to test my WINE OpenCL configuration, as evidenced by the above - but installing the 32bit version of wine-development and nvidia-opencl-icd allowed it to get further (this time testing with the 0.3 version): Code: claude@frappuccino:~/win/BuddhabrotMag_0.3$ wine-development ./BuddhabrotMag.exe Any ideas? Title: Re: Buddhabrot Mag(nifier) - A realtime buddhabrot zoomer Post by: Sharkigator on March 13, 2017, 09:49:51 AM This could probably happen if you have an OpenCL implementation which does not support OpenCL 1.2.
(clGetExtensionFunctionAddressForPlatform was introduced in 1.2) Maybe you can check this with clinfo? Title: Re: Buddhabrot Mag(nifier) - A realtime buddhabrot zoomer Post by: claude on March 13, 2017, 01:02:30 PM This could probably happen if you have an OpenCL implementation which does not support OpenCL 1.2. (clGetExtensionFunctionAddressForPlatform was introduced in 1.2) Maybe you can check this with clinfo? mm, tested natively on linux, as I couldn't find a clinfo.exe to download in 2mins of searching, but seems there is some weirdness here - the platform says 1.2 but the device only 1.1: Code: Platform Version OpenCL 1.2 CUDA 8.0.0 My card is quite old by now though, GeForce GTX 550 Ti. So I'll give up for now... Title: Re: Buddhabrot Mag(nifier) - A realtime buddhabrot zoomer Post by: Chillheimer 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! :) in colors! early christmas! ;D 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... :dink: -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.. ;)) 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! Title: Re: Buddhabrot Mag(nifier) - A realtime buddhabrot zoomer Post by: TheRedshiftRider 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.
Title: Re: Buddhabrot Mag(nifier) - A realtime buddhabrot zoomer Post by: Sharkigator 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... :dink: I'm currently working on an update, which will allow arbitrary (as long as it fits in your RAM) resolution rendering using tiles.-enable larger imagesizes (I usually render 4k images, preferrably with 2*aa, so at least 7680*4320 prettyplease?) 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.. ;)) this makes it possible to create pictures like the attached 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.-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. 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.) Title: Re: Buddhabrot Mag(nifier) - A realtime buddhabrot zoomer Post by: Chillheimer on March 26, 2017, 11:22:25 AM awesome! this will be great! :) 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). Title: Updated: Version 0.4! Post by: Sharkigator on March 29, 2017, 11:04:06 PM New version released: 0.4
See the first post for download link! New features:
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. Title: Re: Buddhabrot Mag(nifier) - A realtime buddhabrot zoomer Post by: Chillheimer on March 30, 2017, 12:28:38 PM I've been looking forward to this the last week! :)
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 (http://www.fractalforums.com/announcements-and-news/buddhabrotcl-v1-3/): 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! ;D Could you elaborate what exactly "warmup" is doing? Title: Re: Buddhabrot Mag(nifier) - A realtime buddhabrot zoomer Post by: lycium 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 (https://www.indigorenderer.com/features/MLT) 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.) Title: Re: Buddhabrot Mag(nifier) - A realtime buddhabrot zoomer Post by: Sharkigator on March 30, 2017, 03:01:32 PM Resolution&Rendering Rendering in the preview window should not really be necessary?-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 (http://www.fractalforums.com/announcements-and-news/buddhabrotcl-v1-3/): 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 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 What BuddhabrotCL does is swizzling the RGB channels, that's all.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. 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 don't mind suggestions.I'm just excited about this great new tool! ;D 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. Title: Re: Buddhabrot Mag(nifier) - A realtime buddhabrot zoomer Post by: Chillheimer 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. Title: Re: Buddhabrot Mag(nifier) - A realtime buddhabrot zoomer Post by: Sharkigator on April 02, 2017, 04:34:49 PM one more suggestion: You can move/pan with the middle mouse button or both mouse buttons, that should allow you to center the image.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. But I can try. Title: Re: Buddhabrot Mag(nifier) - A realtime buddhabrot zoomer Post by: Sharkigator 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.) Title: Re: Buddhabrot Mag(nifier) - A realtime buddhabrot zoomer Post by: Chillheimer 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 :) Title: Buddhabrot Mag(nifier) - Version 0.5 released Post by: Sharkigator 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.) Title: Re: Buddhabrot Mag(nifier) - A realtime buddhabrot zoomer Post by: Sharkigator on April 19, 2017, 09:47:56 AM Hotfix: 0.5.1
Fixed incorrect operator precedence for unary plus and minus. Title: Re: Buddhabrot Mag(nifier) - A realtime buddhabrot zoomer Post by: Chillheimer on April 19, 2017, 05:00:27 PM thanks - looking forward to play around it as soon as I find time!
Title: Re: Buddhabrot Mag(nifier) - A realtime buddhabrot zoomer Post by: Sharkigator on April 21, 2017, 03:34:52 PM Another small Update: 0.5.2
- Fixed various compilation bugs and wrong implementation of some functions. - Implemented Periodicity Checking (speedup) Title: Re: Buddhabrot Mag(nifier) - A realtime buddhabrot zoomer Post by: Spain2points on April 21, 2017, 08:53:55 PM thanks a lot, this looks like fun
Title: Updated: Version 0.6 Post by: Sharkigator on May 18, 2017, 03:30:21 PM New version: 0.6
See the first post for download link. New features:
and several tiny changes and bugfixes. If you find any bugs, please tell me. Thank you! Title: Re: Buddhabrot Mag(nifier) - A realtime buddhabrot zoomer Post by: Chillheimer on May 19, 2017, 02:04:11 PM cool - great to see you still working on it! :)
question: the fixed resolution thing, is there a way export the full size (preview) image? example: I have a screen resolution of 1920*1080 but set the fixed resolution to 3840*2160 and start rendering. I hit pause when the image looks like I hoped. Now I see ithe image in my current monitorscreen resolution of 1920*1080 but if I understand it correctly the actual image has a resolution of 3840*2160. And I want THAT 4k image - how do I get it? and the obligatory "I never get enough" feature request: save/load locations&settings to revisit and share them. also: this would be a cool feature http://www.fractalforums.com/index.php?topic=25668.msg101254#msg101254 too bad I have to get back to work and have only little time to test in the next days.. Title: Re: Buddhabrot Mag(nifier) - A realtime buddhabrot zoomer Post by: Sharkigator on May 19, 2017, 03:34:07 PM question: the fixed resolution thing, is there a way export the full size (preview) image? There's a "Save Current Preview" button on the "Actions" tab.example: I have a screen resolution of 1920*1080 but set the fixed resolution to 3840*2160 and start rendering. I hit pause when the image looks like I hoped. Now I see the image in my current monitor screen resolution of 1920*1080 but if I understand it correctly the actual image has a resolution of 3840*2160. And I want THAT 4k image - how do I get it? Sorry, I guess the UI could be better. Title: Re: Buddhabrot Mag(nifier) - A realtime buddhabrot zoomer Post by: Chillheimer on May 19, 2017, 05:18:42 PM awesome! thanks a lot for implementing that, this makes it so much useful for my workflow! :)
never mind! its 0.x and work in progress, constantly improving. If you need specific input on anything just ask, I'm happy to help out. I suggest merging the clear/pause/apply area with the static preview section. Making it Preview-Settings: Top Row: Start/Pause, Apply Settings and Clear 2nd Row: Checkbox "Fixed Resolution" + optional "keep aspect ratio"-checkbox 3rd Row: Height and Width 4th Row: Zoom in/out and Save Preview Buttons Title: Re: Buddhabrot Mag(nifier) - A realtime buddhabrot zoomer Post by: Sharkigator on May 19, 2017, 05:44:55 PM Another tiny update (0.6.1), fixed some newly introduced artifacts...
See first post for download. Also a reply: I suggest merging the clear/pause/apply area with the static preview section. Well, I tried to keep that top part as small as possible, because it takes away space from the tabs.Making it Preview-Settings: Top Row: Start/Pause, Apply Settings and Clear 2nd Row: Checkbox "Fixed Resolution" + optional "keep aspect ratio"-checkbox 3rd Row: Height and Width 4th Row: Zoom in/out and Save Preview Buttons Especially on a small screen (i. e. my laptop), for example the color tab already almost fills up the whole screen height, and having using space above the tabs would make this even worse. There are a few things I could do, like having options in separate "pop-up" windows, but I hate things like that and I tried to keep it as non-modal as possible. Also, I could make all the grayed-out options invisible instead. But that hides functionality, so a new user would probably overlook the "invisible" options. And options disappearing if you click something makes it confusing. What I'd like best would be little animated collapsible containers, but Windows Forms does not offer that out-of-the-box. D: So for now I'll probably keep it the way it is... Title: Re: Buddhabrot Mag(nifier) - A realtime buddhabrot zoomer Post by: Gerson on June 05, 2017, 08:03:28 PM What files I need to install (OpenCL) and where I can get download it to run the program?
About: System Requirements: OpenCL >= 1.2 OpenCL Extension cl_khr_gl_sharing must be supported. OpenCL image support Title: Re: Buddhabrot Mag(nifier) - A realtime buddhabrot zoomer Post by: PieMan597 on June 05, 2017, 11:45:09 PM OpenCL comes with your graphics card drivers, or alternatively your integrated graphics drivers. If you have those, the program should work fine.
There is a download link in the first post in this thread. Title: Re: Buddhabrot Mag(nifier) - A realtime buddhabrot zoomer Post by: Alef on June 14, 2017, 11:51:19 AM Hadn't tested it. It wount work with my built in graphic card.
I think orbit plot would be good name to cover all the categories of simmilar fractals. Maybe this could be usefull. I wanted to implement buddhabrot, then were disapointed by the speed and went of from it until made something different. It was made as one day to be implemented in software. (brahmabrot - no distinction for escapeing/not orbits, instead revealing more by formula loop of: while ( (|z| < 16) && (|zold-z| >0.000001 ) && (iter < @maxIter) ) ; and my own colouring technique.) http://www.fractalforums.com/fractal-programs/problems-with-implementing-budhabrot-in-uf/ The whole code is here: http://www.chaospro.de/formulas/display.php?fileid=238 I think it could have largest colection of formulas which are good for orbit plot. Quad gen and logic turtle is nice, but many are found of starbrot becouse it looks as star. Recently I did some render of that with lots of dots. Not shure how usefull for this, but it shows some possibilities of colour method and probably the best pictures of it: http://www.fractalforums.com/index.php?topic=25746.0 Mockery of julia set. It is slower but it generates some interesting orbit plot fractals when julia sets do nothing: http://www.fractalforums.com/mandelbrot-and-julia-set/buddhabrot-quasijulia-set/ For this I did some improved random numbers. Halton sequences alone actualy were worst than random number but that probably depends on how fractal is calculated. In zooms I started to notice that random numbers start to generate pattern by themselves. This could be of some use: http://www.fractalforums.com/index.php?topic=17259.0 The most artistic was this. I forgot the formula but it was quasi julia set (http://fc02.deviantart.net/fs71/f/2013/248/d/b/brahmabrot_celtic_quasijulia_by_edo555-d6l4aj3.jpg) Title: Re: Buddhabrot Mag(nifier) - A realtime buddhabrot zoomer Post by: Sharkigator on August 27, 2017, 11:08:14 AM Update: 0.7
Download link in the first post. Big new feature: Saving and reloading the current settings and position. Some presets were also added as well as some new formulas. And some bugfixes. If you find nice settings / new formulas, please tell me and I will include them in the next update. Title: Re: Buddhabrot Mag(nifier) - A realtime buddhabrot zoomer Post by: Chillheimer on September 28, 2017, 01:50:20 PM thx again for that update!
I would love to see you start this thread in the new iteration of the forum too! https://fractalforums.org/image-threads/25/buddhaset-explorations/151/ parameter saving is awesome! coloring seems to have strange issues. if I set orbit length to a narrow range, for example 950min and 1000 max in the mandelbrot formula, the result is just one color. could it be that the percentage range is set to always start at 0? so if red goes from 0-20% it goes from 0-200 orbit length green from 20-80% so 200-800 orbit length, thus 950-100 will always just be single colored.. I just wanted to ask you if the following is a reasonable idea. how about coloring orbits depending from where in the mandelbrot-set the starting coordinate originated.. for example top left is green, top right is red. and what would be great: if instead of using rgb, we could pick ANY color for the R G or B channel from a palette and then use those %-Ranges for these colours. even better if we could have gradients. and maybe add as many channels as we want? would start to make sense then.. if not gradients, would it be hard to give the 3 channels min and mac values sliders? this would make handling much easier. still loving the tool, best for buddha-method out there. keep it up! :) Title: Re: Buddhabrot Mag(nifier) - A realtime buddhabrot zoomer Post by: Sharkigator on September 29, 2017, 10:42:23 AM thx again for that update! I will, once I release the next update.I would love to see you start this thread in the new iteration of the forum too! coloring seems to have strange issues. It works the way I intended it to.if I set orbit length to a narrow range, for example 950min and 1000 max in the mandelbrot formula, the result is just one color. could it be that the percentage range is set to always start at 0? so if red goes from 0-20% it goes from 0-200 orbit length green from 20-80% so 200-800 orbit length, thus 950-100 will always just be single colored.. If RGB ranges are used, each point in one orbit will be colored according to its current iteration. (So the first pixels in one orbit can have a different color than the later ones.) So even if you set your orbit length from 950 to 1000, you can have different colors in it. However, if the checkbox "Soft Minimum Orbit Length" is checked, the points of an orbit up to the "Minimum Orbit Length" are not drawn (so only 50 pixels will be drawn per orbit in this case), which in your case will result in it being single colored. In general, it's a good idea uncheck that checkbox if both the Minimum and Maximum Orbit Length are set to a high value. I just wanted to ask you if the following is a reasonable idea. I will try that.how about coloring orbits depending from where in the mandelbrot-set the starting coordinate originated.. for example top left is green, top right is red. and what would be great: if instead of using rgb, we could pick ANY color for the R G or B channel from a palette and then use those %-Ranges for these colours. even better if we could have gradients. and maybe add as many channels as we want? would start to make sense then.. Well, the current palette option does pretty much that (it sets a color for every orbit length), but you have to create the palette in a separate program.if not gradients, would it be hard to give the 3 channels min and mac values sliders? this would make handling much easier. It does not make a difference in the result that you get out of it. (It is more or less just a different user interface.) However, what *could* be done is choosing the colors for each channel (instead of RGB) in realtime, without having to re-render. Adding more channels would be a lot of work. Title: Re: Buddhabrot Mag(nifier) - A realtime buddhabrot zoomer Post by: claude on September 29, 2017, 11:33:27 AM mm, tested natively on linux, as I couldn't find a clinfo.exe to download in 2mins of searching, but seems there is some weirdness here - the platform says 1.2 but the device only 1.1: Code: Platform Version OpenCL 1.2 CUDA 8.0.0 My card is quite old by now though, GeForce GTX 550 Ti. So I'll give up for now... I got the latest version to run in WINE on Debian. I had to make some symlinks. But my card still doesn't support OpenCL 1.2 it seems :( https://stackoverflow.com/questions/12605618/when-will-opencl-1-2-for-nvidia-hardware-be-available/29607373#29607373 says Fermi cards won't get OpenCL 1.2, so I guess I'm out of luck... Code: $ ls -l lib* Any chance of a version of BuddhabrotMag that works with OpenCL 1.1? Quite a lot changed in the version bump... https://streamhpc.com/blog/2011-11-19/difference-between-opencl-1-2-and-1-1/ Title: Re: Buddhabrot Mag(nifier) - A realtime buddhabrot zoomer Post by: Sharkigator on September 29, 2017, 12:20:42 PM Any chance of a version of BuddhabrotMag that works with OpenCL 1.1? Quite a lot changed in the version bump... https://streamhpc.com/blog/2011-11-19/difference-between-opencl-1-2-and-1-1/ First of all, I don't know if it would work, even if your card supported OpenCL 1.2. I really didn't code it with Linux in mind. Also I need some features from 1.2, e.g. clCompileProgram. Also, your device seems to be missing the extension "cl_khr_gl_sharing", which is also required for running BuddhabrotMag (in order to draw to screen). Sorry, but I can't help you with this. :( Title: Re: Buddhabrot Mag(nifier) - A realtime buddhabrot zoomer Post by: claude on September 29, 2017, 03:42:33 PM Sorry, but I can't help you with this. :( No worries! Title: Re: Buddhabrot Mag(nifier) - A realtime buddhabrot zoomer Post by: Sharkigator on September 30, 2017, 11:26:53 AM This thread is continued in the new forum: https://fractalforums.org/other/55/buddhabrot-magnifier-a-realtime-buddhabrot-zoomer/384 (https://fractalforums.org/other/55/buddhabrot-magnifier-a-realtime-buddhabrot-zoomer/384) |