Finally got someting that is hopefully without discontinuities thought one have to lower fudge factor.
#info Non-Mandalay Distance Estimator.
#define providesInit
#include "DE-Raytracer.frag"
#include "MathUtils.frag"
#group Non_Mandalay
// Number of iterations.
uniform int Iterations; slider[0,10,20]
// Scale parameter. A perfect Menger is 3.0
uniform float Scale; slider[-4.0,-2,4.00]
uniform vec3 RotVector; slider[(0,0,0),(1,0,0),(1,1,1)]
// Scale parameter. A perfect Menger is 3.0
uniform float RotAngle; slider[0.00,00,360]
uniform vec3 fo; slider[(0.,0,0),(0.5,0.5,0.5),(2.,2.,2.)]
uniform vec3 g; slider[(0.,0,0),(0.1,0.1,0.1),(2.,2.,2.)]
uniform bool Serial; checkbox[false]
//Mandelbox's radial fold
uniform float MinRad2; slider[0,0.25,2.0]
// Julia
uniform bool Julia; checkbox[false]
uniform vec3 JuliaC; slider[(-2,-2,-2),(1,1,1),(2,2,2)]
mat3 rot;
float sr;
void init() {
rot = rotationMatrix3(normalize(RotVector), RotAngle);
sr = 30.;
}
//DarkBeam's "fold"... reinterpreted... it's more than a fold, much more! Just awesome!
float DBFold(vec3 p, float fo, float g){
if(p.z>p.y) p.yz=p.zy;
float vx=p.x-2.*fo;
float vy=p.y-4.*fo;
float v=abs(max(vx,vy)+fo)-fo;
float v1=max(vx-g,p.y);
v=min(v,v1);
v1=max(vx+g,2.*fo-p.y);
return min(v,v1);
}
//the coordinates are pushed/pulled in parallel
vec3 DBFoldParallel(vec3 p, vec3 fo, vec3 g){
vec3 p1=p;
p.x=DBFold(p1,fo.x,g.x);
p.y=DBFold(p1.yzx,fo.y,g.y);
p.z=DBFold(p1.zxy,fo.z,g.z);
return p;
}
//serial version
vec3 DBFoldSerial(vec3 p, vec3 fo, vec3 g){
p.x=DBFold(p,fo.x,g.x);
p.y=DBFold(p.yzx,fo.y,g.y);
p.z=DBFold(p.zxy,fo.z,g.z);
return p;
}
float DE(vec3 p)
{
vec4 JC=Julia? vec4(JuliaC,0.) : vec4(p,1.);
float r2=dot(p,p);
float dd = 1.;
for(int i = 0; i<Iterations && r2<10000.; i++){
p=abs(p);
if(Serial) p=DBFoldSerial(p,fo,g);
else p=DBFoldParallel(p,fo,g);
r2=dot(p,p);
//orbitTrap = min(orbitTrap, abs(vec4(p.x,p.y,p.z,r2)));
float t = clamp(1./r2, 1., 1./MinRad2);
p*=t; dd*=t;
p=p*Scale+JC.xyz; dd=dd*abs(Scale)+JC.w;
p=rot*p;
r2=dot(p,p);
orbitTrap = min(orbitTrap, abs(vec4(p.x,p.y,p.z,r2)));
}
#if 1
return (sqrt(r2)-sr)/dd;//bounding volume is a sphere
#else
p=abs(p); return (max(p.x,max(p.y,p.z))-sr)/dd;//bounding volume is a cube
#endif
}
#preset Default
FOV = 0.56284
Eye = -1.25806,4.3182,1.28612
Target = 0.63661,-4.73449,-1.95634
Up = -0.967592,-0.236269,0.0891205
EquiRectangular = false
FocalPlane = 1
Aperture = 0
Gamma = 1
ToneMapping = 1
Exposure = 1
Brightness = 1
Contrast = 1
Saturation = 1
GaussianWeight = 1
AntiAliasScale = 2
Detail = -3
DetailAO = -1.10789
FudgeFactor = 0.51331
MaxRaySteps = 244
Dither = 0.5
NormalBackStep = 1
AO = 0,0,0,0.89655
Specular = 0.08679
SpecularExp = 16
SpecularMax = 10
SpotLight = 1,1,1,1
SpotLightDir = -0.36066,-0.60656
CamLight = 1,1,1,0.69828
CamLightMin = 0.81301
Glow = 1,1,1,0.17808
GlowMax = 20
Fog = 0
HardShadow = 1
ShadowSoft = 20
Reflection = 0
DebugSun = false
BaseColor = 0.623529,0.623529,0.623529
OrbitStrength = 0.37743
X = 0.5,0.6,0.6,-0.22968
Y = 1,0.6,0,0.44876
Z = 0.8,0.78,1,0.15902
R = 0.4,0.7,1,-0.14184
BackgroundColor = 0.596078,0.6,0.513725
GradientBackground = 0.3
CycleColors = false
Cycles = 7.03846
EnableFloor = false
FloorNormal = 0,0,0
FloorHeight = 0
FloorColor = 1,1,1
Iterations = 12
Scale = -1.79592
RotVector = 1,1,1
RotAngle = 0
MinRad2 = 0.2695
Julia = true
JuliaC = 1.43644,0.04812,-0.9416
fo = 0.3131,0.23642,0.44728
g = 0.14512,0.10726,0.42272
Serial = false
#endpreset
#preset squares
FOV = 0.56284
Eye = -1.96287,4.04877,3.77569
Target = 0.9938,-2.37872,-3.00664
Up = -0.926068,-0.374525,-0.0461524
EquiRectangular = false
FocalPlane = 1
Aperture = 0
Gamma = 1
ToneMapping = 1
Exposure = 1
Brightness = 1
Contrast = 1
Saturation = 1
GaussianWeight = 1
AntiAliasScale = 2
Detail = -3
DetailAO = -1.10789
FudgeFactor = 0.51331
MaxRaySteps = 244
Dither = 0.5
NormalBackStep = 1
AO = 0,0,0,0.89655
Specular = 0.08679
SpecularExp = 16
SpecularMax = 10
SpotLight = 1,1,1,1
SpotLightDir = -0.36066,-0.60656
CamLight = 1,1,1,0.69828
CamLightMin = 0.81301
Glow = 1,1,1,0.17808
GlowMax = 20
Fog = 0
HardShadow = 1
ShadowSoft = 20
Reflection = 0
DebugSun = false
BaseColor = 0.623529,0.623529,0.623529
OrbitStrength = 0.37743
X = 0.5,0.6,0.6,-0.22968
Y = 1,0.6,0,0.44876
Z = 0.8,0.78,1,0.15902
R = 0.4,0.7,1,-0.14184
BackgroundColor = 0.596078,0.6,0.513725
GradientBackground = 0.3
CycleColors = false
Cycles = 7.03846
EnableFloor = false
FloorNormal = 0,0,0
FloorHeight = 0
FloorColor = 1,1,1
Iterations = 12
Scale = -2
RotVector = 1,1,1
RotAngle = 0
MinRad2 = 0.2695
Julia = true
JuliaC = 0.84536,0.29552,-0.84536
fo = 0.08946,0.40894,0.42172
g = 0,0.35332,0.37854
Serial = false
#endpreset
#preset Serial
FOV = 0.56284
Eye = -0.740185,1.57305,2.96597
Target = 1.52048,-2.3518,-5.72538
Up = -0.947187,-0.292735,-0.130931
EquiRectangular = false
FocalPlane = 1
Aperture = 0
Gamma = 1
ToneMapping = 1
Exposure = 1
Brightness = 1
Contrast = 1
Saturation = 1
GaussianWeight = 1
AntiAliasScale = 2
Detail = -3
DetailAO = -1.10789
FudgeFactor = 0.51331
MaxRaySteps = 244
Dither = 0.5
NormalBackStep = 1
AO = 0,0,0,0.89655
Specular = 0.08679
SpecularExp = 16
SpecularMax = 10
SpotLight = 1,1,1,1
SpotLightDir = -0.36066,-0.60656
CamLight = 1,1,1,0.69828
CamLightMin = 0.81301
Glow = 1,1,1,0.17808
GlowMax = 20
Fog = 0
HardShadow = 1
ShadowSoft = 20
Reflection = 0
DebugSun = false
BaseColor = 0.847059,0.847059,0.847059
OrbitStrength = 0.31907
X = 0.5,0.6,0.6,0.32156
Y = 1,0.6,0,0.65372
Z = 0.8,0.78,1,0.68904
R = 0.4,0.7,1,-0.39008
BackgroundColor = 0.596078,0.6,0.513725
GradientBackground = 0.3
CycleColors = false
Cycles = 7.03846
EnableFloor = false
FloorNormal = 0,0,0
FloorHeight = 0
FloorColor = 1,1,1
Iterations = 12
Scale = -2
RotVector = 1,1,1
RotAngle = 0
MinRad2 = 0.2695
Julia = true
JuliaC = 0.50172,0.85912,-1.189
fo = 0.45368,0.40894,0.42172
g = 0,0.35332,0.37854
Serial = true
#endpreset
#preset anotherOne
FOV = 0.56284
Eye = 1.56502,-1.86838,6.47704
Target = -0.57575,0.414304,-2.81064
Up = -0.820632,0.489478,0.294914
EquiRectangular = false
FocalPlane = 1
Aperture = 0
Gamma = 1
ToneMapping = 1
Exposure = 1
Brightness = 1
Contrast = 1
Saturation = 1
GaussianWeight = 1
AntiAliasScale = 2
Detail = -3
DetailAO = -1.10789
FudgeFactor = 0.61977
MaxRaySteps = 244
Dither = 0.5
NormalBackStep = 1
AO = 0,0,0,0.89655
Specular = 0.08679
SpecularExp = 16
SpecularMax = 10
SpotLight = 1,1,1,1
SpotLightDir = -0.36066,-0.60656
CamLight = 1,1,1,0.69828
CamLightMin = 0.81301
Glow = 1,1,1,0.17808
GlowMax = 20
Fog = 0
HardShadow = 1
ShadowSoft = 20
Reflection = 0
DebugSun = false
BaseColor = 0.847059,0.847059,0.847059
OrbitStrength = 0.31907
X = 0.5,0.6,0.6,0.32156
Y = 1,0.6,0,0.65372
Z = 0.8,0.78,1,0.68904
R = 0.4,0.7,1,-0.39008
BackgroundColor = 0.596078,0.6,0.513725
GradientBackground = 0.3
CycleColors = false
Cycles = 7.03846
EnableFloor = false
FloorNormal = 0,0,0
FloorHeight = 0
FloorColor = 1,1,1
Iterations = 12
Scale = -2
RotVector = 1,1,1
RotAngle = 0
MinRad2 = 0.2695
Julia = true
JuliaC = -2,1.4914,-0.87284
fo = 0.65814,0.19808,0.34504
g = 0.39116,0.57414,0.32808
Serial = false
#endpreset
#preset anotherOneOne
FOV = 0.56284
Eye = 2.16929,5.4393,0.457666
Target = -1.47387,-3.61201,-0.467417
Up = 0.14205,-0.160743,0.976721
EquiRectangular = false
FocalPlane = 1
Aperture = 0
Gamma = 1
ToneMapping = 1
Exposure = 1
Brightness = 1
Contrast = 1
Saturation = 1
GaussianWeight = 1
AntiAliasScale = 2
Detail = -3
DetailAO = -1.10789
FudgeFactor = 0.51331
MaxRaySteps = 244
Dither = 0.5
NormalBackStep = 1
AO = 0,0,0,0.89655
Specular = 0.08679
SpecularExp = 16
SpecularMax = 10
SpotLight = 1,1,1,1
SpotLightDir = -0.36066,-0.60656
CamLight = 1,1,1,0.69828
CamLightMin = 0.81301
Glow = 1,1,1,0.17808
GlowMax = 20
Fog = 0
HardShadow = 1
ShadowSoft = 20
Reflection = 0
DebugSun = false
BaseColor = 0.623529,0.623529,0.623529
OrbitStrength = 0.37743
X = 0.5,0.6,0.6,-0.22968
Y = 1,0.6,0,0.44876
Z = 0.8,0.78,1,0.15902
R = 0.4,0.7,1,-0.14184
BackgroundColor = 0.596078,0.6,0.513725
GradientBackground = 0.3
CycleColors = false
Cycles = 7.03846
EnableFloor = false
FloorNormal = 0,0,0
FloorHeight = 0
FloorColor = 1,1,1
Iterations = 12
Scale = -2
RotVector = 1,1,1
RotAngle = 0
MinRad2 = 0.25
Julia = true
JuliaC = 1,-1,1
fo = 0.754,0.28116,0
g = 0.80758,0.0694,0.4164
Serial = true
#endpreset