diff --git a/game/addons/mat_maker_gd/new_resource.tres b/game/addons/mat_maker_gd/new_resource.tres index c8f039c7..a69a1b6c 100644 --- a/game/addons/mat_maker_gd/new_resource.tres +++ b/game/addons/mat_maker_gd/new_resource.tres @@ -1,12 +1,16 @@ -[gd_resource type="Resource" load_steps=23 format=2] +[gd_resource type="Resource" load_steps=38 format=2] [ext_resource path="res://addons/mat_maker_gd/nodes/mm_material.gd" type="Script" id=1] [ext_resource path="res://addons/mat_maker_gd/nodes/sdf3d/sdf3d_shape_sphere.gd" type="Script" id=2] [ext_resource path="res://addons/mat_maker_gd/nodes/sdf3d/sdf3d_render.gd" type="Script" id=3] [ext_resource path="res://addons/mat_maker_gd/nodes/sdf3d/sdf3d_op_morph.gd" type="Script" id=4] [ext_resource path="res://addons/mat_maker_gd/nodes/mm_node_universal_property.gd" type="Script" id=5] +[ext_resource path="res://addons/mat_maker_gd/nodes/sdf3d/sdf3d_op_extrusion.gd" type="Script" id=6] +[ext_resource path="res://addons/mat_maker_gd/nodes/sdf3d/sdf3d_tf_rotate.gd" type="Script" id=7] +[ext_resource path="res://addons/mat_maker_gd/nodes/sdf3d/sdf3d_op_revolution.gd" type="Script" id=8] [ext_resource path="res://addons/mat_maker_gd/nodes/simple/image.gd" type="Script" id=10] [ext_resource path="res://addons/mat_maker_gd/nodes/sdf3d/sdf3d_shape_box.gd" type="Script" id=11] +[ext_resource path="res://addons/mat_maker_gd/nodes/sdf2d/sd_shape_circle.gd" type="Script" id=14] [sub_resource type="Resource" id=23] script = ExtResource( 5 ) @@ -23,7 +27,7 @@ graph_position = Vector2( 1020, 100 ) image = SubResource( 23 ) image_path = "/home/relintai/Projects/broken_seals/game/icon.png" -[sub_resource type="Resource" id=51] +[sub_resource type="Resource" id=57] script = ExtResource( 5 ) default_type = 2 default_int = 0 @@ -40,7 +44,7 @@ default_float = 0.0 default_vector2 = Vector2( 0, 0 ) default_vector3 = Vector3( 0, 0, 0 ) default_color = Color( 0, 0, 0, 1 ) -input_property = SubResource( 51 ) +input_property = SubResource( 57 ) [sub_resource type="Resource" id=27] script = ExtResource( 5 ) @@ -71,7 +75,7 @@ default_color = Color( 0, 0, 0, 1 ) [sub_resource type="Resource" id=30] script = ExtResource( 3 ) -graph_position = Vector2( 340, 140 ) +graph_position = Vector2( 460, 140 ) input = SubResource( 26 ) out_height_map = SubResource( 28 ) out_normal_map = SubResource( 29 ) @@ -128,6 +132,15 @@ default_vector3 = Vector3( 0, 0, 0 ) default_color = Color( 0, 0, 0, 1 ) input_property = SubResource( 52 ) +[sub_resource type="Resource" id=51] +script = ExtResource( 5 ) +default_type = 2 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + [sub_resource type="Resource" id=56] script = ExtResource( 4 ) graph_position = Vector2( 40, 300 ) @@ -136,7 +149,91 @@ input2 = SubResource( 55 ) output = SubResource( 51 ) amount = 0.6 +[sub_resource type="Resource" id=58] +script = ExtResource( 5 ) +default_type = 1 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=59] +script = ExtResource( 14 ) +graph_position = Vector2( -240, -60 ) +output = SubResource( 58 ) +center = Vector2( 0, 0 ) +radius = 0.1 + +[sub_resource type="Resource" id=60] +script = ExtResource( 5 ) +default_type = 1 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=61] +script = ExtResource( 5 ) +default_type = 2 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=62] +script = ExtResource( 8 ) +graph_position = Vector2( 20, -40 ) +input = SubResource( 60 ) +output = SubResource( 61 ) +offset = 0.4 + +[sub_resource type="Resource" id=63] +script = ExtResource( 5 ) +default_type = 1 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) +input_property = SubResource( 58 ) + +[sub_resource type="Resource" id=64] +script = ExtResource( 5 ) +default_type = 2 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) + +[sub_resource type="Resource" id=65] +script = ExtResource( 6 ) +graph_position = Vector2( 20, 120 ) +input = SubResource( 63 ) +output = SubResource( 64 ) +length = 0.3 + +[sub_resource type="Resource" id=66] +script = ExtResource( 5 ) +default_type = 2 +default_int = 0 +default_float = 0.0 +default_vector2 = Vector2( 0, 0 ) +default_vector3 = Vector3( 0, 0, 0 ) +default_color = Color( 0, 0, 0, 1 ) +input_property = SubResource( 64 ) + +[sub_resource type="Resource" id=67] +script = ExtResource( 7 ) +graph_position = Vector2( 260, -40 ) +input = SubResource( 66 ) +output = SubResource( 57 ) +rotation = Vector3( 30, 30, 30 ) + [resource] script = ExtResource( 1 ) image_size = Vector2( 128, 128 ) -nodes = [ SubResource( 24 ), SubResource( 30 ), SubResource( 50 ), SubResource( 53 ), SubResource( 56 ) ] +nodes = [ SubResource( 24 ), SubResource( 30 ), SubResource( 50 ), SubResource( 53 ), SubResource( 56 ), SubResource( 59 ), SubResource( 62 ), SubResource( 65 ), SubResource( 67 ) ] diff --git a/game/addons/mat_maker_gd/nodes/sdf3d/sdf3d_op_extrusion.gd b/game/addons/mat_maker_gd/nodes/sdf3d/sdf3d_op_extrusion.gd new file mode 100644 index 00000000..7f7613a4 --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/sdf3d/sdf3d_op_extrusion.gd @@ -0,0 +1,63 @@ +tool +extends MMNode + +const Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") +var SDF3D = preload("res://addons/mat_maker_gd/nodes/common/sdf3d.gd") + +export(Resource) var input : Resource +export(Resource) var output : Resource +export(float) var length : float = 0.25 + +func _init_properties(): + if !input: + input = MMNodeUniversalProperty.new() + input.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_FLOAT + + input.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL +# input.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_FLOAT + input.slot_name = ">>> Input " + + if !input.is_connected("changed", self, "on_input_changed"): + input.connect("changed", self, "on_input_changed") + + if !output: + output = MMNodeUniversalProperty.new() + output.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_VECTOR2 + + output.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_FLOAT + output.slot_name = ">>> Output >>>" + output.get_value_from_owner = true + + register_input_property(input) + register_output_property(output) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_label_universal(input) + mm_graph_node.add_slot_label_universal(output) + + mm_graph_node.add_slot_float("get_length", "set_length", "Length", 0.01) + +func get_property_value_sdf3d(uv3 : Vector3) -> Vector2: + #vec2 $(name_uv)_w = vec2($in($uv.xz+vec2(0.5)),abs($uv.y)-$d); + #ret min(max($(name_uv)_w.x,$(name_uv)_w.y),0.0)+length(max($(name_uv)_w,0.0)) + + var f : float = input.get_value(Vector2(uv3.x, uv3.z) + Vector2(0.5, 0.5)) + var w : Vector2 = Vector2(f, abs(uv3.y) - length) + + var ff : float = min(max(w.x,w.y),0.0) + Commons.maxv2(w, Vector2()).length() + + return Vector2(ff, 0) + +#length +func get_length() -> float: + return length + +func set_length(val : float) -> void: + length = val + + emit_changed() + output.emit_changed() + +func on_input_changed() -> void: + emit_changed() + output.emit_changed() diff --git a/game/addons/mat_maker_gd/nodes/sdf3d/sdf3d_op_revolution.gd b/game/addons/mat_maker_gd/nodes/sdf3d/sdf3d_op_revolution.gd new file mode 100644 index 00000000..98df2ab5 --- /dev/null +++ b/game/addons/mat_maker_gd/nodes/sdf3d/sdf3d_op_revolution.gd @@ -0,0 +1,60 @@ +tool +extends MMNode + +const Commons = preload("res://addons/mat_maker_gd/nodes/common/commons.gd") +var SDF3D = preload("res://addons/mat_maker_gd/nodes/common/sdf3d.gd") + +export(Resource) var input : Resource +export(Resource) var output : Resource +export(float) var offset : float = 0.25 + +func _init_properties(): + if !input: + input = MMNodeUniversalProperty.new() + input.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_FLOAT + + input.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_UNIVERSAL +# input.input_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_FLOAT + input.slot_name = ">>> Input " + + if !input.is_connected("changed", self, "on_input_changed"): + input.connect("changed", self, "on_input_changed") + + if !output: + output = MMNodeUniversalProperty.new() + output.default_type = MMNodeUniversalProperty.MMNodeUniversalPropertyDefaultType.DEFAULT_TYPE_VECTOR2 + + output.output_slot_type = MMNodeUniversalProperty.SlotTypes.SLOT_TYPE_FLOAT + output.slot_name = ">>> Output >>>" + output.get_value_from_owner = true + + register_input_property(input) + register_output_property(output) + +func _register_methods(mm_graph_node) -> void: + mm_graph_node.add_slot_label_universal(input) + mm_graph_node.add_slot_label_universal(output) + + mm_graph_node.add_slot_float("get_offset", "set_offset", "Offset", 0.01) + +func get_property_value_sdf3d(uv3 : Vector3) -> Vector2: + #vec2 $(name_uv)_q = vec2(length($uv.xy) - $d + 0.5, $uv.z + 0.5); + + var uv : Vector2 = Vector2(Vector2(uv3.x, uv3.y).length() - offset + 0.5, uv3.z + 0.5) + var f : float = input.get_value(uv) + + return Vector2(f, 0) + +#offset +func get_offset() -> float: + return offset + +func set_offset(val : float) -> void: + offset = val + + emit_changed() + output.emit_changed() + +func on_input_changed() -> void: + emit_changed() + output.emit_changed()