How do you determine the appropriate step scale? I'm curious
The routine I use starts with a grid of points to get the DE for (based on initial user parameters) - the square grid is a flat plane 11 points square such that it stretches say 40*40 units and it starts 40 units from the user-specified fractal centre (normally (0,0,0)) - the grid plane being perpendicular to the line through it's initial centre and the specified fractal centre.
It calculates the DE for all points on this grid, takes the minimum value then steps a small distance in the direction from the initial grid centre to the fractal centre reducing the grid size and centring the grid (2d-wise) on the point where it found the minimum DE value last time.
It then recalculates the DE for the new set of 11*11 points and again takes the minimum. Now we have two DE values a known distance apart and (assuming that our DE calculation is correctly linear) we can work out what our correct DE scale should be.
This process is essentially repeated at steps closer and closer to the fractal, always taking the point on the grid that gives the minimum DE value as the centre of the grid for the next step and refining the scale factor. We stop when the "correct" DE value is less than the user-specified DE threshold.
Finally we assume our last value is "correct" and check values at specified distances away back along the vector which the grid travelled on i.e. we check points that are supposed to be 1e-1, 1e-2, 1e-3, 1e-4.... down to the threshold*10 and for each of these check the *maximum* error factor (values less than the "correct" distance can be ignored) which gives us a scale factor for converting our DE to an actual step value, though in practice at the moment I deliberately double the value because I haven't finished tweaking the pre-render algorithm yet, it's just WIP at the moment. (note - double the value because I use step = DE/scale).
Note that the current version uses a grid from directions +x,-x,+y,-y,+z and -z i.e it repeats the process from 6 directions.
If that's too confusing then you'd probably follow better by just looking at the code - the basic routine is the "func MJBox" near the start of my wip3D5 formula for UF.
I'm aiming to expand and refine the routine so it can get "correct" DE scales and step scale adjustments for the delta DE methods as well - and so it works with just about any fractal type.
Note that the theory behind it is that the point it settles the grid on will always be a projecting point i.e. on a convex area of the fractal, therefore it should work for the delta DE methods without contamination due to the directional nature of the delta DE.