Very nice, Syntopia!
I tried your latest build and the output is just perfect. Thanks!
I also did some comparisons to your latest current stable build (the one we were using before all the recent mods with the great output - 0.9.12) and it matches it as well. The only difference was that I had to crank the AOScale to maximum value of 5.0 to match the output of of 0.9.12. Otherwise, the default AOScale seems to be too low.
Thank you for doing these improvements. I also did a huge tile render with yesterday's release testing out the padding and it worked beautifully. I'm assuming that the amount of padding is directly related to size of the AOScale, right?
Oh, and could you briefly explain (in layman's terms) what the CentralDifferences does?
The results are awesome.
On another topic altogether, tonight I also tried to add the coloring you described for Benesi to Kali's example. I followed your instructions but for some reason, I don't get any color variations. This is what I've done:
// Output generated from file: C:/Fractales/Fragmentarium Windows Binary v0.9.12b/Examples/rotajulia3d.frag
// Created: lun 1. oct 01:36:29 2012
#info Mandelbulb without Distance Estimator
#define providesColor
#define providesInside
#include "Brute-Raytracer.frag"
#include "MathUtils.frag"
#include "Complex.frag"
#group Mandelbulb
// Number of fractal iterations.
uniform int Iterations; slider[0,9,100]
// Number of color iterations.
uniform int ColorIterations; slider[0,3,100]
uniform int ColorIterationsMin; slider[0,1,100]
// Mandelbulb exponent (8 is standard)
uniform float Power; slider[0,8,16]
// Bailout radius
uniform float Bailout; slider[0,5,3000]
uniform float Scale; slider[0,1,2]
// Alternate is slightly different, but looks more like a Mandelbrot for Power=2
uniform bool AlternateVersion; checkbox[false]
uniform vec3 RotVector; slider[(0,0,0),(0,1,0),(1,1,1)]
uniform float RotAngle; slider[0.00,0,180]
uniform bool Julia; checkbox[false]
uniform vec3 JuliaC; slider[(-2,-2,-2),(0,0,0),(2,2,2)]
// Compute the distance from `pos` to the Mandelbox.
mat3 rot;
vec3 cycle(vec3 c, float s) {
return vec3(0.5)+0.5*vec3(cos(s*Cycles+c.x),cos(s*Cycles+c.y),cos(s*Cycles+c.z));
}
vec3 color(vec3 p) {
orbitTrap = vec4(10000.0);
inside(p);
orbitTrap.w = sqrt(orbitTrap.w);
vec3 orbitColor;
if (CycleColors) {
orbitColor = cycle(X.xyz,orbitTrap.x)*X.w*orbitTrap.x +
cycle(Y.xyz,orbitTrap.y)*Y.w*orbitTrap.y +
cycle(Z.xyz,orbitTrap.z)*Z.w*orbitTrap.z +
cycle(R.xyz,orbitTrap.w)*R.w*orbitTrap.w;
} else {
orbitColor = X.xyz*X.w*orbitTrap.x +
Y.xyz*Y.w*orbitTrap.y +
Z.xyz*Z.w*orbitTrap.z +
R.xyz*R.w*orbitTrap.w;
}
//vec3 color = mix(BaseColor, 3.0*orbitColor, OrbitStrength);
return orbitColor;
}
bool inside(vec3 pos) {
vec3 f;
vec3 z=pos, p,m=vec3(1,1,1);
vec2 z1,z2;
float r;
float dr=1.0;
int i=0;
r=length(z);
//z*=rot;
rot=rotationMatrix3(normalize(RotVector),RotAngle);
vec3 J=JuliaC;
while (i<Iterations) {
if (i>ColorIterationsMin && i<ColorIterations) {
orbitTrap=min(orbitTrap,vec4(z.x*z.x,z.y*z.y,z.z*z.z,dot(z,z)));
}
z=vec3(cMul(z.xy,z.xy),z.z);
z*=rot;
z*=Scale;
z+=J;
r=length(z);
i++;
if ( r>Bailout) {
return false;
}
}
return true;
}
I have also noticed that when you increase the OrbitStrength even a smidge past 0.0, everything blows out and you need to set the light intensity and specularity to extremely small values such as 0.00010. Is this normal?
Thanks,
Rich