-
Notifications
You must be signed in to change notification settings - Fork 1
/
PseudoKleinian_3D_Quaternion_Julia_1.frag
214 lines (194 loc) · 4.58 KB
/
PseudoKleinian_3D_Quaternion_Julia_1.frag
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
#info Knighty's Pseudo Kleinian (Scale 1 JuliaBox + Something)
#info Modified by mclarekin for DE test
#info http://www.fractalforums.com/fragmentarium/fragmentarium-an-ide-for-exploring-3d-fractals-and-other-systems-on-the-gpu/msg81393/#msg81393
#include "MathUtils.frag"
#include "DE-Raytracer.frag"
#group 3D Quaternion Julia
// used once as a pre-transform
// deforms twists part of the fractal
uniform vec3 Quat_Scales; slider[(0,0,0),(1,2,2),(5,5,5)]
uniform vec3 jC; slider[(-2,-2,-2),(0,0,0),(2,2,2)]
uniform vec3 origPtScale; slider[(-2,-2,-2),(0,0,0),(2,2,2)]
uniform float wSeed; slider[0,0,4]
#group PseudoKleinian
#define USE_INF_NORM
uniform int MI; slider[0,20,30]
// Bailout
//uniform float Bailout; slider[0,20,1000]
uniform float Size; slider[0,0.5,4]
uniform vec3 CSize; slider[(0,0,0),(0.7,0.7,0.7),(4,4,4)]
uniform vec3 C; slider[(-4,-4,-4),(0,0,0),(4,4,4)]
uniform float TThickness; slider[0,0.01,2]
uniform float DEoffset; slider[0,0,0.01]
uniform float PK_holes; slider[0,1.0,1.2]
uniform vec3 Offset; slider[(-1,-1,-1),(0,0,0),(1,1,1)]
float DE(vec3 pos) {
vec3 p = pos;
vec3 origPt=vec3(p*origPtScale);
vec3 z=p;
float r = length(z);
float Dp = 1.0;
z = vec3 (z.x * z.x - z.y * z.y - z.z * z.z - wSeed, z.x * z.y, z.x * z.z);
z *= Quat_Scales;
Dp = Dp * 2.0 * r; // + quatDE tweak
z += jC;
p = z.xyz + origPt;
vec3 ap=p+1.;
for(int i=0;i<MI && ap!=p;i++)
{
ap=p;
p=2.*clamp(p, -CSize, CSize)-p;
float r2=dot(p,p);
orbitTrap = min(orbitTrap, abs(vec4(p,r2)));
float k = max( Size / r2, 1.0);
p *= k;
Dp *= k + 0.05;
p += C;
}
float rxy = sqrt(p.x * p.x + p.y * p.y);
return
max(rxy - PK_holes, abs(rxy * p.z) / r) / abs(Dp);
}
#preset Default
FOV = 0.62536
Eye = 2.474865,-1.58739,0.154995
Target = -5.680257,1.760158,1.05863
Up = 0.1316731,0.5439209,-0.8266509
EquiRectangular = false
AutoFocus = false
FocalPlane = 1
Aperture = 0
Gamma = 2.08335
ToneMapping = 3
Exposure = 0.6522
Brightness = 1
Contrast = 1
Saturation = 1
GaussianWeight = 1
AntiAliasScale = 2
DepthToAlpha = false
ShowDepth = false
DepthMagnitude = 1
Detail = -2.84956
DetailAO = -1.35716
FudgeFactor = 1
MaxDistance = 1000
MaxRaySteps = 500
Dither = 0.51754
NormalBackStep = 1
AO = 0,0,0,0.85185
Specular = 1
SpecularExp = 16.364
SpecularMax = 10
SpotLight = 1,1,1,1
SpotLightDir = 0.63626,0.5
CamLight = 1,1,1,1.53846
CamLightMin = 0.12121
Glow = 1,1,1,0.43836
GlowMax = 52
Fog = 0
HardShadow = 0.35385
ShadowSoft = 12.5806
QualityShadows = false
Reflection = 0
DebugSun = false
BaseColor = 1,1,1
OrbitStrength = 0.14286
X = 1,1,1,1
Y = 0.345098,0.666667,0,0.02912
Z = 1,0.666667,0,1
R = 0.0784314,1,0.941176,-0.0194
BackgroundColor = 0.607843,0.866667,0.560784
GradientBackground = 0.3261
CycleColors = false
Cycles = 4.04901
EnableFloor = false
FloorNormal = 0,0,0
FloorHeight = 0
FloorColor = 1,1,1
Quat_Scales = 1,2,2
jC = 0,0,0
origPtScale = 0,0,0
wSeed = 0
MI = 20
Size = 0.5
CSize = 0.7,0.7,0.7
C = 0,0,0
TThickness = 0.01
DEoffset = 0
PK_holes = 1
Offset = 0,0,0
#endpreset
#preset ex1
FOV = 0.62536
Eye = 1.67443213,-1.19795139,0.275106564
Target = -5.98776463,3.026139,1.68096923
Up = 0.072146318,-0.13793102,-0.898121611
EquiRectangular = false
AutoFocus = false
FocalPlane = 1
Aperture = 0
Gamma = 2.08335
ToneMapping = 3
Exposure = 0.6522
Brightness = 1
Contrast = 1
AvgLumin = 0.5,0.5,0.5
Saturation = 1
LumCoeff = 0.2125,0.7154,0.0721
Hue = 0
GaussianWeight = 1
AntiAliasScale = 2
DepthToAlpha = false
ShowDepth = false
DepthMagnitude = 1
Detail = -2.84956
DetailAO = -1.35716
FudgeFactor = 1
MaxDistance = 1000
MaxRaySteps = 500
Dither = 0.51754
NormalBackStep = 1
AO = 0,0,0,0.85185
Specular = 1
SpecularExp = 16.364
SpecularMax = 10
SpotLight = 1,1,1,1
SpotLightDir = 0.63626,0.5
CamLight = 1,1,1,1.53846
CamLightMin = 0.12121
Glow = 1,1,1,0.43836
GlowMax = 52
Fog = 0
HardShadow = 0.35385
ShadowSoft = 12.5806
QualityShadows = false
Reflection = 0
DebugSun = false
BaseColor = 1,1,1
OrbitStrength = 0.72508592
X = 1,1,1,1
Y = 0.345098,0.666667,0,0.02912
Z = 1,0.666667,0,1
R = 0.0784314,1,0.941176,-0.0194
BackgroundColor = 0.607843,0.866667,0.560784
GradientBackground = 0.3261
CycleColors = false
Cycles = 4.04901
EnableFloor = false
FloorNormal = 0,0,0
FloorHeight = 0
FloorColor = 1,1,1
origPtScale = 0,0,0
wSeed = 3.31914896
Size = 0.5
CSize = 0.7,0.7,0.7
C = 0,0,0
TThickness = 0.01
DEoffset = 0
PK_holes = 1
Offset = 0,0,0
Quat_Scales = 1,2,2
jC = 0.7578348,-0.8262108,-0.16524216
MI = 20
#endpreset