Love the LLI-colouring method of MB3D, which seems based on the absolute difference between the length of the current and previous vector, multiplied by an abitrary factor.

Tried to implement something close to that (not the length though, but vector increase) into FragM, below the code with Pupukuusikkos Spiralbox. Goes really well with some formulas with quite reasonable control on saturation etc. and not so well with others. Very probably could be done from ray-tracer.

Next to changing OrbitStrength also test with other BaseColors.

Will also add to Code Snippets

`#info amazing box variant by pupukuusikko,`

#info julias wih grailish spirals

#info adjust JuliaC.y for swirling ride

#info DE could use some help

#define providesColor //tell FragM to use custom colours

//#define providesInit

//#define WANG_HASH

//#include "DE-Raytracer.frag"

#define USE_IQ_CLOUDS

#define KN_VOLUMETRIC

#define USE_EIFFIE_SHADOW

#define MULTI_SAMPLE_AO

//uniform float time;

#include "MathUtils.frag"

#include "DE-Kn2cr11.frag"

#group Kleinian_test

uniform int Box_Iterations; slider[1,50,100]

uniform bool Julia; checkbox[false]

uniform vec3 JuliaC; slider[(-2,-2,-2),(0,0,0),(2,2,2)]

uniform float fold; slider[-1.,0.25,5.]

//add the following uniforms to the Coloring-tab

#group Coloring

//multiplier for the division

uniform vec3 LVI; slider[(-1,-1,-1),(0,0,0),(1,1,1)]

//added to LLI to give more possibilities

uniform vec3 LVI2; slider[(-1,-1,-1),(0,0,0),(1,1,1)]

//determines for how many iterations the difference between the vectors should be calculated

uniform int LightIter; slider[0,1,100]

//choose between lightold/lightnew or lightnew/lightold

uniform bool RevertDiv; checkbox[false]

//in some cases/formulas I found it beneficial to add this

uniform bool AddOrbitStrength; checkbox[false]

//previous vector

vec3 lightold;

//current vector

vec3 lightnew;

float dot2(vec3 z){ return dot(z,z);}

float minibox(vec3 z)

{

vec3 pos = z;

lightold=z; //initialize lightold, necessary in some formulas

float DF = 1.0;

for (int i = 0; i < Box_Iterations ; i++)

{

if (i<LightIter) {lightold=z;} else {lightold=lightold;}; //get old vector, stop at LightIter-value

z.xyz = clamp(z.xyz, -fold, fold)*2. - z.xyz;

float r =dot2(z);

if (r< 0.001 || r> 1000.) break;

z/=-r;

DF/= r;

z.xz*=-1.;

z+=(Julia ? JuliaC : pos);

if (i<LightIter) {lightnew=z;} else {lightnew=lightnew;}; //get new vector, stop at LightIter-value

orbitTrap = min(orbitTrap, abs(vec4(z,dot(z,z))));//For colouring

}

float r = length(z); //(dot2(z));

//return (0.5*sqrt(r))/(abs(DF)+1.);

return (0.5*(sqrt(0.1*r)))/(abs(DF)+1.);

}

float DE(vec3 p) {

return minibox(p);

}

//function that is needed by providesColor and will get the absolute division factor of lightold and lightnew,

//multiply it with the sum of LVI and LVI2, conditional reversion of the division and addition of Orbitstrength

vec3 baseColor(vec3 p, vec3 q){

if (RevertDiv) {q=abs(lightnew/lightold);} else {q=abs(lightold/lightnew);};

q*=(LVI+LVI2);

if (AddOrbitStrength) q+=OrbitStrength;

return q;

}

#preset Default

FOV = 0.3098291

Eye = -5.950135,-3.788089,0.5820105

Target = -5.724489,1.622657,-0.6966331

Up = 0.1359288,0.2085676,0.9065685

Gamma = 2

ToneMapping = 5

Exposure = 1

Brightness = 1

Contrast = 1

Saturation = 1

GaussianWeight = 1

AntiAliasScale = 2

Bloom = false

BloomIntensity = 0.25

DepthToAlpha = false

Detail = -3.434687

FudgeFactor = 1

DetailAO = -0.9230769

coneApertureAO = 0.4987437

maxIterAO = 20

FudgeAO = 0.4975962

AO_ambient = 1

AO_camlight = 1

AO_pointlight = 1

AoCorrect = 0

Specular = 1.4

SpecularExp = 16

CamLight = 1,1,1,0.3227273

AmbiantLight = 1,0.9686275,0.8980392,0.1206497

Reflection = 0.4392157,0.4392157,0.4392157

ReflectionsNumber = 1

SpotGlow = true

LightSize = 0

LightFallOff = 0.0992108

LightGlowRad = 0

LightGlowExp = 2.7143

HardShadow = 1

ShadowSoft = 4.943052

BaseColor = 0.5137255,0.6392157,0.6941177

OrbitStrength = 0.1449438

X = 0,1,0.164706,1

Y = 1,0.533333,0,1

Z = 0.603922,0.164706,0.776471,1

R = 0.262745,0.482353,1,1

BackgroundColor = 0.4235294,0.6470588,0.9607843

GradientBackground = 0

CycleColors = true

Cycles = 19.93994

EnableFloor = true NotLocked

FloorNormal = 0,0,1

FloorColor = 0.5882353,0.5137255,0.4627451

HF_Fallof = 0.659051

HF_Const = 0

HF_Intensity = 0.4944072

HF_Dir = -0.01176,0,1

HF_Offset = -10

HF_Color = 0.670588,0.807843,0.890196,0.3034091

HF_Scatter = 1.930804

HF_Anisotropy = 0.847059,0.847059,0.847059

HF_CastShadow = false

CloudScale = 0.1

CloudTops = -5.442177

CloudBase = -8.072562

CloudDensity = 1

CloudRoughness = 1

CloudContrast = 1

CloudColor = 0.65,0.68,0.7

SunLightColor = 0.7,0.5,0.3

FocalPlane = 0,2174191

Aperture = 0

InFocusAWidth = 0.9896433

DofCorrect = true

ApertureNbrSides = 5

ApertureRot = 0

ApStarShaped = false

BloomPow = 2

BloomStrong = 1

RefineSteps = 4

MaxDistance = 93.85863

SpotLight = 1,1,1,4.074505

ShadowBlur = 0

perf = false

SSS = false

sss1 = 0.1

sss2 = 0.3409338

HF_FogIter = 1

EnCloudsDir = true NotLocked

CloudFlatness = 0 NotLocked

CloudColor2 = 0.07,0.17,0.24 NotLocked

Cloudvar1 = 0.99 NotLocked

Cloudvar2 = 1 NotLocked

CloudIter = 5 NotLocked

CloudBgMix = 1 NotLocked

FloorHeight = 0

AutoFocus = false

BloomTaps = 4

MaxRaySteps = 354

Dither = 0.5

NormalBackStep = 1

LightPos = -4.080718,-7.757847,3.408072

Box_Iterations = 60

Julia = true

JuliaC = -0.017316,-0.5584416,0.034632

fold = 1.33833

LVI = -0.010661,-0.4946695,0.554371

LightIter = 36

RevertDiv = false

AddOrbitStrength = false

LVI2 = 0.6416309,0.6373391,-1

#endpreset