Welcome to Fractal Forums

Fractal Software => Fragmentarium Gallery => Topic started by: Sabine on November 20, 2016, 05:21:04 PM




Title: MixPinsky4ex reciprocalX3b
Post by: Sabine on November 20, 2016, 05:21:04 PM
Fragmentarium MixPinsky4ex reciprocalX3b

(http://nocache-nocookies.digitalgott.com/gallery/19/10093_20_11_16_5_21_04.png)

http://www.fractalforums.com/index.php?action=gallery;sa=view;id=19779

 88) Mixpinski4ex/reciprocalX3b?  88)


Title: Re: MixPinsky4ex reciprocalX3b?
Post by: DarkBeam on November 20, 2016, 10:11:00 PM
I like! And also you can do some var swizzle like this right after the recip (or before)
p.xyzw = p.yxwz;
There are lots of combines to be tried, but is effettive until you miss the 4d rotation :)


Title: Re: MixPinsky4ex reciprocalX3b?
Post by: Sabine on November 20, 2016, 11:04:21 PM
(http://st.deviantart.net/emoticons/w/worships.gif) Thank you, Luca!  :happy:
Will try the swizzle thingy :}
But what do you mean with it being effective until I miss 4d rotation? It won't work with 4d rotation? Or it will be more effective with 4d rotation?


Title: Re: MixPinsky4ex reciprocalX3b?
Post by: mclarekin on November 21, 2016, 01:56:08 AM
My two cents. :)

4D swizzling combined with 3D rotations, misses out a layer of combinations (those involving rot.w)

The extent of the combinations becomes infinitely more infinte, when the extra three rotations input variables  (we now have six infinity rot inputs).

The formula without any rotations is very limited when comparing different layers of infinity.

With the other parameters we are moving out or in from the origin (changing the vector length), with rotations we are maintaining the vector length.

BTW

When you apply  two abs() formulas in a loop, what better than a rotation in between them, to map some points back to neg values




Title: Re: MixPinsky4ex reciprocalX3b?
Post by: mclarekin on November 21, 2016, 04:43:54 AM


      if(Zw) r2=z.x*z.x+z.y*z.y+z.z*z.z + z.w * z.w; // bailout criteria, and I added in the z.w part to see if it  necessary
      else  r2=z.x*z.x+z.y*z.y+z.z*z.z;    
      if(i>=RotStart) z.xyz*=fracRotation2;   
      if(reciprocalX3b)    z.x = sign(z.x) * (1/Limiter1) + (1/Limiter2) - (1/(abs(mul1*z.x)+ Limiter1)) + (1/(mul2  z.x*z.x+ Limiter2));

Comments

In a "standard" sort of loop. r2 = z.x*z.x+z.y*z.y+z.z*z.z;  is the last function before if( r> bailout stop). That means we are tesing the vect length after the final mapping of z.
 However you can have it anywhere, and have more than one bailout check in a loop. The number of bailout checks and their placement is yet another "variable parameter" in finding new variations.

The reciprocalX3b  if(reciprocalX3b)    z.x = sign(z.x) * (1/Limiter1) + (1/Limiter2) - (1/(abs(mul1*z.x)+ Limiter1)) + (1/(mul2 * z.x*z.x+ Limiter2));
 
anthing goes if it works.

 I would have expected  z.x =sign(z.x)  *  ( all the sub-functions);

if so (all the sub functions ) =  (number/number  + number/number  +   1/ (abs  etc  ... )  +    a scaled inverse squared plus offset)

You can:    float sabi   =  (number/number  + number/number )  in the initial conditions before the loop and save recalculating it with every iteration.

or I would probably just replace     (number/number  + number/number )    with a single float number slide (-5,0,5) and work it that way




 


Title: Re: MixPinsky4ex reciprocalX3b?
Post by: Sabine on November 21, 2016, 08:01:09 AM
@mclarekin You really make my poor brain creek on this morning:} Thank you for that! :)
Please pardon me, as I do not understand all yet (but I think I get the general idea), so much to learn so little time;)

