buddhi1980 / mandelbulber2

Official repository for Mandelbulber v2
GNU General Public License v3.0
909 stars 115 forks source link

coarse quality, long rendertime in openCL #473

Closed taurus66 closed 6 years ago

taurus66 commented 6 years ago
System information (version)

The following parameter produces unusable images (ocl) and renders 3:26 on gpu and 2:31 (minutes) on cpu with my machine. Standard is a ratio of 1:6-7 gpu:cpu. Maybe theres a problem in pseudoKleinian DE. Don't know.

# Mandelbulber settings file
# version 2.13
# only modified parameters
[main_parameters]
ambient_occlusion 1,5;
ambient_occlusion_enabled true;
ambient_occlusion_quality 8;
camera 0,1561071810272031 -0,1245239294865651 0,1029301994065482;
camera_distance_to_target 0,01944890245795248;
camera_rotation 117,6912148405861 -0,7693426147962295 78,68571285529347;
camera_top -0,4580076380481483 0,8670323910263364 0,1961729757145728;
DE_factor 0,3;
delta_DE_function 3;
detail_level 2,222222222222222;
flight_last_to_render 0;
fog_color_1 0600 3f00 1500;
fog_color_2 0600 3f00 1500;
fog_color_3 0600 3f00 1500;
formula_1 103;
formula_2 103;
hybrid_fractal_enable true;
image_height 1080;
image_width 1920;
julia_mode true;
mat1_coloring_speed 0,5;
mat1_fractal_coloring_algorithm 4;
mat1_fractal_coloring_line_direction 0,7071 0,7071 0 0;
mat1_fractal_coloring_sphere_radius 0,25;
mat1_is_defined true;
mat1_surface_color_palette fe1c64 fe3152 ff6920 d0a233 82c286 66cfa6 82c286 d0a233 ff6920 fe3152;
target 0,1388874132339072 -0,1335611418909175 0,1026690559162185;
view_distance_max 10;
volumetric_fog_colour_1_distance 0,008532996207696481;
volumetric_fog_colour_2_distance 0,01706599241539296;
volumetric_fog_density 1,8;
volumetric_fog_distance_factor 0,024;
volumetric_fog_enabled true;
[fractal_1]
analyticDE_tweak_005 0;
IFS_rotation_enabled true;
mandelbox_scale -2;
transf_addition_constant_0777 0,707 0,707 0,707;
[fractal_2]
analyticDE_tweak_005 0;
IFS_rotation_enabled true;
transf_addition_constant_0777 0,707 0,707 0,707;
transf_minimum_radius_05 0,82;
[fractal_3]
IFS_rotation_enabled true;
[fractal_4]
IFS_rotation_enabled true;
mclarekin commented 6 years ago

@ Krzysztof. Analytical DE is OK, issue is only with DeltaDE. (I do not normally use Delta DE, but I have noticed this "CPU faster than GPU" behavior before, maybe it was with JosLeys pseudoK)

( BTW remember that Analytical and DeltaDE images can look different with this formula, as there is a hardcoded DE Factor in PseudoK Delta DE function, which is a variable in PseudoK Analytical DE )

On Mon, May 21, 2018 at 9:02 AM, taurus66 notifications@github.com wrote:

System information (version)

  • mandelbulber2 => 2.13-2
  • Operating System / Platform => Windows 10 64 Bit

The following parameter produces unusable images and renders 3:26 on gpu and 2:31 (minutes) on cpu with my machine. Standard is a ratio of 6-7:1 gpu:cpu. Maybe theres a problem in pseudoKleinian DE. Don't know.

