From d76cc6b6ddb0609a66717a72dd5a424f00f51ac3 Mon Sep 17 00:00:00 2001 From: Donn Ingle Date: Sat, 8 Apr 2023 17:04:57 +0200 Subject: [PATCH 1/2] Added my latest work afresh --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 164214c..53bc78f 100644 --- a/.gitignore +++ b/.gitignore @@ -11,5 +11,5 @@ export_presets.cfg .mono/ data_*/ -# Ignore dbat dev stuff +# Ignore dbat dev stuff!! _dbat_dev/ From 6afeafee8890400a6361e0a4fc0e18b29c93d3dd Mon Sep 17 00:00:00 2001 From: Donn Ingle Date: Sat, 8 Apr 2023 17:04:57 +0200 Subject: [PATCH 2/2] Removed changes to .gitignore Tuned the box and circle code and demos Added my latest work afresh --- .gitignore | 2 - .../rerouter_2d_demo.tscn} | 4 +- .../rerouter_demo.tres} | 0 .../rocky_material.tres | 13 -- .../technique1_demo.tscn | 16 ++- .../technique1_vshader.tres | 3 +- .../dbat_demos/shapes/shapes_shader.tres | 123 ------------------ ...apes_2d_demo.tscn => smooth_box_demo.tscn} | 6 +- .../dbat_demos/shapes/smooth_box_shader.tres | 84 ++++++++++++ .../dbat_demos/shapes/smooth_circle_demo.tscn | 15 +++ .../shapes/smooth_circle_shader.tres | 115 ++++++++++++++++ .../AddonExamples/examples.tscn | 69 +++++----- addons/VisualShaderExtras/Shapes/Box.gd | 3 +- addons/VisualShaderExtras/Shapes/Circle.gd | 2 +- 14 files changed, 272 insertions(+), 183 deletions(-) rename addons/VisualShaderExtras/AddonExamples/dbat_demos/{rerouters/rerouters_2d_demo.tscn => rerouter/rerouter_2d_demo.tscn} (77%) rename addons/VisualShaderExtras/AddonExamples/dbat_demos/{rerouters/Route_Demo.tres => rerouter/rerouter_demo.tres} (100%) delete mode 100644 addons/VisualShaderExtras/AddonExamples/dbat_demos/seamless_tiling/seamless_tiler_technique1/rocky_material.tres delete mode 100644 addons/VisualShaderExtras/AddonExamples/dbat_demos/shapes/shapes_shader.tres rename addons/VisualShaderExtras/AddonExamples/dbat_demos/shapes/{smooth_shapes_2d_demo.tscn => smooth_box_demo.tscn} (61%) create mode 100644 addons/VisualShaderExtras/AddonExamples/dbat_demos/shapes/smooth_box_shader.tres create mode 100644 addons/VisualShaderExtras/AddonExamples/dbat_demos/shapes/smooth_circle_demo.tscn create mode 100644 addons/VisualShaderExtras/AddonExamples/dbat_demos/shapes/smooth_circle_shader.tres diff --git a/.gitignore b/.gitignore index 164214c..ff2398e 100644 --- a/.gitignore +++ b/.gitignore @@ -11,5 +11,3 @@ export_presets.cfg .mono/ data_*/ -# Ignore dbat dev stuff -_dbat_dev/ diff --git a/addons/VisualShaderExtras/AddonExamples/dbat_demos/rerouters/rerouters_2d_demo.tscn b/addons/VisualShaderExtras/AddonExamples/dbat_demos/rerouter/rerouter_2d_demo.tscn similarity index 77% rename from addons/VisualShaderExtras/AddonExamples/dbat_demos/rerouters/rerouters_2d_demo.tscn rename to addons/VisualShaderExtras/AddonExamples/dbat_demos/rerouter/rerouter_2d_demo.tscn index 720a08a..1e431e5 100644 --- a/addons/VisualShaderExtras/AddonExamples/dbat_demos/rerouters/rerouters_2d_demo.tscn +++ b/addons/VisualShaderExtras/AddonExamples/dbat_demos/rerouter/rerouter_2d_demo.tscn @@ -1,7 +1,7 @@ -[gd_scene load_steps=4 format=3 uid="uid://dnfes3g0gsf4n"] +[gd_scene load_steps=4 format=3] [ext_resource type="Texture2D" uid="uid://dkwktkcfupn2y" path="res://addons/VisualShaderExtras/AddonExamples/icon.svg" id="2_hk26s"] -[ext_resource type="Shader" path="res://addons/VisualShaderExtras/AddonExamples/dbat_demos/rerouters/Route_Demo.tres" id="3_15e5f"] +[ext_resource type="Shader" uid="uid://o5p3xjges15i" path="res://addons/VisualShaderExtras/AddonExamples/dbat_demos/rerouter/rerouter_demo.tres" id="3_15e5f"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_1wqry"] shader = ExtResource("3_15e5f") diff --git a/addons/VisualShaderExtras/AddonExamples/dbat_demos/rerouters/Route_Demo.tres b/addons/VisualShaderExtras/AddonExamples/dbat_demos/rerouter/rerouter_demo.tres similarity index 100% rename from addons/VisualShaderExtras/AddonExamples/dbat_demos/rerouters/Route_Demo.tres rename to addons/VisualShaderExtras/AddonExamples/dbat_demos/rerouter/rerouter_demo.tres diff --git a/addons/VisualShaderExtras/AddonExamples/dbat_demos/seamless_tiling/seamless_tiler_technique1/rocky_material.tres b/addons/VisualShaderExtras/AddonExamples/dbat_demos/seamless_tiling/seamless_tiler_technique1/rocky_material.tres deleted file mode 100644 index d5d2787..0000000 --- a/addons/VisualShaderExtras/AddonExamples/dbat_demos/seamless_tiling/seamless_tiler_technique1/rocky_material.tres +++ /dev/null @@ -1,13 +0,0 @@ -[gd_resource type="ShaderMaterial" load_steps=5 format=3] - -[ext_resource type="Shader" path="res://addons/VisualShaderExtras/AddonExamples/dbat_demos/seamless_tiling/seamless_tiler_technique1/technique1_vshader.tres" id="1_suqal"] -[ext_resource type="Texture2D" uid="uid://ccra6c4ccwuya" path="res://addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/textures/rock_orm_orm.png" id="2_6f4gk"] -[ext_resource type="Texture2D" uid="uid://dq3jk3ga3vpy8" path="res://addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/textures/rock_orm_albedo.png" id="3_ppo4s"] -[ext_resource type="Texture2D" uid="uid://dq1popjjfe6u8" path="res://addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/textures/rock_orm_normal.png" id="4_2kau3"] - -[resource] -render_priority = 0 -shader = ExtResource("1_suqal") -shader_parameter/albedo = ExtResource("3_ppo4s") -shader_parameter/norm = ExtResource("4_2kau3") -shader_parameter/ORM = ExtResource("2_6f4gk") diff --git a/addons/VisualShaderExtras/AddonExamples/dbat_demos/seamless_tiling/seamless_tiler_technique1/technique1_demo.tscn b/addons/VisualShaderExtras/AddonExamples/dbat_demos/seamless_tiling/seamless_tiler_technique1/technique1_demo.tscn index 2156e05..f3d004f 100644 --- a/addons/VisualShaderExtras/AddonExamples/dbat_demos/seamless_tiling/seamless_tiler_technique1/technique1_demo.tscn +++ b/addons/VisualShaderExtras/AddonExamples/dbat_demos/seamless_tiling/seamless_tiler_technique1/technique1_demo.tscn @@ -1,16 +1,26 @@ -[gd_scene load_steps=3 format=3] +[gd_scene load_steps=7 format=3 uid="uid://d3l5jysmci50t"] -[ext_resource type="Material" path="res://addons/VisualShaderExtras/AddonExamples/dbat_demos/seamless_tiling/seamless_tiler_technique1/rocky_material.tres" id="1_0ac6o"] +[ext_resource type="Shader" path="res://addons/VisualShaderExtras/AddonExamples/dbat_demos/seamless_tiling/seamless_tiler_technique1/technique1_vshader.tres" id="1_5kigc"] +[ext_resource type="Texture2D" uid="uid://ccra6c4ccwuya" path="res://addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/textures/rock_orm_orm.png" id="2_ppe3l"] +[ext_resource type="Texture2D" uid="uid://dq3jk3ga3vpy8" path="res://addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/textures/rock_orm_albedo.png" id="3_tt8ec"] +[ext_resource type="Texture2D" uid="uid://dq1popjjfe6u8" path="res://addons/VisualShaderExtras/AddonExamples/dbat_demos/_resources/textures/rock_orm_normal.png" id="4_ca1x4"] [sub_resource type="BoxMesh" id="BoxMesh_7exsq"] size = Vector3(4.528, 1, 9.163) subdivide_height = 2 +[sub_resource type="ShaderMaterial" id="ShaderMaterial_34fmc"] +render_priority = 0 +shader = ExtResource("1_5kigc") +shader_parameter/albedo = ExtResource("3_tt8ec") +shader_parameter/norm = ExtResource("4_ca1x4") +shader_parameter/ORM = ExtResource("2_ppe3l") + [node name="Node3D" type="Node3D"] [node name="MeshInstance3D3" type="MeshInstance3D" parent="."] mesh = SubResource("BoxMesh_7exsq") -surface_material_override/0 = ExtResource("1_0ac6o") +surface_material_override/0 = SubResource("ShaderMaterial_34fmc") [node name="DirectionalLight3D" type="DirectionalLight3D" parent="."] transform = Transform3D(0.0221929, 0.148879, -0.988606, -0.00334136, 0.988855, 0.148842, 0.999748, 6.70721e-08, 0.022443, -2.57942, 5.36721, 0) diff --git a/addons/VisualShaderExtras/AddonExamples/dbat_demos/seamless_tiling/seamless_tiler_technique1/technique1_vshader.tres b/addons/VisualShaderExtras/AddonExamples/dbat_demos/seamless_tiling/seamless_tiler_technique1/technique1_vshader.tres index 19d51f3..b1f5a90 100644 --- a/addons/VisualShaderExtras/AddonExamples/dbat_demos/seamless_tiling/seamless_tiler_technique1/technique1_vshader.tres +++ b/addons/VisualShaderExtras/AddonExamples/dbat_demos/seamless_tiling/seamless_tiler_technique1/technique1_vshader.tres @@ -1,4 +1,4 @@ -[gd_resource type="VisualShader" load_steps=7 format=3] +[gd_resource type="VisualShader" load_steps=7 format=3 uid="uid://w2mc4iohmivr"] [ext_resource type="Script" path="res://addons/VisualShaderExtras/SeamlessTiling/seamless_tiler_technique1.gd" id="1_bpdut"] @@ -103,7 +103,6 @@ void fragment() { } " -graph_offset = Vector2(-153.014, 120.452) nodes/fragment/0/position = Vector2(540, 200) nodes/fragment/3/node = SubResource("VisualShaderNodeTexture2DParameter_qimeh") nodes/fragment/3/position = Vector2(-520, 60) diff --git a/addons/VisualShaderExtras/AddonExamples/dbat_demos/shapes/shapes_shader.tres b/addons/VisualShaderExtras/AddonExamples/dbat_demos/shapes/shapes_shader.tres deleted file mode 100644 index 7f8ef9e..0000000 --- a/addons/VisualShaderExtras/AddonExamples/dbat_demos/shapes/shapes_shader.tres +++ /dev/null @@ -1,123 +0,0 @@ -[gd_resource type="VisualShader" load_steps=8 format=3 uid="uid://cyaiien7casfl"] - -[ext_resource type="Script" path="res://addons/VisualShaderExtras/Shapes/Circle.gd" id="2_62jmt"] -[ext_resource type="Script" path="res://addons/VisualShaderExtras/Shapes/Box.gd" id="2_fi760"] - -[sub_resource type="VisualShaderNodeCustom" id="VisualShaderNodeCustom_dmth8"] -default_input_values = [1, Vector2(0.749, 0.5), 2, Vector2(0.079, 0.25), 3, 0.053] -initialized = true -script = ExtResource("2_fi760") - -[sub_resource type="VisualShaderNodeCustom" id="VisualShaderNodeCustom_75l8a"] -default_input_values = [1, Vector2(0.265, 0.301), 2, 0.25, 3, 0.25] -initialized = true -script = ExtResource("2_62jmt") - -[sub_resource type="VisualShaderNodeVectorOp" id="VisualShaderNodeVectorOp_4occy"] -operator = 2 - -[sub_resource type="VisualShaderNodeMix" id="VisualShaderNodeMix_ehpvk"] -default_input_values = [0, Vector3(0, 0, 0), 1, Vector3(1, 1, 1), 2, 1.546] -op_type = 4 - -[sub_resource type="VisualShaderNodeCustom" id="VisualShaderNodeCustom_dj0k4"] -default_input_values = [1, Vector2(0.5, 0.5), 2, Vector2(0.25, 0.25), 3, 0.0] -initialized = true -script = ExtResource("2_fi760") - -[resource] -code = "shader_type canvas_item; - - -// Box - -float sdBox_VisualShaderNodeBoxV2(vec2 _pos, vec2 _proportions, float _feather) { - vec2 d = abs(_pos) - _proportions; - float outside = length(max(d, 0.)); - float inside = min(max(d.x, d.y), 0.); - float both = outside + inside; - - //float f = outside - _feather; //makes a kind of outline - - // ok! smoothness is v sensitive tho. - // when f is 0 the edge is sharp - float f = _feather; - - return smoothstep(outside, inside, f); -} - -// Circle - -//Original code -//float sdCircle(vec2 pos, float r) { -// return step(length(pos) - r, pos).x; -//} - -//New hack - faster than using length func -float VisualShaderNodeCircle_circle(vec2 position, float radius, float smoothness) -{ - return smoothstep(radius, radius + smoothness, dot(position, position) * 6.0); -} - - -void fragment() { - float n_out9p0; -// Box:9 - vec2 n_in9p1 = vec2(0.50000, 0.50000); - vec2 n_in9p2 = vec2(0.25000, 0.25000); - float n_in9p3 = 0.00000; - { - n_out9p0 = sdBox_VisualShaderNodeBoxV2(UV-n_in9p1, n_in9p2, n_in9p3); - } - - - float n_out11p0; -// Box:11 - vec2 n_in11p1 = vec2(0.74900, 0.50000); - vec2 n_in11p2 = vec2(0.07900, 0.25000); - float n_in11p3 = 0.05300; - { - n_out11p0 = sdBox_VisualShaderNodeBoxV2(UV-n_in11p1, n_in11p2, n_in11p3); - } - - -// Mix:4 - float n_in4p2 = 1.54600; - vec3 n_out4p0 = mix(vec3(n_out9p0), vec3(n_out11p0), n_in4p2); - - - float n_out12p0; -// Circle:12 - vec2 n_in12p1 = vec2(0.26500, 0.30100); - float n_in12p2 = 0.25000; - float n_in12p3 = 0.25000; - { - n_out12p0 = VisualShaderNodeCircle_circle(UV - n_in12p1, n_in12p2, n_in12p3); - } - - -// VectorOp:13 - vec3 n_out13p0 = n_out4p0 * vec3(n_out12p0); - - -// Output:0 - COLOR.rgb = n_out13p0; - - -} -" -graph_offset = Vector2(-125.073, -57.7655) -mode = 1 -flags/light_only = false -nodes/fragment/0/position = Vector2(780, 120) -nodes/fragment/4/node = SubResource("VisualShaderNodeMix_ehpvk") -nodes/fragment/4/position = Vector2(360, 40) -nodes/fragment/9/node = SubResource("VisualShaderNodeCustom_dj0k4") -nodes/fragment/9/position = Vector2(-20, 100) -nodes/fragment/11/node = SubResource("VisualShaderNodeCustom_dmth8") -nodes/fragment/11/position = Vector2(-20, 260) -nodes/fragment/12/node = SubResource("VisualShaderNodeCustom_75l8a") -nodes/fragment/12/position = Vector2(180, 380) -nodes/fragment/13/node = SubResource("VisualShaderNodeVectorOp_4occy") -nodes/fragment/13/position = Vector2(540, 180) -nodes/fragment/connections = PackedInt32Array(11, 0, 4, 1, 9, 0, 4, 0, 4, 0, 13, 0, 12, 0, 13, 1, 13, 0, 0, 0) diff --git a/addons/VisualShaderExtras/AddonExamples/dbat_demos/shapes/smooth_shapes_2d_demo.tscn b/addons/VisualShaderExtras/AddonExamples/dbat_demos/shapes/smooth_box_demo.tscn similarity index 61% rename from addons/VisualShaderExtras/AddonExamples/dbat_demos/shapes/smooth_shapes_2d_demo.tscn rename to addons/VisualShaderExtras/AddonExamples/dbat_demos/shapes/smooth_box_demo.tscn index c97725b..cbe3e05 100644 --- a/addons/VisualShaderExtras/AddonExamples/dbat_demos/shapes/smooth_shapes_2d_demo.tscn +++ b/addons/VisualShaderExtras/AddonExamples/dbat_demos/shapes/smooth_box_demo.tscn @@ -1,10 +1,10 @@ -[gd_scene load_steps=4 format=3 uid="uid://duaujvdhys1pc"] +[gd_scene load_steps=4 format=3 uid="uid://c0p7nvdikjypn"] -[ext_resource type="Shader" path="res://addons/VisualShaderExtras/AddonExamples/dbat_demos/shapes/shapes_shader.tres" id="1_xvkxh"] +[ext_resource type="Shader" uid="uid://cyaiien7casfl" path="res://addons/VisualShaderExtras/AddonExamples/dbat_demos/shapes/smooth_box_shader.tres" id="1_27p0t"] [ext_resource type="Texture2D" uid="uid://dkwktkcfupn2y" path="res://addons/VisualShaderExtras/AddonExamples/icon.svg" id="2_n7xmv"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_0ajk8"] -shader = ExtResource("1_xvkxh") +shader = ExtResource("1_27p0t") [node name="Node2D" type="Node2D"] diff --git a/addons/VisualShaderExtras/AddonExamples/dbat_demos/shapes/smooth_box_shader.tres b/addons/VisualShaderExtras/AddonExamples/dbat_demos/shapes/smooth_box_shader.tres new file mode 100644 index 0000000..6aa4d52 --- /dev/null +++ b/addons/VisualShaderExtras/AddonExamples/dbat_demos/shapes/smooth_box_shader.tres @@ -0,0 +1,84 @@ +[gd_resource type="VisualShader" load_steps=5 format=3 uid="uid://cyaiien7casfl"] + +[ext_resource type="Script" path="res://addons/VisualShaderExtras/Shapes/Box.gd" id="2_fi760"] + +[sub_resource type="VisualShaderNodeCustom" id="VisualShaderNodeCustom_dmth8"] +output_port_for_preview = 0 +default_input_values = [1, Vector2(0.667, 0.5), 2, Vector2(0.194, 0.25), 3, 0.032] +initialized = true +script = ExtResource("2_fi760") + +[sub_resource type="VisualShaderNodeFloatOp" id="VisualShaderNodeFloatOp_6k8wk"] +output_port_for_preview = 0 + +[sub_resource type="VisualShaderNodeCustom" id="VisualShaderNodeCustom_dj0k4"] +output_port_for_preview = 0 +default_input_values = [1, Vector2(0.5, 0.5), 2, Vector2(0.25, 0.25), 3, 0.0] +initialized = true +script = ExtResource("2_fi760") + +[resource] +code = "shader_type canvas_item; + + +// Box + +float sdBox_VisualShaderNodeBoxV2(vec2 _pos, vec2 _proportions, float _feather) { + vec2 d = abs(_pos) - _proportions; + float outside = length(max(d, 0.)); + float inside = min(max(d.x, d.y), 0.); + float both = outside + inside; + + //float f = outside - _feather; //makes a kind of outline + + // ok! smoothness is v sensitive tho. + // when f is 0 the edge is sharp + float f = _feather; + + //ok::return smoothstep(outside, inside, f); //black on white + return smoothstep(inside, outside, f); //white on black +} + + +void fragment() { + float n_out9p0; +// Box:9 + vec2 n_in9p1 = vec2(0.50000, 0.50000); + vec2 n_in9p2 = vec2(0.25000, 0.25000); + float n_in9p3 = 0.00000; + { + n_out9p0 = sdBox_VisualShaderNodeBoxV2(UV-n_in9p1, n_in9p2, n_in9p3); + } + + + float n_out11p0; +// Box:11 + vec2 n_in11p1 = vec2(0.66700, 0.50000); + vec2 n_in11p2 = vec2(0.19400, 0.25000); + float n_in11p3 = 0.03200; + { + n_out11p0 = sdBox_VisualShaderNodeBoxV2(UV-n_in11p1, n_in11p2, n_in11p3); + } + + +// FloatOp:14 + float n_out14p0 = n_out9p0 + n_out11p0; + + +// Output:0 + COLOR.rgb = vec3(n_out14p0); + + +} +" +graph_offset = Vector2(-206.179, 205.056) +mode = 1 +flags/light_only = false +nodes/fragment/0/position = Vector2(780, 120) +nodes/fragment/9/node = SubResource("VisualShaderNodeCustom_dj0k4") +nodes/fragment/9/position = Vector2(-180, -20) +nodes/fragment/11/node = SubResource("VisualShaderNodeCustom_dmth8") +nodes/fragment/11/position = Vector2(-20, 200) +nodes/fragment/14/node = SubResource("VisualShaderNodeFloatOp_6k8wk") +nodes/fragment/14/position = Vector2(311.727, 68.9091) +nodes/fragment/connections = PackedInt32Array(9, 0, 14, 0, 11, 0, 14, 1, 14, 0, 0, 0) diff --git a/addons/VisualShaderExtras/AddonExamples/dbat_demos/shapes/smooth_circle_demo.tscn b/addons/VisualShaderExtras/AddonExamples/dbat_demos/shapes/smooth_circle_demo.tscn new file mode 100644 index 0000000..9e062ca --- /dev/null +++ b/addons/VisualShaderExtras/AddonExamples/dbat_demos/shapes/smooth_circle_demo.tscn @@ -0,0 +1,15 @@ +[gd_scene load_steps=4 format=3 uid="uid://bc7pruowuvxel"] + +[ext_resource type="Shader" uid="uid://cxui2its7mir8" path="res://addons/VisualShaderExtras/AddonExamples/dbat_demos/shapes/smooth_circle_shader.tres" id="1_t1sjd"] +[ext_resource type="Texture2D" uid="uid://dkwktkcfupn2y" path="res://addons/VisualShaderExtras/AddonExamples/icon.svg" id="2_a4dbu"] + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_4d508"] +shader = ExtResource("1_t1sjd") + +[node name="Node2D" type="Node2D"] + +[node name="TextureRect" type="TextureRect" parent="."] +material = SubResource("ShaderMaterial_4d508") +offset_right = 64.0 +offset_bottom = 64.0 +texture = ExtResource("2_a4dbu") diff --git a/addons/VisualShaderExtras/AddonExamples/dbat_demos/shapes/smooth_circle_shader.tres b/addons/VisualShaderExtras/AddonExamples/dbat_demos/shapes/smooth_circle_shader.tres new file mode 100644 index 0000000..9c3f993 --- /dev/null +++ b/addons/VisualShaderExtras/AddonExamples/dbat_demos/shapes/smooth_circle_shader.tres @@ -0,0 +1,115 @@ +[gd_resource type="VisualShader" load_steps=7 format=3 uid="uid://cxui2its7mir8"] + +[ext_resource type="Script" path="res://addons/VisualShaderExtras/Shapes/Circle.gd" id="1_3evrx"] + +[sub_resource type="VisualShaderNodeInput" id="VisualShaderNodeInput_fukdh"] +input_name = "uv" + +[sub_resource type="VisualShaderNodeVectorDecompose" id="VisualShaderNodeVectorDecompose_n6kkt"] +default_input_values = [0, Vector2(0, 0)] +op_type = 0 + +[sub_resource type="VisualShaderNodeIf" id="VisualShaderNodeIf_jjsoh"] +output_port_for_preview = 0 +default_input_values = [0, 0.0, 1, 0.5, 2, 0.001, 3, Vector3(0, 0, 0), 4, Vector3(0, 0, 0), 5, Vector3(0, 0, 0)] + +[sub_resource type="VisualShaderNodeCustom" id="VisualShaderNodeCustom_ksvn0"] +output_port_for_preview = 0 +default_input_values = [1, Vector2(0.5, 0.5), 2, 0.276, 3, 0.988] +initialized = true +script = ExtResource("1_3evrx") + +[sub_resource type="VisualShaderNodeCustom" id="VisualShaderNodeCustom_2fxko"] +output_port_for_preview = 0 +default_input_values = [1, Vector2(0.5, 0.5), 2, 0.276, 3, 0.001] +initialized = true +script = ExtResource("1_3evrx") + +[resource] +code = "shader_type canvas_item; + + +// Circle + +//Original code +//float sdCircle(vec2 pos, float r) { +// return step(length(pos) - r, pos).x; +//} + +//New hack - faster than using length func +float VisualShaderNodeCircle_circle(vec2 position, float radius, float smoothness) +{ + return smoothstep(radius + smoothness, radius, dot(position, position) * 6.0); +} + + +void fragment() { +// Input:2 + vec2 n_out2p0 = UV; + + +// VectorDecompose:3 + float n_out3p0 = n_out2p0.x; + float n_out3p1 = n_out2p0.y; + + + float n_out5p0; +// Circle:5 + vec2 n_in5p1 = vec2(0.50000, 0.50000); + float n_in5p2 = 0.27600; + float n_in5p3 = 0.98800; + { + n_out5p0 = VisualShaderNodeCircle_circle(UV - n_in5p1, n_in5p2, n_in5p3); + } + + + float n_out6p0; +// Circle:6 + vec2 n_in6p1 = vec2(0.50000, 0.50000); + float n_in6p2 = 0.27600; + float n_in6p3 = 0.00100; + { + n_out6p0 = VisualShaderNodeCircle_circle(UV - n_in6p1, n_in6p2, n_in6p3); + } + + + vec3 n_out4p0; +// If:4 + float n_in4p1 = 0.50000; + float n_in4p2 = 0.00100; + vec3 n_in4p3 = vec3(0.00000, 0.00000, 0.00000); + if(abs(n_out3p0 - n_in4p1) < n_in4p2) + { + n_out4p0 = n_in4p3; + } + else if(n_out3p0 < n_in4p1) + { + n_out4p0 = vec3(n_out6p0); + } + else + { + n_out4p0 = vec3(n_out5p0); + } + + +// Output:0 + COLOR.rgb = n_out4p0; + + +} +" +graph_offset = Vector2(-86.5636, -75.4656) +mode = 1 +flags/light_only = false +nodes/fragment/0/position = Vector2(780, 120) +nodes/fragment/2/node = SubResource("VisualShaderNodeInput_fukdh") +nodes/fragment/2/position = Vector2(-83.7461, -30.5869) +nodes/fragment/3/node = SubResource("VisualShaderNodeVectorDecompose_n6kkt") +nodes/fragment/3/position = Vector2(316.254, -10.5869) +nodes/fragment/4/node = SubResource("VisualShaderNodeIf_jjsoh") +nodes/fragment/4/position = Vector2(556.254, 129.413) +nodes/fragment/5/node = SubResource("VisualShaderNodeCustom_ksvn0") +nodes/fragment/5/position = Vector2(56.2539, 109.413) +nodes/fragment/6/node = SubResource("VisualShaderNodeCustom_2fxko") +nodes/fragment/6/position = Vector2(256.254, 289.413) +nodes/fragment/connections = PackedInt32Array(2, 0, 3, 0, 3, 0, 4, 0, 5, 0, 4, 4, 6, 0, 4, 5, 4, 0, 0, 0) diff --git a/addons/VisualShaderExtras/AddonExamples/examples.tscn b/addons/VisualShaderExtras/AddonExamples/examples.tscn index 9f05150..7136c35 100644 --- a/addons/VisualShaderExtras/AddonExamples/examples.tscn +++ b/addons/VisualShaderExtras/AddonExamples/examples.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=329 format=3 uid="uid://cnuej70tbjgwd"] +[gd_scene load_steps=328 format=3 uid="uid://cnuej70tbjgwd"] [ext_resource type="Texture2D" uid="uid://dkwktkcfupn2y" path="res://addons/VisualShaderExtras/AddonExamples/icon.svg" id="1_pmvkm"] [ext_resource type="Texture2D" uid="uid://e6k5hrwrnjy3" path="res://addons/VisualShaderExtras/AddonExamples/VisualShaderExtras-Logo-128x128.png" id="2_myiw4"] @@ -2295,24 +2295,24 @@ nodes/fragment/connections = PackedInt32Array(3, 0, 4, 0, 6, 0, 0, 0, 4, 0, 6, 0 shader = SubResource("VisualShader_5n70k") [sub_resource type="VisualShaderNodeCustom" id="VisualShaderNodeCustom_2kfye"] +output_port_for_preview = 0 default_input_values = [1, Vector2(0.5, 0.5), 2, Vector2(0.317, 0.316), 3, 0.0] initialized = true script = ExtResource("31_hcapl") -[sub_resource type="VisualShaderNodeStep" id="VisualShaderNodeStep_3vt21"] - [sub_resource type="VisualShaderNodeInput" id="VisualShaderNodeInput_vmtac"] input_name = "uv" [sub_resource type="VisualShaderNodeIf" id="VisualShaderNodeIf_jr8jk"] output_port_for_preview = 0 -default_input_values = [0, 0.0, 1, 0.5, 2, 0.001, 3, Vector3(0, 0, 0), 4, Vector3(0, 0, 0), 5, Vector3(0, 0, 0)] +default_input_values = [0, 0.0, 1, 0.5, 2, 0.0, 3, Vector3(0, 0, 0), 4, Vector3(0, 0, 0), 5, Vector3(0, 0, 0)] [sub_resource type="VisualShaderNodeVectorDecompose" id="VisualShaderNodeVectorDecompose_q1cc4"] default_input_values = [0, Vector2(0, 0)] op_type = 0 [sub_resource type="VisualShaderNodeCustom" id="VisualShaderNodeCustom_mirv2"] +output_port_for_preview = 0 default_input_values = [1, Vector2(0.5, 0.5), 2, Vector2(0.25, 0.25), 3, 0.057] initialized = true script = ExtResource("31_hcapl") @@ -2335,7 +2335,8 @@ float sdBox_VisualShaderNodeBoxV2(vec2 _pos, vec2 _proportions, float _feather) // when f is 0 the edge is sharp float f = _feather; - return smoothstep(outside, inside, f); + //ok::return smoothstep(outside, inside, f); //black on white + return smoothstep(inside, outside, f); //white on black } @@ -2369,15 +2370,10 @@ void fragment() { } -// Step:3 - float n_in3p1 = 0.00000; - float n_out3p0 = step(n_out10p0, n_in3p1); - - vec3 n_out7p0; // If:7 float n_in7p1 = 0.50000; - float n_in7p2 = 0.00100; + float n_in7p2 = 0.00000; vec3 n_in7p3 = vec3(0.00000, 0.00000, 0.00000); if(abs(n_out8p0 - n_in7p1) < n_in7p2) { @@ -2385,7 +2381,7 @@ void fragment() { } else if(n_out8p0 < n_in7p1) { - n_out7p0 = vec3(n_out3p0); + n_out7p0 = vec3(n_out10p0); } else { @@ -2399,11 +2395,9 @@ void fragment() { } " -graph_offset = Vector2(-393.855, 15.4945) +graph_offset = Vector2(-452.579, 31.6431) mode = 1 flags/light_only = false -nodes/fragment/3/node = SubResource("VisualShaderNodeStep_3vt21") -nodes/fragment/3/position = Vector2(-200, 180) nodes/fragment/6/node = SubResource("VisualShaderNodeInput_vmtac") nodes/fragment/6/position = Vector2(-460, 540) nodes/fragment/7/node = SubResource("VisualShaderNodeIf_jr8jk") @@ -2411,19 +2405,17 @@ nodes/fragment/7/position = Vector2(120, 180) nodes/fragment/8/node = SubResource("VisualShaderNodeVectorDecompose_q1cc4") nodes/fragment/8/position = Vector2(-140, 460) nodes/fragment/9/node = SubResource("VisualShaderNodeCustom_mirv2") -nodes/fragment/9/position = Vector2(-320, 300) +nodes/fragment/9/position = Vector2(-360, 180) nodes/fragment/10/node = SubResource("VisualShaderNodeCustom_2kfye") -nodes/fragment/10/position = Vector2(-560, 180) -nodes/fragment/connections = PackedInt32Array(6, 0, 8, 0, 8, 0, 7, 0, 9, 0, 7, 4, 7, 0, 0, 0, 10, 0, 3, 0, 3, 0, 7, 5) +nodes/fragment/10/position = Vector2(-580, 100) +nodes/fragment/connections = PackedInt32Array(6, 0, 8, 0, 8, 0, 7, 0, 9, 0, 7, 4, 7, 0, 0, 0, 10, 0, 7, 5) [sub_resource type="ShaderMaterial" id="ShaderMaterial_yp0tr"] shader = SubResource("VisualShader_ew583") -[sub_resource type="VisualShaderNodeStep" id="VisualShaderNodeStep_waqbe"] -default_input_values = [0, 0.0, 1, 0.241] - [sub_resource type="VisualShaderNodeCustom" id="VisualShaderNodeCustom_5lnj3"] -default_input_values = [1, Vector2(0.5, 0.5), 2, 0.276, 3, 1.0] +output_port_for_preview = 0 +default_input_values = [1, Vector2(0.5, 0.5), 2, 0.276, 3, 0.988] initialized = true script = ExtResource("30_nhxin") @@ -2438,6 +2430,12 @@ default_input_values = [0, 0.0, 1, 0.5, 2, 0.001, 3, Vector3(0, 0, 0), 4, Vector default_input_values = [0, Vector2(0, 0)] op_type = 0 +[sub_resource type="VisualShaderNodeCustom" id="VisualShaderNodeCustom_cb4jc"] +output_port_for_preview = 0 +default_input_values = [1, Vector2(0.5, 0.5), 2, 0.276, 3, 0.001] +initialized = true +script = ExtResource("30_nhxin") + [sub_resource type="VisualShader" id="VisualShader_b85uw"] code = "shader_type canvas_item; @@ -2452,7 +2450,7 @@ code = "shader_type canvas_item; //New hack - faster than using length func float VisualShaderNodeCircle_circle(vec2 position, float radius, float smoothness) { - return smoothstep(radius, radius + smoothness, dot(position, position) * 6.0); + return smoothstep(radius + smoothness, radius, dot(position, position) * 6.0); } @@ -2470,15 +2468,20 @@ void fragment() { // Circle:4 vec2 n_in4p1 = vec2(0.50000, 0.50000); float n_in4p2 = 0.27600; - float n_in4p3 = 1.00000; + float n_in4p3 = 0.98800; { n_out4p0 = VisualShaderNodeCircle_circle(UV - n_in4p1, n_in4p2, n_in4p3); } -// Step:3 - float n_in3p1 = 0.24100; - float n_out3p0 = step(n_out4p0, n_in3p1); + float n_out9p0; +// Circle:9 + vec2 n_in9p1 = vec2(0.50000, 0.50000); + float n_in9p2 = 0.27600; + float n_in9p3 = 0.00100; + { + n_out9p0 = VisualShaderNodeCircle_circle(UV - n_in9p1, n_in9p2, n_in9p3); + } vec3 n_out7p0; @@ -2492,7 +2495,7 @@ void fragment() { } else if(n_out8p0 < n_in7p1) { - n_out7p0 = vec3(n_out3p0); + n_out7p0 = vec3(n_out9p0); } else { @@ -2506,21 +2509,21 @@ void fragment() { } " -graph_offset = Vector2(-386.058, 72.3369) +graph_offset = Vector2(-319.527, 173.247) mode = 1 flags/light_only = false nodes/fragment/0/position = Vector2(480, 240) -nodes/fragment/3/node = SubResource("VisualShaderNodeStep_waqbe") -nodes/fragment/3/position = Vector2(-80, 520) nodes/fragment/4/node = SubResource("VisualShaderNodeCustom_5lnj3") -nodes/fragment/4/position = Vector2(-360, 340) +nodes/fragment/4/position = Vector2(-380, 300) nodes/fragment/5/node = SubResource("VisualShaderNodeInput_5kd2u") nodes/fragment/5/position = Vector2(-520, 160) nodes/fragment/7/node = SubResource("VisualShaderNodeIf_x4hn7") nodes/fragment/7/position = Vector2(120, 320) nodes/fragment/8/node = SubResource("VisualShaderNodeVectorDecompose_6vtrh") nodes/fragment/8/position = Vector2(-120, 180) -nodes/fragment/connections = PackedInt32Array(4, 0, 3, 0, 5, 0, 8, 0, 8, 0, 7, 0, 4, 0, 7, 4, 3, 0, 7, 5, 7, 0, 0, 0) +nodes/fragment/9/node = SubResource("VisualShaderNodeCustom_cb4jc") +nodes/fragment/9/position = Vector2(-180, 480) +nodes/fragment/connections = PackedInt32Array(5, 0, 8, 0, 8, 0, 7, 0, 4, 0, 7, 4, 7, 0, 0, 0, 9, 0, 7, 5) [sub_resource type="ShaderMaterial" id="ShaderMaterial_52mrt"] shader = SubResource("VisualShader_b85uw") diff --git a/addons/VisualShaderExtras/Shapes/Box.gd b/addons/VisualShaderExtras/Shapes/Box.gd index 8ce4968..193531a 100644 --- a/addons/VisualShaderExtras/Shapes/Box.gd +++ b/addons/VisualShaderExtras/Shapes/Box.gd @@ -77,7 +77,8 @@ float sdBox_VisualShaderNodeBoxV2(vec2 _pos, vec2 _proportions, float _feather) // when f is 0 the edge is sharp float f = _feather; - return smoothstep(outside, inside, f); + //ok::return smoothstep(outside, inside, f); //black on white + return smoothstep(inside, outside, f); //white on black } """ diff --git a/addons/VisualShaderExtras/Shapes/Circle.gd b/addons/VisualShaderExtras/Shapes/Circle.gd index 28e696c..8f81353 100644 --- a/addons/VisualShaderExtras/Shapes/Circle.gd +++ b/addons/VisualShaderExtras/Shapes/Circle.gd @@ -77,7 +77,7 @@ func _get_global_code(mode): //New hack - faster than using length func float VisualShaderNodeCircle_circle(vec2 position, float radius, float smoothness) { - return smoothstep(radius, radius + smoothness, dot(position, position) * 6.0); + return smoothstep(radius + smoothness, radius, dot(position, position) * 6.0); } """