From 3a7bf49c515a29e546e1fdd274ada8cca2e375fe Mon Sep 17 00:00:00 2001 From: KenanK0 Date: Mon, 10 Mar 2025 16:11:43 +0100 Subject: [PATCH 1/7] initial setup --- examples/toChange/fichier.cpp | 27 ++++++++++++++++++++++++ examples/toChange/fichier.tscn | 38 ++++++++++++++++++++++++++++++++++ 2 files changed, 65 insertions(+) create mode 100644 examples/toChange/fichier.cpp create mode 100644 examples/toChange/fichier.tscn diff --git a/examples/toChange/fichier.cpp b/examples/toChange/fichier.cpp new file mode 100644 index 0000000..dc747f9 --- /dev/null +++ b/examples/toChange/fichier.cpp @@ -0,0 +1,27 @@ +void main() { + uint x = gl_GlobalInvocationID.x; + uint y = gl_GlobalInvocationID.y; + uint p = x + y * WSX; + + // Normaliser les coordonnees dans l'intervalle [0,1] + float fx = float(x) / float(WSX); + float fy = float(y) / float(WSY); + + // Calculer un effet plasma a l'aide de sinusoides et d'un deplacement temporel (step) + float value = sin((fx + step/100.0) * 10.0) + + sin((fy + step/100.0) * 10.0) + + sin((fx + fy + step/100.0) * 10.0); + + // Normaliser la valeur obtenue (la somme varie entre -3 et 3) + float norm = (value + 3.0) / 6.0; + + // Calculer les composantes de couleur sur 8 bits + uint r = uint(255.0 * norm); + uint g = uint(128.0 * (1.0 - norm)); + uint b = uint(255.0 * (1.0 - norm)); + uint a = 255; // opacite maximale + + // Combiner les composantes en une valeur 32 bits (ARGB) + // Le cast en int permet d'eviter l'erreur de conversion de uint vers int + data_0[p] = int((a << 24) | (r << 16) | (g << 8) | b); +} diff --git a/examples/toChange/fichier.tscn b/examples/toChange/fichier.tscn new file mode 100644 index 0000000..1fce393 --- /dev/null +++ b/examples/toChange/fichier.tscn @@ -0,0 +1,38 @@ +[gd_scene load_steps=4 format=3 uid="uid://cets11mlsd8hb"] + +[ext_resource type="Script" path="res://addons/compute_shader_studio/compute_shader_studio_2d.gd" id="1_cogap"] + +[sub_resource type="FastNoiseLite" id="FastNoiseLite_pm7bb"] + +[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_nxi5j"] +width = 256 +height = 128 +noise = SubResource("FastNoiseLite_pm7bb") + +[node name="CompShadStudioEx5" type="Node2D"] + +[node name="ComputeShaderStudio2D2" type="Node" parent="." node_paths=PackedStringArray("data")] +script = ExtResource("1_cogap") +WSX = 256 +glsl_file = "res://examples/toChange/fichier.cpp" +GLSL_code = "" +data = [NodePath("../TextureRect")] + +[node name="Label" type="Label" parent="."] +offset_left = 278.0 +offset_top = -1.0 +offset_right = 679.0 +offset_bottom = 101.0 +scale = Vector2(1.72, 1.72) +text = "Compute Shader Studio +Example 5: using an external GLSL file +and a TextureRect" +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="TextureRect" type="TextureRect" parent="."] +offset_left = 278.0 +offset_top = 192.0 +offset_right = 975.0 +offset_bottom = 629.0 +texture = SubResource("NoiseTexture2D_nxi5j") From 21808efcbf9ddcd9af8dbe19b94470afbe349a51 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 14 Mar 2025 16:44:15 +0100 Subject: [PATCH 2/7] ajout du bouton --- examples/fractal boxes/fichier.cpp | 71 +++++++++++++++++++++++++++++ examples/fractal boxes/fichier.gd | 19 ++++++++ examples/fractal boxes/fichier.tscn | 53 +++++++++++++++++++++ 3 files changed, 143 insertions(+) create mode 100644 examples/fractal boxes/fichier.cpp create mode 100644 examples/fractal boxes/fichier.gd create mode 100644 examples/fractal boxes/fichier.tscn diff --git a/examples/fractal boxes/fichier.cpp b/examples/fractal boxes/fichier.cpp new file mode 100644 index 0000000..90385a3 --- /dev/null +++ b/examples/fractal boxes/fichier.cpp @@ -0,0 +1,71 @@ +#define POINTCOUNT 8 +#define PI 3.14159 +#define iResolution vec2(float(WSX), float(WSY)) +#define inBox(low, high, point) (low.x <= point.x && low.y <= point.y && high.x > point.x && high.y > point.y) +#define toUv(point) (2.0*(point - 0.5*iResolution)/iResolution.y) + +void main() { + uint x = gl_GlobalInvocationID.x; + uint y = gl_GlobalInvocationID.y; + uint p = x + y * WSX; + + vec2 fragCoord = vec2(x, y); + vec2 uv = toUv(fragCoord); + vec2 low = floor(uv); + vec2 high = ceil(uv); + uv = mod(uv, vec2(1.0)); + + // t = "temps" bas sur step + float t = float(step) * 0.005; + + vec2 points[POINTCOUNT]; + for (int i = 0; i < POINTCOUNT; i++) { + float fi = float(i); + points[i] = vec2( + (1.75 - 0.125 * fi) * cos(1.333 * t - (1.0 - 0.2 * t) * fi / PI), + (1.0 - 0.1 * fi) * sin((fi + 1.0) * t + PI * 0.5) + ); + } + + int iters = 0; + while (iters < 8) { + iters++; + bool sub = false; + for (int i = 0; i < POINTCOUNT; i++) { + if (inBox(low, high, points[i])) { + sub = true; + break; + } + } + if (sub) { + vec2 center = (high + low) * 0.5; + if (uv.x > 0.5) { + low.x = center.x; + uv.x = uv.x * 2.0 - 1.0; + } else { + high.x = center.x; + uv.x *= 2.0; + } + if (uv.y > 0.5) { + low.y = center.y; + uv.y = uv.y * 2.0 - 1.0; + } else { + high.y = center.y; + uv.y *= 2.0; + } + } else { + break; + } + } + + float m = max(abs(uv.x - 0.5), abs(uv.y - 0.5)) * 2.0; + float s = smoothstep(1.0 - 0.01 * pow(2.0, float(iters)), 1.0, m); + vec3 col = vec3(s); + + int a = 255; + int r = int(clamp(col.r, 0.0, 1.0) * 255.0); + int g = int(clamp(col.g, 0.0, 1.0) * 255.0); + int b = int(clamp(col.b, 0.0, 1.0) * 255.0); + + data_0[p] = (a << 24) | (r << 16) | (g << 8) | b; +} diff --git a/examples/fractal boxes/fichier.gd b/examples/fractal boxes/fichier.gd new file mode 100644 index 0000000..0f6cfc8 --- /dev/null +++ b/examples/fractal boxes/fichier.gd @@ -0,0 +1,19 @@ +extends Node2D + + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + pass # Replace with function body. + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta: float) -> void: + pass + + +func _on_button_pressed() -> void: + $ComputeShaderStudio2D2.pause = !$ComputeShaderStudio2D2.pause + if $ComputeShaderStudio2D2.pause: + $Button.text = "Play" + else: + $Button.text = "Pause" # Replace with function body. diff --git a/examples/fractal boxes/fichier.tscn b/examples/fractal boxes/fichier.tscn new file mode 100644 index 0000000..7d3d3d2 --- /dev/null +++ b/examples/fractal boxes/fichier.tscn @@ -0,0 +1,53 @@ +[gd_scene load_steps=6 format=3 uid="uid://cets11mlsd8hb"] + +[ext_resource type="Script" path="res://addons/compute_shader_studio/compute_shader_studio_2d.gd" id="1_cogap"] +[ext_resource type="Script" path="res://examples/toChange/fichier.gd" id="1_y3tek"] + +[sub_resource type="FastNoiseLite" id="FastNoiseLite_pm7bb"] + +[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_nxi5j"] +width = 256 +height = 128 +noise = SubResource("FastNoiseLite_pm7bb") + +[sub_resource type="Theme" id="Theme_xvegm"] + +[node name="CompShadStudioEx5" type="Node2D"] +script = ExtResource("1_y3tek") + +[node name="ComputeShaderStudio2D2" type="Node" parent="." node_paths=PackedStringArray("data")] +script = ExtResource("1_cogap") +pause = true +WSX = 256 +WSY = 256 +glsl_file = "res://examples/toChange/fichier.cpp" +data = [NodePath("../TextureRect")] + +[node name="Label" type="Label" parent="."] +offset_left = 278.0 +offset_top = -1.0 +offset_right = 679.0 +offset_bottom = 101.0 +scale = Vector2(1.72, 1.72) +text = "Compute Shader Studio +Example 5: using an external GLSL file +and a TextureRect" +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="TextureRect" type="TextureRect" parent="."] +offset_left = 278.0 +offset_top = 192.0 +offset_right = 975.0 +offset_bottom = 629.0 +texture = SubResource("NoiseTexture2D_nxi5j") + +[node name="Button" type="Button" parent="."] +offset_left = 105.0 +offset_top = 209.0 +offset_right = 233.0 +offset_bottom = 299.0 +theme = SubResource("Theme_xvegm") +text = "Play" + +[connection signal="pressed" from="Button" to="." method="_on_button_pressed"] From 913f5cd54cffd8543be9109584fcf0760cf55ba4 Mon Sep 17 00:00:00 2001 From: KenanK0 Date: Fri, 14 Mar 2025 16:50:40 +0100 Subject: [PATCH 3/7] version bouton et couleur --- .../compute_shader_studio_2d.gd | 8 ++ examples/toChange (2).zip | Bin 0 -> 2454 bytes examples/toChange.zip | Bin 0 -> 1884 bytes examples/toChange/fichier.cpp | 88 +++++++++++++----- examples/toChange/fichier.gd | 19 ++++ examples/toChange/fichier.tscn | 19 +++- icon.svg.import | 37 ++++++++ screenshots/initial.png | Bin 0 -> 84953 bytes screenshots/v2.png | Bin 0 -> 46129 bytes 9 files changed, 147 insertions(+), 24 deletions(-) create mode 100644 examples/toChange (2).zip create mode 100644 examples/toChange.zip create mode 100644 examples/toChange/fichier.gd create mode 100644 icon.svg.import create mode 100644 screenshots/initial.png create mode 100644 screenshots/v2.png diff --git a/addons/compute_shader_studio/compute_shader_studio_2d.gd b/addons/compute_shader_studio/compute_shader_studio_2d.gd index f947c2f..0995189 100644 --- a/addons/compute_shader_studio/compute_shader_studio_2d.gd +++ b/addons/compute_shader_studio/compute_shader_studio_2d.gd @@ -333,3 +333,11 @@ func screen_to_data0(pos : Vector2): return pos; else: return Vector2(0,0) + + +func _on_button_pressed() -> void: + $ComputeShaderStudio2D2.pause = !$ComputeShaderStudio2D2.pause + if $ComputeShaderStudio2D2.pause: + $Button.text = "Play" + else: + $Button.text = "Pause" # Replace with function body. diff --git a/examples/toChange (2).zip b/examples/toChange (2).zip new file mode 100644 index 0000000000000000000000000000000000000000..3737904f1891037b17118018a492f131cf73131e GIT binary patch literal 2454 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 point.x && high.y > point.y) +#define toUv(point) (2.0*(point - 0.5*iResolution)/iResolution.y) + void main() { uint x = gl_GlobalInvocationID.x; uint y = gl_GlobalInvocationID.y; uint p = x + y * WSX; - - // Normaliser les coordonnees dans l'intervalle [0,1] - float fx = float(x) / float(WSX); - float fy = float(y) / float(WSY); - - // Calculer un effet plasma a l'aide de sinusoides et d'un deplacement temporel (step) - float value = sin((fx + step/100.0) * 10.0) - + sin((fy + step/100.0) * 10.0) - + sin((fx + fy + step/100.0) * 10.0); - - // Normaliser la valeur obtenue (la somme varie entre -3 et 3) - float norm = (value + 3.0) / 6.0; - - // Calculer les composantes de couleur sur 8 bits - uint r = uint(255.0 * norm); - uint g = uint(128.0 * (1.0 - norm)); - uint b = uint(255.0 * (1.0 - norm)); - uint a = 255; // opacite maximale - - // Combiner les composantes en une valeur 32 bits (ARGB) - // Le cast en int permet d'eviter l'erreur de conversion de uint vers int - data_0[p] = int((a << 24) | (r << 16) | (g << 8) | b); + + vec2 fragCoord = vec2(x, y); + vec2 uv = toUv(fragCoord); + vec2 low = floor(uv); + vec2 high = ceil(uv); + uv = mod(uv, vec2(1.0)); + + // t = "temps" bas sur step + float t = float(step) * 0.005; + + vec2 points[POINTCOUNT]; + for (int i = 0; i < POINTCOUNT; i++) { + float fi = float(i); + points[i] = vec2( + (1.75 - 0.125 * fi) * cos(1.333 * t - (1.0 - 0.2 * t) * fi / PI), + (1.0 - 0.1 * fi) * sin((fi + 1.0) * t + PI * 0.5) + ); + } + + int iters = 0; + while (iters < 8) { + iters++; + bool sub = false; + for (int i = 0; i < POINTCOUNT; i++) { + if (inBox(low, high, points[i])) { + sub = true; + break; + } + } + if (sub) { + vec2 center = (high + low) * 0.5; + if (uv.x > 0.5) { + low.x = center.x; + uv.x = uv.x * 2.0 - 1.0; + } else { + high.x = center.x; + uv.x *= 2.0; + } + if (uv.y > 0.5) { + low.y = center.y; + uv.y = uv.y * 2.0 - 1.0; + } else { + high.y = center.y; + uv.y *= 2.0; + } + } else { + break; + } + } + + float m = max(abs(uv.x - 0.5), abs(uv.y - 0.5)) * 2.0; + float s = smoothstep(1.0 - 0.01 * pow(2.0, float(iters)), 1.0, m); + vec3 col = vec3(s); + + int a = 255; + int r = int(clamp(col.r, 0.0, 1.0) * 255.0); + int g = int(clamp(col.g, 0.0, 1.0) * 255.0); + int b = int(clamp(col.b, 0.0, 1.0) * 255.0); + + data_0[p] = (a << 24) | (r << 16) | (g << 8) | b; } diff --git a/examples/toChange/fichier.gd b/examples/toChange/fichier.gd new file mode 100644 index 0000000..0f6cfc8 --- /dev/null +++ b/examples/toChange/fichier.gd @@ -0,0 +1,19 @@ +extends Node2D + + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + pass # Replace with function body. + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta: float) -> void: + pass + + +func _on_button_pressed() -> void: + $ComputeShaderStudio2D2.pause = !$ComputeShaderStudio2D2.pause + if $ComputeShaderStudio2D2.pause: + $Button.text = "Play" + else: + $Button.text = "Pause" # Replace with function body. diff --git a/examples/toChange/fichier.tscn b/examples/toChange/fichier.tscn index 1fce393..7d3d3d2 100644 --- a/examples/toChange/fichier.tscn +++ b/examples/toChange/fichier.tscn @@ -1,6 +1,7 @@ -[gd_scene load_steps=4 format=3 uid="uid://cets11mlsd8hb"] +[gd_scene load_steps=6 format=3 uid="uid://cets11mlsd8hb"] [ext_resource type="Script" path="res://addons/compute_shader_studio/compute_shader_studio_2d.gd" id="1_cogap"] +[ext_resource type="Script" path="res://examples/toChange/fichier.gd" id="1_y3tek"] [sub_resource type="FastNoiseLite" id="FastNoiseLite_pm7bb"] @@ -9,13 +10,17 @@ width = 256 height = 128 noise = SubResource("FastNoiseLite_pm7bb") +[sub_resource type="Theme" id="Theme_xvegm"] + [node name="CompShadStudioEx5" type="Node2D"] +script = ExtResource("1_y3tek") [node name="ComputeShaderStudio2D2" type="Node" parent="." node_paths=PackedStringArray("data")] script = ExtResource("1_cogap") +pause = true WSX = 256 +WSY = 256 glsl_file = "res://examples/toChange/fichier.cpp" -GLSL_code = "" data = [NodePath("../TextureRect")] [node name="Label" type="Label" parent="."] @@ -36,3 +41,13 @@ offset_top = 192.0 offset_right = 975.0 offset_bottom = 629.0 texture = SubResource("NoiseTexture2D_nxi5j") + +[node name="Button" type="Button" parent="."] +offset_left = 105.0 +offset_top = 209.0 +offset_right = 233.0 +offset_bottom = 299.0 +theme = SubResource("Theme_xvegm") +text = "Play" + +[connection signal="pressed" from="Button" to="." method="_on_button_pressed"] diff --git a/icon.svg.import b/icon.svg.import new file mode 100644 index 0000000..3bef2e6 --- /dev/null +++ b/icon.svg.import @@ -0,0 +1,37 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://773pfp1ieglx" +path="res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://icon.svg" +dest_files=["res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/screenshots/initial.png b/screenshots/initial.png new file mode 100644 index 0000000000000000000000000000000000000000..1ea7b7ba6b559cf9f929f7369a9eddc717ab4f14 GIT binary patch literal 84953 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

(u%6~rQ;Of;ny|v7EqK;-*&x=s6 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 literal 0 HcmV?d00001 diff --git a/screenshots/v2.png b/screenshots/v2.png new file mode 100644 index 0000000000000000000000000000000000000000..a2428a45f69ddbb52c4f5f6251d0c7b91c46b2fc GIT binary patch literal 46129 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 hQq3RvmUitI!JmIT)S;yzVu0R7TSM Date: Mon, 17 Mar 2025 09:10:12 +0100 Subject: [PATCH 4/7] made it full screen; added shader toy reference --- .../compute_shader_studio_2d.gd.uid | 1 + .../compute_shader_studio_plugin.gd.uid | 1 + examples/LabelStepPass.gd.uid | 1 + examples/cells/cells.gd.uid | 1 + examples/example_1.tscn | 2 +- examples/example_mandelbrot.gd.uid | 1 + examples/toChange/fichier.cpp | 2 ++ examples/toChange/fichier.gd.uid | 1 + examples/toChange/fichier.tscn | 34 ++++++++++--------- project.godot | 2 +- 10 files changed, 28 insertions(+), 18 deletions(-) create mode 100644 addons/compute_shader_studio/compute_shader_studio_2d.gd.uid create mode 100644 addons/compute_shader_studio/compute_shader_studio_plugin.gd.uid create mode 100644 examples/LabelStepPass.gd.uid create mode 100644 examples/cells/cells.gd.uid create mode 100644 examples/example_mandelbrot.gd.uid create mode 100644 examples/toChange/fichier.gd.uid diff --git a/addons/compute_shader_studio/compute_shader_studio_2d.gd.uid b/addons/compute_shader_studio/compute_shader_studio_2d.gd.uid new file mode 100644 index 0000000..69d40f3 --- /dev/null +++ b/addons/compute_shader_studio/compute_shader_studio_2d.gd.uid @@ -0,0 +1 @@ +uid://ymdghjh2i2lw diff --git a/addons/compute_shader_studio/compute_shader_studio_plugin.gd.uid b/addons/compute_shader_studio/compute_shader_studio_plugin.gd.uid new file mode 100644 index 0000000..07637d4 --- /dev/null +++ b/addons/compute_shader_studio/compute_shader_studio_plugin.gd.uid @@ -0,0 +1 @@ +uid://bnu0bag13mvgw diff --git a/examples/LabelStepPass.gd.uid b/examples/LabelStepPass.gd.uid new file mode 100644 index 0000000..dc81845 --- /dev/null +++ b/examples/LabelStepPass.gd.uid @@ -0,0 +1 @@ +uid://dxa1wiefqey1t diff --git a/examples/cells/cells.gd.uid b/examples/cells/cells.gd.uid new file mode 100644 index 0000000..af46620 --- /dev/null +++ b/examples/cells/cells.gd.uid @@ -0,0 +1 @@ +uid://dxrckgtq1eqrv diff --git a/examples/example_1.tscn b/examples/example_1.tscn index 7d67949..9718ca3 100644 --- a/examples/example_1.tscn +++ b/examples/example_1.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=5 format=3 uid="uid://ddr6qtwy1pesd"] -[ext_resource type="Script" path="res://addons/compute_shader_studio/compute_shader_studio_2d.gd" id="1_6846p"] +[ext_resource type="Script" uid="uid://ymdghjh2i2lw" path="res://addons/compute_shader_studio/compute_shader_studio_2d.gd" id="1_6846p"] [ext_resource type="Texture2D" uid="uid://demftcowdd5c6" path="res://examples/icon.svg" id="2_s3fct"] [sub_resource type="FastNoiseLite" id="FastNoiseLite_dmk8h"] diff --git a/examples/example_mandelbrot.gd.uid b/examples/example_mandelbrot.gd.uid new file mode 100644 index 0000000..5c28a37 --- /dev/null +++ b/examples/example_mandelbrot.gd.uid @@ -0,0 +1 @@ +uid://jvjmvstxk5po diff --git a/examples/toChange/fichier.cpp b/examples/toChange/fichier.cpp index 90385a3..2f4e927 100644 --- a/examples/toChange/fichier.cpp +++ b/examples/toChange/fichier.cpp @@ -1,3 +1,5 @@ +// Adapte de https://www.shadertoy.com/view/wc2XRh +// Version optimisee pour la bibliotheque Compute Shader Studio dans Godot. #define POINTCOUNT 8 #define PI 3.14159 #define iResolution vec2(float(WSX), float(WSY)) diff --git a/examples/toChange/fichier.gd.uid b/examples/toChange/fichier.gd.uid new file mode 100644 index 0000000..569281b --- /dev/null +++ b/examples/toChange/fichier.gd.uid @@ -0,0 +1 @@ +uid://2wy07yux7xmu diff --git a/examples/toChange/fichier.tscn b/examples/toChange/fichier.tscn index 7d3d3d2..dcb7f72 100644 --- a/examples/toChange/fichier.tscn +++ b/examples/toChange/fichier.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=6 format=3 uid="uid://cets11mlsd8hb"] -[ext_resource type="Script" path="res://addons/compute_shader_studio/compute_shader_studio_2d.gd" id="1_cogap"] -[ext_resource type="Script" path="res://examples/toChange/fichier.gd" id="1_y3tek"] +[ext_resource type="Script" uid="uid://ymdghjh2i2lw" path="res://addons/compute_shader_studio/compute_shader_studio_2d.gd" id="1_cogap"] +[ext_resource type="Script" uid="uid://2wy07yux7xmu" path="res://examples/toChange/fichier.gd" id="1_y3tek"] [sub_resource type="FastNoiseLite" id="FastNoiseLite_pm7bb"] @@ -18,16 +18,16 @@ script = ExtResource("1_y3tek") [node name="ComputeShaderStudio2D2" type="Node" parent="." node_paths=PackedStringArray("data")] script = ExtResource("1_cogap") pause = true -WSX = 256 -WSY = 256 +WSX = 1152 +WSY = 648 glsl_file = "res://examples/toChange/fichier.cpp" data = [NodePath("../TextureRect")] [node name="Label" type="Label" parent="."] -offset_left = 278.0 -offset_top = -1.0 -offset_right = 679.0 -offset_bottom = 101.0 +offset_left = 240.0 +offset_top = -4.0 +offset_right = 641.0 +offset_bottom = 98.0 scale = Vector2(1.72, 1.72) text = "Compute Shader Studio Example 5: using an external GLSL file @@ -36,17 +36,19 @@ horizontal_alignment = 1 vertical_alignment = 1 [node name="TextureRect" type="TextureRect" parent="."] -offset_left = 278.0 -offset_top = 192.0 -offset_right = 975.0 -offset_bottom = 629.0 +offset_left = -5.0 +offset_top = -2.0 +offset_right = 573.0 +offset_bottom = 369.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 texture = SubResource("NoiseTexture2D_nxi5j") [node name="Button" type="Button" parent="."] -offset_left = 105.0 -offset_top = 209.0 -offset_right = 233.0 -offset_bottom = 299.0 +offset_left = 25.0 +offset_top = 32.0 +offset_right = 153.0 +offset_bottom = 122.0 theme = SubResource("Theme_xvegm") text = "Play" diff --git a/project.godot b/project.godot index 725be9c..1617345 100644 --- a/project.godot +++ b/project.godot @@ -12,7 +12,7 @@ config_version=5 config/name="compute_shader_studio" run/main_scene="res://examples/example_1.tscn" -config/features=PackedStringArray("4.3", "Forward Plus") +config/features=PackedStringArray("4.4", "Forward Plus") config/icon="res://addons/compute_shader_studio/icon.png" [editor_plugins] From 5a98d9184db32f829b3944ee02a9a018f8f77520 Mon Sep 17 00:00:00 2001 From: aromiano Date: Mon, 17 Mar 2025 10:03:58 +0100 Subject: [PATCH 5/7] vitese + nome de dossier + taille de bouton --- examples/{toChange => boxes}/fichier.cpp | 4 +-- examples/{toChange => boxes}/fichier.gd | 0 examples/{toChange => boxes}/fichier.gd.uid | 0 examples/{toChange => boxes}/fichier.tscn | 26 ++++++-------------- examples/toChange (2).zip | Bin 2454 -> 0 bytes examples/toChange.zip | Bin 1884 -> 0 bytes 6 files changed, 9 insertions(+), 21 deletions(-) rename examples/{toChange => boxes}/fichier.cpp (95%) rename examples/{toChange => boxes}/fichier.gd (100%) rename examples/{toChange => boxes}/fichier.gd.uid (100%) rename examples/{toChange => boxes}/fichier.tscn (71%) delete mode 100644 examples/toChange (2).zip delete mode 100644 examples/toChange.zip diff --git a/examples/toChange/fichier.cpp b/examples/boxes/fichier.cpp similarity index 95% rename from examples/toChange/fichier.cpp rename to examples/boxes/fichier.cpp index 2f4e927..a6e2c5a 100644 --- a/examples/toChange/fichier.cpp +++ b/examples/boxes/fichier.cpp @@ -18,7 +18,7 @@ void main() { uv = mod(uv, vec2(1.0)); // t = "temps" bas sur step - float t = float(step) * 0.005; + float t = float(step) * 0.006; vec2 points[POINTCOUNT]; for (int i = 0; i < POINTCOUNT; i++) { @@ -69,5 +69,5 @@ void main() { int g = int(clamp(col.g, 0.0, 1.0) * 255.0); int b = int(clamp(col.b, 0.0, 1.0) * 255.0); - data_0[p] = (a << 24) | (r << 16) | (g << 8) | b; + data_0[p] = (a << 24) | (r <<8 ) | (g << 16) | b; } diff --git a/examples/toChange/fichier.gd b/examples/boxes/fichier.gd similarity index 100% rename from examples/toChange/fichier.gd rename to examples/boxes/fichier.gd diff --git a/examples/toChange/fichier.gd.uid b/examples/boxes/fichier.gd.uid similarity index 100% rename from examples/toChange/fichier.gd.uid rename to examples/boxes/fichier.gd.uid diff --git a/examples/toChange/fichier.tscn b/examples/boxes/fichier.tscn similarity index 71% rename from examples/toChange/fichier.tscn rename to examples/boxes/fichier.tscn index dcb7f72..8c98721 100644 --- a/examples/toChange/fichier.tscn +++ b/examples/boxes/fichier.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=6 format=3 uid="uid://cets11mlsd8hb"] [ext_resource type="Script" uid="uid://ymdghjh2i2lw" path="res://addons/compute_shader_studio/compute_shader_studio_2d.gd" id="1_cogap"] -[ext_resource type="Script" uid="uid://2wy07yux7xmu" path="res://examples/toChange/fichier.gd" id="1_y3tek"] +[ext_resource type="Script" uid="uid://2wy07yux7xmu" path="res://examples/boxes/fichier.gd" id="1_y3tek"] [sub_resource type="FastNoiseLite" id="FastNoiseLite_pm7bb"] @@ -20,21 +20,9 @@ script = ExtResource("1_cogap") pause = true WSX = 1152 WSY = 648 -glsl_file = "res://examples/toChange/fichier.cpp" +glsl_file = "res://examples/boxes/fichier.cpp" data = [NodePath("../TextureRect")] -[node name="Label" type="Label" parent="."] -offset_left = 240.0 -offset_top = -4.0 -offset_right = 641.0 -offset_bottom = 98.0 -scale = Vector2(1.72, 1.72) -text = "Compute Shader Studio -Example 5: using an external GLSL file -and a TextureRect" -horizontal_alignment = 1 -vertical_alignment = 1 - [node name="TextureRect" type="TextureRect" parent="."] offset_left = -5.0 offset_top = -2.0 @@ -45,11 +33,11 @@ size_flags_vertical = 3 texture = SubResource("NoiseTexture2D_nxi5j") [node name="Button" type="Button" parent="."] -offset_left = 25.0 -offset_top = 32.0 -offset_right = 153.0 -offset_bottom = 122.0 +offset_left = 2.0 +offset_top = 8.0 +offset_right = 76.0 +offset_bottom = 41.0 theme = SubResource("Theme_xvegm") -text = "Play" +text = "Jouer" [connection signal="pressed" from="Button" to="." method="_on_button_pressed"] diff --git a/examples/toChange (2).zip b/examples/toChange (2).zip deleted file mode 100644 index 3737904f1891037b17118018a492f131cf73131e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2454 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 Date: Mon, 17 Mar 2025 19:16:24 +0100 Subject: [PATCH 6/7] added comments --- examples/boxes/fichier.cpp | 62 ++++++++++++++++++++++++++++---------- 1 file changed, 46 insertions(+), 16 deletions(-) diff --git a/examples/boxes/fichier.cpp b/examples/boxes/fichier.cpp index a6e2c5a..433b170 100644 --- a/examples/boxes/fichier.cpp +++ b/examples/boxes/fichier.cpp @@ -4,24 +4,32 @@ #define PI 3.14159 #define iResolution vec2(float(WSX), float(WSY)) #define inBox(low, high, point) (low.x <= point.x && low.y <= point.y && high.x > point.x && high.y > point.y) -#define toUv(point) (2.0*(point - 0.5*iResolution)/iResolution.y) +#define toUv(point) (2.0 * (point - 0.5 * iResolution) / iResolution.y) -void main() { +void main() +{ + // Recuperer les coordonnees du pixel uint x = gl_GlobalInvocationID.x; uint y = gl_GlobalInvocationID.y; + // Calculer l'indice lineaire dans data_0 uint p = x + y * WSX; + // Convertir les coordonnees du pixel en coordonnees uv vec2 fragCoord = vec2(x, y); vec2 uv = toUv(fragCoord); + // Determiner les bornes inferieure et superieure de la cellule vec2 low = floor(uv); vec2 high = ceil(uv); + // Restriction de uv dans la cellule uv = mod(uv, vec2(1.0)); - // t = "temps" bas sur step - float t = float(step) * 0.006; + // Calculer le temps a partir de la variable step + float t = float(step) * 0.005; + // Creer un tableau de POINTCOUNT points vec2 points[POINTCOUNT]; - for (int i = 0; i < POINTCOUNT; i++) { + for (int i = 0; i < POINTCOUNT; i++) + { float fi = float(i); points[i] = vec2( (1.75 - 0.125 * fi) * cos(1.333 * t - (1.0 - 0.2 * t) * fi / PI), @@ -29,45 +37,67 @@ void main() { ); } + // Boucle de subdivision pour determiner le niveau de subdivision int iters = 0; - while (iters < 8) { + while (iters < 8) + { iters++; bool sub = false; - for (int i = 0; i < POINTCOUNT; i++) { - if (inBox(low, high, points[i])) { + // Verifier si un point se trouve dans la cellule + for (int i = 0; i < POINTCOUNT; i++) + { + if (inBox(low, high, points[i])) + { sub = true; break; } } - if (sub) { + if (sub) + { + // Calculer le centre de la cellule vec2 center = (high + low) * 0.5; - if (uv.x > 0.5) { + // Subdivision horizontale + if (uv.x > 0.5) + { low.x = center.x; uv.x = uv.x * 2.0 - 1.0; - } else { + } + else + { high.x = center.x; uv.x *= 2.0; } - if (uv.y > 0.5) { + // Subdivision verticale + if (uv.y > 0.5) + { low.y = center.y; uv.y = uv.y * 2.0 - 1.0; - } else { + } + else + { high.y = center.y; uv.y *= 2.0; } - } else { + } + else + { break; } } + // Calculer une mesure "m" de la distance par rapport au centre de la cellule float m = max(abs(uv.x - 0.5), abs(uv.y - 0.5)) * 2.0; + // "s" est une valeur lisse en fonction du nombre d'iterations float s = smoothstep(1.0 - 0.01 * pow(2.0, float(iters)), 1.0, m); + // Creer une couleur en niveaux de gris vec3 col = vec3(s); + // Conversion de la couleur en valeurs entieres (0 a 255) int a = 255; int r = int(clamp(col.r, 0.0, 1.0) * 255.0); int g = int(clamp(col.g, 0.0, 1.0) * 255.0); int b = int(clamp(col.b, 0.0, 1.0) * 255.0); - data_0[p] = (a << 24) | (r <<8 ) | (g << 16) | b; -} + // Stocker la couleur dans data_0 en format ARGB + data_0[p] = (a << 24) | (r << 16) | (g << 8) | b; +} \ No newline at end of file From 067d4d0a9bd7d359364859d4e48db70d658f23c1 Mon Sep 17 00:00:00 2001 From: KenanK0 Date: Mon, 17 Mar 2025 19:26:39 +0100 Subject: [PATCH 7/7] removed unnecessary files --- examples/boxes/fichier.tscn | 4 +- examples/example_1.tscn | 2 +- examples/fractal boxes/fichier.cpp | 71 ----------------------------- examples/fractal boxes/fichier.gd | 19 -------- examples/fractal boxes/fichier.tscn | 53 --------------------- project.godot | 2 +- 6 files changed, 4 insertions(+), 147 deletions(-) delete mode 100644 examples/fractal boxes/fichier.cpp delete mode 100644 examples/fractal boxes/fichier.gd delete mode 100644 examples/fractal boxes/fichier.tscn diff --git a/examples/boxes/fichier.tscn b/examples/boxes/fichier.tscn index 8c98721..4711ba7 100644 --- a/examples/boxes/fichier.tscn +++ b/examples/boxes/fichier.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=6 format=3 uid="uid://cets11mlsd8hb"] -[ext_resource type="Script" uid="uid://ymdghjh2i2lw" path="res://addons/compute_shader_studio/compute_shader_studio_2d.gd" id="1_cogap"] -[ext_resource type="Script" uid="uid://2wy07yux7xmu" path="res://examples/boxes/fichier.gd" id="1_y3tek"] +[ext_resource type="Script" path="res://addons/compute_shader_studio/compute_shader_studio_2d.gd" id="1_cogap"] +[ext_resource type="Script" path="res://examples/boxes/fichier.gd" id="1_y3tek"] [sub_resource type="FastNoiseLite" id="FastNoiseLite_pm7bb"] diff --git a/examples/example_1.tscn b/examples/example_1.tscn index 9718ca3..7d67949 100644 --- a/examples/example_1.tscn +++ b/examples/example_1.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=5 format=3 uid="uid://ddr6qtwy1pesd"] -[ext_resource type="Script" uid="uid://ymdghjh2i2lw" path="res://addons/compute_shader_studio/compute_shader_studio_2d.gd" id="1_6846p"] +[ext_resource type="Script" path="res://addons/compute_shader_studio/compute_shader_studio_2d.gd" id="1_6846p"] [ext_resource type="Texture2D" uid="uid://demftcowdd5c6" path="res://examples/icon.svg" id="2_s3fct"] [sub_resource type="FastNoiseLite" id="FastNoiseLite_dmk8h"] diff --git a/examples/fractal boxes/fichier.cpp b/examples/fractal boxes/fichier.cpp deleted file mode 100644 index 90385a3..0000000 --- a/examples/fractal boxes/fichier.cpp +++ /dev/null @@ -1,71 +0,0 @@ -#define POINTCOUNT 8 -#define PI 3.14159 -#define iResolution vec2(float(WSX), float(WSY)) -#define inBox(low, high, point) (low.x <= point.x && low.y <= point.y && high.x > point.x && high.y > point.y) -#define toUv(point) (2.0*(point - 0.5*iResolution)/iResolution.y) - -void main() { - uint x = gl_GlobalInvocationID.x; - uint y = gl_GlobalInvocationID.y; - uint p = x + y * WSX; - - vec2 fragCoord = vec2(x, y); - vec2 uv = toUv(fragCoord); - vec2 low = floor(uv); - vec2 high = ceil(uv); - uv = mod(uv, vec2(1.0)); - - // t = "temps" bas sur step - float t = float(step) * 0.005; - - vec2 points[POINTCOUNT]; - for (int i = 0; i < POINTCOUNT; i++) { - float fi = float(i); - points[i] = vec2( - (1.75 - 0.125 * fi) * cos(1.333 * t - (1.0 - 0.2 * t) * fi / PI), - (1.0 - 0.1 * fi) * sin((fi + 1.0) * t + PI * 0.5) - ); - } - - int iters = 0; - while (iters < 8) { - iters++; - bool sub = false; - for (int i = 0; i < POINTCOUNT; i++) { - if (inBox(low, high, points[i])) { - sub = true; - break; - } - } - if (sub) { - vec2 center = (high + low) * 0.5; - if (uv.x > 0.5) { - low.x = center.x; - uv.x = uv.x * 2.0 - 1.0; - } else { - high.x = center.x; - uv.x *= 2.0; - } - if (uv.y > 0.5) { - low.y = center.y; - uv.y = uv.y * 2.0 - 1.0; - } else { - high.y = center.y; - uv.y *= 2.0; - } - } else { - break; - } - } - - float m = max(abs(uv.x - 0.5), abs(uv.y - 0.5)) * 2.0; - float s = smoothstep(1.0 - 0.01 * pow(2.0, float(iters)), 1.0, m); - vec3 col = vec3(s); - - int a = 255; - int r = int(clamp(col.r, 0.0, 1.0) * 255.0); - int g = int(clamp(col.g, 0.0, 1.0) * 255.0); - int b = int(clamp(col.b, 0.0, 1.0) * 255.0); - - data_0[p] = (a << 24) | (r << 16) | (g << 8) | b; -} diff --git a/examples/fractal boxes/fichier.gd b/examples/fractal boxes/fichier.gd deleted file mode 100644 index 0f6cfc8..0000000 --- a/examples/fractal boxes/fichier.gd +++ /dev/null @@ -1,19 +0,0 @@ -extends Node2D - - -# Called when the node enters the scene tree for the first time. -func _ready() -> void: - pass # Replace with function body. - - -# Called every frame. 'delta' is the elapsed time since the previous frame. -func _process(delta: float) -> void: - pass - - -func _on_button_pressed() -> void: - $ComputeShaderStudio2D2.pause = !$ComputeShaderStudio2D2.pause - if $ComputeShaderStudio2D2.pause: - $Button.text = "Play" - else: - $Button.text = "Pause" # Replace with function body. diff --git a/examples/fractal boxes/fichier.tscn b/examples/fractal boxes/fichier.tscn deleted file mode 100644 index 7d3d3d2..0000000 --- a/examples/fractal boxes/fichier.tscn +++ /dev/null @@ -1,53 +0,0 @@ -[gd_scene load_steps=6 format=3 uid="uid://cets11mlsd8hb"] - -[ext_resource type="Script" path="res://addons/compute_shader_studio/compute_shader_studio_2d.gd" id="1_cogap"] -[ext_resource type="Script" path="res://examples/toChange/fichier.gd" id="1_y3tek"] - -[sub_resource type="FastNoiseLite" id="FastNoiseLite_pm7bb"] - -[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_nxi5j"] -width = 256 -height = 128 -noise = SubResource("FastNoiseLite_pm7bb") - -[sub_resource type="Theme" id="Theme_xvegm"] - -[node name="CompShadStudioEx5" type="Node2D"] -script = ExtResource("1_y3tek") - -[node name="ComputeShaderStudio2D2" type="Node" parent="." node_paths=PackedStringArray("data")] -script = ExtResource("1_cogap") -pause = true -WSX = 256 -WSY = 256 -glsl_file = "res://examples/toChange/fichier.cpp" -data = [NodePath("../TextureRect")] - -[node name="Label" type="Label" parent="."] -offset_left = 278.0 -offset_top = -1.0 -offset_right = 679.0 -offset_bottom = 101.0 -scale = Vector2(1.72, 1.72) -text = "Compute Shader Studio -Example 5: using an external GLSL file -and a TextureRect" -horizontal_alignment = 1 -vertical_alignment = 1 - -[node name="TextureRect" type="TextureRect" parent="."] -offset_left = 278.0 -offset_top = 192.0 -offset_right = 975.0 -offset_bottom = 629.0 -texture = SubResource("NoiseTexture2D_nxi5j") - -[node name="Button" type="Button" parent="."] -offset_left = 105.0 -offset_top = 209.0 -offset_right = 233.0 -offset_bottom = 299.0 -theme = SubResource("Theme_xvegm") -text = "Play" - -[connection signal="pressed" from="Button" to="." method="_on_button_pressed"] diff --git a/project.godot b/project.godot index 1617345..725be9c 100644 --- a/project.godot +++ b/project.godot @@ -12,7 +12,7 @@ config_version=5 config/name="compute_shader_studio" run/main_scene="res://examples/example_1.tscn" -config/features=PackedStringArray("4.4", "Forward Plus") +config/features=PackedStringArray("4.3", "Forward Plus") config/icon="res://addons/compute_shader_studio/icon.png" [editor_plugins]