Welcome to Fractal Forums

Fractal Software => Releases => Topic started by: Buddhi on September 10, 2015, 01:02:30 PM




Title: Mandelbulber v2 - 2.05
Post by: Buddhi on September 10, 2015, 01:02:30 PM
Mandelbulber v2 2.05

Free download (executables for win32 and win64 and multiplatform source): http://sourceforge.net/projects/mandelbulber/
https://github.com/buddhi1980/mandelbulber2

Together with zebastian and mclarekin we have finished new version of Mandelbulber. As you see this version provides very big bundle of changes and new features.
This time main focus was on implementation of keyframe animation and to provide documentation for parameters (tooltips).


What is new?
- added keyframe animation feature. There is possible to define keyframes and interpolate different parameters between them.
- added UI for keyframe animation with table where is possible to edit each parameter.
- implemented different interpolation types for animation: Akima, Catmull-Rom, Linear. Prepared interpolation for angular parameters.
- added selection of interpolation type for each parameter separately
- added possibility to animate color palette
- added saving of animation into *.fract file in CSV format
- possible to change image format for saving animation frames
- added exporting of flight animation to keyframe animation and vice versa
- added camera collision detection before rendering of keyframe animation
- added tooltips in English, German and Polish languages (a lot of documentation here)
- added big bundle of example settings files
- histograms moved to separate dock widget
- added saving of zBuffer into PNG 16-bit and EXR floating point format (EXR supported only under Linux). zBuffer is normalized and mapped logarithmically
- added Program Settings dialog
- added settings for default file paths
- added JPG quality settings
- in preferences dialog can be defined which layers (color, zBuffer, alpha) will be attached to saved image and which bit precision will be used
- UI skin, style and font size can be set in settings dialog. You can set much smaller fonts to work on low resolution screen.
- added selection of program language in preferences dialog
- added render statistics table (under histograms)
- improved placement of auxiliary lights
- added auto-recovery function (possible to recover work after application crash)
- added experimental gamepad control for recording flight animations (actually works under Linux with Qt5.5)
- added 'GeneralizedFoldBox' formula
- added 'Mandelbulb5' formula (much extended Mandelbulb formula)
- added 'Mandelbox - extended' formula
- added 'Quaternion - extended' formula
- Added 'bailout' parameter to be able to change escape condition fractal iteration loop. By default for deltaDE it was 1e10, but lower value increases rendering speed even 5 times without loosing quality.
- added weight function for hybrid fractal components. On each fractal tab there is setting for weight (only available when hybrid mode is enabled).
- constant multiplier parameter changed to 3D vector type
- improved importing old settings from Mandelbulber 1.21
- increased precision of some QSpinBox edit fields
- optimized reset view function (now is 100x faster!)
- added UNDO and REDO buttons below RENDER button
- increased view_distance_max to 50.0 for all toolbar presets
- increased view_distance_max calculated by ResetView function
- added new example files (also with animations)
- added loading/saving setting from/to clipboard as text (possible to copy/paste settings on community forums)
- added x2 :2 buttons for increase/decrease image resolution
- named Threads to monitor cpu / mem / ... by thread
- fixes issues with compatibility witch clang
- fixed bug: corrected problems found by Coverity Scan
- fixed bug: transform function for primitive objects didn't affected repeat operator
- fixed bug: alpha channel was always blank
- fixed bug: many typos corrected
- fixed bug: animation player crashed when in animation folder were non-image files
- fixed bug: program crashed when attempted to edit text in preview cell in Animation Flight table.
- fixed bug: program didn't consider locale settings for decimal points
- fixed bug: render of main image could start multiple times after frequent clicks on RENDER button
- fixed bug: Added waiting for all clients to be ready. It's needed for animation rendering, because sometimes client is not enough fast to take new job
- fixed bug: when rendering of animation was stopped there was saved incomplete image
- fixed bug: if QColorDialog was closed by 'Cancel' button it also took color and updated button color.
- fixed bug: if camera and target had the same coordinates, it produced NaN values for camera angles and top vector
- fixed bug: default value of color was repeated many times in MyColorButton tooltip

As always every feedback is appreciated!

Source code repository (GIT, SVN) https://github.com/buddhi1980/mandelbulber2