`# Mandelbulber settings file version 2.13 only modified parameters

[main_parameters] ambient_occlusion 1,5; ambient_occlusion_enabled true; ambient_occlusion_quality 8; camera 0,1561071810272031 -0,1245239294865651 0,1029301994065482; camera_distance_to_target 0,01944890245795248; camera_rotation 117,6912148405861 -0,7693426147962295 78,68571285529347; camera_top -0,4580076380481483 0,8670323910263364 0,1961729757145728; DE_factor 0,3; delta_DE_function 3; detail_level 2,222222222222222; flight_last_to_render 0; fog_color_1 0600 3f00 1500; fog_color_2 0600 3f00 1500; fog_color_3 0600 3f00 1500; formula_1 103; formula_2 103; hybrid_fractal_enable true; image_height 1080; image_width 1920; julia_mode true; mat1_coloring_speed 0,5; mat1_fractal_coloring_algorithm 4; mat1_fractal_coloring_line_direction 0,7071 0,7071 0 0; mat1_fractal_coloring_sphere_radius 0,25; mat1_is_defined true; mat1_surface_color_palette fe1c64 fe3152 ff6920 d0a233 82c286 66cfa6 82c286 d0a233 ff6920 fe3152; target 0,1388874132339072 -0,1335611418909175 0,1026690559162185; view_distance_max 10; volumetric_fog_colour_1_distance 0,008532996207696481; volumetric_fog_colour_2_distance 0,01706599241539296; volumetric_fog_density 1,8; volumetric_fog_distance_factor 0,024; volumetric_fog_enabled true; [fractal_1] analyticDE_tweak_005 0; IFS_rotation_enabled true; mandelbox_scale -2; transf_addition_constant_0777 0,707 0,707 0,707; [fractal_2] analyticDE_tweak_005 0; IFS_rotation_enabled true; transf_addition_constant_0777 0,707 0,707 0,707; transf_minimum_radius_05 0,82; [fractal_3] IFS_rotation_enabled true; [fractal_4] IFS_rotation_enabled true; `

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/buddhi1980/mandelbulber2/issues/473, or mute the thread https://github.com/notifications/unsubscribe-auth/AMLZHLYJdDFLlRTQXCXFUh3bs_lIOcCgks5t0dnogaJpZM4UGOjf .

buddhi1980 commented 6 years ago

DeltaDE is quite slow with OpenCL (a lot of branches during execution) but was optimized in 2.14-dev

@taurus66 for your case I would suggest to switch to analytical DE and use DE factor = 0.92784 in first formula slot with PseudoKleinian. This will provide exactly the same appearance of the fractal. For DeltaDE there is hardcoded DE factor which was originally designed by Knighty

It should be rendered within about 10-20s

corrected settings:

# Mandelbulber settings file
# version 2.13
# only modified parameters
[main_parameters]
ambient_occlusion 1,5;
ambient_occlusion_enabled true;
ambient_occlusion_quality 8;
camera 0,1561071810272031 -0,1245239294865651 0,1029301994065482;
camera_distance_to_target 0,01944890245795248;
camera_rotation 117,6912148405861 -0,7693426147962295 78,68571285529347;
camera_top -0,4580076380481483 0,8670323910263364 0,1961729757145728;
DE_factor 0,3;
detail_level 2,222222222222222;
flight_last_to_render 0;
fog_color_1 0600 3f00 1500;
fog_color_2 0600 3f00 1500;
fog_color_3 0600 3f00 1500;
formula_1 103;
formula_2 103;
hybrid_fractal_enable true;
image_height 1080;
image_width 1920;
julia_mode true;
keyframe_last_to_render 0;
mat1_coloring_speed 0,5;
mat1_fractal_coloring_algorithm 4;
mat1_fractal_coloring_line_direction 0,7071 0,7071 0 0;
mat1_fractal_coloring_sphere_radius 0,25;
mat1_is_defined true;
mat1_surface_color_palette fe1c64 fe3152 ff6920 d0a233 82c286 66cfa6 82c286 d0a233 ff6920 fe3152;
target 0,1388874132339072 -0,1335611418909175 0,1026690559162185;
view_distance_max 10;
volumetric_fog_colour_1_distance 0,008532996207696481;
volumetric_fog_colour_2_distance 0,01706599241539296;
volumetric_fog_density 1,8;
volumetric_fog_distance_factor 0,024;
volumetric_fog_enabled true;
[fractal_1]
analyticDE_scale_1 0,92784;
IFS_rotation_enabled true;
mandelbox_scale -2;
transf_addition_constant_0777 0,707 0,707 0,707;
[fractal_2]
analyticDE_tweak_005 0;
IFS_rotation_enabled true;
transf_addition_constant_0777 0,707 0,707 0,707;
transf_minimum_radius_05 0,82;
[fractal_3]
IFS_rotation_enabled true;
[fractal_4]
IFS_rotation_enabled true;
taurus66 commented 6 years ago

Thanks a lot Buddhi. I re-walked the way I came to this parameter. And my problem was to find the right de function. Choosing it is a little confusing. After switching on hybrid fractals (by activating the second slot) Delta DE Logarithmic was active. I thought the preferred option would choose one of the other choosable options, so I chose the Delta DE pK by hand. That the preferred option activates an analytic method, that can't be chosen by hand, is surprising and not very intuitive. Maybe there is some room left, to make the choice of the right DE method/function more transparent.

