Attempt at voronoi tiles.

This commit is contained in:
IntegratedQuantum 2022-12-10 16:42:56 +01:00
parent a1dcfd6ebf
commit 909e9fe0ef
2 changed files with 35 additions and 11 deletions

View File

@ -19,10 +19,10 @@
"simplex3Wavelength": [1.0, 1.0, 1.0], "simplex3Wavelength": [1.0, 1.0, 1.0],
"simplex3Weight": 0.0, "simplex3Weight": 0.0,
"worleyWavelength": [4.0, 4.0, 4.0], "worleyWavelength": [6.0, 6.0, 6.0],
"worleyWeight": 4, "worleyWeight": -5,
"brightnessOffset": -3.0, "brightnessOffset": 1.2,
"randomness": 0, "randomness": 0.5,
} }

View File

@ -67,23 +67,47 @@ float length2(vec3 i) {
float worley(vec3 v) { float worley(vec3 v) {
ivec3 start = ivec3(floor(v - 0.5)); ivec3 start = ivec3(floor(v - 0.5));
ivec3 maxSeed = ivec3(0);
vec3 maxDistVec = vec3(0);
float totalMax = 1.0; float totalMax = 1.0;
float secondBiggest = 1.0;
for(int x = 0; x <= 1; x++) { for(int x = 0; x <= 1; x++) {
for(int y = 0; y <= 1; y++) { for(int y = 0; y <= 1; y++) {
for(int z = 0; z <= 1; z++) { for(int z = 0; z <= 1; z++) {
ivec3 integerPos = ivec3(x, y, z) + start; ivec3 integerPos = ivec3(x, y, z) + start;
ivec3 seed = random3to3(integerPos); ivec3 seed = random3to3(integerPos);
vec3 pos = vec3(integerPos) + vec3(uvec3(seed)/(65536.0*65536.0)); vec3 pos = vec3(integerPos) + vec3(uvec3(seed)/(65536.0*65536.0))*0.5;
float dist1 = length2(pos - v); vec3 distVec = pos - v;
seed = random3to3(integerPos); float dist1 = length2(distVec);
pos = vec3(integerPos) + vec3(uvec3(seed)/(65536.0*65536.0));
float dist2 = length2(pos - v);
totalMax = min(totalMax, min(dist1, dist2)); if(totalMax > dist1) {
secondBiggest = totalMax;
totalMax = dist1;
maxSeed = seed;
maxDistVec = distVec;
} else if(secondBiggest > dist1) {
secondBiggest = dist1;
}
seed = random3to3(integerPos);
pos = vec3(integerPos) + 0.5 + vec3(uvec3(seed)/(65536.0*65536.0))*0.5;
distVec = pos - v;
float dist2 = length2(distVec);
if(totalMax > dist2) {
secondBiggest = totalMax;
totalMax = dist2;
maxSeed = seed;
maxDistVec = distVec;
} else if(secondBiggest > dist2) {
secondBiggest = dist2;
}
} }
} }
} }
return totalMax; vec3 direction = normalize(vec3(random3to3(maxSeed)));
return float((secondBiggest - totalMax) > 0.15) * (1 + dot(direction, maxDistVec))/2;
} }
float simplex(vec3 v){ float simplex(vec3 v){