(https://cloud.githubusercontent.com/assets/11696990/9786328/aac44116-57b9-11e5-8f02-a12f209c97a7.png)


Title: Re: Mandelbulber v2 - 2.05
Post by: Patryk Kizny on September 10, 2015, 01:27:53 PM
Wow! Thats a hell lot of changes! Can't wait to test! There's no GPU/opencl support as it was in 1.21 yet? Or I missed that?


Title: Re: Mandelbulber v2 - 2.05
Post by: Buddhi on September 10, 2015, 01:45:25 PM
Notes from mclarekin about new formulas:

Mandelbulb, Mandelbox and Quaternion extended formulas.

Within the iteration loop of the extended formulas you can use two instances ( more if you enable “hybrid formulas”) of a basic formula plus additional transforms and tweaks. These extended formula layouts were coded to experiment with and only cover some of the infinite possibilities.

Note that backward compatibility of extended formulas .fract parameter files may not be possible with future versions of Mandelbulber, if an improved UI is implemented.

Some general user notes:
- Adding more groups of parameters increases render time.
- Adding more groups can decrease quality.
- Some parameter groups (ie box fold) have stronger influence than others. You can choose to counter this my reducing the group weight and/or tweaking the “start/stop at iteration” parameters.
- You can make animations with a parameter group being smoothly transitioned from zero “weight” to full “weight” (as you can now also do with formulas using the weight function on the existing four formula tabs when “hybrid fractals” is enabled.). However you need to experiment to find which fractals, parameter groups and settings work well.
- In fact it is all about experimentation. Very few of the Mandelbulber Version 2.05 basic possibilities have been tested by those involved with writing the code.
- For the “w” parameters in the the Quaternion – extended formula, an intial non-zero number is required. I.e. In the z = z + (const.) parameter group, make the “w” parameter not equal to 0.0.
- Julia Mode and Constant Multiplier from the Option tab DO NOT work with these extended formulas. Instead use z = z + (const.) and z = z + ( c * const.) parameter groups.


Title: Re: Mandelbulber v2 - 2.05
Post by: mclarekin on September 10, 2015, 02:05:24 PM
The mandebulb - extended formula has several fabs() parameter groups.  Attached .fract file uses only one group,  (keeping things simple is often best). By adjusting the parameters you can see how this shape responds. In this example the fabs() parameters group starts at iteration 0, whereas the Mandelbulb formula and associated addition of constant multiplier start at iteration 1. Try changing one or both to 2 or 0.
We are using just three of the parameter groups on this extended tab, the possibilities are already possibly infinite.
Code:
# Mandelbulber settings file
# version 2.05
# only modified parameters
[main_parameters]
ambient_occlusion 1.23;
ambient_occlusion_enabled true;
background_color_1 0 5600 8f00;
background_color_2 0 5600 8f00;
background_color_3 0 5600 8f00;
camera 0.02655082137329111 -13.9998605975508 0.01146512741119407;
camera_distance_to_target 14;
camera_rotation 0 0 0;
camera_top 0 0 1;
coloring_palette_offset 55.4;
coloring_palette_size 255;
coloring_speed 2.02;
DE_factor 0.3;
flight_last_to_render 0;
formula_1 52;
keyframe_last_to_render 0;
specular 0.31;
surface_color_palette 5e869f 5e86a0 5d859f 5d859f 5c849e 5c849e 5e839e 5e839e 5d829d 5d829c 5d829d 5d829c 5c819c 5d829d 5c819b 5e829c 5d819b 5c819b 5c819b 5d809c 5c8587 a7ea29 c0ea58 455e00 c0d135 411300 fff71f 9f3100 432300 621400 ad2609 50f07 c0b07 1b0c05 320b06 221107 18100d 66829a 201404 b34301 2d1008 412001 4a2a00 321e05 3c2304 180b03 4d2900 af7011 9b4b06 321a02 261b00 904907 f18b27 d6601a 220100 160805 260704 60160b ff5344 fa3431 840902 d34036 da2013 c42507 1d0a03 b0505 150c05 2c1f0e 352611 221407 110c06 190f05 21250c 1e1b0a 130f03 775e35 213519 b0800 271201 201f0d 240d07 330708 260905 26110e 502a15 19100b 200c05 231800 a77c00 241200 614200 cf5e00 5f0000 280906 140d03 220f01 984c18 9c1801 b94f11 4c0e00 b24d00 2b1b00 e5b433 9ab298 93aecc 91aece 92afcf 95afd0 93b0d2 95afd2 94b1d3 96b0d3 98b2d5 95b2d4 97b4d6 97b4d6 97b4d6 98b5d7 98b5d7 99b6d8 9ab7d9 9ab7d9 9bb8da 9cb9db 9bb8da 9cb9db 9cbadc 9dbbdd 9dbbdd 9ebcde 9ebcde 9bbede 9cbdde 9fbddf a0bee0 a0bee0 9fc0e1 9fc0e1 9fc0df a0c1e0 a0c1e0 a1c2e1 a4bee1 a1c2e1 a1c2e1 a2c3e2 a2c3e2 a0c2de a5c4e3 a2c3e2 a4c5e4 a3c5e1 a3c5e1 a3c5e1 50402 27393d a3c6e4 8dc298 dff71f cdf34e 243300 1e0d00 4d6207 375110 3a3404 a2c1d6 a5c5de a6c6df a6c6df a5c5da a7c6da 538105 9b3c0c a98f20 690000 101302 2d372c 253324 212a0d a3c2d7 a4c3d8 a3c2d6 a2c1d5 a2c1d5 a1c0d4 a1c0d4 a0bfd4 a0bed6 93ba3d 94bd19 a4a406 bde65c 9cbbd0 9bbace 9bbace 99bacd 99bacd 98b9cc 97b8c9 96b7ca 95b6c9 94b5c8 94b5c8 93b4c7 92b3c6 91b2c5 8db0c4 8fb0c3 8eaec3 8dadc2 8aadc1 8aadc1 88abbf 87aabe 85aabd 85a8bc 83a8bb 82a6bc 81a5bb 80a4ba 7fa3b9 7ea2b8 7da1b7 7ca0b8 7b9fb7 7a9eb6 789eb3 779db4 769cb3 759bb2 749ab1 7399b0 7298af 7196b0 6e96af 6f94ae 6c94ad 6c94ad 6b93ac 6a92ab 6890a9 6890a9 678fa8 668ea7 658da6 648ca5 648ca5 638ba4 638ba4 628aa3 6189a2 6088a1 6088a1 6287a1 6287a1 ;
target 0.02655082137329111 0.0001394024491991885 0.01146512741119407;
[fractal_1]
mandelbulb5_constantMultiplier1_enabled false;
mandelbulb5_constantMultiplier1_stop_iterations 2;
mandelbulb5_constantMultiplier2_enabled true;
mandelbulb5_constantMultiplier2_start_iterations 1;
mandelbulb5_fabsFormulaAB1_enabled true;
mandelbulb5_fabsFormulaAB1A 1.5 0 0.667;
mandelbulb5_fabsFormulaAB1B 1.5 0 0.667;
mandelbulb5_main_rotation1 45 45 45;
mandelbulb5_mandelbulb1_enabled false;
mandelbulb5_mandelbulb1_power 5;
mandelbulb5_mandelbulb1_stop_iterations 2;
mandelbulb5_mandelbulb2_enabled true;
mandelbulb5_mandelbulb2_start_iterations 1;
[fractal_2]
[fractal_3]
[fractal_4]


Title: Re: Mandelbulber v2 - 2.05
Post by: mclarekin on September 10, 2015, 02:18:48 PM
Quote
- Added 'bailout' parameter to be able to change escape condition fractal iteration loop. By default for deltaDE it was 1e10, but lower value increases rendering speed even 5 times without loosing quality.

I need to learn more about this new feature as the render time savings can be significant.  So far I have found that with an average mandelbox type image, dropping bailout from 100 to 10, drops render time from 140s to 90s,   I think I should get into a habit of adjusting this parameter. :) :)