buddhi1980 commented 6 years ago

What you think if I rename it to "Automatic (analytic DE if possible)"? Do you have some other proposal?

taurus66 commented 6 years ago

Great idea! But I'd say "Automatic (analytic if possible)". That we talk about DE is clear in the title. Don't know, what native speakers say.

mclarekin commented 6 years ago

I have never liked "preferred", but the bigger issue for me still is why we cannot choose/force any method and function. If a formula has both aux.DE and aux.d-rz written into the code then both can be accessed, albeit there is some wasted computing, but this can actually be minimised.

default for mbox would be shown as analytical method and standard linear DE function,(ie no "preferred") for pseudoKleinian would be analytical and pseudoKleinian linear

default is obtained from fractal_list.cpp

the calculation of optimum method for hybrids could be set up as an option only.

On Tue, May 22, 2018 at 9:30 AM, taurus66 notifications@github.com wrote:

Great idea! But I'd say "Automatic (analytic when possible)". That we talk about DE is clear in the title. Don't know, what native speakers say.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/buddhi1980/mandelbulber2/issues/473#issuecomment-390788978, or mute the thread https://github.com/notifications/unsubscribe-auth/AMLZHFdE4_Vg3I7BgnsSy0eM3LXxwN84ks5t0zH3gaJpZM4UGOjf .

taurus66 commented 6 years ago

IMHO it would indeed be the best solution, to have the coice between all options available. I think then it should also be possible to combine them in one list.

buddhi1980 commented 6 years ago

Why user should be able to select options which will not work, e.g. to lose analytic DE with logarithmic DE function? DeltaDE works in almost every case (but results should be not so good). But analytic DE works only when correct function is used. @mclarekin, I can rethink above sentence if you provide some examples where analytic DE will work when DE function is different than dedicated?

mclarekin commented 6 years ago

I will split into two issues

a) Naming.

Method = analytic or delta DE, function = linear. log, pseudoKleinian, Jos leys ( and one or two more that have yet to be implemented) The defaults come from fractal_list.cpp .

BUT can the two drop down menus/combo_boxes have a right click "reset to default" function??

b) Choosing the function in analytic mode

There are two main scenarios where analytic method is currently restricted

example log & linear

can make boxBulb types with a mandelbox ( that has aux.r-dz code added) and a mandellbulb

example linear & linear

The "pseudoKleinian" and "pseudoKleinian std DE" could have been a single formula.

I would like to be using Analytic method and mouse roll down the linear DE functions (like we can already do when using DeltaDE method)

For a single formula , the default function is generally the best but you can sometimes get interesting renders by trialing other linear DE functions.

With a hybrid of two formulas of different linearDE functions you need to be able to choose which function.

Building a formula from only transforms should have the flexibility of choosing analytic method and function type.

There are various minor issues i need to address in fractal_list.cpp that are related to me having to choose whether or not to use withoutDEFunction

A more flexible structure would allow me to test other analytic linearDE functions that OpenCL has made more feasible.

The algorithm for calculating the CalculatedMethod&_Function method and function is retained, but maybe also accessed as a button function

It has been a while since this was last discussed, since then I have learnt to be more convinced that a more flexible structure is desirable, if practical within the existing code.

HOWEVER ,The program works OK the way it is for now,

On Wed, May 23, 2018 at 3:46 AM, Krzysztof Marczak <notifications@github.com

wrote:

Why user should be able to select options which will not work, e.g. to lose analytic DE with logarithmic DE function? DeltaDE works in almost every case (but results should be not so good). But analytic DE works only when correct function is used. @mclarekin https://github.com/mclarekin, I can rethink above sentence if you provide some examples where analytic DE will work when DE function is different than dedicated?

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/buddhi1980/mandelbulber2/issues/473#issuecomment-391040998, or mute the thread https://github.com/notifications/unsubscribe-auth/AMLZHKwRur6AxlM4ppM4YFOMMYh47D3Wks5t1DLZgaJpZM4UGOjf .

taurus66 commented 6 years ago

I'm ok with that. The inner correlations are your stuff. One last question:

I would suggest to switch to analytical DE and use DE factor = 0.92784 in first formula slot with PseudoKleinian

