From e2c630daae8f68a1ff77937dbb5114f62c470b81 Mon Sep 17 00:00:00 2001 From: Digvijaysinh Gohil Date: Fri, 13 Oct 2023 15:49:48 +0530 Subject: [PATCH] Voronoi algorithm improved --- .../Procedural/Noise/Voronoi.gdshaderinc | 23 +++++++++---------- 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/addons/ShaderLib/Procedural/Noise/Voronoi.gdshaderinc b/addons/ShaderLib/Procedural/Noise/Voronoi.gdshaderinc index ecbc336..36213c8 100644 --- a/addons/ShaderLib/Procedural/Noise/Voronoi.gdshaderinc +++ b/addons/ShaderLib/Procedural/Noise/Voronoi.gdshaderinc @@ -1,24 +1,23 @@ void voronoi_noise(vec2 uv, float cell_density, float angle_offset, out float output, out float cells){ - vec2 g = floor(uv * cell_density); - vec2 f = fract(uv * cell_density); - float t = 8.0; - vec3 res = vec3(8.0, 0.0, 0.0); - mat2 m = mat2(vec2(15.27, 47.63), vec2(99.41, 89.98)); + vec2 _g = floor(uv * cell_density); + vec2 _f = fract(uv * cell_density); + vec3 _res = vec3(8.0, 0.0, 0.0); + mat2 _matrix = mat2(vec2(15.27, 47.63), vec2(99.41, 89.98)); for(int y=-1; y<=1; y++) { for(int x=-1; x<=1; x++) { vec2 lattice = vec2(float(x), float(y)); - vec2 new_uv = lattice + g; - new_uv = fract(sin(new_uv * m) * 46839.32); + vec2 new_uv = lattice + _g; + new_uv = fract(sin(new_uv * _matrix) * 46839.32); vec2 offset = vec2(sin(new_uv.y * angle_offset) * 0.5 + 0.5, cos(new_uv.x * angle_offset) * 0.5 + 0.5); - float d = distance(lattice + offset, f); - if(d < res.x) + float d = distance(lattice + offset, _f); + if(d < _res.x) { - res = vec3(d, offset.x, offset.y); - output = res.x; - cells = res.y; + _res = vec3(d, offset.x, offset.y); + output = _res.x; + cells = _res.y; } } }