Title: Re: Mandelbulber v2 - 2.05
Post by: taurus on September 10, 2015, 10:09:51 PM
Reads quite promising. It might take a while (lot of other stuff on my mind) but I'll take a look.
Keep up!  ;D


Title: Re: Mandelbulber v2 - 2.05
Post by: cKleinhuis on September 15, 2015, 11:44:26 PM
wow, impressive progress!


Title: Re: Mandelbulber v2 - 2.05
Post by: Starmute on September 26, 2015, 05:22:46 AM
Is a Mac binary available?


Title: Re: Mandelbulber v2 - 2.05
Post by: Buddhi on September 26, 2015, 08:26:45 AM
Is a Mac binary available?
Not yet, but bermarte will prepare package soon.


Title: Re: Mandelbulber v2 - 2.05
Post by: Starmute on September 26, 2015, 07:07:57 PM
Great, thanks.


Title: Re: Mandelbulber v2 - 2.05
Post by: taurus on October 13, 2015, 12:06:14 AM
Finally, I got a first small practice in mandelbulber v2.05. I had some mixed emotions.
First the things, I terribly miss, or at least could not find a similar option compared to v1.x
  • automatic adjustment of raymarching multiplyer. Indispensable, especially for animation keyframe optimisation
  • the measurement tool. I often need it, to identify the corner, I am looking at. (positive/negative x,y,z. Definition of a cutting plane etc.)
  • the ability to hit undo after crashing (I made it within the first hour) to regain the last step
Maybe one of you can help, to find the lost functions.

Positive to mention
  • speed seems much faster than 1.x, but still nothing compared to openCL
  • Importing of 1.x params seems to work without glitches
  • the relative step mode (moving) seems to work efficiently for the first time, although I did not understand the behaviour of different modes yet (camera, camera+target, target). In v1.x I only used absolute steps along with the arrow buttons. only point and click navigation I mosstly used relative
All in all still some way to go yet, but some good approaches.
IMHO the biggest barrier yet is, that hybridisation seems to work completely different than in m3d. I can't see any way, to get similar results there. Not to mention the inceased rendering time.


Title: Re: Mandelbulber v2 - 2.05
Post by: quaz0r on October 13, 2015, 02:39:06 AM
as far as speed goes, when compiling for yourself you may as well add -march=native to take advantage of simd and any other instructions added to modern cpus in the last 30 years  :angel1:  i personally also roll with -Ofast, which enables -ffast-math and the like.  i dont know how buddhi feels about that.  personally i figure if a computation is going to behave badly once in a while its going to happen anyway, id rather have the speed improvements than the strict IEEE compliance.   :)


Title: Re: Mandelbulber v2 - 2.05
Post by: mclarekin on October 13, 2015, 09:27:03 AM
@ quaz0r  :hmh: :hmh: :hmh: :hmh: :hmh: :hmh:  :tongue1:

@ taurus.

automatic adjusting step multiplier. I want that too, With my little knowledge I can't see why not.

reinstatement of measurement  is planned to be implemented, (hopefully soon ).