There seem to be no obvious correlation (at least for me) between this value for the first slot and the R2 value (0.82) in the second slot, which was the initial value for adjusting the net structure. Is there a simple explanation for that or is it deeper in coding the distance estimate? Anyhow a big thanks to both of you for the effort. Cheers taurus

mclarekin commented 6 years ago

This formula is a special case, where we intentionally use a "DE factor" to control the size of the holes that appear in the rendered object.

With Analytic Method, the DE is coded within the formula, so it is easy to have the DE Factor as a parameter on the formula UI.

In DeltaDE function, a DE Factor constant of 0.92784 is hard coded elsewhere in the code, and is not so easy to access.

      There seem to be no obvious correlation (at least for me) between

this value for the first slot and the R2 value (0.82) in the second slot,

The "DE factor" in this formula is a tool for altering the raymarching maths, rather than the fractal maths. I am guessing if we used brute force rather than distance estimating, then there would be no holes.

It is all a bit weird this stuff and I have yet to figure it all out. Anyhow, below is your settings using Analytic with the 0.92784 DE factor, and it should look a lot like the DeltaDE render . Tested in CPU mode.

Mandelbulber settings file

version 2.14

only modified parameters

[main_parameters] ambient_occlusion 1.5; ambient_occlusion_enabled true; ambient_occlusion_quality 8; camera 0.1561071810272031 -0.1245239294865651 0.1029301994065482; camera_distance_to_target 0.01944890245795248; camera_rotation 117.6912148405861 -0.7693426147962295 78.68571285529347; camera_top -0.4580076380481483 0.8670323910263364 0.1961729757145728; DE_factor 0.3; detail_level 2.222222222222222; flight_last_to_render 0; fog_color_1 0600 3f00 1500; fog_color_2 0600 3f00 1500; fog_color_3 0600 3f00 1500; formula_1 103; formula_2 103; hybrid_fractal_enable true; image_height 1080; image_width 1920; julia_mode true; keyframe_last_to_render 0; mat1_coloring_speed 0.5; mat1_fractal_coloring_algorithm 4; mat1_fractal_coloring_line_direction 0.7071 0.7071 0 0; mat1_fractal_coloring_sphere_radius 0.25; mat1_is_defined true; mat1_surface_color_palette fe1c64 fe3152 ff6920 d0a233 82c286 66cfa6 82c286 d0a233 ff6920 fe3152; target 0.1388874132339072 -0.1335611418909175 0.1026690559162185; view_distance_max 10; volumetric_fog_colour_1_distance 0.008532996207696481; volumetric_fog_colour_2_distance 0.01706599241539296; volumetric_fog_density 1.8; volumetric_fog_distance_factor 0.024; volumetric_fog_enabled true; [fractal_1] analyticDE_scale_1 0.92784; analyticDE_tweak_005 0; IFS_rotation_enabled true; mandelbox_scale -2; transf_addition_constant_0777 0.707 0.707 0.707; [fractal_2] analyticDE_tweak_005 0; IFS_rotation_enabled true; transf_addition_constant_0777 0.707 0.707 0.707; transf_minimum_radius_05 0.82; [fractal_3] IFS_rotation_enabled true; [fractal_4] IFS_rotation_enabled true;

On Thu, May 24, 2018 at 12:22 AM, taurus66 notifications@github.com wrote:

I'm ok with that. The inner correlations are your stuff. One last question:

I would suggest to switch to analytical DE and use DE factor = 0.92784 in first formula slot with PseudoKleinian

There seem to be no obvious correlation (at least for me) between this value for the first slot and the R2 value (0.82) in the second slot, which was the initial value for adjusting the net structure. Is there a simple explanation for that or is it deeper in coding the distance estimate? Anyhow a big thanks to both of you for the effort. Cheers taurus

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/buddhi1980/mandelbulber2/issues/473#issuecomment-391326852, or mute the thread https://github.com/notifications/unsubscribe-auth/AMLZHOQw8rsa_chyo7ojbaW-CgcI7SRHks5t1VSjgaJpZM4UGOjf .

taurus66 commented 6 years ago

Thanks a lot. So I could not anticipate the relation. Nice to hear, because I still try to understand, what I'm doing...

buddhi1980 commented 6 years ago

Renamed from "preferred" to "automatic" in commit https://github.com/buddhi1980/mandelbulber2/commit/c17e80d632f8bdd5e62a00c3c7d937c94155f935