First the zwizzle thing: It is an existing term! Really thought maybe Luca had it made up, such a wonderful word ;D
I was presuming we'd (well ok, you and Luca, and Crist-JRoger, (still way too intimidating yet for me  ;D)) get the 4d-rotation properly going some day, then w will be playing along nicely, won't it?
The usefulness rotation between two abs()-formulas in a loop I get, I hope I will remember!

Then the reciprocal: I have already last night added another transform (_invcylindrical) into the mix (a very popular combination in mb3d, gives nice 'rooms', though in Fragm the lighting inside objects (not the proper fractalish 'inside' but outside surfaces inside the fractal is a drama ;D Placing the two transforms before the loop will let them behave like pre-transforms. To be proper transforms the need to be placed within the loop, I always thought?

Quote
a scaled inverse squared plus offset
Of the whole thing? Or one of the numbers.. or whatever I want?  ;D

Just for fun I have already changed things within the code of the line, as you say: anything goes, and it is really behaving quite nicely when altered a bit here and there.

BTW had the thumbs-up from Luca, it's a proper reciprocalX3b :joy:



Title: Re: MixPinsky4ex reciprocalX3b?
Post by: mclarekin on November 21, 2016, 09:22:13 AM
My wording is not always the best :), so understand what you can, but always feel free to ask for more clarification.

The std 4D rot is just a matter of dedicating some time, but I get sidetracked and have been doing some exploring.

_invCylindrical is amazing, I have yet to really test it out, but I was getting interesting stuff with both linear  and bulb_type formulas. I updated the Benesi T1 Pinetree by including it as the last transform in the loop.

One way that I construct a loop is by having

Iter 0 - formula1
iter 1 - formula2

iter 2 to termination - formula 3 (or a sequence of formulas.)

so in OpenCL i often move the initial single iteration formulas into initial conditions and  are a pretransform.

swizzle is a word i read here, so it may be a forum only word ;D part of the secret language of fractal coders  :) but it aptly describes axis swapping.

@ crist.  The inverse 3D  heading to infinity is a weird place compared to normal fractal space, I have not learnt much about it





 


 


Title: Re: MixPinsky4ex reciprocalX3b?
Post by: DarkBeam on November 21, 2016, 09:56:55 AM
https://www.opengl.org/wiki/GLSL_Optimizations#Use_Swizzle

How dare you not trusting me  :evil1: :angry: :-*


Title: Re: MixPinsky4ex reciprocalX3b
Post by: Sabine on November 21, 2016, 07:16:03 PM
@Luca (http://st.deviantart.net/emoticons/r/rofl.gif)  :-*

I now also read in that URL about "Get MAD". Is this next step for me? :}

@mclarekin Reading Luca's link about GLSL-optimizations together with what you wrote, something begins to dawn on me... slowly ;) Will have to really dive into this to fully understand and be able to apply, but thanks again!


Title: Re: MixPinsky4ex reciprocalX3b
Post by: Madman on November 21, 2016, 09:14:56 PM
"Get MAD".

You wish... That's not something easily achievable for just anyone  :fiery:. It take years of training!  :dink:


Title: Re: MixPinsky4ex reciprocalX3b
Post by: Sabine on November 21, 2016, 09:29:24 PM
@Madman I read the how-to and indeed, how disappointing, no soft-padded white cells before the 8th semester! ;D


Title: Re: MixPinsky4ex reciprocalX3b
Post by: DarkBeam on November 21, 2016, 10:38:49 PM
Also @mclarekin when you use reciprocals the only rotations that don't result in fuzzy stuff are multiples of 90° essentially those can always be obtained swizzling and changing signs (if desired) :) try!


Title: Re: MixPinsky4ex reciprocalX3b
Post by: mclarekin on November 22, 2016, 02:19:40 AM
@ Professor Dark.  Will try in openCL, (MandelbulberV2 maths has yet to  include swizzlablity functions :sad1:)
 
The other optimisations are good too, - mad, mix & dot. 

@ madman, In New Zealand,  madness is a result of generations of careful selective breeding,  and now I find in Europe  you can become mad by simply  attending a university.

I can picture your diploma. a "masters  in  Madness, 1st degree honours"  ( I am assuming you would have been top of the class.)