From 0869d1096b69df4b160f2e2e4cd2099952ecde6a Mon Sep 17 00:00:00 2001 From: Relintai Date: Fri, 1 Oct 2021 23:24:08 +0200 Subject: [PATCH] Patterns now also use Commons.gd. --- .../nodes/pattern/TextureRectBricks.gd | 73 +------- .../nodes/pattern/pattern_beehive.gd | 175 +----------------- .../nodes/pattern/pattern_generic.gd | 152 +-------------- .../nodes/pattern/pattern_iching.gd | 163 +--------------- .../nodes/pattern/pattern_rune.gd | 172 +---------------- .../nodes/pattern/pattern_scratches.gd | 164 +--------------- .../nodes/pattern/pattern_sine_wave.gd | 164 +--------------- .../nodes/pattern/pattern_truchet.gd | 157 +--------------- .../nodes/pattern/pattern_weave.gd | 148 +-------------- 9 files changed, 59 insertions(+), 1309 deletions(-) diff --git a/game/addons/mat_maker_gd/nodes/pattern/TextureRectBricks.gd b/game/addons/mat_maker_gd/nodes/pattern/TextureRectBricks.gd index 591a4a3e..2b81e152 100644 --- a/game/addons/mat_maker_gd/nodes/pattern/TextureRectBricks.gd +++ b/game/addons/mat_maker_gd/nodes/pattern/TextureRectBricks.gd @@ -1,6 +1,8 @@ tool extends TextureRect +var Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") + var image : Image var tex : ImageTexture @@ -135,7 +137,7 @@ func brick_corner_uv(uv : Vector2, bmin : Vector2, bmax : Vector2, mortar : floa r.x = clamp(((0.5 * size.x - mortar) - abs(uv.x - center.x)) / corner, 0, 1) r.y = clamp(((0.5 * size.y - mortar) - abs(uv.y - center.y)) / corner, 0, 1) - r.z = rand(fract(center) + Vector2(pseed, pseed)) + r.z = Commons.rand(Commons.fract(center) + Vector2(pseed, pseed)) return r @@ -178,12 +180,12 @@ func brick_uv(uv : Vector2, bmin : Vector2, bmax : Vector2, pseed : float) -> Ve var x : float = 0.5+ (uv.x - center.x) / max_size var y : float = 0.5+ (uv.y - center.y) /max_size - return Vector3(x, y, rand(fract(center) + Vector2(pseed, pseed))) + return Vector3(x, y, Commons.rand(Commons.fract(center) + Vector2(pseed, pseed))) func bricks_rb(uv : Vector2, count : Vector2, repeat : float, offset : float) -> Color: count *= repeat - var x_offset : float = offset * step(0.5, fractf(uv.y * count.y * 0.5)) + var x_offset : float = offset * Commons.step(0.5, Commons.fractf(uv.y * count.y * 0.5)) var bmin : Vector2 bmin.x = floor(uv.x * count.x - x_offset) @@ -198,8 +200,8 @@ func bricks_rb(uv : Vector2, count : Vector2, repeat : float, offset : float) -> func bricks_rb2(uv : Vector2, count : Vector2, repeat : float, offset : float) -> Color: count *= repeat - var x_offset : float = offset * step(0.5, fractf(uv.y * count.y * 0.5)) - count.x = count.x * (1.0+step(0.5, fractf(uv.y * count.y * 0.5))) + var x_offset : float = offset * Commons.step(0.5, Commons.fractf(uv.y * count.y * 0.5)) + count.x = count.x * (1.0+Commons.step(0.5, Commons.fractf(uv.y * count.y * 0.5))) var bmin : Vector2 = Vector2() bmin.x = floor(uv.x * count.x - x_offset) @@ -217,7 +219,7 @@ func bricks_hb(uv : Vector2, count : Vector2, repeat : float, offset : float) -> var c : float = pc * repeat var corner : Vector2 = Vector2(floor(uv.x * c), floor(uv.y * c)) - var cdiff : float = modf(corner.x - corner.y, pc) + var cdiff : float = Commons.modf(corner.x - corner.y, pc) if (cdiff < count.x): var col : Color = Color() @@ -247,7 +249,7 @@ func bricks_bw(uv : Vector2, count : Vector2, repeat : float, offset : float) -> var corner2 : Vector2 = Vector2(count.x * floor(repeat* 2.0 * uv.x), count.y * floor(repeat * 2.0 * uv.y)) var tmp : Vector2 = Vector2(floor(repeat * 2.0 * uv.x), floor(repeat * 2.0 * uv.y)) - var cdiff : float = modf(tmp.dot(Vector2(1, 1)), 2.0) + var cdiff : float = Commons.modf(tmp.dot(Vector2(1, 1)), 2.0) var corner : Vector2 var size : Vector2 @@ -289,63 +291,6 @@ func bricks_sb(uv : Vector2, count : Vector2, repeat : float, offset : float) -> return Color(corner.x / c.x, corner.y / c.y, (corner.x + size.x) / c.x, (corner.y + size.y) / c.y) -func modf(x : float, y : float) -> float: - return x - y * floor(x / y) - -func fract(v : Vector2) -> Vector2: - v.x = v.x - floor(v.x) - v.y = v.y - floor(v.y) - - return v - -func fractf(f : float) -> float: - return f - floor(f) - -func rand(x : Vector2) -> float: - return fractf(cos(x.dot(Vector2(13.9898, 8.141))) * 43758.5453); - -func step(edge : float, x : float) -> float: - if x < edge: - return 0.0 - else: - return 1.0 - -#common ----- - -#float rand(vec2 x) { -# return fract(cos(dot(x, vec2(13.9898, 8.141))) * 43758.5453); -#} -# -#vec2 rand2(vec2 x) { -# return fract(cos(vec2(dot(x, vec2(13.9898, 8.141)), -# dot(x, vec2(3.4562, 17.398)))) * 43758.5453); -#} -# -#vec3 rand3(vec2 x) { -# return fract(cos(vec3(dot(x, vec2(13.9898, 8.141)), -# dot(x, vec2(3.4562, 17.398)), -# dot(x, vec2(13.254, 5.867)))) * 43758.5453); -#} -# -#vec3 rgb2hsv(vec3 c) { -# vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0); -# vec4 p = c.g < c.b ? vec4(c.bg, K.wz) : vec4(c.gb, K.xy); -# vec4 q = c.r < p.x ? vec4(p.xyw, c.r) : vec4(c.r, p.yzx); -# -# float d = q.x - min(q.w, q.y); -# float e = 1.0e-10; -# return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x); -#} -# -#vec3 hsv2rgb(vec3 c) { -# vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); -# vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www); -# return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y); -#} - - -#end common - # #vec4 $(name_uv)_rect = bricks_$pattern($uv, vec2($columns, $rows), $repeat, $row_offset); #vec4 $(name_uv) = brick($uv, $(name_uv)_rect.xy, $(name_uv)_rect.zw, $mortar*$mortar_map($uv), $round*$round_map($uv), max(0.001, $bevel*$bevel_map($uv))); diff --git a/game/addons/mat_maker_gd/nodes/pattern/pattern_beehive.gd b/game/addons/mat_maker_gd/nodes/pattern/pattern_beehive.gd index d8a83a0f..a99fdad3 100644 --- a/game/addons/mat_maker_gd/nodes/pattern/pattern_beehive.gd +++ b/game/addons/mat_maker_gd/nodes/pattern/pattern_beehive.gd @@ -1,6 +1,8 @@ tool extends TextureRect +var Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") + var image : Image var tex : ImageTexture @@ -68,18 +70,18 @@ func beehive_2_col(uv : Vector2) -> Color: var f : float = 1.0 - 2.0 * beehive_dist(Vector2(center.r, center.g)); - var v : Vector3 = rand3(fractv2(Vector2(center.b, center.a) / Vector2(p_o80035_sx, p_o80035_sy)) + Vector2(float(seed_o80035),float(seed_o80035))); + var v : Vector3 = Commons.rand3(Commons.fractv2(Vector2(center.b, center.a) / Vector2(p_o80035_sx, p_o80035_sy)) + Vector2(float(seed_o80035),float(seed_o80035))); return Color(v.x, v.y, v.z, 1) func beehive_3_col(uv : Vector2) -> Color: var o80035_0_uv : Vector2 = ((uv)) * Vector2(p_o80035_sx, p_o80035_sy * 1.73205080757); - var center : Color = beehive_center(o80035_0_uv); + var center : Color = Commons.beehive_center(o80035_0_uv); #var f : float = 1.0 - 2.0 * beehive_dist(Vector2(center.r, center.g)); var v1 : Vector2 = Vector2(0.5, 0.5) + Vector2(center.r, center.g) - var ff : float = rand(fractv2(Vector2(center.b, center.a) / Vector2(p_o80035_sx, p_o80035_sy)) + Vector2(float(seed_o80035), float(seed_o80035))) + var ff : float = Commons.rand(Commons.fractv2(Vector2(center.b, center.a) / Vector2(p_o80035_sx, p_o80035_sy)) + Vector2(float(seed_o80035), float(seed_o80035))) var c : Color = Color(v1.x, v1.y, ff, ff); @@ -89,7 +91,7 @@ func beehive_3_col(uv : Vector2) -> Color: func beehive_dist(p : Vector2) -> float: var s : Vector2 = Vector2(1.0, 1.73205080757); - p = absv2(p); + p = Commons.absv2(p); return max(p.dot(s*.5), p.x); @@ -98,7 +100,7 @@ func beehive_center(p : Vector2) -> Color: var hC : Color = Color(p.x, p.y, p.x - 0.5, p.y - 1) / Color(s.x, s.y, s.x, s.y); - hC = floorc(Color(p.x, p.y, p.x - 0.5, p.y - 1) / Color(s.x, s.y, s.x, s.y)) + Color(0.5, 0.5, 0.5, 0.5); + hC = Commons.floorc(Color(p.x, p.y, p.x - 0.5, p.y - 1) / Color(s.x, s.y, s.x, s.y)) + Color(0.5, 0.5, 0.5, 0.5); var v1 : Vector2 = Vector2(p.x - hC.r * s.x, p.y - hC.g * s.y) var v2 : Vector2 = Vector2(p.x - (hC.b + 0.5) * s.x, p.y - (hC.a + 0.5) * s.y) @@ -112,169 +114,6 @@ func beehive_center(p : Vector2) -> Color: #return dot(h.xy, h.xy) < dot(h.zw, h.zw) ? Color(h.xy, hC.xy) : Color(h.zw, hC.zw + 9.73); - -func clampv3(v : Vector3, mi : Vector3, ma : Vector3) -> Vector3: - v.x = clamp(v.x, mi.x, ma.x) - v.y = clamp(v.y, mi.y, ma.y) - v.y = clamp(v.z, mi.z, ma.z) - - return v - -func floorc(a : Color) -> Color: - var v : Color = Color() - - v.r = floor(a.r) - v.g = floor(a.g) - v.b = floor(a.b) - v.a = floor(a.a) - - return v - - -func floorv2(a : Vector2) -> Vector2: - var v : Vector2 = Vector2() - - v.x = floor(a.x) - v.y = floor(a.y) - - return v - -func maxv2(a : Vector2, b : Vector2) -> Vector2: - var v : Vector2 = Vector2() - - v.x = max(a.x, b.x) - v.y = max(a.y, b.y) - - return v - -func maxv3(a : Vector3, b : Vector3) -> Vector3: - var v : Vector3 = Vector3() - - v.x = max(a.x, b.x) - v.y = max(a.y, b.y) - v.z = max(a.z, b.z) - - return v - -func absv2(v : Vector2) -> Vector2: - v.x = abs(v.x) - v.y = abs(v.y) - - return v - -func absv3(v : Vector3) -> Vector3: - v.x = abs(v.x) - v.y = abs(v.y) - v.y = abs(v.y) - - return v - -func cosv2(v : Vector2) -> Vector2: - v.x = cos(v.x) - v.y = cos(v.y) - - return v - -func cosv3(v : Vector3) -> Vector3: - v.x = cos(v.x) - v.y = cos(v.y) - v.y = cos(v.y) - - return v - -func modv3(a : Vector3, b : Vector3) -> Vector3: - var v : Vector3 = Vector3() - - v.x = modf(a.x, b.x) - v.y = modf(a.y, b.y) - v.z = modf(a.z, b.z) - - return v - - -func modv2(a : Vector2, b : Vector2) -> Vector2: - var v : Vector2 = Vector2() - - v.x = modf(a.x, b.x) - v.y = modf(a.y, b.y) - - return v - -func modf(x : float, y : float) -> float: - return x - y * floor(x / y) - -func fractv2(v : Vector2) -> Vector2: - v.x = v.x - floor(v.x) - v.y = v.y - floor(v.y) - - return v - -func fractv3(v : Vector3) -> Vector3: - v.x = v.x - floor(v.x) - v.y = v.y - floor(v.y) - v.z = v.z - floor(v.z) - - return v - -func fract(f : float) -> float: - return f - floor(f) - -func rand(x : Vector2) -> float: - return fract(cos(x.dot(Vector2(13.9898, 8.141))) * 43758.5453); - -func rand2(x : Vector2) -> Vector2: - return fractv2(cosv2(Vector2(x.dot(Vector2(13.9898, 8.141)), - x.dot(Vector2(3.4562, 17.398)))) * 43758.5453); - -func rand3(x : Vector2) -> Vector3: - return fractv3(cosv3(Vector3(x.dot(Vector2(13.9898, 8.141)), - x.dot(Vector2(3.4562, 17.398)), - x.dot(Vector2(13.254, 5.867)))) * 43758.5453); - -func step(edge : float, x : float) -> float: - if x < edge: - return 0.0 - else: - return 1.0 - - -#common ----- - -#float rand(vec2 x) { -# return fract(cos(dot(x, vec2(13.9898, 8.141))) * 43758.5453); -#} -# -#vec2 rand2(vec2 x) { -# return fract(cos(vec2(dot(x, vec2(13.9898, 8.141)), -# dot(x, vec2(3.4562, 17.398)))) * 43758.5453); -#} -# -#vec3 rand3(vec2 x) { -# return fract(cos(vec3(dot(x, vec2(13.9898, 8.141)), -# dot(x, vec2(3.4562, 17.398)), -# dot(x, vec2(13.254, 5.867)))) * 43758.5453); -#} -# -#vec3 rgb2hsv(vec3 c) { -# vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0); -# vec4 p = c.g < c.b ? vec4(c.bg, K.wz) : vec4(c.gb, K.xy); -# vec4 q = c.r < p.x ? vec4(p.xyw, c.r) : vec4(c.r, p.yzx); -# -# float d = q.x - min(q.w, q.y); -# float e = 1.0e-10; -# return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x); -#} -# -#vec3 hsv2rgb(vec3 c) { -# vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); -# vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www); -# return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y); -#} - - -#end common - - func reffg(): return false diff --git a/game/addons/mat_maker_gd/nodes/pattern/pattern_generic.gd b/game/addons/mat_maker_gd/nodes/pattern/pattern_generic.gd index b5acc62d..f6f81ec0 100644 --- a/game/addons/mat_maker_gd/nodes/pattern/pattern_generic.gd +++ b/game/addons/mat_maker_gd/nodes/pattern/pattern_generic.gd @@ -1,6 +1,8 @@ tool extends TextureRect +var Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") + var image : Image var tex : ImageTexture @@ -123,20 +125,20 @@ func wave_sine(x : float) -> float: return 0.5-0.5*cos(3.14159265359*2.0*x); func wave_triangle(x : float) -> float: - x = fractf(x); + x = Commons.fractf(x); return min(2.0*x, 2.0-2.0*x); func wave_sawtooth(x : float) -> float: - return fractf(x); + return Commons.fractf(x); func wave_square(x : float) -> float: - if (fractf(x) < 0.5): + if (Commons.fractf(x) < 0.5): return 0.0 else: return 1.0 func wave_bounce(x : float) -> float: - x = 2.0*(fractf(x)-0.5); + x = 2.0*(Commons.fractf(x)-0.5); return sqrt(1.0-x*x); func mix_mul(x : float, y : float) -> float: @@ -158,148 +160,6 @@ func mix_pow(x : float, y : float) -> float: return pow(x, y); -func clampv3(v : Vector3, mi : Vector3, ma : Vector3) -> Vector3: - v.x = clamp(v.x, mi.x, ma.x) - v.y = clamp(v.y, mi.y, ma.y) - v.y = clamp(v.z, mi.z, ma.z) - - return v - - -func floorv2(a : Vector2) -> Vector2: - var v : Vector2 = Vector2() - - v.x = floor(a.x) - v.y = floor(a.y) - - return v - -func maxv2(a : Vector2, b : Vector2) -> Vector2: - var v : Vector2 = Vector2() - - v.x = max(a.x, b.x) - v.y = max(a.y, b.y) - - return v - -func maxv3(a : Vector3, b : Vector3) -> Vector3: - var v : Vector3 = Vector3() - - v.x = max(a.x, b.x) - v.y = max(a.y, b.y) - v.z = max(a.z, b.z) - - return v - -func absv2(v : Vector2) -> Vector2: - v.x = abs(v.x) - v.y = abs(v.y) - - return v - -func absv3(v : Vector3) -> Vector3: - v.x = abs(v.x) - v.y = abs(v.y) - v.y = abs(v.y) - - return v - -func cosv3(v : Vector3) -> Vector3: - v.x = cos(v.x) - v.y = cos(v.y) - v.y = cos(v.y) - - return v - -func modv3(a : Vector3, b : Vector3) -> Vector3: - var v : Vector3 = Vector3() - - v.x = modf(a.x, b.x) - v.y = modf(a.y, b.y) - v.z = modf(a.z, b.z) - - return v - - -func modv2(a : Vector2, b : Vector2) -> Vector2: - var v : Vector2 = Vector2() - - v.x = modf(a.x, b.x) - v.y = modf(a.y, b.y) - - return v - -func modf(x : float, y : float) -> float: - return x - y * floor(x / y) - -func fract(v : Vector2) -> Vector2: - v.x = v.x - floor(v.x) - v.y = v.y - floor(v.y) - - return v - -func fractv3(v : Vector3) -> Vector3: - v.x = v.x - floor(v.x) - v.y = v.y - floor(v.y) - v.z = v.z - floor(v.z) - - return v - -func fractf(f : float) -> float: - return f - floor(f) - -func rand(x : Vector2) -> float: - return fractf(cos(x.dot(Vector2(13.9898, 8.141))) * 43758.5453); - -func rand3(x : Vector2) -> Vector3: - return fractv3(cosv3(Vector3(x.dot(Vector2(13.9898, 8.141)), - x.dot(Vector2(3.4562, 17.398)), - x.dot(Vector2(13.254, 5.867)))) * 43758.5453); - -func step(edge : float, x : float) -> float: - if x < edge: - return 0.0 - else: - return 1.0 - - -#common ----- - -#float rand(vec2 x) { -# return fract(cos(dot(x, vec2(13.9898, 8.141))) * 43758.5453); -#} -# -#vec2 rand2(vec2 x) { -# return fract(cos(vec2(dot(x, vec2(13.9898, 8.141)), -# dot(x, vec2(3.4562, 17.398)))) * 43758.5453); -#} -# -#vec3 rand3(vec2 x) { -# return fract(cos(vec3(dot(x, vec2(13.9898, 8.141)), -# dot(x, vec2(3.4562, 17.398)), -# dot(x, vec2(13.254, 5.867)))) * 43758.5453); -#} -# -#vec3 rgb2hsv(vec3 c) { -# vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0); -# vec4 p = c.g < c.b ? vec4(c.bg, K.wz) : vec4(c.gb, K.xy); -# vec4 q = c.r < p.x ? vec4(p.xyw, c.r) : vec4(c.r, p.yzx); -# -# float d = q.x - min(q.w, q.y); -# float e = 1.0e-10; -# return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x); -#} -# -#vec3 hsv2rgb(vec3 c) { -# vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); -# vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www); -# return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y); -#} - - -#end common - - func reffg(): return false diff --git a/game/addons/mat_maker_gd/nodes/pattern/pattern_iching.gd b/game/addons/mat_maker_gd/nodes/pattern/pattern_iching.gd index 7094c656..5a77e597 100644 --- a/game/addons/mat_maker_gd/nodes/pattern/pattern_iching.gd +++ b/game/addons/mat_maker_gd/nodes/pattern/pattern_iching.gd @@ -1,6 +1,8 @@ tool extends TextureRect +var Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") + var image : Image var tex : ImageTexture @@ -58,164 +60,11 @@ func runecol(uv : Vector2) -> Color: return Color(f, f, f, 1) func IChing(uv : Vector2, pseed : float) -> float: - var value : int = int(32.0 * rand(floorv2(uv) + Vector2(pseed, pseed))); - var base : float = step(0.5, fract(fract(uv.y)*6.5))*step(0.04, fract(uv.y+0.02)) * step(0.2, fract(uv.x+0.1)); - var bit : int = int(fract(uv.y)*6.5); + var value : int = int(32.0 * Commons.rand(Commons.floorv2(uv) + Vector2(pseed, pseed))); + var base : float = Commons.step(0.5, Commons.fract(Commons.fract(uv.y)*6.5))*Commons.step(0.04, Commons.fract(uv.y+0.02)) * Commons.step(0.2, Commons.fract(uv.x+0.1)); + var bit : int = int(Commons.fract(uv.y)*6.5); - return base * step(0.1*step(float(bit & value), 0.5), fract(uv.x+0.55)); - - -func clampv3(v : Vector3, mi : Vector3, ma : Vector3) -> Vector3: - v.x = clamp(v.x, mi.x, ma.x) - v.y = clamp(v.y, mi.y, ma.y) - v.y = clamp(v.z, mi.z, ma.z) - - return v - - -func floorv2(a : Vector2) -> Vector2: - var v : Vector2 = Vector2() - - v.x = floor(a.x) - v.y = floor(a.y) - - return v - -func maxv2(a : Vector2, b : Vector2) -> Vector2: - var v : Vector2 = Vector2() - - v.x = max(a.x, b.x) - v.y = max(a.y, b.y) - - return v - -func maxv3(a : Vector3, b : Vector3) -> Vector3: - var v : Vector3 = Vector3() - - v.x = max(a.x, b.x) - v.y = max(a.y, b.y) - v.z = max(a.z, b.z) - - return v - -func absv2(v : Vector2) -> Vector2: - v.x = abs(v.x) - v.y = abs(v.y) - - return v - -func absv3(v : Vector3) -> Vector3: - v.x = abs(v.x) - v.y = abs(v.y) - v.y = abs(v.y) - - return v - -func cosv2(v : Vector2) -> Vector2: - v.x = cos(v.x) - v.y = cos(v.y) - - return v - -func cosv3(v : Vector3) -> Vector3: - v.x = cos(v.x) - v.y = cos(v.y) - v.y = cos(v.y) - - return v - -func modv3(a : Vector3, b : Vector3) -> Vector3: - var v : Vector3 = Vector3() - - v.x = modf(a.x, b.x) - v.y = modf(a.y, b.y) - v.z = modf(a.z, b.z) - - return v - - -func modv2(a : Vector2, b : Vector2) -> Vector2: - var v : Vector2 = Vector2() - - v.x = modf(a.x, b.x) - v.y = modf(a.y, b.y) - - return v - -func modf(x : float, y : float) -> float: - return x - y * floor(x / y) - -func fractv2(v : Vector2) -> Vector2: - v.x = v.x - floor(v.x) - v.y = v.y - floor(v.y) - - return v - -func fractv3(v : Vector3) -> Vector3: - v.x = v.x - floor(v.x) - v.y = v.y - floor(v.y) - v.z = v.z - floor(v.z) - - return v - -func fract(f : float) -> float: - return f - floor(f) - -func rand(x : Vector2) -> float: - return fract(cos(x.dot(Vector2(13.9898, 8.141))) * 43758.5453); - -func rand2(x : Vector2) -> Vector2: - return fractv2(cosv2(Vector2(x.dot(Vector2(13.9898, 8.141)), - x.dot(Vector2(3.4562, 17.398)))) * 43758.5453); - -func rand3(x : Vector2) -> Vector3: - return fractv3(cosv3(Vector3(x.dot(Vector2(13.9898, 8.141)), - x.dot(Vector2(3.4562, 17.398)), - x.dot(Vector2(13.254, 5.867)))) * 43758.5453); - -func step(edge : float, x : float) -> float: - if x < edge: - return 0.0 - else: - return 1.0 - - -#common ----- - -#float rand(vec2 x) { -# return fract(cos(dot(x, vec2(13.9898, 8.141))) * 43758.5453); -#} -# -#vec2 rand2(vec2 x) { -# return fract(cos(vec2(dot(x, vec2(13.9898, 8.141)), -# dot(x, vec2(3.4562, 17.398)))) * 43758.5453); -#} -# -#vec3 rand3(vec2 x) { -# return fract(cos(vec3(dot(x, vec2(13.9898, 8.141)), -# dot(x, vec2(3.4562, 17.398)), -# dot(x, vec2(13.254, 5.867)))) * 43758.5453); -#} -# -#vec3 rgb2hsv(vec3 c) { -# vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0); -# vec4 p = c.g < c.b ? vec4(c.bg, K.wz) : vec4(c.gb, K.xy); -# vec4 q = c.r < p.x ? vec4(p.xyw, c.r) : vec4(c.r, p.yzx); -# -# float d = q.x - min(q.w, q.y); -# float e = 1.0e-10; -# return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x); -#} -# -#vec3 hsv2rgb(vec3 c) { -# vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); -# vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www); -# return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y); -#} - - -#end common - + return base * Commons.step(0.1*Commons.step(float(bit & value), 0.5), Commons.fract(uv.x+0.55)); func reffg(): return false diff --git a/game/addons/mat_maker_gd/nodes/pattern/pattern_rune.gd b/game/addons/mat_maker_gd/nodes/pattern/pattern_rune.gd index bada1f36..1a2ac7cd 100644 --- a/game/addons/mat_maker_gd/nodes/pattern/pattern_rune.gd +++ b/game/addons/mat_maker_gd/nodes/pattern/pattern_rune.gd @@ -1,6 +1,8 @@ tool extends TextureRect +var Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") + var image : Image var tex : ImageTexture @@ -72,20 +74,20 @@ func ThickLine(uv : Vector2, posA : Vector2, posB : Vector2, radiusInv : float) # passes back gray in x and derivates for lighting in yz func Rune(uv : Vector2) -> float: var finalLine : float = 0.0; - var pseed : Vector2 = floorv2(uv) - Vector2(0.41, 0.41); + var pseed : Vector2 = Commons.floorv2(uv) - Vector2(0.41, 0.41); - uv = fractv2(uv); + uv = Commons.fractv2(uv); for i in range(4):# (int i = 0; i < 4; i++): # // number of strokes - var posA : Vector2 = rand2(floorv2(pseed + Vector2(0.5, 0.5))); - var posB : Vector2 = rand2(floorv2(pseed + Vector2(1.5, 1.5))); + var posA : Vector2 = Commons.rand2(Commons.floorv2(pseed + Vector2(0.5, 0.5))); + var posB : Vector2 = Commons.rand2(Commons.floorv2(pseed + Vector2(1.5, 1.5))); pseed.x += 2.0; pseed.y += 2.0; # expand the range and mod it to get a nicely distributed random number - hopefully. :) - posA = fractv2(posA * 128.0); - posB = fractv2(posB * 128.0); + posA = Commons.fractv2(posA * 128.0); + posB = Commons.fractv2(posB * 128.0); # each rune touches the edge of its box on all 4 sides if (i == 0): @@ -104,8 +106,8 @@ func Rune(uv : Vector2) -> float: var snaps : Vector2 = Vector2(2.0, 3.0); - posA = (floorv2(posA * snaps) + Vector2(0.5, 0.5)) / snaps; # + 0.5 to center it in a grid cell - posB = (floorv2(posB * snaps) + Vector2(0.5, 0.5)) / snaps; + posA = (Commons.floorv2(posA * snaps) + Vector2(0.5, 0.5)) / snaps; # + 0.5 to center it in a grid cell + posB = (Commons.floorv2(posB * snaps) + Vector2(0.5, 0.5)) / snaps; #if (distance(posA, posB) < 0.0001) continue; // eliminate dots. # Dots (degenerate lines) are not cross-GPU safe without adding 0.001 - divide by 0 error. @@ -114,160 +116,6 @@ func Rune(uv : Vector2) -> float: return finalLine; - - -func clampv3(v : Vector3, mi : Vector3, ma : Vector3) -> Vector3: - v.x = clamp(v.x, mi.x, ma.x) - v.y = clamp(v.y, mi.y, ma.y) - v.y = clamp(v.z, mi.z, ma.z) - - return v - - -func floorv2(a : Vector2) -> Vector2: - var v : Vector2 = Vector2() - - v.x = floor(a.x) - v.y = floor(a.y) - - return v - -func maxv2(a : Vector2, b : Vector2) -> Vector2: - var v : Vector2 = Vector2() - - v.x = max(a.x, b.x) - v.y = max(a.y, b.y) - - return v - -func maxv3(a : Vector3, b : Vector3) -> Vector3: - var v : Vector3 = Vector3() - - v.x = max(a.x, b.x) - v.y = max(a.y, b.y) - v.z = max(a.z, b.z) - - return v - -func absv2(v : Vector2) -> Vector2: - v.x = abs(v.x) - v.y = abs(v.y) - - return v - -func absv3(v : Vector3) -> Vector3: - v.x = abs(v.x) - v.y = abs(v.y) - v.y = abs(v.y) - - return v - -func cosv2(v : Vector2) -> Vector2: - v.x = cos(v.x) - v.y = cos(v.y) - - return v - -func cosv3(v : Vector3) -> Vector3: - v.x = cos(v.x) - v.y = cos(v.y) - v.y = cos(v.y) - - return v - -func modv3(a : Vector3, b : Vector3) -> Vector3: - var v : Vector3 = Vector3() - - v.x = modf(a.x, b.x) - v.y = modf(a.y, b.y) - v.z = modf(a.z, b.z) - - return v - - -func modv2(a : Vector2, b : Vector2) -> Vector2: - var v : Vector2 = Vector2() - - v.x = modf(a.x, b.x) - v.y = modf(a.y, b.y) - - return v - -func modf(x : float, y : float) -> float: - return x - y * floor(x / y) - -func fractv2(v : Vector2) -> Vector2: - v.x = v.x - floor(v.x) - v.y = v.y - floor(v.y) - - return v - -func fractv3(v : Vector3) -> Vector3: - v.x = v.x - floor(v.x) - v.y = v.y - floor(v.y) - v.z = v.z - floor(v.z) - - return v - -func fract(f : float) -> float: - return f - floor(f) - -func rand(x : Vector2) -> float: - return fract(cos(x.dot(Vector2(13.9898, 8.141))) * 43758.5453); - -func rand2(x : Vector2) -> Vector2: - return fractv2(cosv2(Vector2(x.dot(Vector2(13.9898, 8.141)), - x.dot(Vector2(3.4562, 17.398)))) * 43758.5453); - -func rand3(x : Vector2) -> Vector3: - return fractv3(cosv3(Vector3(x.dot(Vector2(13.9898, 8.141)), - x.dot(Vector2(3.4562, 17.398)), - x.dot(Vector2(13.254, 5.867)))) * 43758.5453); - -func step(edge : float, x : float) -> float: - if x < edge: - return 0.0 - else: - return 1.0 - - -#common ----- - -#float rand(vec2 x) { -# return fract(cos(dot(x, vec2(13.9898, 8.141))) * 43758.5453); -#} -# -#vec2 rand2(vec2 x) { -# return fract(cos(vec2(dot(x, vec2(13.9898, 8.141)), -# dot(x, vec2(3.4562, 17.398)))) * 43758.5453); -#} -# -#vec3 rand3(vec2 x) { -# return fract(cos(vec3(dot(x, vec2(13.9898, 8.141)), -# dot(x, vec2(3.4562, 17.398)), -# dot(x, vec2(13.254, 5.867)))) * 43758.5453); -#} -# -#vec3 rgb2hsv(vec3 c) { -# vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0); -# vec4 p = c.g < c.b ? vec4(c.bg, K.wz) : vec4(c.gb, K.xy); -# vec4 q = c.r < p.x ? vec4(p.xyw, c.r) : vec4(c.r, p.yzx); -# -# float d = q.x - min(q.w, q.y); -# float e = 1.0e-10; -# return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x); -#} -# -#vec3 hsv2rgb(vec3 c) { -# vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); -# vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www); -# return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y); -#} - - -#end common - - func reffg(): return false diff --git a/game/addons/mat_maker_gd/nodes/pattern/pattern_scratches.gd b/game/addons/mat_maker_gd/nodes/pattern/pattern_scratches.gd index c4e0b01f..65c8ff70 100644 --- a/game/addons/mat_maker_gd/nodes/pattern/pattern_scratches.gd +++ b/game/addons/mat_maker_gd/nodes/pattern/pattern_scratches.gd @@ -1,6 +1,8 @@ tool extends TextureRect +var Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") + var image : Image var tex : ImageTexture @@ -65,9 +67,9 @@ func scratch(uv : Vector2, size : Vector2, waviness : float, angle : float, rand var subdivide : float = floor(1.0/size.x); var cut : float = size.x*subdivide; uv *= subdivide; - var r1 : Vector2 = rand2(floorv2(uv) + pseed); - var r2 : Vector2 = rand2(r1); - uv = fractv2(uv); + var r1 : Vector2 = Commons.rand2(Commons.floorv2(uv) + pseed); + var r2 : Vector2 = Commons.rand2(r1); + uv = Commons.fractv2(uv); uv = 2.0 * uv - Vector2(1, 1); var a : float = 6.28*(angle+(r1.x-0.5)*randomness); @@ -86,163 +88,11 @@ func scratches(uv : Vector2, layers : int, size : Vector2, waviness : float, ang var v : float = 0.0; for i in range(layers):# (int i = 0; i < layers; ++i) { - v = max(v, scratch(fractv2(uv + pseed), size, waviness, angle/360.0, randomness, pseed)); - pseed = rand2(pseed); + v = max(v, scratch(Commons.fractv2(uv + pseed), size, waviness, angle/360.0, randomness, pseed)); + pseed = Commons.rand2(pseed); return v; -func clampv3(v : Vector3, mi : Vector3, ma : Vector3) -> Vector3: - v.x = clamp(v.x, mi.x, ma.x) - v.y = clamp(v.y, mi.y, ma.y) - v.y = clamp(v.z, mi.z, ma.z) - - return v - - -func floorv2(a : Vector2) -> Vector2: - var v : Vector2 = Vector2() - - v.x = floor(a.x) - v.y = floor(a.y) - - return v - -func maxv2(a : Vector2, b : Vector2) -> Vector2: - var v : Vector2 = Vector2() - - v.x = max(a.x, b.x) - v.y = max(a.y, b.y) - - return v - -func maxv3(a : Vector3, b : Vector3) -> Vector3: - var v : Vector3 = Vector3() - - v.x = max(a.x, b.x) - v.y = max(a.y, b.y) - v.z = max(a.z, b.z) - - return v - -func absv2(v : Vector2) -> Vector2: - v.x = abs(v.x) - v.y = abs(v.y) - - return v - -func absv3(v : Vector3) -> Vector3: - v.x = abs(v.x) - v.y = abs(v.y) - v.y = abs(v.y) - - return v - -func cosv2(v : Vector2) -> Vector2: - v.x = cos(v.x) - v.y = cos(v.y) - - return v - -func cosv3(v : Vector3) -> Vector3: - v.x = cos(v.x) - v.y = cos(v.y) - v.y = cos(v.y) - - return v - -func modv3(a : Vector3, b : Vector3) -> Vector3: - var v : Vector3 = Vector3() - - v.x = modf(a.x, b.x) - v.y = modf(a.y, b.y) - v.z = modf(a.z, b.z) - - return v - - -func modv2(a : Vector2, b : Vector2) -> Vector2: - var v : Vector2 = Vector2() - - v.x = modf(a.x, b.x) - v.y = modf(a.y, b.y) - - return v - -func modf(x : float, y : float) -> float: - return x - y * floor(x / y) - -func fractv2(v : Vector2) -> Vector2: - v.x = v.x - floor(v.x) - v.y = v.y - floor(v.y) - - return v - -func fractv3(v : Vector3) -> Vector3: - v.x = v.x - floor(v.x) - v.y = v.y - floor(v.y) - v.z = v.z - floor(v.z) - - return v - -func fract(f : float) -> float: - return f - floor(f) - -func rand(x : Vector2) -> float: - return fract(cos(x.dot(Vector2(13.9898, 8.141))) * 43758.5453); - -func rand2(x : Vector2) -> Vector2: - return fractv2(cosv2(Vector2(x.dot(Vector2(13.9898, 8.141)), - x.dot(Vector2(3.4562, 17.398)))) * 43758.5453); - -func rand3(x : Vector2) -> Vector3: - return fractv3(cosv3(Vector3(x.dot(Vector2(13.9898, 8.141)), - x.dot(Vector2(3.4562, 17.398)), - x.dot(Vector2(13.254, 5.867)))) * 43758.5453); - -func step(edge : float, x : float) -> float: - if x < edge: - return 0.0 - else: - return 1.0 - - -#common ----- - -#float rand(vec2 x) { -# return fract(cos(dot(x, vec2(13.9898, 8.141))) * 43758.5453); -#} -# -#vec2 rand2(vec2 x) { -# return fract(cos(vec2(dot(x, vec2(13.9898, 8.141)), -# dot(x, vec2(3.4562, 17.398)))) * 43758.5453); -#} -# -#vec3 rand3(vec2 x) { -# return fract(cos(vec3(dot(x, vec2(13.9898, 8.141)), -# dot(x, vec2(3.4562, 17.398)), -# dot(x, vec2(13.254, 5.867)))) * 43758.5453); -#} -# -#vec3 rgb2hsv(vec3 c) { -# vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0); -# vec4 p = c.g < c.b ? vec4(c.bg, K.wz) : vec4(c.gb, K.xy); -# vec4 q = c.r < p.x ? vec4(p.xyw, c.r) : vec4(c.r, p.yzx); -# -# float d = q.x - min(q.w, q.y); -# float e = 1.0e-10; -# return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x); -#} -# -#vec3 hsv2rgb(vec3 c) { -# vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); -# vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www); -# return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y); -#} - - -#end common - - func reffg(): return false diff --git a/game/addons/mat_maker_gd/nodes/pattern/pattern_sine_wave.gd b/game/addons/mat_maker_gd/nodes/pattern/pattern_sine_wave.gd index 33a3d4d3..fa7ac8a5 100644 --- a/game/addons/mat_maker_gd/nodes/pattern/pattern_sine_wave.gd +++ b/game/addons/mat_maker_gd/nodes/pattern/pattern_sine_wave.gd @@ -1,6 +1,8 @@ tool extends TextureRect +var Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") + var image : Image var tex : ImageTexture @@ -61,168 +63,6 @@ func sinewave(uv : Vector2) -> Color: return Color(f, f, f, 1) -func clampv3(v : Vector3, mi : Vector3, ma : Vector3) -> Vector3: - v.x = clamp(v.x, mi.x, ma.x) - v.y = clamp(v.y, mi.y, ma.y) - v.y = clamp(v.z, mi.z, ma.z) - - return v - -func floorc(a : Color) -> Color: - var v : Color = Color() - - v.r = floor(a.r) - v.g = floor(a.g) - v.b = floor(a.b) - v.a = floor(a.a) - - return v - - -func floorv2(a : Vector2) -> Vector2: - var v : Vector2 = Vector2() - - v.x = floor(a.x) - v.y = floor(a.y) - - return v - -func maxv2(a : Vector2, b : Vector2) -> Vector2: - var v : Vector2 = Vector2() - - v.x = max(a.x, b.x) - v.y = max(a.y, b.y) - - return v - -func maxv3(a : Vector3, b : Vector3) -> Vector3: - var v : Vector3 = Vector3() - - v.x = max(a.x, b.x) - v.y = max(a.y, b.y) - v.z = max(a.z, b.z) - - return v - -func absv2(v : Vector2) -> Vector2: - v.x = abs(v.x) - v.y = abs(v.y) - - return v - -func absv3(v : Vector3) -> Vector3: - v.x = abs(v.x) - v.y = abs(v.y) - v.y = abs(v.y) - - return v - -func cosv2(v : Vector2) -> Vector2: - v.x = cos(v.x) - v.y = cos(v.y) - - return v - -func cosv3(v : Vector3) -> Vector3: - v.x = cos(v.x) - v.y = cos(v.y) - v.y = cos(v.y) - - return v - -func modv3(a : Vector3, b : Vector3) -> Vector3: - var v : Vector3 = Vector3() - - v.x = modf(a.x, b.x) - v.y = modf(a.y, b.y) - v.z = modf(a.z, b.z) - - return v - - -func modv2(a : Vector2, b : Vector2) -> Vector2: - var v : Vector2 = Vector2() - - v.x = modf(a.x, b.x) - v.y = modf(a.y, b.y) - - return v - -func modf(x : float, y : float) -> float: - return x - y * floor(x / y) - -func fractv2(v : Vector2) -> Vector2: - v.x = v.x - floor(v.x) - v.y = v.y - floor(v.y) - - return v - -func fractv3(v : Vector3) -> Vector3: - v.x = v.x - floor(v.x) - v.y = v.y - floor(v.y) - v.z = v.z - floor(v.z) - - return v - -func fract(f : float) -> float: - return f - floor(f) - -func rand(x : Vector2) -> float: - return fract(cos(x.dot(Vector2(13.9898, 8.141))) * 43758.5453); - -func rand2(x : Vector2) -> Vector2: - return fractv2(cosv2(Vector2(x.dot(Vector2(13.9898, 8.141)), - x.dot(Vector2(3.4562, 17.398)))) * 43758.5453); - -func rand3(x : Vector2) -> Vector3: - return fractv3(cosv3(Vector3(x.dot(Vector2(13.9898, 8.141)), - x.dot(Vector2(3.4562, 17.398)), - x.dot(Vector2(13.254, 5.867)))) * 43758.5453); - -func step(edge : float, x : float) -> float: - if x < edge: - return 0.0 - else: - return 1.0 - - -#common ----- - -#float rand(vec2 x) { -# return fract(cos(dot(x, vec2(13.9898, 8.141))) * 43758.5453); -#} -# -#vec2 rand2(vec2 x) { -# return fract(cos(vec2(dot(x, vec2(13.9898, 8.141)), -# dot(x, vec2(3.4562, 17.398)))) * 43758.5453); -#} -# -#vec3 rand3(vec2 x) { -# return fract(cos(vec3(dot(x, vec2(13.9898, 8.141)), -# dot(x, vec2(3.4562, 17.398)), -# dot(x, vec2(13.254, 5.867)))) * 43758.5453); -#} -# -#vec3 rgb2hsv(vec3 c) { -# vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0); -# vec4 p = c.g < c.b ? vec4(c.bg, K.wz) : vec4(c.gb, K.xy); -# vec4 q = c.r < p.x ? vec4(p.xyw, c.r) : vec4(c.r, p.yzx); -# -# float d = q.x - min(q.w, q.y); -# float e = 1.0e-10; -# return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x); -#} -# -#vec3 hsv2rgb(vec3 c) { -# vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); -# vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www); -# return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y); -#} - - -#end common - - func reffg(): return false diff --git a/game/addons/mat_maker_gd/nodes/pattern/pattern_truchet.gd b/game/addons/mat_maker_gd/nodes/pattern/pattern_truchet.gd index 9ae6cd4e..3abe5786 100644 --- a/game/addons/mat_maker_gd/nodes/pattern/pattern_truchet.gd +++ b/game/addons/mat_maker_gd/nodes/pattern/pattern_truchet.gd @@ -1,6 +1,8 @@ tool extends TextureRect +var Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") + var image : Image var tex : ImageTexture @@ -61,161 +63,18 @@ func trunchet(uv : Vector2) -> Color: return col func truchet1(uv : Vector2, pseed : Vector2) -> float: - var i : Vector2 = floorv2(uv); - var f : Vector2 = fractv2(uv) - Vector2(0.5, 0.5); - return 1.0 - abs(abs((2.0*step(rand(i+pseed), 0.5)-1.0)*f.x+f.y)-0.5); + var i : Vector2 = Commons.floorv2(uv); + var f : Vector2 = Commons.fractv2(uv) - Vector2(0.5, 0.5); + return 1.0 - abs(abs((2.0*Commons.step(Commons.rand(i+pseed), 0.5)-1.0)*f.x+f.y)-0.5); func truchet2(uv : Vector2, pseed : Vector2) -> float: - var i : Vector2 = floorv2(uv); - var f : Vector2 = fractv2(uv); - var random : float = step(rand(i+pseed), 0.5); + var i : Vector2 = Commons.floorv2(uv); + var f : Vector2 = Commons.fractv2(uv); + var random : float = Commons.step(Commons.rand(i+pseed), 0.5); f.x *= 2.0 * random-1.0; f.x += 1.0 - random; return 1.0 - min(abs(f.length() - 0.5), abs((Vector2(1, 1) - f).length() - 0.5)); - -func clampv3(v : Vector3, mi : Vector3, ma : Vector3) -> Vector3: - v.x = clamp(v.x, mi.x, ma.x) - v.y = clamp(v.y, mi.y, ma.y) - v.y = clamp(v.z, mi.z, ma.z) - - return v - - -func floorv2(a : Vector2) -> Vector2: - var v : Vector2 = Vector2() - - v.x = floor(a.x) - v.y = floor(a.y) - - return v - -func maxv2(a : Vector2, b : Vector2) -> Vector2: - var v : Vector2 = Vector2() - - v.x = max(a.x, b.x) - v.y = max(a.y, b.y) - - return v - -func maxv3(a : Vector3, b : Vector3) -> Vector3: - var v : Vector3 = Vector3() - - v.x = max(a.x, b.x) - v.y = max(a.y, b.y) - v.z = max(a.z, b.z) - - return v - -func absv2(v : Vector2) -> Vector2: - v.x = abs(v.x) - v.y = abs(v.y) - - return v - -func absv3(v : Vector3) -> Vector3: - v.x = abs(v.x) - v.y = abs(v.y) - v.y = abs(v.y) - - return v - -func cosv3(v : Vector3) -> Vector3: - v.x = cos(v.x) - v.y = cos(v.y) - v.y = cos(v.y) - - return v - -func modv3(a : Vector3, b : Vector3) -> Vector3: - var v : Vector3 = Vector3() - - v.x = modf(a.x, b.x) - v.y = modf(a.y, b.y) - v.z = modf(a.z, b.z) - - return v - - -func modv2(a : Vector2, b : Vector2) -> Vector2: - var v : Vector2 = Vector2() - - v.x = modf(a.x, b.x) - v.y = modf(a.y, b.y) - - return v - -func modf(x : float, y : float) -> float: - return x - y * floor(x / y) - -func fractv2(v : Vector2) -> Vector2: - v.x = v.x - floor(v.x) - v.y = v.y - floor(v.y) - - return v - -func fractv3(v : Vector3) -> Vector3: - v.x = v.x - floor(v.x) - v.y = v.y - floor(v.y) - v.z = v.z - floor(v.z) - - return v - -func fractf(f : float) -> float: - return f - floor(f) - -func rand(x : Vector2) -> float: - return fractf(cos(x.dot(Vector2(13.9898, 8.141))) * 43758.5453); - -func rand3(x : Vector2) -> Vector3: - return fractv3(cosv3(Vector3(x.dot(Vector2(13.9898, 8.141)), - x.dot(Vector2(3.4562, 17.398)), - x.dot(Vector2(13.254, 5.867)))) * 43758.5453); - -func step(edge : float, x : float) -> float: - if x < edge: - return 0.0 - else: - return 1.0 - - -#common ----- - -#float rand(vec2 x) { -# return fract(cos(dot(x, vec2(13.9898, 8.141))) * 43758.5453); -#} -# -#vec2 rand2(vec2 x) { -# return fract(cos(vec2(dot(x, vec2(13.9898, 8.141)), -# dot(x, vec2(3.4562, 17.398)))) * 43758.5453); -#} -# -#vec3 rand3(vec2 x) { -# return fract(cos(vec3(dot(x, vec2(13.9898, 8.141)), -# dot(x, vec2(3.4562, 17.398)), -# dot(x, vec2(13.254, 5.867)))) * 43758.5453); -#} -# -#vec3 rgb2hsv(vec3 c) { -# vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0); -# vec4 p = c.g < c.b ? vec4(c.bg, K.wz) : vec4(c.gb, K.xy); -# vec4 q = c.r < p.x ? vec4(p.xyw, c.r) : vec4(c.r, p.yzx); -# -# float d = q.x - min(q.w, q.y); -# float e = 1.0e-10; -# return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x); -#} -# -#vec3 hsv2rgb(vec3 c) { -# vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); -# vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www); -# return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y); -#} - - -#end common - - func reffg(): return false diff --git a/game/addons/mat_maker_gd/nodes/pattern/pattern_weave.gd b/game/addons/mat_maker_gd/nodes/pattern/pattern_weave.gd index c94a2f68..06f72dd0 100644 --- a/game/addons/mat_maker_gd/nodes/pattern/pattern_weave.gd +++ b/game/addons/mat_maker_gd/nodes/pattern/pattern_weave.gd @@ -1,6 +1,8 @@ tool extends TextureRect +var Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") + var image : Image var tex : ImageTexture @@ -61,153 +63,11 @@ func weavecol(uv : Vector2) -> Color: func weave(uv : Vector2, count : Vector2, width : float) -> float: uv *= count; - var c : float = (sin(3.1415926* (uv.x + floor(uv.y)))*0.5+0.5)*step(abs(fract(uv.y)-0.5), width*0.5); - c = max(c, (sin(3.1415926*(1.0+uv.y+floor(uv.x)))*0.5+0.5)*step(abs(fract(uv.x)-0.5), width*0.5)); + var c : float = (sin(3.1415926* (uv.x + floor(uv.y)))*0.5+0.5)*Commons.step(abs(Commons.fract(uv.y)-0.5), width*0.5); + c = max(c, (sin(3.1415926*(1.0+uv.y+floor(uv.x)))*0.5+0.5)*Commons.step(abs(Commons.fract(uv.x)-0.5), width*0.5)); return c; -func clampv3(v : Vector3, mi : Vector3, ma : Vector3) -> Vector3: - v.x = clamp(v.x, mi.x, ma.x) - v.y = clamp(v.y, mi.y, ma.y) - v.y = clamp(v.z, mi.z, ma.z) - - return v - - -func floorv2(a : Vector2) -> Vector2: - var v : Vector2 = Vector2() - - v.x = floor(a.x) - v.y = floor(a.y) - - return v - -func maxv2(a : Vector2, b : Vector2) -> Vector2: - var v : Vector2 = Vector2() - - v.x = max(a.x, b.x) - v.y = max(a.y, b.y) - - return v - -func maxv3(a : Vector3, b : Vector3) -> Vector3: - var v : Vector3 = Vector3() - - v.x = max(a.x, b.x) - v.y = max(a.y, b.y) - v.z = max(a.z, b.z) - - return v - -func absv2(v : Vector2) -> Vector2: - v.x = abs(v.x) - v.y = abs(v.y) - - return v - -func absv3(v : Vector3) -> Vector3: - v.x = abs(v.x) - v.y = abs(v.y) - v.y = abs(v.y) - - return v - -func cosv3(v : Vector3) -> Vector3: - v.x = cos(v.x) - v.y = cos(v.y) - v.y = cos(v.y) - - return v - -func modv3(a : Vector3, b : Vector3) -> Vector3: - var v : Vector3 = Vector3() - - v.x = modf(a.x, b.x) - v.y = modf(a.y, b.y) - v.z = modf(a.z, b.z) - - return v - - -func modv2(a : Vector2, b : Vector2) -> Vector2: - var v : Vector2 = Vector2() - - v.x = modf(a.x, b.x) - v.y = modf(a.y, b.y) - - return v - -func modf(x : float, y : float) -> float: - return x - y * floor(x / y) - -func fractv2(v : Vector2) -> Vector2: - v.x = v.x - floor(v.x) - v.y = v.y - floor(v.y) - - return v - -func fractv3(v : Vector3) -> Vector3: - v.x = v.x - floor(v.x) - v.y = v.y - floor(v.y) - v.z = v.z - floor(v.z) - - return v - -func fract(f : float) -> float: - return f - floor(f) - -func rand(x : Vector2) -> float: - return fract(cos(x.dot(Vector2(13.9898, 8.141))) * 43758.5453); - -func rand3(x : Vector2) -> Vector3: - return fractv3(cosv3(Vector3(x.dot(Vector2(13.9898, 8.141)), - x.dot(Vector2(3.4562, 17.398)), - x.dot(Vector2(13.254, 5.867)))) * 43758.5453); - -func step(edge : float, x : float) -> float: - if x < edge: - return 0.0 - else: - return 1.0 - - -#common ----- - -#float rand(vec2 x) { -# return fract(cos(dot(x, vec2(13.9898, 8.141))) * 43758.5453); -#} -# -#vec2 rand2(vec2 x) { -# return fract(cos(vec2(dot(x, vec2(13.9898, 8.141)), -# dot(x, vec2(3.4562, 17.398)))) * 43758.5453); -#} -# -#vec3 rand3(vec2 x) { -# return fract(cos(vec3(dot(x, vec2(13.9898, 8.141)), -# dot(x, vec2(3.4562, 17.398)), -# dot(x, vec2(13.254, 5.867)))) * 43758.5453); -#} -# -#vec3 rgb2hsv(vec3 c) { -# vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0); -# vec4 p = c.g < c.b ? vec4(c.bg, K.wz) : vec4(c.gb, K.xy); -# vec4 q = c.r < p.x ? vec4(p.xyw, c.r) : vec4(c.r, p.yzx); -# -# float d = q.x - min(q.w, q.y); -# float e = 1.0e-10; -# return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x); -#} -# -#vec3 hsv2rgb(vec3 c) { -# vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); -# vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www); -# return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y); -#} - - -#end common - - func reffg(): return false