From c9c5428dbc0486c7e7a4e3e3fee98b0a01173458 Mon Sep 17 00:00:00 2001 From: ChaoticByte Date: Wed, 9 Apr 2025 19:00:02 +0200 Subject: [PATCH 1/4] shaderlib: Add rotateUV function to common.gdshader --- shaderlib/common.gdshaderinc | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/shaderlib/common.gdshaderinc b/shaderlib/common.gdshaderinc index 8af35dc..9352d6a 100644 --- a/shaderlib/common.gdshaderinc +++ b/shaderlib/common.gdshaderinc @@ -13,3 +13,15 @@ vec4 alpha_blend(vec4 b, vec4 a) { vec3 col = ((a.rgb*a.a) + ((b.rgb*b.a) * (1.0 - a.a)) / alpha); return vec4(col.r, col.g, col.b, alpha); } + +/* + Rotate UV +*/ + +vec2 rotateUV(vec2 uv, float rotation, vec2 center) { + float cosRot = cos(rotation); + float sinRot = sin(rotation); + return vec2( + cosRot * (uv.x - center.x) + sinRot * (uv.y - center.y) + center.x, + cosRot * (uv.y - center.y) - sinRot * (uv.x - center.x) + center.y); +} From ebc8ce2cb9edca0640b6de6ab38f91323b1ed3f0 Mon Sep 17 00:00:00 2001 From: ChaoticByte Date: Wed, 9 Apr 2025 19:04:11 +0200 Subject: [PATCH 2/4] Add STEPS uniform to get the number of steps programmatically --- src/ImageCompositor.gd | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/ImageCompositor.gd b/src/ImageCompositor.gd index 9692fb7..9f3e95a 100644 --- a/src/ImageCompositor.gd +++ b/src/ImageCompositor.gd @@ -37,9 +37,9 @@ func validate_shader_compilation(shader: Shader) -> bool: # test if uniform list is empty -> if it is empty, the shader compilation failed return len(shader.get_shader_uniform_list()) > 0 -func shader_has_step_uniform(shader: Shader) -> bool: +func shader_has_uniform(shader: Shader, name: String, type: int) -> bool: for u in shader.get_shader_uniform_list(): - if u["name"] == "STEP" && u["type"] == 2: + if u["name"] == name && u["type"] == type: return true return false @@ -55,7 +55,8 @@ func update(overwrite_image_path: String = "") -> Array: # returns error message return ["No shader opened!"] # get number of steps & check if code has STEP uniform var steps: int = ShaderDirectiveParser.parse_steps_directive(shader.code) - var has_step_uniform: bool = shader_has_step_uniform(shader) + var has_step_uniform: bool = shader_has_uniform(shader, "STEP", 2) + var has_steps_uniform: bool = shader_has_uniform(shader, "STEPS", 2) # validate shader if not validate_shader_compilation(shader): return ["Shader compilation failed!"] @@ -105,6 +106,9 @@ func update(overwrite_image_path: String = "") -> Array: # returns error message image_sprite.material = mat # iterate n times set_vsync(false) # speed up processing + if has_steps_uniform: + # set STEPS param + mat.set_shader_parameter("STEPS", steps) for i in range(steps): if has_step_uniform: # set STEP param From 65fddc0bd8fff83767fafd3fe90f9470bb89afed Mon Sep 17 00:00:00 2001 From: ChaoticByte Date: Wed, 9 Apr 2025 19:09:32 +0200 Subject: [PATCH 3/4] Update README regarding STEPS uniform --- README.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 02aa022..a12517b 100644 --- a/README.md +++ b/README.md @@ -62,15 +62,17 @@ Example: //!load ... //!steps 5 -uniform int STEP; // this is mandatory! +uniform int STEP; +uniform int STEPS; void fragment() { if (STEP == 0) { - ... + ... } else if (STEP == 1) { - ... + ... + } else if (STEP == STEPS-1) { + ... } - // ... and so on } ``` From 54cbddbbbae169673bb3f44bf588a0f8fc56668e Mon Sep 17 00:00:00 2001 From: ChaoticByte Date: Wed, 9 Apr 2025 19:18:09 +0200 Subject: [PATCH 4/4] Bump version to v10.2 --- project.godot | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project.godot b/project.godot index 4d1b011..95da5af 100644 --- a/project.godot +++ b/project.godot @@ -11,7 +11,7 @@ config_version=5 [application] config/name="Fragmented" -config/version="v10.1" +config/version="v10.2" run/main_scene="res://src/scenes/main.tscn" config/features=PackedStringArray("4.4", "Mobile") config/icon="res://src/assets/icon.png"