I think their use to be 100 undo's (just small .fract files that got overwritten). And you could open them just like a normal .fract file, if that has changed, i would like to see it reinstated.

speed is much the same, still ordinary C++ double precision. Even running OpenCL on my old  cpu was faster, but then it is only single precision.  But as an "explorer" I prefer speed over precision. Buddhi had been waiting for  the latest version of OpenCL to be released, and now that it has, the implementation is high on the todo list. And that will be "goodbye C++" for me. And the Custom Formula tab should have lots of improvements ^-^

Navigation seems  crazy, but it is a more correct way of doing things, as you should be able to move towards a target with the camera able to move  independently , BUT it greatly frustrated me at first, (and together with the low speed), sent me straight back to V1.21 OpenCL.

Hybrids issues are complicated. With Hybrid Enabled there are now  options of number of iterations and transform weight. There is  a trade off between new features and render time. But those additions should not have changed the render time much.

If you make a hybrid including an Extended Formula, it will be slower as there are lots of enable checkboxes in the transform controls. Having few transforms opened  will increase speed but will still not be as fast as using the generally more basic original fractal tabs. Trade off.

In dev V2.06 the Menger_Sponge Extended tab has Mandelbox formulas included,  so you can make Menger/MBox hybrids running it in one single loop (much faster.)  With lots of parameters and new transform to use.

So what we have now with the Extended formulas is vast amount of possibilities for exploring, compared to previous versions,  but the additional features have a cost in render time (especially for Mandelbox due to the number of iterations before bailout,  Every additional enable checkbox multiplied by  the number of iterations)

I am hoping that eventually there will be a dynamic array, build-a-loop type feature, where you will be able to choose only the transforms you need. Maybe like how you can currently select and choose Primitive shapes. Then you can use only the transforms you require in your completed loop.

The difference with  M3D hybrids will be in the maths.  

BTW Mandelbulber dev V2.06 has reached a stage that it has become feasible for many people to simply download the source code and install QT Creator in a linux environment and build your own loops.  

Mainly copy and paste is required and some renaming to build your own loop. Below is the Mandelbox_Extended formula. You copy and paste in two lines for each formula  in the sequence you want. For the UI  you just copy a similar UI and do a search and replace on the fractal name. Delete anything you don’t want, and copy and paste in anything new. And there is not too much more than that. Writing your own transforms is not much harder.  

Example loop below


Code:
// -------------- MANDELBOX EXTENDED----------------------------
void Mandelbox103Iteration(CVector3 &z, CVector3 &c, int &i, const cFractal *fractal, sExtendedAux &aux)
{
//boxFold1 Original (enabled); 1
boxFoldOriginalTransform3D(fractal->transform.boxFoldOriginal1, z, i, aux);

// sphericalFold1 Original (enabled); 1
sphericalFoldOriginalTransform3D(fractal->transform.sphericalFoldOriginal1, z, i, aux);

//scale Original (enabled); 1
scaleOriginalTransform3D(fractal->transform.scaleOriginal1, z, i, aux);

//mainRotation1
mainRotationTransform3D(fractal->transform.mainRotation1, z, i);

//(fabs( z + const1A.) * const1.B) + z * constC.;
fabsAddConstantTransform3D(fractal->transform.fabsAddConstant1, z, i);

// z = z + ( c * const.); Original (enabled); 1
constantMultiplierOriginalTransform3D(fractal->transform.constantMultiplierOriginal1, z, c, i);

// z = z + const; 1
additionConstantTransform3D(fractal->transform.additionConstant1, z, i);

//  z = fabs( z + constA.) - fabs( z - constB.) + ( z * constC  + constD); 1
fabsFormulaABCDTransform3D(fractal->transform.fabsFormulaABCD1, z, i);

//MAIN FORMULA
//boxFold; 1
boxFoldTransform3D(fractal->transform.boxFold1, z, i, aux);

// sphericalFold1
sphericalFoldTransform3D(fractal->transform.sphericalFold1, z, i, aux);

//scale; 1
scaleTransform3D(fractal->transform.scale1, z, i, aux);

//mainRotation2
mainRotationTransform3D(fractal->transform.mainRotation2, z, i);

// z = z + c * const; 1
constantMultiplierTransform3D(fractal->transform.constantMultiplier1, z, c, i);

// z = z + const; 2
additionConstantTransform3D(fractal->transform.additionConstant2, z, i);

//mainRotation; 3
mainRotationTransform3D(fractal->transform.mainRotation3, z, i);

//  z = fabs( z + constA.) - fabs( z - constB.) + ( z * constC  + constD); 2
fabsFormulaABCDTransform3D(fractal->transform.fabsFormulaABCD2, z, i);

// Iteration weight z  =  (  z * const.Z) + (  zA * Const.A) + ( zB * Const.B);1
iterationWeightTransform3D(fractal->transform.iterationWeight1, z, i);
}

Cheers


, .


