mirror of
https://github.com/Relintai/broken_seals.git
synced 2025-02-19 03:14:21 +01:00
Moved all fbm related calculations to a new noise_fbm class.
This commit is contained in:
parent
1d6a95d578
commit
fdac5e5e85
@ -264,171 +264,6 @@ static func perlin(uv : Vector2, size : Vector2, iterations : int, persistence :
|
||||
|
||||
return rv / acc;
|
||||
|
||||
|
||||
static func fbm_value(coord : Vector2, size : Vector2, pseed : float) -> float:
|
||||
var o : Vector2 = floorv2(coord) + rand2(Vector2(float(pseed), 1.0 - float(pseed))) + size;
|
||||
var f : Vector2 = fractv2(coord);
|
||||
var p00 : float = rand(modv2(o, size));
|
||||
var p01 : float = rand(modv2(o + Vector2(0.0, 1.0), size));
|
||||
var p10 : float = rand(modv2(o + Vector2(1.0, 0.0), size));
|
||||
var p11 : float = rand(modv2(o + Vector2(1.0, 1.0), size));
|
||||
|
||||
var t : Vector2 = f * f * (Vector2(3, 3) - 2.0 * f);
|
||||
return lerp(lerp(p00, p10, t.x), lerp(p01, p11, t.x), t.y);
|
||||
|
||||
static func fbm_perlin(coord : Vector2, size : Vector2, pseed : float) -> float:
|
||||
var o : Vector2 = floorv2(coord) + rand2(Vector2(float(pseed), 1.0 - float(pseed))) + size;
|
||||
var f : Vector2 = fractv2(coord);
|
||||
var a00 : float = rand(modv2(o, size)) * 6.28318530718;
|
||||
var a01 : float = rand(modv2(o + Vector2(0.0, 1.0), size)) * 6.28318530718;
|
||||
var a10 : float = rand(modv2(o + Vector2(1.0, 0.0), size)) * 6.28318530718;
|
||||
var a11 : float = rand(modv2(o + Vector2(1.0, 1.0), size)) * 6.28318530718;
|
||||
var v00 : Vector2 = Vector2(cos(a00), sin(a00));
|
||||
var v01 : Vector2 = Vector2(cos(a01), sin(a01));
|
||||
var v10 : Vector2 = Vector2(cos(a10), sin(a10));
|
||||
var v11 : Vector2 = Vector2(cos(a11), sin(a11));
|
||||
var p00 : float = v00.dot(f);
|
||||
var p01 : float = v01.dot(f - Vector2(0.0, 1.0));
|
||||
var p10 : float = v10.dot(f - Vector2(1.0, 0.0));
|
||||
var p11 : float = v11.dot(f - Vector2(1.0, 1.0));
|
||||
|
||||
var t : Vector2 = f * f * (Vector2(3, 3) - 2.0 * f);
|
||||
|
||||
return 0.5 + lerp(lerp(p00, p10, t.x), lerp(p01, p11, t.x), t.y);
|
||||
|
||||
|
||||
static func fbm_cellular(coord : Vector2, size : Vector2, pseed : float) -> float:
|
||||
var o : Vector2 = floorv2(coord) + rand2(Vector2(float(pseed), 1.0 - float(pseed))) + size;
|
||||
var f : Vector2 = fractv2(coord);
|
||||
var min_dist : float = 2.0;
|
||||
|
||||
for xx in range(-1, 2): #(float x = -1.0; x <= 1.0; x++) {
|
||||
var x : float = xx
|
||||
|
||||
for yy in range(-1, 2):#(float y = -1.0; y <= 1.0; y++) {
|
||||
var y : float = yy
|
||||
|
||||
var node : Vector2 = rand2(modv2(o + Vector2(x, y), size)) + Vector2(x, y);
|
||||
var dist : float = sqrt((f - node).x * (f - node).x + (f - node).y * (f - node).y);
|
||||
min_dist = min(min_dist, dist);
|
||||
|
||||
return min_dist;
|
||||
|
||||
static func fbm_cellular2(coord : Vector2, size : Vector2, pseed : float) -> float:
|
||||
var o : Vector2 = floorv2(coord) + rand2(Vector2(float(pseed), 1.0 - float(pseed))) + size;
|
||||
var f : Vector2 = fractv2(coord);
|
||||
|
||||
var min_dist1 : float = 2.0;
|
||||
var min_dist2 : float = 2.0;
|
||||
|
||||
for xx in range(-1, 2): #(float x = -1.0; x <= 1.0; x++) {
|
||||
var x : float = xx
|
||||
|
||||
for yy in range(-1, 2):#(float y = -1.0; y <= 1.0; y++) {
|
||||
var y : float = yy
|
||||
|
||||
var node : Vector2 = rand2(modv2(o + Vector2(x, y), size)) + Vector2(x, y);
|
||||
|
||||
var dist : float = sqrt((f - node).x * (f - node).x + (f - node).y * (f - node).y);
|
||||
|
||||
if (min_dist1 > dist):
|
||||
min_dist2 = min_dist1;
|
||||
min_dist1 = dist;
|
||||
elif (min_dist2 > dist):
|
||||
min_dist2 = dist;
|
||||
|
||||
return min_dist2-min_dist1;
|
||||
|
||||
static func fbm_cellular3(coord : Vector2, size : Vector2, pseed : float) -> float:
|
||||
var o : Vector2 = floorv2(coord) + rand2(Vector2(float(pseed), 1.0 - float(pseed))) + size;
|
||||
var f : Vector2 = fractv2(coord);
|
||||
|
||||
var min_dist : float = 2.0;
|
||||
|
||||
for xx in range(-1, 2): #(float x = -1.0; x <= 1.0; x++) {
|
||||
var x : float = xx
|
||||
|
||||
for yy in range(-1, 2):#(float y = -1.0; y <= 1.0; y++) {
|
||||
var y : float = yy
|
||||
|
||||
var node : Vector2 = rand2(modv2(o + Vector2(x, y), size))*0.5 + Vector2(x, y);
|
||||
|
||||
var dist : float = abs((f - node).x) + abs((f - node).y);
|
||||
|
||||
min_dist = min(min_dist, dist);
|
||||
|
||||
return min_dist;
|
||||
|
||||
static func fbm_cellular4(coord : Vector2, size : Vector2, pseed : float) -> float:
|
||||
var o : Vector2 = floorv2(coord) + rand2(Vector2(float(pseed), 1.0 - float(pseed))) + size;
|
||||
var f : Vector2 = fractv2(coord);
|
||||
|
||||
var min_dist1 : float = 2.0;
|
||||
var min_dist2 : float = 2.0;
|
||||
|
||||
for xx in range(-1, 2): #(float x = -1.0; x <= 1.0; x++) {
|
||||
var x : float = xx
|
||||
|
||||
for yy in range(-1, 2):#(float y = -1.0; y <= 1.0; y++) {
|
||||
var y : float = yy
|
||||
|
||||
var node : Vector2 = rand2(modv2(o + Vector2(x, y), size))*0.5 + Vector2(x, y);
|
||||
|
||||
var dist : float = abs((f - node).x) + abs((f - node).y);
|
||||
|
||||
if (min_dist1 > dist):
|
||||
min_dist2 = min_dist1;
|
||||
min_dist1 = dist;
|
||||
elif (min_dist2 > dist):
|
||||
min_dist2 = dist;
|
||||
|
||||
return min_dist2 - min_dist1;
|
||||
|
||||
static func fbm_cellular5(coord : Vector2, size : Vector2, pseed : float) -> float:
|
||||
var o : Vector2 = floorv2(coord) + rand2(Vector2(float(pseed), 1.0 - float(pseed))) + size;
|
||||
var f : Vector2 = fractv2(coord);
|
||||
|
||||
var min_dist : float = 2.0;
|
||||
|
||||
for xx in range(-1, 2): #(float x = -1.0; x <= 1.0; x++) {
|
||||
var x : float = xx
|
||||
|
||||
for yy in range(-1, 2):#(float y = -1.0; y <= 1.0; y++) {
|
||||
var y : float = yy
|
||||
|
||||
var node : Vector2 = rand2(modv2(o + Vector2(x, y), size)) + Vector2(x, y);
|
||||
var dist : float = max(abs((f - node).x), abs((f - node).y));
|
||||
min_dist = min(min_dist, dist);
|
||||
|
||||
return min_dist;
|
||||
|
||||
|
||||
|
||||
static func fbm_cellular6(coord : Vector2, size : Vector2, pseed : float) -> float:
|
||||
var o : Vector2 = floorv2(coord) + rand2(Vector2(float(pseed), 1.0 - float(pseed))) + size;
|
||||
var f : Vector2 = fractv2(coord);
|
||||
|
||||
var min_dist1 : float = 2.0;
|
||||
var min_dist2 : float = 2.0;
|
||||
|
||||
for xx in range(-1, 2): #(float x = -1.0; x <= 1.0; x++) {
|
||||
var x : float = xx
|
||||
|
||||
for yy in range(-1, 2):#(float y = -1.0; y <= 1.0; y++) {
|
||||
var y : float = yy
|
||||
|
||||
var node : Vector2 = rand2(modv2(o + Vector2(x, y), size)) + Vector2(x, y);
|
||||
var dist : float = max(abs((f - node).x), abs((f - node).y));
|
||||
|
||||
if (min_dist1 > dist):
|
||||
min_dist2 = min_dist1;
|
||||
min_dist1 = dist;
|
||||
elif (min_dist2 > dist):
|
||||
min_dist2 = dist;
|
||||
|
||||
return min_dist2 - min_dist1;
|
||||
|
||||
|
||||
static func perlin_color(uv : Vector2, size : Vector2, iterations : int, persistence : float, pseed : int) -> Vector3:
|
||||
var seed2 : Vector2 = rand2(Vector2(float(pseed), 1.0 - float(pseed)));
|
||||
var rv : Vector3 = Vector3();
|
||||
|
309
game/addons/mat_maker_gd/nodes/common/noise_fbm.gd
Normal file
309
game/addons/mat_maker_gd/nodes/common/noise_fbm.gd
Normal file
@ -0,0 +1,309 @@
|
||||
extends Reference
|
||||
|
||||
const Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd")
|
||||
|
||||
static func fbmval(uv : Vector2, size : Vector2, octaves : int, persistence : float, pseed : float) -> Color:
|
||||
var f : float = fbmf(uv, size, octaves, persistence, pseed)
|
||||
|
||||
return Color(f, f, f, 1)
|
||||
|
||||
static func perlin(uv : Vector2, size : Vector2, octaves : int, persistence : float, pseed : float) -> Color:
|
||||
var f : float = perlinf(uv, size, octaves, persistence, pseed)
|
||||
|
||||
return Color(f, f, f, 1)
|
||||
|
||||
static func cellular(uv : Vector2, size : Vector2, octaves : int, persistence : float, pseed : float) -> Color:
|
||||
var f : float = cellularf(uv, size, octaves, persistence, pseed)
|
||||
|
||||
return Color(f, f, f, 1)
|
||||
|
||||
static func cellular2(uv : Vector2, size : Vector2, octaves : int, persistence : float, pseed : float) -> Color:
|
||||
var f : float = cellular2f(uv, size, octaves, persistence, pseed)
|
||||
|
||||
return Color(f, f, f, 1)
|
||||
|
||||
static func cellular3(uv : Vector2, size : Vector2, octaves : int, persistence : float, pseed : float) -> Color:
|
||||
var f : float = cellular3f(uv, size, octaves, persistence, pseed)
|
||||
|
||||
return Color(f, f, f, 1)
|
||||
|
||||
static func cellular4(uv : Vector2, size : Vector2, octaves : int, persistence : float, pseed : float) -> Color:
|
||||
var f : float = cellular4f(uv, size, octaves, persistence, pseed)
|
||||
|
||||
return Color(f, f, f, 1)
|
||||
|
||||
static func cellular5(uv : Vector2, size : Vector2, octaves : int, persistence : float, pseed : float) -> Color:
|
||||
var f : float = cellular5f(uv, size, octaves, persistence, pseed)
|
||||
|
||||
return Color(f, f, f, 1)
|
||||
|
||||
static func cellular6(uv : Vector2, size : Vector2, octaves : int, persistence : float, pseed : float) -> Color:
|
||||
var f : float = cellular6f(uv, size, octaves, persistence, pseed)
|
||||
|
||||
return Color(f, f, f, 1)
|
||||
|
||||
static func fbmf(coord : Vector2, size : Vector2, octaves : int, persistence : float, pseed : float) -> float:
|
||||
var normalize_factor : float = 0.0;
|
||||
var value : float = 0.0;
|
||||
var scale : float = 1.0;
|
||||
|
||||
for i in range(octaves):# (int i = 0; i < octaves; i++) {
|
||||
value += fbm_value(coord * size, size, pseed) * scale;
|
||||
normalize_factor += scale;
|
||||
size *= 2.0;
|
||||
scale *= persistence;
|
||||
|
||||
return value / normalize_factor;
|
||||
|
||||
static func perlinf(coord : Vector2, size : Vector2, octaves : int, persistence : float, pseed : float) -> float:
|
||||
var normalize_factor : float = 0.0;
|
||||
var value : float = 0.0;
|
||||
var scale : float = 1.0;
|
||||
|
||||
for i in range(octaves):# (int i = 0; i < octaves; i++) {
|
||||
value += fbm_perlin(coord*size, size, pseed) * scale;
|
||||
normalize_factor += scale;
|
||||
size *= 2.0;
|
||||
scale *= persistence;
|
||||
|
||||
return value / normalize_factor;
|
||||
|
||||
static func cellularf(coord : Vector2, size : Vector2, octaves : int, persistence : float, pseed : float) -> float:
|
||||
var normalize_factor : float = 0.0;
|
||||
var value : float = 0.0;
|
||||
var scale : float = 1.0;
|
||||
|
||||
for i in range(octaves):# (int i = 0; i < octaves; i++) {
|
||||
value += fbm_cellular(coord*size, size, pseed) * scale;
|
||||
normalize_factor += scale;
|
||||
size *= 2.0;
|
||||
scale *= persistence;
|
||||
|
||||
return value / normalize_factor;
|
||||
|
||||
static func cellular2f(coord : Vector2, size : Vector2, octaves : int, persistence : float, pseed : float) -> float:
|
||||
var normalize_factor : float = 0.0;
|
||||
var value : float = 0.0;
|
||||
var scale : float = 1.0;
|
||||
|
||||
for i in range(octaves):# (int i = 0; i < octaves; i++) {
|
||||
value += fbm_cellular2(coord*size, size, pseed) * scale;
|
||||
normalize_factor += scale;
|
||||
size *= 2.0;
|
||||
scale *= persistence;
|
||||
|
||||
return value / normalize_factor;
|
||||
|
||||
static func cellular3f(coord : Vector2, size : Vector2, octaves : int, persistence : float, pseed : float) -> float:
|
||||
var normalize_factor : float = 0.0;
|
||||
var value : float = 0.0;
|
||||
var scale : float = 1.0;
|
||||
|
||||
for i in range(octaves):# (int i = 0; i < octaves; i++) {
|
||||
value += fbm_cellular3(coord*size, size, pseed) * scale;
|
||||
normalize_factor += scale;
|
||||
size *= 2.0;
|
||||
scale *= persistence;
|
||||
|
||||
return value / normalize_factor;
|
||||
|
||||
static func cellular4f(coord : Vector2, size : Vector2, octaves : int, persistence : float, pseed : float) -> float:
|
||||
var normalize_factor : float = 0.0;
|
||||
var value : float = 0.0;
|
||||
var scale : float = 1.0;
|
||||
|
||||
for i in range(octaves):# (int i = 0; i < octaves; i++) {
|
||||
value += fbm_cellular4(coord*size, size, pseed) * scale;
|
||||
normalize_factor += scale;
|
||||
size *= 2.0;
|
||||
scale *= persistence;
|
||||
|
||||
return value / normalize_factor;
|
||||
|
||||
static func cellular5f(coord : Vector2, size : Vector2, octaves : int, persistence : float, pseed : float) -> float:
|
||||
var normalize_factor : float = 0.0;
|
||||
var value : float = 0.0;
|
||||
var scale : float = 1.0;
|
||||
|
||||
for i in range(octaves):# (int i = 0; i < octaves; i++) {
|
||||
value += fbm_cellular5(coord*size, size, pseed) * scale;
|
||||
normalize_factor += scale;
|
||||
size *= 2.0;
|
||||
scale *= persistence;
|
||||
|
||||
return value / normalize_factor;
|
||||
|
||||
static func cellular6f(coord : Vector2, size : Vector2, octaves : int, persistence : float, pseed : float) -> float:
|
||||
var normalize_factor : float = 0.0;
|
||||
var value : float = 0.0;
|
||||
var scale : float = 1.0;
|
||||
|
||||
for i in range(octaves):# (int i = 0; i < octaves; i++) {
|
||||
value += fbm_cellular6(coord*size, size, pseed) * scale;
|
||||
normalize_factor += scale;
|
||||
size *= 2.0;
|
||||
scale *= persistence;
|
||||
|
||||
return value / normalize_factor;
|
||||
|
||||
|
||||
static func fbm_value(coord : Vector2, size : Vector2, pseed : float) -> float:
|
||||
var o : Vector2 = Commons.floorv2(coord) + Commons.rand2(Vector2(float(pseed), 1.0 - float(pseed))) + size;
|
||||
var f : Vector2 = Commons.fractv2(coord);
|
||||
var p00 : float = Commons.rand(Commons.modv2(o, size));
|
||||
var p01 : float = Commons.rand(Commons.modv2(o + Vector2(0.0, 1.0), size));
|
||||
var p10 : float = Commons.rand(Commons.modv2(o + Vector2(1.0, 0.0), size));
|
||||
var p11 : float = Commons.rand(Commons.modv2(o + Vector2(1.0, 1.0), size));
|
||||
|
||||
var t : Vector2 = f * f * (Vector2(3, 3) - 2.0 * f);
|
||||
return lerp(lerp(p00, p10, t.x), lerp(p01, p11, t.x), t.y);
|
||||
|
||||
static func fbm_perlin(coord : Vector2, size : Vector2, pseed : float) -> float:
|
||||
var o : Vector2 = Commons.floorv2(coord) + Commons.rand2(Vector2(float(pseed), 1.0 - float(pseed))) + size;
|
||||
var f : Vector2 = Commons.fractv2(coord);
|
||||
var a00 : float = Commons.rand(Commons.modv2(o, size)) * 6.28318530718;
|
||||
var a01 : float = Commons.rand(Commons.modv2(o + Vector2(0.0, 1.0), size)) * 6.28318530718;
|
||||
var a10 : float = Commons.rand(Commons.modv2(o + Vector2(1.0, 0.0), size)) * 6.28318530718;
|
||||
var a11 : float = Commons.rand(Commons.modv2(o + Vector2(1.0, 1.0), size)) * 6.28318530718;
|
||||
var v00 : Vector2 = Vector2(cos(a00), sin(a00));
|
||||
var v01 : Vector2 = Vector2(cos(a01), sin(a01));
|
||||
var v10 : Vector2 = Vector2(cos(a10), sin(a10));
|
||||
var v11 : Vector2 = Vector2(cos(a11), sin(a11));
|
||||
var p00 : float = v00.dot(f);
|
||||
var p01 : float = v01.dot(f - Vector2(0.0, 1.0));
|
||||
var p10 : float = v10.dot(f - Vector2(1.0, 0.0));
|
||||
var p11 : float = v11.dot(f - Vector2(1.0, 1.0));
|
||||
|
||||
var t : Vector2 = f * f * (Vector2(3, 3) - 2.0 * f);
|
||||
|
||||
return 0.5 + lerp(lerp(p00, p10, t.x), lerp(p01, p11, t.x), t.y);
|
||||
|
||||
|
||||
static func fbm_cellular(coord : Vector2, size : Vector2, pseed : float) -> float:
|
||||
var o : Vector2 = Commons.floorv2(coord) + Commons.rand2(Vector2(float(pseed), 1.0 - float(pseed))) + size;
|
||||
var f : Vector2 = Commons.fractv2(coord);
|
||||
var min_dist : float = 2.0;
|
||||
|
||||
for xx in range(-1, 2): #(float x = -1.0; x <= 1.0; x++) {
|
||||
var x : float = xx
|
||||
|
||||
for yy in range(-1, 2):#(float y = -1.0; y <= 1.0; y++) {
|
||||
var y : float = yy
|
||||
|
||||
var node : Vector2 = Commons.rand2(Commons.modv2(o + Vector2(x, y), size)) + Vector2(x, y);
|
||||
var dist : float = sqrt((f - node).x * (f - node).x + (f - node).y * (f - node).y);
|
||||
min_dist = min(min_dist, dist);
|
||||
|
||||
return min_dist;
|
||||
|
||||
static func fbm_cellular2(coord : Vector2, size : Vector2, pseed : float) -> float:
|
||||
var o : Vector2 = Commons.floorv2(coord) + Commons.rand2(Vector2(float(pseed), 1.0 - float(pseed))) + size;
|
||||
var f : Vector2 = Commons.fractv2(coord);
|
||||
|
||||
var min_dist1 : float = 2.0;
|
||||
var min_dist2 : float = 2.0;
|
||||
|
||||
for xx in range(-1, 2): #(float x = -1.0; x <= 1.0; x++) {
|
||||
var x : float = xx
|
||||
|
||||
for yy in range(-1, 2):#(float y = -1.0; y <= 1.0; y++) {
|
||||
var y : float = yy
|
||||
|
||||
var node : Vector2 = Commons.rand2(Commons.modv2(o + Vector2(x, y), size)) + Vector2(x, y);
|
||||
|
||||
var dist : float = sqrt((f - node).x * (f - node).x + (f - node).y * (f - node).y);
|
||||
|
||||
if (min_dist1 > dist):
|
||||
min_dist2 = min_dist1;
|
||||
min_dist1 = dist;
|
||||
elif (min_dist2 > dist):
|
||||
min_dist2 = dist;
|
||||
|
||||
return min_dist2-min_dist1;
|
||||
|
||||
static func fbm_cellular3(coord : Vector2, size : Vector2, pseed : float) -> float:
|
||||
var o : Vector2 = Commons.floorv2(coord) + Commons.rand2(Vector2(float(pseed), 1.0 - float(pseed))) + size;
|
||||
var f : Vector2 = Commons.fractv2(coord);
|
||||
|
||||
var min_dist : float = 2.0;
|
||||
|
||||
for xx in range(-1, 2): #(float x = -1.0; x <= 1.0; x++) {
|
||||
var x : float = xx
|
||||
|
||||
for yy in range(-1, 2):#(float y = -1.0; y <= 1.0; y++) {
|
||||
var y : float = yy
|
||||
|
||||
var node : Vector2 = Commons.rand2(Commons.modv2(o + Vector2(x, y), size))*0.5 + Vector2(x, y);
|
||||
|
||||
var dist : float = abs((f - node).x) + abs((f - node).y);
|
||||
|
||||
min_dist = min(min_dist, dist);
|
||||
|
||||
return min_dist;
|
||||
|
||||
static func fbm_cellular4(coord : Vector2, size : Vector2, pseed : float) -> float:
|
||||
var o : Vector2 = Commons.floorv2(coord) + Commons.rand2(Vector2(float(pseed), 1.0 - float(pseed))) + size;
|
||||
var f : Vector2 = Commons.fractv2(coord);
|
||||
|
||||
var min_dist1 : float = 2.0;
|
||||
var min_dist2 : float = 2.0;
|
||||
|
||||
for xx in range(-1, 2): #(float x = -1.0; x <= 1.0; x++) {
|
||||
var x : float = xx
|
||||
|
||||
for yy in range(-1, 2):#(float y = -1.0; y <= 1.0; y++) {
|
||||
var y : float = yy
|
||||
|
||||
var node : Vector2 = Commons.rand2(Commons.modv2(o + Vector2(x, y), size))*0.5 + Vector2(x, y);
|
||||
|
||||
var dist : float = abs((f - node).x) + abs((f - node).y);
|
||||
|
||||
if (min_dist1 > dist):
|
||||
min_dist2 = min_dist1;
|
||||
min_dist1 = dist;
|
||||
elif (min_dist2 > dist):
|
||||
min_dist2 = dist;
|
||||
|
||||
return min_dist2 - min_dist1;
|
||||
|
||||
static func fbm_cellular5(coord : Vector2, size : Vector2, pseed : float) -> float:
|
||||
var o : Vector2 = Commons.floorv2(coord) + Commons.rand2(Vector2(float(pseed), 1.0 - float(pseed))) + size;
|
||||
var f : Vector2 = Commons.fractv2(coord);
|
||||
|
||||
var min_dist : float = 2.0;
|
||||
|
||||
for xx in range(-1, 2): #(float x = -1.0; x <= 1.0; x++) {
|
||||
var x : float = xx
|
||||
|
||||
for yy in range(-1, 2):#(float y = -1.0; y <= 1.0; y++) {
|
||||
var y : float = yy
|
||||
|
||||
var node : Vector2 = Commons.rand2(Commons.modv2(o + Vector2(x, y), size)) + Vector2(x, y);
|
||||
var dist : float = max(abs((f - node).x), abs((f - node).y));
|
||||
min_dist = min(min_dist, dist);
|
||||
|
||||
return min_dist;
|
||||
|
||||
static func fbm_cellular6(coord : Vector2, size : Vector2, pseed : float) -> float:
|
||||
var o : Vector2 = Commons.floorv2(coord) + Commons.rand2(Vector2(float(pseed), 1.0 - float(pseed))) + size;
|
||||
var f : Vector2 = Commons.fractv2(coord);
|
||||
|
||||
var min_dist1 : float = 2.0;
|
||||
var min_dist2 : float = 2.0;
|
||||
|
||||
for xx in range(-1, 2): #(float x = -1.0; x <= 1.0; x++) {
|
||||
var x : float = xx
|
||||
|
||||
for yy in range(-1, 2):#(float y = -1.0; y <= 1.0; y++) {
|
||||
var y : float = yy
|
||||
|
||||
var node : Vector2 = Commons.rand2(Commons.modv2(o + Vector2(x, y), size)) + Vector2(x, y);
|
||||
var dist : float = max(abs((f - node).x), abs((f - node).y));
|
||||
|
||||
if (min_dist1 > dist):
|
||||
min_dist2 = min_dist1;
|
||||
min_dist1 = dist;
|
||||
elif (min_dist2 > dist):
|
||||
min_dist2 = dist;
|
||||
|
||||
return min_dist2 - min_dist1;
|
@ -1,7 +1,7 @@
|
||||
tool
|
||||
extends TextureRect
|
||||
|
||||
var Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd")
|
||||
var NoiseFBM = preload("res://addons/mat_maker_gd/nodes/common/noise_fbm.gd")
|
||||
|
||||
var image : Image
|
||||
var tex : ImageTexture
|
||||
@ -64,148 +64,28 @@ var p_o33355_iterations = 5.000000000;
|
||||
var p_o33355_persistence = 0.500000000;
|
||||
|
||||
func fbmval(uv : Vector2) -> Color:
|
||||
var f : float = o33355_fbm(((uv)), Vector2(p_o33355_scale_x, p_o33355_scale_y), int(p_o33355_iterations), p_o33355_persistence, float(seed_o33355));
|
||||
|
||||
return Color(f, f, f, 1)
|
||||
return NoiseFBM.fbmval(uv, Vector2(p_o33355_scale_x, p_o33355_scale_y), int(p_o33355_iterations), p_o33355_persistence, float(seed_o33355))
|
||||
|
||||
func perlin(uv : Vector2) -> Color:
|
||||
var f : float = o33355_perlin(((uv)), Vector2(p_o33355_scale_x, p_o33355_scale_y), int(p_o33355_iterations), p_o33355_persistence, float(seed_o33355));
|
||||
|
||||
return Color(f, f, f, 1)
|
||||
return NoiseFBM.perlin(uv, Vector2(p_o33355_scale_x, p_o33355_scale_y), int(p_o33355_iterations), p_o33355_persistence, float(seed_o33355))
|
||||
|
||||
func cellular(uv : Vector2) -> Color:
|
||||
var f : float = o33355_cellular(((uv)), Vector2(p_o33355_scale_x, p_o33355_scale_y), int(p_o33355_iterations), p_o33355_persistence, float(seed_o33355));
|
||||
|
||||
return Color(f, f, f, 1)
|
||||
return NoiseFBM.cellular(uv, Vector2(p_o33355_scale_x, p_o33355_scale_y), int(p_o33355_iterations), p_o33355_persistence, float(seed_o33355))
|
||||
|
||||
func cellular2(uv : Vector2) -> Color:
|
||||
var f : float = o33355_cellular2(((uv)), Vector2(p_o33355_scale_x, p_o33355_scale_y), int(p_o33355_iterations), p_o33355_persistence, float(seed_o33355));
|
||||
|
||||
return Color(f, f, f, 1)
|
||||
return NoiseFBM.cellular2(uv, Vector2(p_o33355_scale_x, p_o33355_scale_y), int(p_o33355_iterations), p_o33355_persistence, float(seed_o33355))
|
||||
|
||||
func cellular3(uv : Vector2) -> Color:
|
||||
var f : float = o33355_cellular3(((uv)), Vector2(p_o33355_scale_x, p_o33355_scale_y), int(p_o33355_iterations), p_o33355_persistence, float(seed_o33355));
|
||||
|
||||
return Color(f, f, f, 1)
|
||||
return NoiseFBM.cellular3(uv, Vector2(p_o33355_scale_x, p_o33355_scale_y), int(p_o33355_iterations), p_o33355_persistence, float(seed_o33355))
|
||||
|
||||
func cellular4(uv : Vector2) -> Color:
|
||||
var f : float = o33355_cellular4(((uv)), Vector2(p_o33355_scale_x, p_o33355_scale_y), int(p_o33355_iterations), p_o33355_persistence, float(seed_o33355));
|
||||
|
||||
return Color(f, f, f, 1)
|
||||
return NoiseFBM.cellular4(uv, Vector2(p_o33355_scale_x, p_o33355_scale_y), int(p_o33355_iterations), p_o33355_persistence, float(seed_o33355))
|
||||
|
||||
func cellular5(uv : Vector2) -> Color:
|
||||
var f : float = o33355_cellular5(((uv)), Vector2(p_o33355_scale_x, p_o33355_scale_y), int(p_o33355_iterations), p_o33355_persistence, float(seed_o33355));
|
||||
|
||||
return Color(f, f, f, 1)
|
||||
return NoiseFBM.cellular5(uv, Vector2(p_o33355_scale_x, p_o33355_scale_y), int(p_o33355_iterations), p_o33355_persistence, float(seed_o33355))
|
||||
|
||||
func cellular6(uv : Vector2) -> Color:
|
||||
var f : float = o33355_cellular6(((uv)), Vector2(p_o33355_scale_x, p_o33355_scale_y), int(p_o33355_iterations), p_o33355_persistence, float(seed_o33355));
|
||||
|
||||
return Color(f, f, f, 1)
|
||||
|
||||
func o33355_fbm(coord : Vector2, size : Vector2, octaves : int, persistence : float, pseed : float) -> float:
|
||||
var normalize_factor : float = 0.0;
|
||||
var value : float = 0.0;
|
||||
var scale : float = 1.0;
|
||||
|
||||
for i in range(octaves):# (int i = 0; i < octaves; i++) {
|
||||
value += Commons.fbm_value(coord*size, size, pseed) * scale;
|
||||
normalize_factor += scale;
|
||||
size *= 2.0;
|
||||
scale *= persistence;
|
||||
|
||||
return value / normalize_factor;
|
||||
|
||||
func o33355_perlin(coord : Vector2, size : Vector2, octaves : int, persistence : float, pseed : float) -> float:
|
||||
var normalize_factor : float = 0.0;
|
||||
var value : float = 0.0;
|
||||
var scale : float = 1.0;
|
||||
|
||||
for i in range(octaves):# (int i = 0; i < octaves; i++) {
|
||||
value += Commons.fbm_perlin(coord*size, size, pseed) * scale;
|
||||
normalize_factor += scale;
|
||||
size *= 2.0;
|
||||
scale *= persistence;
|
||||
|
||||
return value / normalize_factor;
|
||||
|
||||
func o33355_cellular(coord : Vector2, size : Vector2, octaves : int, persistence : float, pseed : float) -> float:
|
||||
var normalize_factor : float = 0.0;
|
||||
var value : float = 0.0;
|
||||
var scale : float = 1.0;
|
||||
|
||||
for i in range(octaves):# (int i = 0; i < octaves; i++) {
|
||||
value += Commons.fbm_cellular(coord*size, size, pseed) * scale;
|
||||
normalize_factor += scale;
|
||||
size *= 2.0;
|
||||
scale *= persistence;
|
||||
|
||||
return value / normalize_factor;
|
||||
|
||||
func o33355_cellular2(coord : Vector2, size : Vector2, octaves : int, persistence : float, pseed : float) -> float:
|
||||
var normalize_factor : float = 0.0;
|
||||
var value : float = 0.0;
|
||||
var scale : float = 1.0;
|
||||
|
||||
for i in range(octaves):# (int i = 0; i < octaves; i++) {
|
||||
value += Commons.fbm_cellular2(coord*size, size, pseed) * scale;
|
||||
normalize_factor += scale;
|
||||
size *= 2.0;
|
||||
scale *= persistence;
|
||||
|
||||
return value / normalize_factor;
|
||||
|
||||
func o33355_cellular3(coord : Vector2, size : Vector2, octaves : int, persistence : float, pseed : float) -> float:
|
||||
var normalize_factor : float = 0.0;
|
||||
var value : float = 0.0;
|
||||
var scale : float = 1.0;
|
||||
|
||||
for i in range(octaves):# (int i = 0; i < octaves; i++) {
|
||||
value += Commons.fbm_cellular3(coord*size, size, pseed) * scale;
|
||||
normalize_factor += scale;
|
||||
size *= 2.0;
|
||||
scale *= persistence;
|
||||
|
||||
return value / normalize_factor;
|
||||
|
||||
func o33355_cellular4(coord : Vector2, size : Vector2, octaves : int, persistence : float, pseed : float) -> float:
|
||||
var normalize_factor : float = 0.0;
|
||||
var value : float = 0.0;
|
||||
var scale : float = 1.0;
|
||||
|
||||
for i in range(octaves):# (int i = 0; i < octaves; i++) {
|
||||
value += Commons.fbm_cellular4(coord*size, size, pseed) * scale;
|
||||
normalize_factor += scale;
|
||||
size *= 2.0;
|
||||
scale *= persistence;
|
||||
|
||||
return value / normalize_factor;
|
||||
|
||||
func o33355_cellular5(coord : Vector2, size : Vector2, octaves : int, persistence : float, pseed : float) -> float:
|
||||
var normalize_factor : float = 0.0;
|
||||
var value : float = 0.0;
|
||||
var scale : float = 1.0;
|
||||
|
||||
for i in range(octaves):# (int i = 0; i < octaves; i++) {
|
||||
value += Commons.fbm_cellular5(coord*size, size, pseed) * scale;
|
||||
normalize_factor += scale;
|
||||
size *= 2.0;
|
||||
scale *= persistence;
|
||||
|
||||
return value / normalize_factor;
|
||||
|
||||
func o33355_cellular6(coord : Vector2, size : Vector2, octaves : int, persistence : float, pseed : float) -> float:
|
||||
var normalize_factor : float = 0.0;
|
||||
var value : float = 0.0;
|
||||
var scale : float = 1.0;
|
||||
|
||||
for i in range(octaves):# (int i = 0; i < octaves; i++) {
|
||||
value += Commons.fbm_cellular6(coord*size, size, pseed) * scale;
|
||||
normalize_factor += scale;
|
||||
size *= 2.0;
|
||||
scale *= persistence;
|
||||
|
||||
return value / normalize_factor;
|
||||
return NoiseFBM.cellular6(uv, Vector2(p_o33355_scale_x, p_o33355_scale_y), int(p_o33355_iterations), p_o33355_persistence, float(seed_o33355))
|
||||
|
||||
func reffg():
|
||||
return false
|
||||
|
Loading…
Reference in New Issue
Block a user