Title: Re: Mandelbulber v2 - 2.05
Post by: Buddhi on October 14, 2015, 07:21:18 PM
Finally, I got a first small practice in mandelbulber v2.05. I had some mixed emotions.
First the things, I terribly miss, or at least could not find a similar option compared to v1.x
  • automatic adjustment of raymarching multiplyer. Indispensable, especially for animation keyframe optimisation
  • the measurement tool. I often need it, to identify the corner, I am looking at. (positive/negative x,y,z. Definition of a cutting plane etc.)
  • the ability to hit undo after crashing (I made it within the first hour) to regain the last step
Maybe one of you can help, to find the lost functions.

Positive to mention
  • speed seems much faster than 1.x, but still nothing compared to openCL
  • Importing of 1.x params seems to work without glitches
  • the relative step mode (moving) seems to work efficiently for the first time, although I did not understand the behaviour of different modes yet (camera, camera+target, target). In v1.x I only used absolute steps along with the arrow buttons. only point and click navigation I mosstly used relative
All in all still some way to go yet, but some good approaches.
IMHO the biggest barrier yet is, that hybridisation seems to work completely different than in m3d. I can't see any way, to get similar results there. Not to mention the inceased rendering time.

- automatic adjustment of raymarching multiplyer: It's already on my TODO list.
- the measurement tool: It's also on my TODO list.
- the ability to hit undo after crashing: it already saves auto-recovery information. When you restart information there should be message with question about recovering of settings. Is this doesn't work or you prefer to have something like was in od Mandelbulber?
Just be patient. I'm rewriting everything from scratch, so it takes a lot of time to re-implement all functions which were in old Mandelbulber.

About hybridisation, I have no detailed algorithm how it works in Mandelbulb3D. It's very difficult to figure out how it works from published Mandelbulb3D code (a lot of assembly code)


Title: Re: Mandelbulber v2 - 2.05
Post by: DarkBeam on October 14, 2015, 07:45:34 PM
In mb3d formulas are executed in the selected order with the selected iteration count so you can do eg 3 iters of Mandelbox, then 1 of Menger. afterwards restarts with 3 box 1 menger etc.
Then, you have the repeat from here ... that normally is set on fo.1
So you can do 3 iters of Mandelbox, then 1 of Menger, repeat from Mandelbulb. afterwards you will calculate only mandelbulb for all following iters.
There are even iteration modifiers but it is an experimental feature
Hope it helps?
;)


Title: Re: Mandelbulber v2 - 2.05
Post by: Buddhi on October 14, 2015, 08:15:50 PM
In mb3d formulas are executed in the selected order with the selected iteration count so you can do eg 3 iters of Mandelbox, then 1 of Menger. afterwards restarts with 3 box 1 menger etc.
Then, you have the repeat from here ... that normally is set on fo.1
So you can do 3 iters of Mandelbox, then 1 of Menger, repeat from Mandelbulb. afterwards you will calculate only mandelbulb for all following iters.
Hope it helps?
;)
So it looks like it's exactly the same. How DE is calculated for hybrids? Is it just "delta DE" algorithm?


Title: Re: Mandelbulber v2 - 2.05
Post by: taurus on October 14, 2015, 08:31:45 PM
interjection
- the ability to hit undo after crashing: it already saves auto-recovery information. When you restart information there should be message with question about recovering of settings. Is this doesn't work or you prefer to have something like was in od Mandelbulber?
Didn't see such a message. Maybe has to do with the fact, that I did not install v2.05, only downloaded zip file and extracted to program folder of 2.04.

Crashed reproducible after pushing an arrow button in a quick sequence (no matter what arrow). Window stays in the state like in attached jpg and remains operational (tooltips work, arrows changes coordinates etc.) but rendering does not start (0% cpu).


Title: Re: Mandelbulber v2 - 2.05
Post by: Buddhi on October 14, 2015, 08:32:04 PM
as far as speed goes, when compiling for yourself you may as well add -march=native to take advantage of simd and any other instructions added to modern cpus in the last 30 years  :angel1:  i personally also roll with -Ofast, which enables -ffast-math and the like.  i dont know how buddhi feels about that.  personally i figure if a computation is going to behave badly once in a while its going to happen anyway, id rather have the speed improvements than the strict IEEE compliance.   :)

If anybody wants to optimize code for his machine it just enough to export CXXFLAGS=-march=native (that flags are not hardcoded in .pro file). Only which is hardcoded is -ffast-math flag (enabled by default to speed up floating point operations and doesn't make problems on different platforms).


Title: Re: Mandelbulber v2 - 2.05
Post by: Buddhi on October 14, 2015, 08:35:15 PM
interjectionDidn't see such a message. Maybe has to do with the fact, that I did not install v2.05, only downloaded zip file and extracted to program folder of 2.04.

Crashed reproducible after pushing an arrow button in a quick sequence (no matter what arrow). Window stays in the state like in attached jpg and remains operational (tooltips work, arrows changes coordinates etc.) but rendering does not start (0% cpu).

I see. The problem is that the program doesn't crash, but just hang. I will try to fix this problem.


Title: Re: Mandelbulber v2 - 2.05
Post by: zebastian on October 14, 2015, 10:15:28 PM
To the iteration / hybridization topic:

In the last mandelbulb3d package:
http://www.fractalforums.com/index.php?action=downloads;sa=view;down=52

under "PLEASE READ/condit tuts.zip" > unpacked > LYAP.jpg
there is a good explanation by luca on how mandelbulb3d works with custom alternation of formula based on iteration number.

since mandelbulber works with 4 separate formulas, i think it would be good to implement as:

checkbox to enable "iteration based custom formula application" (or some way better name)
editable List of elements:
each element nxm (repeat formula n m times)

so 1x7;3x3;1x2;2x3
becomes 7 iters of 1st fractal, 3 iters of 3rd fractal, 1 iter of 2nd fractal, 2 iters of 3rd fractal, repeat --->

what do you guys think?


Title: Re: Mandelbulber v2 - 2.05
Post by: mclarekin on October 14, 2015, 11:19:34 PM
Yes Zebastian.

My thoughts are :-

I remember that in Mandelbulber 1.## there was the options of either

repeat a sequence until end conditions are met

or

run a sequence then repeat last formula until  end conditions are met

In respect to the current MandelbulberV2 it has 4 formula tabs (V 1.## had 5)and more could be added.  More would be useful with boolean operators, however with hybrids more often means  more difficultly with quality.


Title: Re: Mandelbulber v2 - 2.05
Post by: DarkBeam on October 15, 2015, 12:02:27 AM
So it looks like it's exactly the same. How DE is calculated for hybrids? Is it just "delta DE" algorithm?
It is very likely! Jesse was a close follower of your program.
Internally, formulas never calculate bailout conditions. So I suspect - well I am almost sure... - they are fundamentally similar... even if he made lots of modifications during the years. And probably he even told me that he adopted deltaDe...
But I never checked that. Anyone can?
Cheers all :beer:
(Jesse if you ever read this... we always miss you)


Title: Re: Mandelbulber v2 - 2.05
Post by: zebastian on October 15, 2015, 12:41:52 AM
pfff, it's probably somewhere in Calc.pas
https://github.com/thargor6/mb3d/blob/master/Calc.pas

in CalcDEfull there is something about hybridization.
I am not into pascal and most certainly not into assembler :o
Maybe buddhi can have a look...


Title: Re: Mandelbulber v2 - 2.05
Post by: R-TEAM on October 19, 2015, 09:49:49 AM
Hi,

as i read this "..Even running OpenCL on my old  cpu was faster, but then it is only single precision." i think, it is not possible to get OpenCL with double precision ??

Regards
R-TEAM


Title: Re: Mandelbulber v2 - 2.05
Post by: mclarekin on October 19, 2015, 11:21:46 AM
Mandelbulber Version 1.21 has OpenCL single precision.  I think it may have been because of the limited amount of GPUs that could run double precision .

 I do not know if when OpenCl is added to MandelbulberV2, whether it will be double precision, but I hope there is a way to choose between single or double precision. For me the speed of single precision OpenCL is what I like, I assume double precision would be a bit slower.


Title: Re: Mandelbulber v2 - 2.05
Post by: quaz0r on October 19, 2015, 03:05:03 PM
s/bit/lot/


Title: Re: Mandelbulber v2 - 2.05
Post by: mclarekin on October 20, 2015, 12:29:00 AM
@quaz0r ;D

Complex not that seems :) :) :)


Title: Re: Mandelbulber v2 - 2.05
Post by: R-TEAM on October 20, 2015, 12:53:34 PM
Hi,

it depends on the GPU ...
I use pro 3D GFX with Maya and other high end programms - so i have an (new) FirePro w8100 .. enough double precision power :)

Regards
R-TEAM


Title: Re: Mandelbulber v2 - 2.05
Post by: zebastian on October 20, 2015, 01:22:34 PM
it would have been nice if double precision on gpus behaves like:
performance(dp) = (1 / 2) * performance(fp)
but this is only the case with certain high end AMD cards. Lucky you, R-TEAM  O0
with consumer cards its more like 1/3 - 1/8 or even far worse with Nvidia cards.

here is a good summary on this topic
http://arrayfire.com/explaining-fp64-performance-on-gpus/

when it gets to implementing new opencl shaders we will certainly take double precision into consideration.


Title: Re: Mandelbulber v2 - 2.05
Post by: R-TEAM on October 20, 2015, 01:42:33 PM
Hi,

mmhh .. lucky .... it depends on the definition of lucky ...
The card is VERY hugh .... it is not quiet if i need power (thinking of an water cooling system ...) and i get on the most apps
only an marginal benefits over an consumer card - in DX it is slower as the actual cosnumer top modell - and even this is much cheaper ..
In openGL it depend on the app - maya is at best 20 times as fast as with an consumer card .. this is nice - but only few apps get this hugh performance boost from the highly optimized drivers .. most times i get 1,5-2 times faster as the "same" consumer GPU.
On the good side, it is nice to have GFX on an 4K 60Hz display in 10bit ... and i get an good support from AMD if i need it..
But this to an very expensive price tag .. so i am unsure if i lucky :)  [but i need an pro card for pro gfx editing/3D constructing, so it
was more an, "i musst buy an pro card - and then, it should have POWER :) " thing ... ]

i would have more on the positive side if i can use the GPU dp power .... (i hope in the future the rendering in maya or mental ray or renderman get an boost with GPU use ..this was one of the points, the card make sense, even with this price ..)

Regards
R-TEAM


Title: Re: Mandelbulber v2 - 2.05
Post by: taurus on October 21, 2015, 10:33:58 PM
Back to my initial thoughts about hybridisation. I must admit, that it seems to be the same in both programs. Without adding any proofs, I tried with a simple Abox/Abox (Mbox/Mbox) hybrid. The results were pretty tha same, while the orientation of axis are very different. But still it is very hard to find some portable params (maybe Mbox / IFS works, but I need time to try) Even a simple Abox, _Abox, _addc hybrid, I used in many variations, fails, as the fractal constant factor is a global variable in Mandelbulber. I need time, that I don't have to investigate... :-X


Title: Re: Mandelbulber v2 - 2.05
Post by: DarkBeam on October 21, 2015, 11:28:59 PM
Add c does not modify C. Adds it to the current variables :dink:


Title: Re: Mandelbulber v2 - 2.05
Post by: mclarekin on October 22, 2015, 01:27:06 AM
Try using Mandelbox _ extended formula. Use AdditionConstant to add a constant (e.g same as Julia which is just an addition constant vector).

standard mandlebox is transforms :-       boxFold, sphericalFold, scale and then  an addition constant  which is            z =     z  + C ("original pixel coordinates")  * constantMultiplier,
but you can have transforms :-                boxFold, sphericalFold, scale and then  an addition constant   which is           z =     z  +  constant  (which is sometimes called "c" to confuse us.)
 
Previous versions of Mandelbulber you only had the choice of  those two options, and the fractals making up the hybrid all had to have the same addition constant. In fact the constantMuliplier  was limited to a single number ( not a vector).

Now you can have both these transforms included such that you can animate from standard MBox to Julia by infinite combinations.

As there are two instances of MBox transforms in Mandelbox_Extended tab, you can make a complete Mbox-mbox +c in that tab,  without having to slow things down by enabling hybrids.




Title: Re: Mandelbulber v2 - 2.05
Post by: taurus on October 22, 2015, 07:19:43 AM
Add c does not modify C. Adds it to the current variables :dink:
I know, but in bulber it is "gobal" and modifys every formula. _abox, addc is the same as abox (without underline)


Title: Re: Mandelbulber v2 - 2.05
Post by: mclarekin on October 22, 2015, 08:55:04 AM
Quote
I know, but in bulber it is "gobal" and modifys every formula

Only in the old formulas. In the new extended formulas  you have two instances of the z = z + additionConstant in each tab that you can choose to include in your iteration loop. If you enable hybrids you have more.  They are all individual CVector groups. :dink:


Title: Re: Mandelbulber v2 - 2.05
Post by: Buddhi on October 24, 2015, 06:56:44 PM
I know, but in bulber it is "gobal" and modifys every formula. _abox, addc is the same as abox (without underline)

Correct me if I understand it in wrong way. In Mandelbulb3D there are two types of formulas. Name of some of them starts from _underline. That which has underline don't add c constant after iteration?
I can see also checkbox "repeat from here". Is this repeat hybrid sequence from pointed fractal after finishing first sequence?
 


Title: Re: Mandelbulber v2 - 2.05
Post by: DarkBeam on October 24, 2015, 07:49:35 PM
Underline m3f always...
1 have no DE
2 Transform either the C constant or the vector. Some transform both. But they are useless alone. They just to that to alter subsequent formulas.

Ok? :)


Title: Re: Mandelbulber v2 - 2.05
Post by: visual.bermarte on October 26, 2015, 04:21:58 AM
Mac OS X version (from OS X 10.4 to 10.11 - 64 bit) no password required to install. Built with XCode ^-^ > http://bit.ly/1kGoQni


Title: Re: Mandelbulber v2 - 2.05
Post by: Buddhi on October 26, 2015, 07:13:16 PM
Thank you Bermarte!


Title: Re: Mandelbulber v2 - 2.05
Post by: quaz0r on October 27, 2015, 03:06:36 AM
hopefully not built with infected xcode  O0


Title: Re: Mandelbulber v2 - 2.05
Post by: visual.bermarte on October 27, 2015, 09:54:00 AM
hopefully not built with infected xcode  O0
Thanks for the heads up Quaz0r, I have downloaded it from from the developer downloads site https://developer.apple.com/xcode/downloads/ signed in with my Apple ID.


Title: Re: Mandelbulber v2 - 2.05
Post by: taurus on October 27, 2015, 10:27:45 AM
Correct me if I understand it in wrong way. In Mandelbulb3D there are two types of formulas. Name of some of them starts from _underline. That which has underline don't add c constant after iteration?
I can see also checkbox "repeat from here". Is this repeat hybrid sequence from pointed fractal after finishing first sequence?
 
Yupp, and to complete the confusion, I forgot to write the underline before _addc. As darkbeam wrote, underline formulas are incomplete, most of them are modificators. So, correct I should have written:
_a(mazing)box, _addc is the same as a(mazing)box. Most of the time, I use first variant, even when addc is set to 1,1,1. A negcscale rotbox for example can be written in a 3 slot hybrid in m3d as _abox, _addc, _rotate (not sure about order). And the repeat from here works as you expect, after first iteration (afaik).


Title: Re: Mandelbulber v2 - 2.05
Post by: taurus on November 01, 2015, 10:50:33 PM
Just to complete the compatibility report: There once was a discussion about rotation differences here http://www.fractalforums.com/mandelbulb-software/rotboxes-mandelbulber-vs-abox-platinum/msg51114/#msg51114 (http://www.fractalforums.com/mandelbulb-software/rotboxes-mandelbulber-vs-abox-platinum/msg51114/#msg51114). Jesse also provided a little tool to transform angles between programs. I use it with success, since he wrote it!


Title: Re: Mandelbulber v2 - 2.05
Post by: taurus on November 09, 2015, 10:23:06 PM
Just played around with v2.05. Is it possible, that the mandelbox-extended has no julia mode? Tried to transport a 1.x mandelbox to extended, but allways had the mandelbrot set afterwards. Didn't find something useful within the extended options. Remaining confused...  :what:


Title: Re: Mandelbulber v2 - 2.05
Post by: mclarekin on November 10, 2015, 01:25:11 AM
Julia coordinates = additionConstant x , y,  z

BTW.  I would not convert much into V2.05 extended formulas  as  V2.06 will be released soon. TheV2.05 extended formulas will not  be compatible with V2.06 except by editing .fract files. All parameters that currently start with the word mandebulb5, mandelbox103 and quaternion104 will be  replaced with the common word "transforms". (plus some other changes))


Title: Re: Mandelbulber v2 - 2.05
Post by: Buddhi on November 11, 2015, 09:12:01 AM
Just played around with v2.05. Is it possible, that the mandelbox-extended has no julia mode? Tried to transport a 1.x mandelbox to extended, but allways had the mandelbrot set afterwards. Didn't find something useful within the extended options. Remaining confused...  :what:

Extended formulas are temporary things. It was very good training for mclarekin how to do programing (he started from very basics) and user interface elements. There was great job done, because now we have a lot of elements which can be used to create many simple formulas and transforms.
Below there is actual development plan:

0. Mandelbulber 2.06 will get rich command line interface (true headless) and Rendering Queue feature. It's mostly done and now we are doing extensive debugging. I hope to release it within next two or three weeks.
1. In Mandelbulber 2.06 we will keep extended formulas as they are now, with remark that they are still in alpha phase and can be modified (removed) in near future.
2. In 2.07 I'm going to increase number of maximum number of hybrid components (for instant 10). Now is only 4 which could be too less in some cases.
3. Transforms created by mclarekin will be convert to separate formulas, which in name will have 'transform' to indicate that they cannot be used as single formulas
4. Each hybrid tab will have additional two options: add_c (user will decide if add C constant for given formula - now it's hardcoded in formulas), check_bailout (if given formula will check bailout condition)
5. We will add option to repeat hybrid loop from selected formula (now always repeat from first)
6. I'm going to dig FF to find as many applicable formulas as it is possible and implement it into Mandelbulber. I'm counting on help from FF members.

Release 2.07 will be focused on fractal formulas. Now application framework is mostly done (uhhh... it took 2 years), so it's good time for it. Before it there was too much coding to do, so I had no time to do it. I also wondered if new program structure can handle all needed features.
I'm going also to release user guide which will describe how to add new formulas to Mandelbulber code (code structure, needed tools, compilation).


Title: Re: Mandelbulber v2 - 2.05
Post by: quaz0r on November 11, 2015, 07:57:18 PM
lots of good work!  :beer:


Title: Re: Mandelbulber v2 - 2.05
Post by: mclarekin on November 12, 2015, 05:39:01 AM
Quote
I'm going also to release user guide which will describe how to add new formulas to Mandelbulber code (code structure, needed tools, compilation).

This is a very good thing. My parents can not code , I can with support, whereas my children could  easily code formulas for Mandelbulber. In the future more and more people will have the ability to code their own custom formulas. With a tool such as QT Creator,  coding your own custom formulas is already within the reach of most of us, with maybe only a little bit of guidance needed.

Quote
. In 2.07 I'm going to increase number of maximum number of hybrid components (for instant 10). Now is only 4 which could be too less in some cases.

Mandelbulb V1.##  had five hybrid slots and that was not quite enough, so 10 sounds good.  With the ever increasing number of formulas/transforms  V2.07 will give users an incredible amount of options where you can select only the transforms you want and place them in any order you want.

Quote
  3. Transforms created by mclarekin

To clarify "transforms coded by mclarekin". Most of what I have done has been breaking up and repackaging what already existed, plus adding some new stuff with assistance from M.Benesi and DarkBeam.


When V2.07 is released,  Buddhi and Zebastian will  provide me with 99%  of what I had previous had to do in OpenCL Custom Formulas, in a much more user friendly UI, . A comprehensive "build_a_loop". O0